diff --git a/dictionaries/whatsnew_3.2.txt b/dictionaries/whatsnew_3.2.txt index 60bdb9de80..d2f76742f6 100644 --- a/dictionaries/whatsnew_3.2.txt +++ b/dictionaries/whatsnew_3.2.txt @@ -13,6 +13,7 @@ Arc Arfrever Armin Baker +Barrier Beazley Belopolsky Benjamin @@ -35,11 +36,13 @@ Deily Dickinson Distutils Eckhardt +Est Ezio Florent Foord Forgeot Frehtes +Fri Gawain Georg Georgiou @@ -49,14 +52,17 @@ Ilya Indication Interpreter Jenvey +Jul Jónsson Kannada Kevin Kleckner Kristján Kumaran +Kw Landsch Latin +Launch Lue Mac Mahn @@ -74,6 +80,7 @@ New Nick Nurpmeso Oussoren +Part Peterson Philip Pillai @@ -117,39 +124,141 @@ Valgrind Valur Vant Vassalotti +Vessel Walzer +Wdefault Wojdyr X Xicluna Yasskin Ziadé +abiflags +abstractclassmethod +activity +ambv +anagram +asctime asignador autorreferencia +ballots +buildout +busqueda camel casing +celsius +change +cloud +compression +conduct +course cpython +critical +css +dangerous +deploy +dept desaconsejable +dialect disfuncional +downloads +dr +dsaEncryption +dyear +each +ecdsa +election +export +fahrenheit +filter +formats +getsitepackages +getuserbase +getusersitepackages gotos +hasattr hash +interpolation introspectar +isfile +launch +lcd +lockbox long +lower +manage +mdc +midnight +missiles +monty +myarchive +mydata +myfilter +mylog mymodule +nde nntplib +nodot +nombrenivel +obtenergeneratorstate +part +platbase +platinclude +platlib +platstdlib +plone +polls port preconstruida +proftpd +projectbase +publish pymalloc pyshared pysqlite +quantity +recipe +record +resetwarnings +ripemd +rpartition +rw shells +shelve +shl +sites +skycaptain +sqrt +src +srcdir +steer +stock stringlib subelementos sublistas +submit +subparsers +summary +susan +targets +tarinfo tempfile temporary +tf +tmp +tmpdirname tokens +tom +totals +track transcodificar tupla +turn unittest unladen +userbase +writeheader +writerows +xhtml +xr +zope Łukasz diff --git a/whatsnew/3.2.po b/whatsnew/3.2.po index 529e9ea143..2a4cb369d8 100644 --- a/whatsnew/3.2.po +++ b/whatsnew/3.2.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-09-06 09:08-0300\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/3.2.rst:3 @@ -163,6 +163,21 @@ msgid "" "argument\n" " help = 'login as user')" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser(\n" +"description = 'Administrar servidores', # descripción principal de la ayuda\n" +"epilog = 'Probado en Solaris y Linux') # mostrado después de la ayuda\n" +"parser.add_argument('action', # nombre del argumento\n" +"choices = ['deploy', 'start', 'stop'], # tres valores permitidos\n" +"help = 'action on each target') # mensaje de ayuda\n" +"parser.add_argument('targets',\n" +"metavar = 'HOSTNAME', # nombre de la variable usada en el mensaje de ayuda\n" +"nargs = '+', # requiere uno o más objetivos\n" +"help = 'url para las máquinas de destino') # explicación del mensaje de " +"ayuda\n" +"parser.add_argument('-u', '--user', # opción -u o --user\n" +"required = True, # haz que sea un argumento obligatorio\n" +"help = 'iniciar sesión como usuario')" #: ../Doc/whatsnew/3.2.rst:120 msgid "Example of calling the parser on a command string::" @@ -180,6 +195,15 @@ msgid "" ">>> result.user\n" "'skycaptain'" msgstr "" +">>> cmd = 'implementar estornudos.ejemplo.com sueño.ejemplo.com -u " +"skycaptain'\n" +">>> resultado = parser.parse_args(cmd.split())\n" +">>> resultado.acción\n" +"'implementar'\n" +">>> resultado.objetivos\n" +"['estornudos.ejemplo.com', 'sueño.ejemplo.com']\n" +">>> resultado.usuario\n" +"'skycaptain'" #: ../Doc/whatsnew/3.2.rst:131 msgid "Example of the parser's automatically generated help::" @@ -204,6 +228,22 @@ msgid "" "\n" "Tested on Solaris and Linux" msgstr "" +">>> parser.parse_args('-h'.split())\n" +"\n" +"uso: manage_cloud.py [-h] -u USER\n" +"{deploy,start,stop} HOSTNAME [HOSTNAME ...]\n" +"\n" +"Administrar servidores\n" +"\n" +"argumentos posicionales:\n" +"{deploy,start,stop} acción en cada destino\n" +"HOSTNAME url para las máquinas de destino\n" +"\n" +"argumentos opcionales:\n" +"-h, --help mostrar este mensaje de ayuda y salir\n" +"-u USER, --user USER iniciar sesión como usuario\n" +"\n" +"Probado en Solaris y Linux" #: ../Doc/whatsnew/3.2.rst:150 msgid "" @@ -232,6 +272,20 @@ msgid "" "parser_m.add_argument('-c', '--course', type=int, required=True)\n" "parser_m.add_argument('-s', '--speed', type=int, default=0)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser(prog='HELM')\n" +"subparsers = parser.add_subparsers()\n" +"\n" +"parser_l = subparsers.add_parser('launch', help='Launch Control') # primer " +"subgrupo\n" +"parser_l.add_argument('-m', '--missiles', action='store_true')\n" +"parser_l.add_argument('-t', '--torpedos', action='store_true')\n" +"\n" +"parser_m = subparsers.add_parser('move', help='Move Vessel', # segundo " +"subgrupo\n" +"aliases=('steer', 'turn')) # nombres equivalentes\n" +"parser_m.add_argument('-c', '--course', type=int, requerido=Verdadero)\n" +"parser_m.add_argument('-s', '--speed', tipo=int, valor predeterminado=0)" #: ../Doc/whatsnew/3.2.rst:166 msgid "" @@ -242,6 +296,10 @@ msgid "" "torpedos=False\n" "$ ./helm.py steer --course 180 --speed 5 # set movement parameters" msgstr "" +"$ ./helm.py --help # ayuda de nivel superior (lanzamiento y movimiento)\n" +"$ ./helm.py launch --help # ayuda para las opciones de lanzamiento\n" +"$ ./helm.py launch --missiles # establece misiles=True y torpedos=False\n" +"$ ./helm.py steer --course 180 --speed 5 # establece parámetros de movimiento" #: ../Doc/whatsnew/3.2.rst:176 msgid ":pep:`389` - New Command Line Parsing Module" @@ -264,7 +322,6 @@ msgid "PEP 391: Dictionary Based Configuration for Logging" msgstr "PEP 391: Configuración basada en diccionario para Logging" #: ../Doc/whatsnew/3.2.rst:184 -#, fuzzy msgid "" "The :mod:`logging` module provided two kinds of configuration, one style " "with function calls for each option or another style driven by an external " @@ -273,13 +330,13 @@ msgid "" "they support incremental configuration, which is needed for specifying " "logger options from a command line." msgstr "" -"El módulo :mod:`logging` proporcionó dos tipos de configuración, un estilo " -"con llamadas de función para cada opción y otro estilo guiado por un archivo " -"externo guardado en formato :mod:`ConfigParser`. Esas opciones no " -"proporcionaron la flexibilidad para crear configuraciones a partir de " -"archivos JSON o YAML, ni admitieron la configuración incremental, que es " -"necesaria para especificar las opciones del logger desde una línea de " -"comandos." +"El módulo :mod:`logging` proporcionaba dos tipos de configuración: un estilo " +"con llamadas de función para cada opción u otro estilo controlado por un " +"archivo externo guardado en formato :mod:`configparser`. Esas opciones no " +"proporcionaban la flexibilidad necesaria para crear configuraciones a partir " +"de archivos JSON o YAML, ni tampoco admitían la configuración incremental, " +"que es necesaria para especificar las opciones del registrador desde una " +"línea de comandos." #: ../Doc/whatsnew/3.2.rst:191 msgid "" @@ -318,6 +375,25 @@ msgid "" " \"root\": {\"level\": \"DEBUG\", \"handlers\": [\"console\", " "\"console_priority\"]}}" msgstr "" +"{\"versión\": 1,\n" +"\"formateadores\": {\"breve\": {\"formato\": \"%(nombrenivel)-8s: " +"%(nombre)-15s: %(mensaje)s\"},\n" +"\"completo\": {\"formato\": \"%(tiempoasc)s %(nombre)-15s %(nombrenivel)-8s " +"%(mensaje)s\"}\n" +"},\n" +"\"controladores\": {\"consola\": {\n" +"\"clase\": \"registro.StreamHandler\",\n" +"\"formateador\": \"breve\",\n" +"\"nivel\": \"INFO\",\n" +"\"flujo\": \"ext://sys.stdout\"},\n" +"\"prioridad_consola\": {\n" +"\"clase\": \"registro.StreamHandler\",\n" +"\"formateador\": \"completo\",\n" +"\"nivel\": \"ERROR\",\n" +"\"flujo\": \"ext://sys.stderr\"}\n" +"},\n" +"\"raíz\": {\"nivel\": \"DEBUG\", \"controladores\": [\"consola\", " +"\"prioridad_de_consola\"]}}" #: ../Doc/whatsnew/3.2.rst:215 msgid "" @@ -339,6 +415,15 @@ msgid "" ">>> logging.critical(\"Abnormal termination\")\n" "2011-02-17 11:14:36,694 root CRITICAL Abnormal termination" msgstr "" +">>> import json, logging.config\n" +">>> with open('conf.json') as f:\n" +"... conf = json.load(f)\n" +"...\n" +">>> logging.config.dictConfig(conf)\n" +">>> logging.info(\"Transacción completada normalmente\")\n" +"INFO : root : Transacción completada normalmente\n" +">>> logging.critical(\"Terminación anormal\")\n" +"2011-02-17 11:14:36,694 root CRITICAL Terminación anormal" #: ../Doc/whatsnew/3.2.rst:230 msgid ":pep:`391` - Dictionary Based Configuration for Logging" @@ -448,6 +533,12 @@ msgid "" " e.submit(shutil.copy, 'src3.txt', 'dest3.txt')\n" " e.submit(shutil.copy, 'src3.txt', 'dest4.txt')" msgstr "" +"importar concurrente.futures, shutil\n" +"con concurrente.futures.ThreadPoolExecutor(max_workers=4) como e:\n" +"e.submit(shutil.copy, 'src1.txt', 'dest1.txt')\n" +"e.submit(shutil.copy, 'src2.txt', 'dest2.txt')\n" +"e.submit(shutil.copy, 'src3.txt', 'dest3.txt')\n" +"e.submit(shutil.copy, 'src3.txt', 'dest4.txt')" #: ../Doc/whatsnew/3.2.rst:282 msgid ":pep:`3148` - Futures -- Execute Computations Asynchronously" @@ -542,25 +633,23 @@ msgstr "" "almacena el nombre del archivo real que se importó:" #: ../Doc/whatsnew/3.2.rst:322 -#, fuzzy msgid "" "The tag that is unique to each interpreter is accessible from the :mod:`!" "imp` module:" msgstr "" "La etiqueta que es única para cada intérprete es accesible desde el módulo :" -"mod:`imp`:" +"mod:`!imp`:" #: ../Doc/whatsnew/3.2.rst:329 -#, fuzzy msgid "" "Scripts that try to deduce source filename from the imported file now need " "to be smarter. It is no longer sufficient to simply strip the \"c\" from a " "\".pyc\" filename. Instead, use the new functions in the :mod:`!imp` module:" msgstr "" -"Los scripts que intentan deducir el nombre del archivo de origen del archivo " -"importado ahora deben ser más inteligentes. Ya no es suficiente simplemente " -"quitar la \"c\" final del nombre de archivo \".pyc\". En su lugar, use las " -"nuevas funciones del módulo :mod:`imp`:" +"Los scripts que intentan deducir el nombre del archivo de origen a partir " +"del archivo importado ahora deben ser más inteligentes. Ya no basta con " +"quitar la \"c\" de un nombre de archivo \".pyc\". En su lugar, utilice las " +"nuevas funciones del módulo :mod:`!imp`:" #: ../Doc/whatsnew/3.2.rst:338 msgid "" @@ -578,7 +667,6 @@ msgstr "" "en lugar de *__pycache__*." #: ../Doc/whatsnew/3.2.rst:345 -#, fuzzy msgid "" "The :mod:`importlib.abc` module has been updated with new :term:`abstract " "base classes ` for loading bytecode files. The " @@ -586,12 +674,11 @@ msgid "" "deprecated (instructions on how to stay Python 3.1 compatible are included " "with the documentation)." msgstr "" -"El módulo :mod:`importlib.abc` se ha actualizado con una nueva :term:`clase " -"base abstracta ` para cargar archivos bytecode. Las ABC " -"(por sus siglas en inglés *abstract base class*) obsoletas, :class:" -"`~importlib.abc.PyLoader` y :class:`~ importlib.abc.PyPycLoader`, han sido " -"deprecadas (las instrucciones sobre cómo mantener la compatibilidad con " -"Python 3.1 se incluyen con la documentación)." +"El módulo :mod:`importlib.abc` se ha actualizado con el nuevo módulo :term:" +"`abstract base classes ` para cargar archivos de " +"bytecode. Los ABC obsoletos, :class:`!PyLoader` y :class:`!PyPycLoader`, han " +"quedado obsoletos (las instrucciones sobre cómo mantener la compatibilidad " +"con Python 3.1 se incluyen en la documentación)." #: ../Doc/whatsnew/3.2.rst:353 msgid ":pep:`3147` - PYC Repository Directories" @@ -637,6 +724,8 @@ msgid "" "/usr/share/pyshared/foo.cpython-32m.so\n" "/usr/share/pyshared/foo.cpython-33md.so" msgstr "" +"/usr/share/pyshared/foo.cpython-32m.so\n" +"/usr/share/pyshared/foo.cpython-33md.so" #: ../Doc/whatsnew/3.2.rst:373 msgid "" @@ -655,6 +744,12 @@ msgid "" "extension\n" "'.cpython-32mu.so'" msgstr "" +">>> import sysconfig\n" +">>> sysconfig.get_config_var('SOABI') # encuentra la etiqueta de versión\n" +"'cpython-32mu'\n" +">>> sysconfig.get_config_var('EXT_SUFFIX') # encuentra la extensión completa " +"del nombre de archivo\n" +"'.cpython-32mu.so'" #: ../Doc/whatsnew/3.2.rst:384 msgid ":pep:`3149` - ABI Version Tagged .so Files" @@ -689,7 +784,6 @@ msgstr "" "respuestas." #: ../Doc/whatsnew/3.2.rst:400 -#, fuzzy msgid "" "The *native strings* are always of type :class:`str` but are restricted to " "code points between *U+0000* through *U+00FF* which are translatable to " @@ -699,13 +793,13 @@ msgid "" "respect to encoding. That is, they must either be *ISO-8859-1* characters or " "use :rfc:`2047` MIME encoding." msgstr "" -"Las *cadenas nativas* son siempre de tipo :class:`str` pero están " -"restringidas a puntos de código entre *U+0000 * hasta *U+00FF* que se pueden " -"traducir a bytes usando la codificación *Latin-1*. Estas cadenas de " -"caracteres se utilizan para las claves y valores en el diccionario de " -"entorno y para los encabezados y estados de respuesta en la función :func:" -"`start_response`. Deben seguir :rfc:`2616` con respecto a la codificación. " -"Es decir, deben tener caracteres *ISO-8859-1* o utilizar codificación MIME :" +"Los *native strings* son siempre del tipo :class:`str`, pero están " +"restringidos a puntos de código entre *U+0000* y *U+00FF* que se pueden " +"traducir a bytes mediante la codificación *Latin-1*. Estas cadenas se " +"utilizan para las claves y los valores en el diccionario de entorno y para " +"los encabezados de respuesta y los estados en la función :func:`!" +"start_response`. Deben seguir a :rfc:`2616` con respecto a la codificación. " +"Es decir, deben ser caracteres *ISO-8859-1* o utilizar la codificación MIME :" "rfc:`2047`." #: ../Doc/whatsnew/3.2.rst:408 @@ -737,18 +831,16 @@ msgstr "" "cadenas nativas usando ``h.encode('utf-8').decode('latin-1')``." #: ../Doc/whatsnew/3.2.rst:418 -#, fuzzy msgid "" "Values yielded by an application or sent using the :meth:`!write` method " "must be byte strings. The :func:`!start_response` function and environ must " "use native strings. The two cannot be mixed." msgstr "" -"Los valores proporcionados por una aplicación o enviados mediante el método :" -"meth:`write` deben ser cadenas de bytes. La función :func:`start_response` y " -"el entorno deben usar cadenas nativas. Los dos no se pueden mezclar." +"Los valores generados por una aplicación o enviados mediante el método :meth:" +"`!write` deben ser cadenas de bytes. La función :func:`!start_response` y el " +"entorno deben utilizar cadenas nativas. No se pueden mezclar." #: ../Doc/whatsnew/3.2.rst:422 -#, fuzzy msgid "" "For server implementers writing CGI-to-WSGI pathways or other CGI-style " "protocols, the users must to be able access the environment using native " @@ -761,10 +853,10 @@ msgstr "" "Para los implementadores de servidores que escriben rutas de CGI a WSGI u " "otros protocolos de estilo CGI, los usuarios deben poder acceder al entorno " "utilizando cadenas nativas, aunque la plataforma subyacente pueda tener una " -"convención diferente. Para cerrar esta brecha, el módulo :mod:`wsgiref` " -"tiene una nueva función, :func:`wsgiref.handlers.read_environ` para " -"transcodificar variables CGI de :attr:`os.environ` en cadenas nativas y " -"retornar un nuevo diccionario." +"convención diferente. Para salvar esta brecha, el módulo :mod:`wsgiref` " +"tiene una nueva función, :func:`wsgiref.handlers.read_environ`, para " +"transcodificar variables CGI de :data:`os.environ` en cadenas nativas y " +"devolver un nuevo diccionario." #: ../Doc/whatsnew/3.2.rst:431 msgid ":pep:`3333` - Python Web Server Gateway Interface v1.0.1" @@ -849,6 +941,27 @@ msgid "" ">>> 'Hello {name}, welcome to {location}'.format_map(PlaceholderDict())\n" "'Hello , welcome to '" msgstr "" +">>> import shelve\n" +">>> d = shelve.open('tmp.shl')\n" +">>> 'El estado de {project_name} es {status} a partir de {date}'." +"format_map(d)\n" +"'El estado del proyecto de prueba es verde a partir del 15 de febrero de " +"2011'\n" +"\n" +">>> class LowerCasedDict(dict):\n" +"... def __getitem__(self, key):\n" +"... return dict.__getitem__(self, key.lower())\n" +"...\n" +">>> lcd = LowerCasedDict(part='widgets', quantity=10)\n" +">>> 'Hay {QUANTITY} {Part} en stock'.format_map(lcd)\n" +"'Hay 10 widgets en stock'\n" +"\n" +">>> class PlaceholderDict(dict):\n" +"... def __missing__(self, key):\n" +"... return '<{}>'.format(key)\n" +"...\n" +">>> 'Hola {nombre}, bienvenido a {ubicación}'.format_map(PlaceholderDict())\n" +"'Hola , bienvenido a '" #: ../Doc/whatsnew/3.2.rst:483 msgid "" @@ -859,17 +972,16 @@ msgstr "" "`6081`.)" #: ../Doc/whatsnew/3.2.rst:486 -#, fuzzy msgid "" "The interpreter can now be started with a quiet option, ``-q``, to prevent " "the copyright and version information from being displayed in the " "interactive mode. The option can be introspected using the :data:`sys." "flags` attribute:" msgstr "" -"El intérprete ahora puede iniciarse con una opción silenciosa, ``-q``, para " -"evitar que la información de copyright y versión se muestre en el modo " -"interactivo. La opción se puede introspectar usando el atributo :attr:`sys." -"flags`:" +"Ahora es posible iniciar el intérprete con una opción silenciosa, ``-q``, " +"para evitar que la información de copyright y de versión se muestre en el " +"modo interactivo. La opción se puede analizar mediante el atributo :data:" +"`sys.flags`:" #: ../Doc/whatsnew/3.2.rst:490 msgid "" @@ -879,13 +991,19 @@ msgid "" "optimize=0, dont_write_bytecode=0, no_user_site=0, no_site=0,\n" "ignore_environment=0, verbose=0, bytes_warning=0, quiet=1)" msgstr "" +"$ python -q\n" +">>> sys.flags\n" +"sys.flags(depuración=0, advertencia_de_división=0, inspección=0, " +"interactivo=0,\n" +"optimización=0, no_escribir_código_de_bytes=0, sin_sitio_de_usuario=0, " +"sin_sitio=0,\n" +"ignorar_entorno=0, verbose=0, advertencia_de_bytes=0, silencioso=1)" #: ../Doc/whatsnew/3.2.rst:498 msgid "(Contributed by Marcin Wojdyr in :issue:`1772833`)." msgstr "(Contribución de Marcin Wojdyr en :issue:`1772833`)." #: ../Doc/whatsnew/3.2.rst:500 -#, fuzzy msgid "" "The :func:`hasattr` function works by calling :func:`getattr` and detecting " "whether an exception is raised. This technique allows it to detect methods " @@ -896,12 +1014,12 @@ msgid "" "`AttributeError` and let other exceptions pass through::" msgstr "" "La función :func:`hasattr` funciona llamando a :func:`getattr` y detectando " -"si se lanza una excepción. Esta técnica le permite detectar métodos creados " -"dinámicamente por :meth:`__getattr__` o :meth:`__getattribute__` que de otra " -"manera estarían ausentes en el diccionario de la clase. Anteriormente, " -"*hasattr* detectaba cualquier excepción, posiblemente enmascarando errores " -"genuinos. Ahora, *hasattr* se ha ajustado para capturar solo :exc:" -"`AttributeError` y dejar que otras excepciones pasen::" +"si se genera una excepción. Esta técnica le permite detectar métodos creados " +"dinámicamente por :meth:`~object.__getattr__` o :meth:`~object." +"__getattribute__` que, de otro modo, no estarían en el diccionario de " +"clases. Anteriormente, *hasattr* capturaba cualquier excepción, posiblemente " +"enmascarando errores genuinos. Ahora, *hasattr* se ha ajustado para que solo " +"capture :exc:`AttributeError` y permita que pasen otras excepciones:" #: ../Doc/whatsnew/3.2.rst:508 msgid "" @@ -916,6 +1034,16 @@ msgid "" " ...\n" "ZeroDivisionError: integer division or modulo by zero" msgstr "" +">>> class A:\n" +"... @property\n" +"... def f(self):\n" +"... return 1 // 0\n" +"...\n" +">>> a = A()\n" +">>> hasattr(a, 'f')\n" +"Traceback (última llamada más reciente):\n" +"...\n" +"ZeroDivisionError: división entera o módulo por cero" #: ../Doc/whatsnew/3.2.rst:519 msgid "" @@ -941,7 +1069,6 @@ msgid "(Proposed and implemented by Mark Dickinson; :issue:`9337`.)" msgstr "(Propuesto e implementado por Mark Dickinson; :issue:`9337`.)" #: ../Doc/whatsnew/3.2.rst:534 -#, fuzzy msgid "" ":class:`memoryview` objects now have a :meth:`~memoryview.release` method " "and they also now support the context management protocol. This allows " @@ -949,9 +1076,9 @@ msgid "" "from the original object." msgstr "" "Los objetos :class:`memoryview` ahora tienen un método :meth:`~memoryview." -"release()` y ahora también admiten el protocolo de gestión de contexto. Esto " -"permite la liberación oportuna de los recursos adquiridos al solicitar un " -"búfer del objeto original." +"release` y también admiten el protocolo de administración de contexto. Esto " +"permite la liberación oportuna de cualquier recurso que se haya adquirido al " +"solicitar un búfer del objeto original." #: ../Doc/whatsnew/3.2.rst:543 msgid "(Added by Antoine Pitrou; :issue:`9757`.)" @@ -973,6 +1100,11 @@ msgid "" " inner()\n" " del x" msgstr "" +"def exterior(x):\n" +"def interior():\n" +"return x\n" +"interior()\n" +"del x" #: ../Doc/whatsnew/3.2.rst:554 msgid "" @@ -995,13 +1127,20 @@ msgid "" " print_error()\n" " # implicit \"del e\" here" msgstr "" +"def f():\n" +"def print_error():\n" +"print(e)\n" +"try:\n" +"something\n" +"except Exception as e:\n" +"print_error()\n" +"# \"del e\" implícito aquí" #: ../Doc/whatsnew/3.2.rst:567 msgid "(See :issue:`4617`.)" msgstr "(Ver :issue:`4617`.)" #: ../Doc/whatsnew/3.2.rst:569 -#, fuzzy msgid "" ":ref:`Struct sequence types ` are now subclasses of " "tuple. This means that C structures like those returned by :func:`os.stat`, :" @@ -1010,12 +1149,13 @@ msgid "" "an argument. This is a big step forward in making the C structures as " "flexible as their pure Python counterparts:" msgstr "" -"La herramienta interna :c:type:`structsequence` ahora crea subclases de " -"tupla. Esto significa que las estructuras C como las retornadas por :func:" -"`os.stat`, :func:`time.gmtime`, y :attr:`sys.version_info` ahora funcionan " -"como :term:`named tuple` y ahora trabaja con funciones y métodos que esperan " -"una tupla como argumento. Este es un gran paso adelante para hacer que las " -"estructuras de C sean tan flexibles como sus contrapartes de Python puro:" +":ref:`Struct sequence types ` ahora son subclases " +"de tuplas. Esto significa que las estructuras de C como las devueltas por :" +"func:`os.stat`, :func:`time.gmtime` y :data:`sys.version_info` ahora " +"funcionan como :term:`named tuple` y funcionan con funciones y métodos que " +"esperan una tupla como argumento. Este es un gran paso adelante para hacer " +"que las estructuras de C sean tan flexibles como sus contrapartes de Python " +"puro:" #: ../Doc/whatsnew/3.2.rst:582 msgid "" @@ -1038,6 +1178,8 @@ msgstr "" msgid "" "$ export PYTHONWARNINGS='ignore::RuntimeWarning::,once::UnicodeWarning::'" msgstr "" +"$ export PYTHONWARNINGS='ignore::Advertencia en tiempo de ejecución::,once::" +"Advertencia Unicode::'" #: ../Doc/whatsnew/3.2.rst:592 msgid "" @@ -1062,18 +1204,17 @@ msgstr "" "proporcionados por el módulo :mod:`warnings` o en la línea de comandos." #: ../Doc/whatsnew/3.2.rst:600 -#, fuzzy msgid "" "A :exc:`ResourceWarning` is issued at interpreter shutdown if the :data:`gc." "garbage` list isn't empty, and if :const:`gc.DEBUG_UNCOLLECTABLE` is set, " "all uncollectable objects are printed. This is meant to make the programmer " "aware that their code contains object finalization issues." msgstr "" -"Un :exc:`ResourceWarning` se emite en el cierre del intérprete si la lista :" -"data:`gc.garbage` no está vacía, y si :attr:`gc.DEBUG_UNCOLLECTABLE` está " -"configurado, se imprimen todos los objetos no recolectados. Esto tiene como " -"objetivo informar al programador de que su código contiene problemas de " -"finalización de objetos." +"Se emite un :exc:`ResourceWarning` al apagar el intérprete si la lista :data:" +"`gc.garbage` no está vacía y, si está configurado :const:`gc." +"DEBUG_UNCOLLECTABLE`, se imprimen todos los objetos que no se pueden " +"recolectar. Esto tiene como objetivo que el programador sepa que su código " +"contiene problemas de finalización de objetos." #: ../Doc/whatsnew/3.2.rst:605 msgid "" @@ -1099,6 +1240,11 @@ msgid "" ">>> del f\n" "__main__:1: ResourceWarning: unclosed file <_io.BufferedWriter name='foo'>" msgstr "" +"$ python -q -Wdefault\n" +">>> f = open(\"foo\", \"wb\")\n" +">>> del f\n" +"__main__:1: ResourceWarning: archivo sin cerrar <_io.BufferedWriter " +"name='foo'>" #: ../Doc/whatsnew/3.2.rst:619 msgid "" @@ -1109,7 +1255,6 @@ msgstr "" "`477863`.)" #: ../Doc/whatsnew/3.2.rst:621 -#, fuzzy msgid "" ":class:`range` objects now support *index* and *count* methods. This is part " "of an effort to make more objects fully implement the :class:`collections." @@ -1120,12 +1265,12 @@ msgid "" "lists::" msgstr "" "Los objetos :class:`range` ahora admiten los métodos *index* y *count*. Esto " -"es parte de un esfuerzo para hacer que más objetos implementen completamente " -"la :term:`abstract base class` :class:`collections.Sequence`. Como " -"resultado, el lenguaje tendrá una API más uniforme. Además, los objetos :" -"class:`range` ahora admiten índices negativos y de corte, incluso con " -"valores mayores que :attr:`sys.maxsize`. Esto hace que *range* sea más " -"interoperable con listas::" +"es parte de un esfuerzo por lograr que más objetos implementen completamente " +"los métodos :class:`collections.Sequence ` y :term:" +"`abstract base class`. Como resultado, el lenguaje tendrá una API más " +"uniforme. Además, los objetos :class:`range` ahora admiten segmentación e " +"índices negativos, incluso con valores mayores que :data:`sys.maxsize`. Esto " +"hace que *range* sea más interoperable con las listas:" #: ../Doc/whatsnew/3.2.rst:628 msgid "" @@ -1138,6 +1283,14 @@ msgid "" ">>> range(0, 100, 2)[0:5]\n" "range(0, 10, 2)" msgstr "" +">>> rango(0, 100, 2).count(10)\n" +"1\n" +">>> rango(0, 100, 2).index(10)\n" +"5\n" +">>> rango(0, 100, 2)[5]\n" +"10\n" +">>> rango(0, 100, 2)[0:5]\n" +"rango(0, 10, 2)" #: ../Doc/whatsnew/3.2.rst:637 msgid "" @@ -1189,17 +1342,16 @@ msgstr "" "mantenimiento y mejoras de calidad." #: ../Doc/whatsnew/3.2.rst:664 -#, fuzzy msgid "" "The biggest news for Python 3.2 is that the :mod:`email` package, :mod:" "`mailbox` module, and :mod:`!nntplib` modules now work correctly with the " "bytes/text model in Python 3. For the first time, there is correct handling " "of messages with mixed encodings." msgstr "" -"La mayor novedad para Python 3.2 es que el paquete :mod:`email`, el módulo :" -"mod:`mailbox` y los módulos :mod:`nntplib` ahora funcionan correctamente con " -"el modelo de bytes/texto en Python 3. Por primera vez , existe un manejo " -"correcto de mensajes con codificaciones mixtas." +"La novedad más importante de Python 3.2 es que el paquete :mod:`email`, el " +"módulo :mod:`mailbox` y los módulos :mod:`!nntplib` ahora funcionan " +"correctamente con el modelo bytes/texto en Python 3. Por primera vez, hay un " +"manejo correcto de mensajes con codificaciones mixtas." #: ../Doc/whatsnew/3.2.rst:669 msgid "" @@ -1336,12 +1488,11 @@ msgid "elementtree" msgstr "elementtree" #: ../Doc/whatsnew/3.2.rst:723 -#, fuzzy msgid "" "The :mod:`xml.etree.ElementTree` package and its :mod:`!xml.etree." "cElementTree` counterpart have been updated to version 1.3." msgstr "" -"El paquete :mod:`xml.etree.ElementTree` y su contraparte :mod:`xml.etree." +"El paquete :mod:`xml.etree.ElementTree` y su contraparte :mod:`!xml.etree." "cElementTree` se han actualizado a la versión 1.3." #: ../Doc/whatsnew/3.2.rst:726 @@ -1415,17 +1566,15 @@ msgid "Two methods have been deprecated:" msgstr "Dos métodos que han sido deprecados:" #: ../Doc/whatsnew/3.2.rst:746 -#, fuzzy msgid ":meth:`!xml.etree.ElementTree.getchildren` use ``list(elem)`` instead." msgstr "" -":meth:`xml.etree.ElementTree.getchildren` usar ``list(elem)`` en su lugar." +":meth:`!xml.etree.ElementTree.getchildren` usa ``list(elem)`` en su lugar." #: ../Doc/whatsnew/3.2.rst:747 -#, fuzzy msgid "" ":meth:`!xml.etree.ElementTree.getiterator` use ``Element.iter`` instead." msgstr "" -":meth:`xml.etree.ElementTree.getiterator` usar ``Element.iter`` en su lugar." +":meth:`!xml.etree.ElementTree.getiterator` usa ``Element.iter`` en su lugar." #: ../Doc/whatsnew/3.2.rst:749 msgid "" @@ -1482,7 +1631,6 @@ msgstr "" "caché se puede borrar con:" #: ../Doc/whatsnew/3.2.rst:786 -#, fuzzy msgid "" "(Contributed by Raymond Hettinger and incorporating design ideas from Jim " "Baker, Miki Tebeka, and Nick Coghlan; see `recipe 498245 `_\\, :issue:`10586`, and :issue:`10593`.)" msgstr "" -"(Contribución de Raymond Hettinger e incorporando ideas de diseño de Jim " -"Baker, Miki Tebeka, y Nick Coghlan; ver `recipe 498245 `_\\, `recipe 577479 `_\\, :issue:`10586`, y :issue:`10593`.)" +"(Contribuido por Raymond Hettinger e incorporando ideas de diseño de Jim " +"Baker, Miki Tebeka y Nick Coghlan; consulte `recipe 498245 `_\\, `recipe " +"577479 `_\\, :issue:`10586` y :issue:`10593`)." #: ../Doc/whatsnew/3.2.rst:792 -#, fuzzy msgid "" "The :func:`functools.wraps` decorator now adds a :attr:`__wrapped__` " "attribute pointing to the original callable function. This allows wrapped " @@ -1506,11 +1654,11 @@ msgid "" "the wrapped callable." msgstr "" "El decorador :func:`functools.wraps` ahora agrega un atributo :attr:" -"`__wrapped__` que apunta a la función invocable original. Esto permite la " -"introspección de funciones envueltas (*wrapped*). También copia :attr:" -"`__annotations__` si está definido. Y ahora también omite elegantemente los " -"atributos faltantes como :attr:`__doc__` que podrían no estar definidos para " -"el invocable envuelto." +"`__wrapped__` que apunta a la función invocable original. Esto permite que " +"se puedan introspeccionar las funciones encapsuladas. También copia :attr:" +"`~function.__annotations__` si está definido. Y ahora también omite con " +"elegancia los atributos faltantes, como :attr:`~function.__doc__`, que " +"podrían no estar definidos para la función encapsulada." #: ../Doc/whatsnew/3.2.rst:799 msgid "" @@ -1558,6 +1706,15 @@ msgid "" " return ((self.lastname.lower(), self.firstname.lower()) <\n" " (other.lastname.lower(), other.firstname.lower()))" msgstr "" +"@total_ordering\n" +"clase Estudiante:\n" +"def __eq__(self, other):\n" +"return ((self.apellido.inferior(), self.nombre.inferior()) ==\n" +"(other.apellido.inferior(), other.nombre.inferior()))\n" +"\n" +"def __lt__(self, other):\n" +"return ((self.apellido.inferior(), self.nombre.inferior()) <\n" +"(other.apellido.inferior(), other.nombre.inferior()))" #: ../Doc/whatsnew/3.2.rst:824 msgid "" @@ -1745,6 +1902,18 @@ msgid "" "for site in sites:\n" " Thread(target=get_votes, args=(site,)).start()" msgstr "" +"de threading import Barrier, Thread\n" +"\n" +"def get_votes(site):\n" +"ballots = conduct_election(site)\n" +"all_polls_closed.wait() # no contar hasta que se cierren todas las " +"encuestas\n" +"totals = summary(ballots)\n" +"publish(site, totals)\n" +"\n" +"all_polls_closed = Barrier(len(sites))\n" +"for site in sites:\n" +"Thread(target=get_votes, args=(site,)).start()" #: ../Doc/whatsnew/3.2.rst:952 msgid "" @@ -1788,6 +1957,16 @@ msgid "" " totals = summarize(ballots)\n" " publish(site, totals)" msgstr "" +"def get_votes(sitio):\n" +"votos = realizar_elecciones(sitio)\n" +"try:\n" +"all_polls_closed.wait(timeout=midnight - time.now())\n" +"except BrokenBarrierError:\n" +"lockbox = sellar_votos(votos)\n" +"queue.put(lockbox)\n" +"else:\n" +"totales = resumir(votos)\n" +"publish(sitio, totales)" #: ../Doc/whatsnew/3.2.rst:974 msgid "" @@ -1852,6 +2031,14 @@ msgid "" ">>> datetime.strptime(\"01/01/2000 12:00 +0000\", \"%m/%d/%Y %H:%M %z\")\n" "datetime.datetime(2000, 1, 1, 12, 0, tzinfo=datetime.timezone.utc)" msgstr "" +">>> de datetime import datetime, timezone\n" +"\n" +">>> datetime.now(timezone.utc)\n" +"datetime.datetime(2010, 12, 8, 21, 4, 2, 923754, tzinfo=datetime.timezone." +"utc)\n" +"\n" +">>> datetime.strptime(\"01/01/2000 12:00 +0000\", \"%m/%d/%Y %H:%M %z\")\n" +"datetime.datetime(2000, 1, 1, 12, 0, tzinfo=datetime.timezone.utc)" #: ../Doc/whatsnew/3.2.rst:1003 msgid "" @@ -1874,7 +2061,6 @@ msgstr "" "inclusive." #: ../Doc/whatsnew/3.2.rst:1010 -#, fuzzy msgid "" "Whenever a two-digit year is used in a time tuple, the interpretation has " "been governed by :data:`!time.accept2dyear`. The default is ``True`` which " @@ -1882,23 +2068,22 @@ msgid "" "POSIX rules governing the ``%y`` strptime format." msgstr "" "Siempre que se utiliza un año de dos dígitos en una tupla de tiempo, la " -"interpretación se rige por :attr:`time.accept2dyear`. El valor " -"predeterminado es ``True``, lo que significa que para un año de dos dígitos, " -"el siglo se calcula de acuerdo con las reglas POSIX que rigen el formato " -"strptime ``%y``." +"interpretación se rige por :data:`!time.accept2dyear`. El valor " +"predeterminado es ``True``, lo que significa que, para un año de dos " +"dígitos, el siglo se calcula de acuerdo con las reglas POSIX que rigen el " +"formato strptime ``%y``." #: ../Doc/whatsnew/3.2.rst:1015 -#, fuzzy msgid "" "Starting with Py3.2, use of the century guessing heuristic will emit a :exc:" "`DeprecationWarning`. Instead, it is recommended that :data:`!time." "accept2dyear` be set to ``False`` so that large date ranges can be used " "without guesswork::" msgstr "" -"A partir de Py3.2, el uso de la heurística de adivinación del siglo emitirá " -"un :exc:`DeprecationWarning`. En su lugar, se recomienda que :attr:`time." -"accept2dyear` se establezca en ``False`` para que se puedan usar rangos de " -"fechas grandes sin suposiciones::" +"A partir de Py3.2, el uso de la heurística de estimación del siglo emitirá " +"un :exc:`DeprecationWarning`. En cambio, se recomienda que :data:`!time." +"accept2dyear` se configure en ``False`` para que se puedan usar rangos de " +"fechas grandes sin necesidad de realizar conjeturas:" #: ../Doc/whatsnew/3.2.rst:1020 msgid "" @@ -1916,9 +2101,23 @@ msgid "" ">>> time.asctime((11, 1, 1, 12, 34, 56, 4, 1, 0))\n" "'Fri Jan 1 12:34:56 11'" msgstr "" +">>> import time, Warnings\n" +">>> Warnings.resetwarnings() # eliminar los filtros de advertencia " +"predeterminados\n" +"\n" +">>> time.accept2dyear = True # adivinar si 11 significa 11 o 2011\n" +">>> time.asctime((11, 1, 1, 12, 34, 56, 4, 1, 0))\n" +"Advertencia (del módulo de advertencias):\n" +"...\n" +"Advertencia de desuso: información del siglo supuesta para un año de 2 " +"dígitos.\n" +"'Fri Jan 1 12:34:56 2011'\n" +"\n" +">>> time.accept2dyear = False # usar el rango completo de fechas permitidas\n" +">>> time.asctime((11, 1, 1, 12, 34, 56, 4, 1, 0))\n" +"'Fri Jan 1 12:34:56 11'" #: ../Doc/whatsnew/3.2.rst:1034 -#, fuzzy msgid "" "Several functions now have significantly expanded date ranges. When :data:`!" "time.accept2dyear` is false, the :func:`time.asctime` function will accept " @@ -1927,10 +2126,10 @@ msgid "" "corresponding operating system functions." msgstr "" "Varias funciones ahora tienen rangos de fechas significativamente ampliados. " -"Cuando :attr:`time.accept2dyear` es falso, la función :func:`time.asctime` " -"aceptará cualquier año que quepa en un entero C, mientras que las funciones :" -"func:`time.mktime` y :func:`time.strftime` aceptarán la gama completa " -"admitida por las funciones correspondientes del sistema operativo." +"Cuando :data:`!time.accept2dyear` es falso, la función :func:`time.asctime` " +"aceptará cualquier año que quepa en un int de C, mientras que las funciones :" +"func:`time.mktime` y :func:`time.strftime` aceptarán el rango completo " +"admitido por las funciones del sistema operativo correspondientes." #: ../Doc/whatsnew/3.2.rst:1040 msgid "" @@ -1996,6 +2195,15 @@ msgid "" ">>> erf(1.0/sqrt(2.0)) + erfc(1.0/sqrt(2.0))\n" "1.0" msgstr "" +">>> from math import erf, erfc, sqrt\n" +">>> erf(1.0/sqrt(2.0)) # porción de distribución normal dentro de 1 " +"desviación estándar\n" +"0.682689492137086\n" +">>> erfc(1.0/sqrt(2.0)) # porción de distribución normal fuera de 1 " +"desviación estándar\n" +"0.31731050786291404\n" +">>> erf(1.0/sqrt(2.0)) + erfc(1.0/sqrt(2.0))\n" +"1.0" #: ../Doc/whatsnew/3.2.rst:1083 msgid "" @@ -2048,6 +2256,13 @@ msgid "" " def from_celsius(cls, t):\n" " ..." msgstr "" +"clase Temperatura(metaclase=abc.ABCMeta):\n" +"@abc.abstractclassmethod\n" +"def from_fahrenheit(cls, t):\n" +"...\n" +"@abc.abstractclassmethod\n" +"def from_celsius(cls, t):\n" +"..." #: ../Doc/whatsnew/3.2.rst:1115 msgid "(Patch submitted by Daniel Urban; :issue:`5867`.)" @@ -2093,6 +2308,26 @@ msgid "" "b'X7899 warehouse Reserve cog '\n" "b'L6988 receiving Primary sprocket'" msgstr "" +">>> REC_LEN, LOC_START, LOC_LEN = 34, 7, 11\n" +"\n" +">>> def change_location(buffer, record_number, location):\n" +"... start = record_number * REC_LEN + LOC_START\n" +"... buffer[start: start+LOC_LEN] = location\n" +"\n" +">>> import io\n" +"\n" +">>> byte_stream = io.BytesIO(\n" +"... b'G3805 almacén Chasis principal '\n" +"... b'X7899 envío Piñón de reserva '\n" +"... b'L6988 recepción Piñón primario'\n" +"... )\n" +">>> buffer = byte_stream.getbuffer()\n" +">>> change_location(buffer, 1, b'almacén ')\n" +">>> change_location(buffer, 0, b'sala de exposición ')\n" +">>> print(byte_stream.getvalue())\n" +"b'G3805 sala de exposición Chasis principal '\n" +"b'X7899 piñón de reserva de almacén '\n" +"b'L6988 piñón de recepción primario'" #: ../Doc/whatsnew/3.2.rst:1146 msgid "(Contributed by Antoine Pitrou in :issue:`5506`.)" @@ -2103,7 +2338,6 @@ msgid "reprlib" msgstr "reprlib" #: ../Doc/whatsnew/3.2.rst:1151 -#, fuzzy msgid "" "When writing a :meth:`~object.__repr__` method for a custom container, it is " "easy to forget to handle the case where a member refers back to the " @@ -2111,24 +2345,23 @@ msgid "" "`set` handle self-reference by displaying \"...\" in the recursive part of " "the representation string." msgstr "" -"Al escribir un método :meth:`__repr__` para un contenedor personalizado, es " -"fácil olvidarse de gestionar el caso en el que un miembro hace referencia al " -"contenedor en sí. Los objetos incorporados de Python como :class:`list` y :" -"class:`set` manejan la autorreferencia mostrando \"...\" en la parte " -"recursiva de la cadena de representación." +"Al escribir un método :meth:`~object.__repr__` para un contenedor " +"personalizado, es fácil olvidarse de manejar el caso en el que un miembro " +"hace referencia al propio contenedor. Los objetos integrados de Python, " +"como :class:`list` y :class:`set`, manejan la autorreferencia mostrando \"..." +"\" en la parte recursiva de la cadena de representación." #: ../Doc/whatsnew/3.2.rst:1157 -#, fuzzy msgid "" "To help write such :meth:`~object.__repr__` methods, the :mod:`reprlib` " "module has a new decorator, :func:`~reprlib.recursive_repr`, for detecting " "recursive calls to :meth:`!__repr__` and substituting a placeholder string " "instead::" msgstr "" -"Para ayudar a escribir tales métodos :meth:`__repr__`, el módulo :mod:" -"`reprlib` tiene un nuevo decorador, :func:`~reprlib.recursive_repr`, para " -"detectar llamadas recursivas a :meth:`__repr__` y sustituir una cadena " -"marcadora de posición en su lugar::" +"Para ayudar a escribir dichos métodos :meth:`~object.__repr__`, el módulo :" +"mod:`reprlib` tiene un nuevo decorador, :func:`~reprlib.recursive_repr`, " +"para detectar llamadas recursivas a :meth:`!__repr__` y sustituir una cadena " +"de marcador de posición en su lugar:" #: ../Doc/whatsnew/3.2.rst:1161 msgid "" @@ -2143,6 +2376,16 @@ msgid "" ">>> print(m)\n" "<'a'|'b'|'c'|...|'x'>" msgstr "" +">>> clase MiLista(lista):\n" +"... @recursive_repr()\n" +"... def __repr__(self):\n" +"... return '<' + '|'.join(map(repr, self)) + \">'\n" +"...\n" +">>> m = MiLista('abc')\n" +">>> m.append(m)\n" +">>> m.append('x')\n" +">>> print(m)\n" +"<'a'|'b'|'c'|...|'x'>" #: ../Doc/whatsnew/3.2.rst:1172 msgid "(Contributed by Raymond Hettinger in :issue:`9826` and :issue:`9840`.)" @@ -2199,9 +2442,13 @@ msgid "" ">>> basicConfig(style='{', format=\"{name} -> {levelname} {message}\")\n" ">>> basicConfig(style='$', format=\"$name -> $levelname: $message\")" msgstr "" +">>> desde el registro, importe basicConfig\n" +">>> basicConfig(style='%', format=\"%(nombre)s -> %(nombrenivel)s: " +"%(mensaje)s\")\n" +">>> basicConfig(style='{', format=\"{nombre} -> {nombrenivel} {mensaje}\")\n" +">>> basicConfig(style='$', format=\"$nombre -> $nombrenivel: $mensaje\")" #: ../Doc/whatsnew/3.2.rst:1196 -#, fuzzy msgid "" "If no configuration is set-up before a logging event occurs, there is now a " "default configuration using a :class:`~logging.StreamHandler` directed to :" @@ -2211,13 +2458,14 @@ msgid "" "`logging.raiseExceptions`. The new default handler is stored in :data:" "`logging.lastResort`." msgstr "" -"Si no se establece ninguna configuración antes de que ocurra un evento de " -"logging, ahora hay una configuración predeterminada que usa una :class:" -"`~logging.StreamHandler` dirigido a :attr:`sys.stderr` para eventos de nivel " -"``WARNING`` o mayor. Anteriormente, un evento que ocurría antes de que se " -"establezca una configuración lanzaba una excepción o eliminaba " -"silenciosamente el evento según el valor de :attr:`logging.raiseExceptions`. " -"El nuevo gestor predeterminado se almacena en :attr:`logging.lastResort`." +"Si no se configura ninguna configuración antes de que se produzca un evento " +"de registro, ahora hay una configuración predeterminada que utiliza un :" +"class:`~logging.StreamHandler` dirigido a :data:`sys.stderr` para eventos de " +"nivel ``WARNING`` o superior. Anteriormente, un evento que se producía antes " +"de que se estableciera una configuración generaba una excepción o descartaba " +"el evento de forma silenciosa según el valor de :data:`logging." +"raiseExceptions`. El nuevo controlador predeterminado se almacena en :data:" +"`logging.lastResort`." #: ../Doc/whatsnew/3.2.rst:1204 msgid "" @@ -2276,6 +2524,15 @@ msgid "" "\"tom\",\"accounting\"\n" "\"susan\",\"sales\"" msgstr "" +">>> import csv, sys\n" +">>> w = csv.DictWriter(sys.stdout, ['nombre', 'dept'], dialect='unix')\n" +">>> w.writeheader()\n" +"\"nombre\", \"dept\"\n" +">>> w.writerows([\n" +"... {'nombre': 'tom', 'dept': 'contabilidad'},\n" +"... {'nombre': 'susan', 'dept': 'Ventas'}])\n" +"\"tom\", \"contabilidad\"\n" +"\"susan\", \"ventas\"" #: ../Doc/whatsnew/3.2.rst:1233 msgid "" @@ -2353,6 +2610,16 @@ msgid "" " yield\n" " logging.info('Exiting: %s', name)" msgstr "" +"de contextlib import contextmanager\n" +"import logging\n" +"\n" +"logging.basicConfig(level=logging.INFO)\n" +"\n" +"@contextmanager\n" +"def track_entry_and_exit(name):\n" +"logging.info('Entrando: %s', nombre)\n" +"yield\n" +"logging.info('Saliendo: %s', nombre)" #: ../Doc/whatsnew/3.2.rst:1270 msgid "Formerly, this would have only been usable as a context manager::" @@ -2364,6 +2631,9 @@ msgid "" " print('Some time consuming activity goes here')\n" " load_widget()" msgstr "" +"con track_entry_and_exit('cargador de widgets'):\n" +"print('Aquí se realiza una actividad que consume mucho tiempo')\n" +"load_widget()" #: ../Doc/whatsnew/3.2.rst:1276 msgid "Now, it can be used as a decorator as well::" @@ -2376,6 +2646,10 @@ msgid "" " print('Some time consuming activity goes here')\n" " load_widget()" msgstr "" +"@track_entry_and_exit('cargador de widgets')\n" +"def activity():\n" +"print('Aquí se realiza una actividad que consume mucho tiempo')\n" +"load_widget()" #: ../Doc/whatsnew/3.2.rst:1283 msgid "" @@ -2422,22 +2696,22 @@ msgid "" "assert hash(Fraction(3, 2)) == hash(1.5) == \\\n" " hash(Decimal(\"1.5\")) == hash(complex(1.5, 0))" msgstr "" +"afirmar hash(Fracción(3, 2)) == hash(1.5) == \\\n" +"hash(Decimal(\"1.5\")) == hash(complejo(1.5, 0))" #: ../Doc/whatsnew/3.2.rst:1303 -#, fuzzy msgid "" "Some of the hashing details are exposed through a new attribute, :data:`sys." "hash_info`, which describes the bit width of the hash value, the prime " "modulus, the hash values for *infinity* and *nan*, and the multiplier used " "for the imaginary part of a number:" msgstr "" -"Algunos de los detalles de hash se exponen a través de un nuevo atributo, :" -"attr:`sys.hash_info`, que describe el ancho de bits del valor hash, el " -"módulo principal, los valores hash para *infinity* y *nan*, y el " -"multiplicador utilizado para la parte imaginaria de un número:" +"Algunos de los detalles del hash se exponen a través de un nuevo atributo, :" +"data:`sys.hash_info`, que describe el ancho de bits del valor hash, el " +"módulo primo, los valores hash para *infinity* y *nan*, y el multiplicador " +"utilizado para la parte imaginaria de un número:" #: ../Doc/whatsnew/3.2.rst:1311 -#, fuzzy msgid "" "An early decision to limit the interoperability of various numeric types has " "been relaxed. It is still unsupported (and ill-advised) to have implicit " @@ -2447,14 +2721,14 @@ msgid "" "losslessly to either a decimal or rational representation, it makes sense to " "add them to the constructor and to support mixed-type comparisons." msgstr "" -"Se ha atenuado una decisión temprana para limitar la interoperabilidad de " -"varios tipos numéricos. Todavía no se admite (y es desaconsejable) tener una " -"mezcla implícita en expresiones aritméticas como ``Decimal('1.1') + " -"float('1.1')`` porque este último pierde información en el proceso de " -"construcción del float binario. Sin embargo, dado que el valor de punto " -"flotante existente se puede convertir sin pérdidas a una representación " -"decimal o racional, tiene sentido agregarlos al constructor y admitir " -"comparaciones de tipo mixto." +"Se ha relajado una decisión temprana de limitar la interoperabilidad de " +"varios tipos numéricos. Todavía no se admite (y no es aconsejable) la mezcla " +"implícita en expresiones aritméticas como ``Decimal('1.1') + float('1.1')`` " +"porque esta última pierde información en el proceso de construcción del " +"flotante binario. Sin embargo, dado que los valores de punto flotante " +"existentes se pueden convertir sin pérdida a una representación decimal o " +"racional, tiene sentido agregarlos al constructor y admitir comparaciones de " +"tipos mixtos." #: ../Doc/whatsnew/3.2.rst:1319 msgid "" @@ -2478,18 +2752,16 @@ msgstr "" "`8188`)." #: ../Doc/whatsnew/3.2.rst:1327 -#, fuzzy msgid "" "Similar changes were made to :class:`fractions.Fraction` so that the :meth:" "`~fractions.Fraction.from_float` and :meth:`~fractions.Fraction." "from_decimal` methods are no longer needed (:issue:`8294`):" msgstr "" -"Cambios similares se hicieron en :class:`fractions.Fraction` por lo que los " -"métodos :meth:`~fractions.Fraction.from_float()` y :meth:`~fractions." +"Se realizaron cambios similares en :class:`fractions.Fraction`, por lo que " +"los métodos :meth:`~fractions.Fraction.from_float` y :meth:`~fractions." "Fraction.from_decimal` ya no son necesarios (:issue:`8294`):" #: ../Doc/whatsnew/3.2.rst:1338 -#, fuzzy msgid "" "Another useful change for the :mod:`decimal` module is that the :attr:" "`Context.clamp ` attribute is now public. This is " @@ -2497,9 +2769,9 @@ msgid "" "formats specified in IEEE 754 (see :issue:`8540`)." msgstr "" "Otro cambio útil para el módulo :mod:`decimal` es que el atributo :attr:" -"`Context.clamp` ahora es público. Esto es útil para crear contextos que se " -"correspondan con los formatos de intercambio decimal especificados en IEEE " -"754 (ver :`8540`)." +"`Context.clamp ` ahora es público. Esto resulta útil " +"para crear contextos que corresponden a los formatos de intercambio decimal " +"especificados en IEEE 754 (consulte :issue:`8540`)." #: ../Doc/whatsnew/3.2.rst:1343 msgid "(Contributed by Mark Dickinson and Raymond Hettinger.)" @@ -2532,6 +2804,16 @@ msgid "" "dr-xr-xr-x 5 ftp ftp 4096 May 6 10:43 CentOS\n" "dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora" msgstr "" +">>> de ftplib import FTP\n" +">>> con FTP(\"ftp1.at.proftpd.org\") como ftp:\n" +"ftp.login()\n" +"ftp.dir()\n" +"\n" +"'230 Inicio de sesión anónimo correcto, se aplican restricciones.'\n" +"dr-xr-xr-x 9 ftp ftp 154 ​​6 de mayo 10:43 .\n" +"dr-xr-xr-x 9 ftp ftp 154 ​​6 de mayo 10:43 ..\n" +"dr-xr-xr-x 5 ftp ftp 4096 6 de mayo 10:43 CentOS\n" +"dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora" #: ../Doc/whatsnew/3.2.rst:1363 msgid "" @@ -2548,6 +2830,9 @@ msgid "" " for line in f:\n" " process(line)" msgstr "" +"con fileinput.input(files=('log1.txt', 'log2.txt')) como f:\n" +"para línea en f:\n" +"proceso(línea)" #: ../Doc/whatsnew/3.2.rst:1370 msgid "" @@ -2599,17 +2884,16 @@ msgid "select" msgstr "select" #: ../Doc/whatsnew/3.2.rst:1391 -#, fuzzy msgid "" "The :mod:`select` module now exposes a new, constant attribute, :const:" "`~select.PIPE_BUF`, which gives the minimum number of bytes which are " "guaranteed not to block when :func:`select.select` says a pipe is ready for " "writing." msgstr "" -"El módulo :mod:`select` ahora presenta un nuevo atributo constante, :attr:" -"`~select.PIPE_BUF`, que da el número mínimo de bytes que están garantizados " -"para no bloquearse cuando :func:`select.select` dice que una tubería está " -"lista para escribir." +"El módulo :mod:`select` ahora expone un nuevo atributo constante, :const:" +"`~select.PIPE_BUF`, que proporciona la cantidad mínima de bytes que se " +"garantiza que no se bloquearán cuando :func:`select.select` indica que una " +"tubería está lista para escribir." #: ../Doc/whatsnew/3.2.rst:1400 msgid "(Available on Unix systems. Patch by Sébastien Sablé in :issue:`9862`)" @@ -2655,7 +2939,6 @@ msgstr "" "issue:`2846`.)" #: ../Doc/whatsnew/3.2.rst:1431 -#, fuzzy msgid "" "Also, the :class:`zipfile.ZipExtFile ` class was " "reworked internally to represent files stored inside an archive. The new " @@ -2663,12 +2946,12 @@ msgid "" "BufferedReader` object for more speedups. It also solves an issue where " "interleaved calls to *read* and *readline* gave the wrong results." msgstr "" -"Además, la clase :class:`zipfile.ZipExtFile` se modificó internamente para " -"representar archivos almacenados dentro de un archivo. La nueva " -"implementación es significativamente más rápida y se puede incluir en un " -"objeto :class:`io.BufferedReader` para obtener más aceleraciones. También " -"resuelve un problema en el que las llamadas intercaladas a *read* y " -"*readline* daban resultados incorrectos." +"Además, la clase :class:`zipfile.ZipExtFile ` se " +"modificó internamente para representar archivos almacenados dentro de un " +"archivo. La nueva implementación es significativamente más rápida y se puede " +"incluir en un objeto :class:`io.BufferedReader` para lograr más velocidad. " +"También resuelve un problema en el que las llamadas intercaladas a *read* y " +"*readline* arrojaban resultados incorrectos." #: ../Doc/whatsnew/3.2.rst:1437 msgid "(Patch submitted by Nir Aides in :issue:`7610`.)" @@ -2725,6 +3008,22 @@ msgid "" "-rw-r--r-- monty/501 124 2011-01-26 17:59:11 py_todo.txt\n" "-rw-r--r-- monty/501 1399 2011-01-26 17:59:11 semaphore_notes.txt" msgstr "" +">>> import tarfile, glob\n" +"\n" +">>> def myfilter(tarinfo):\n" +"... if tarinfo.isfile(): # solo guardar archivos reales\n" +"... tarinfo.uname = 'monty' # redactar el nombre de usuario\n" +"... return tarinfo\n" +"\n" +">>> with tarfile.open(name='myarchive.tar.gz', mode='w:gz') as tf:\n" +"... for filename in glob.glob('*.txt'):\n" +"... tf.add(filename, filter=myfilter)\n" +"... tf.list()\n" +"-rw-r--r-- monty/501 902 2011-01-26 17:59:11 annotations.txt\n" +"-rw-r--r-- monty/501 123 2011-01-26 17:59:11 preguntas_generales.txt\n" +"-rw-r--r-- monty/501 3514 2011-01-26 17:59:11 prion.txt\n" +"-rw-r--r-- monty/501 124 2011-01-26 17:59:11 py_todo.txt\n" +"-rw-r--r-- monty/501 1399 2011-01-26 17:59:11 notas_semáforo.txt" #: ../Doc/whatsnew/3.2.rst:1471 msgid "" @@ -2761,6 +3060,17 @@ msgid "" "'ecdsa-with-SHA1','md4', 'md5', 'sha1', 'DSA-SHA', 'sha224',\n" "'dsaEncryption', 'DSA', 'RIPEMD160', 'sha', 'MD5', 'sha384'}" msgstr "" +">>> importar hashlib\n" +"\n" +">>> hashlib.algoritmos_garantizados\n" +"{'sha1', 'sha224', 'sha384', 'sha256', 'sha512', 'md5'}\n" +"\n" +">>> hashlib.algoritmos_disponibles\n" +"{'md2', 'SHA256', 'SHA512', 'dsaWithSHA', 'mdc2', 'SHA224', 'MD4', " +"'sha256',\n" +"'sha512', 'ripemd160', 'SHA1', 'MDC2', 'SHA', 'SHA384', 'MD2',\n" +"'ecdsa-with-SHA1','md4', 'md5', 'sha1', 'DSA-SHA', 'sha224',\n" +"'dsaEncryption', 'DSA', 'RIPEMD160', 'sha', 'MD5', 'sha384'}" #: ../Doc/whatsnew/3.2.rst:1491 msgid "(Suggested by Carl Chenet in :issue:`7418`.)" @@ -2801,6 +3111,18 @@ msgid "" " ...\n" "ValueError: malformed node or string: <_ast.Call object at 0x101739a10>" msgstr "" +">>> from ast import literal_eval\n" +"\n" +">>> request = \"{'req': 3, 'func': 'pow', 'args': (2, 0.5)}\"\n" +">>> literal_eval(request)\n" +"{'args': (2, 0.5), 'req': 3, 'func': 'pow'}\n" +"\n" +">>> request = \"os.system('do something dangerous')\"\n" +">>> literal_eval(request)\n" +"Traceback (última llamada más reciente):\n" +"...\n" +"ValueError: nodo o cadena con formato incorrecto: <_ast.Call object at " +"0x101739a10>" #: ../Doc/whatsnew/3.2.rst:1517 msgid "(Implemented by Benjamin Peterson and Georg Brandl.)" @@ -2823,14 +3145,13 @@ msgstr "" "fsdecode`, para codificar y decodificar nombres de archivo:" #: ../Doc/whatsnew/3.2.rst:1532 -#, fuzzy msgid "" "Some operating systems allow direct access to encoded bytes in the " "environment. If so, the :const:`os.supports_bytes_environ` constant will be " "true." msgstr "" "Algunos sistemas operativos permiten el acceso directo a bytes codificados " -"en el entorno. Si es así, la constante :attr:`os.supports_bytes_environ` " +"en el entorno. En ese caso, la constante :const:`os.supports_bytes_environ` " "será verdadera." #: ../Doc/whatsnew/3.2.rst:1536 @@ -2931,6 +3252,29 @@ msgid "" "... description='xz compression'\n" "... )" msgstr "" +">>> import shutil, pprint\n" +"\n" +">>> os.chdir('mydata') # cambiar al directorio de origen\n" +">>> f = shutil.make_archive('/var/backup/mydata',\n" +"... 'zip') # archivar el directorio actual\n" +">>> f # mostrar el nombre del archivo\n" +"'/var/backup/mydata.zip'\n" +">>> os.chdir('tmp') # cambiar a un desempaquetado\n" +">>> shutil.unpack_archive('/var/backup/mydata.zip') # recuperar los datos\n" +"\n" +">>> pprint.pprint(shutil.get_archive_formats()) # mostrar formatos " +"conocidos\n" +"[('bztar', \"archivo tar comprimido con bzip2\"),\n" +"('gztar', \"archivo tar comprimido con gzip\"),\n" +"('tar', 'archivo tar sin comprimir'),\n" +"('zip', 'ZIP file')]\n" +"\n" +">>> shutil.register_archive_format( # registrar un nuevo formato de archivo\n" +"... name='xz',\n" +"... function=xz.compress, # función de archivado invocable\n" +"... extra_args=[('level', 8)], # argumentos para la función\n" +"... description='xz compression'\n" +"... )" #: ../Doc/whatsnew/3.2.rst:1595 msgid "sqlite3" @@ -2945,12 +3289,11 @@ msgstr "" "dos nuevas capacidades." #: ../Doc/whatsnew/3.2.rst:1599 -#, fuzzy msgid "" "The :attr:`!sqlite3.Connection.in_transit` attribute is true if there is an " "active transaction for uncommitted changes." msgstr "" -"El atributo :attr:`sqlite3.Connection.in_transit` es verdadero si hay una " +"El atributo :attr:`!sqlite3.Connection.in_transit` es verdadero si hay una " "transacción activa para cambios no confirmados." #: ../Doc/whatsnew/3.2.rst:1602 @@ -2991,16 +3334,15 @@ msgid "The :mod:`socket` module has two new improvements." msgstr "El módulo :mod:`socket` tiene dos nuevas mejoras." #: ../Doc/whatsnew/3.2.rst:1625 -#, fuzzy msgid "" "Socket objects now have a :meth:`~socket.socket.detach` method which puts " "the socket into closed state without actually closing the underlying file " "descriptor. The latter can then be reused for other purposes. (Added by " "Antoine Pitrou; :issue:`8524`.)" msgstr "" -"Los objetos de socket ahora tienen un método :meth:`~socket.socket.detach()` " +"Los objetos de socket ahora tienen un método :meth:`~socket.socket.detach` " "que pone el socket en estado cerrado sin cerrar realmente el descriptor de " -"archivo subyacente. Este último se puede reutilizar para otros fines. " +"archivo subyacente. Este último puede reutilizarse para otros fines. " "(Agregado por Antoine Pitrou; :issue:`8524`.)" #: ../Doc/whatsnew/3.2.rst:1630 @@ -3040,19 +3382,17 @@ msgstr "" "wrap_socket` para crear un socket SSL a partir de un contexto SSL." #: ../Doc/whatsnew/3.2.rst:1646 -#, fuzzy msgid "" "A new function, :func:`!ssl.match_hostname`, supports server identity " "verification for higher-level protocols by implementing the rules of HTTPS " "(from :rfc:`2818`) which are also suitable for other protocols." msgstr "" -"Una nueva función, :func:`ssl.match_hostname`, admite la verificación de " +"Una nueva función, :func:`!ssl.match_hostname`, admite la verificación de " "identidad del servidor para protocolos de nivel superior mediante la " "implementación de las reglas de HTTPS (de :rfc:`2818`) que también son " "adecuadas para otros protocolos." #: ../Doc/whatsnew/3.2.rst:1650 -#, fuzzy msgid "" "The :func:`ssl.wrap_socket() ` constructor " "function now takes a *ciphers* argument. The *ciphers* string lists the " @@ -3060,10 +3400,11 @@ msgid "" "documentation `__." msgstr "" -"La función constructora :func:`ssl.wrap_socket` ahora toma un argumento " -"*ciphers*. La cadena *ciphers* enumera los algoritmos de cifrado permitidos " -"utilizando el formato descrito en la `documentación de OpenSSL `__." +"La función constructora :func:`ssl.wrap_socket() ` ahora acepta un argumento *ciphers*. La cadena *ciphers* " +"enumera los algoritmos de cifrado permitidos utilizando el formato descrito " +"en `OpenSSL documentation `__." #: ../Doc/whatsnew/3.2.rst:1655 msgid "" @@ -3099,17 +3440,16 @@ msgstr "" "error de \"algoritmo desconocido\"." #: ../Doc/whatsnew/3.2.rst:1669 -#, fuzzy msgid "" "The version of OpenSSL being used is now accessible using the module " "attributes :const:`ssl.OPENSSL_VERSION` (a string), :const:`ssl." "OPENSSL_VERSION_INFO` (a 5-tuple), and :const:`ssl.OPENSSL_VERSION_NUMBER` " "(an integer)." msgstr "" -"La versión de OpenSSL que se está utilizando ahora es accesible usando los " -"atributos del módulo :data:`ssl.OPENSSL_VERSION` (una cadena de " -"caracteres), :data:`ssl.OPENSSL_VERSION_INFO` (una tupla de 5), y :data:`ssl." -"OPENSSL_VERSION_NUMBER` (un número entero)." +"La versión de OpenSSL que se está utilizando ahora es accesible mediante los " +"atributos del módulo :const:`ssl.OPENSSL_VERSION` (una cadena), :const:`ssl." +"OPENSSL_VERSION_INFO` (una tupla de 5) y :const:`ssl.OPENSSL_VERSION_NUMBER` " +"(un entero)." #: ../Doc/whatsnew/3.2.rst:1674 msgid "" @@ -3124,28 +3464,26 @@ msgid "nntp" msgstr "nntp" #: ../Doc/whatsnew/3.2.rst:1680 -#, fuzzy msgid "" "The :mod:`!nntplib` module has a revamped implementation with better bytes " "and text semantics as well as more practical APIs. These improvements break " "compatibility with the nntplib version in Python 3.1, which was partly " "dysfunctional in itself." msgstr "" -"El módulo :mod:`nntplib` tiene una implementación renovada con mejoras en la " -"semántica de bytes y texto, así como APIs más prácticas. Estas mejoras " -"rompen la compatibilidad con la versión nntplib en Python 3.1, que en sí " -"misma era parcialmente disfuncional." +"El módulo :mod:`!nntplib` tiene una implementación renovada con una mejor " +"semántica de bytes y texto, así como API más prácticas. Estas mejoras rompen " +"la compatibilidad con la versión nntplib en Python 3.1, que en parte era " +"disfuncional en sí misma." #: ../Doc/whatsnew/3.2.rst:1685 -#, fuzzy msgid "" "Support for secure connections through both implicit (using :class:`!nntplib." "NNTP_SSL`) and explicit (using :meth:`!nntplib.NNTP.starttls`) TLS has also " "been added." msgstr "" "También se ha agregado soporte para conexiones seguras a través de TLS " -"implícito (usando :class:`nntplib.NNTP_SSL`) y explícito (usando :meth:" -"`nntplib.NNTP.starttls`)." +"implícito (usando :class:`!nntplib.NNTP_SSL`) y explícito (usando :meth:`!" +"nntplib.NNTP.starttls`)." #: ../Doc/whatsnew/3.2.rst:1689 msgid "" @@ -3301,6 +3639,7 @@ msgstr "" #: ../Doc/whatsnew/3.2.rst:1755 msgid "$ python -m unittest discover -s my_proj_dir -p _test.py" msgstr "" +"$ python -m unittest discover -s mi_directorio_del_proyecto -p _test.py" #: ../Doc/whatsnew/3.2.rst:1759 ../Doc/whatsnew/3.2.rst:1768 #: ../Doc/whatsnew/3.2.rst:1924 @@ -3308,14 +3647,12 @@ msgid "(Contributed by Michael Foord.)" msgstr "(Contribución de Michael Foord.)" #: ../Doc/whatsnew/3.2.rst:1761 -#, fuzzy msgid "" "Experimentation at the interactive prompt is now easier because the :class:" "`unittest.TestCase` class can now be instantiated without arguments:" msgstr "" -"La experimentación en el indicador interactivo ahora es más fácil porque la " -"clase :class:`unittest.case.TestCase` ahora se puede instanciar sin " -"argumentos:" +"La experimentación en el indicador interactivo ahora es más sencilla porque " +"la clase :class:`unittest.TestCase` ahora se puede instanciar sin argumentos:" #: ../Doc/whatsnew/3.2.rst:1770 msgid "" @@ -3333,6 +3670,8 @@ msgid "" "with self.assertWarns(DeprecationWarning):\n" " legacy_function('XYZ')" msgstr "" +"con self.assertWarns(Advertencia de desuso):\n" +"legacy_function('XYZ')" #: ../Doc/whatsnew/3.2.rst:1778 msgid "(Contributed by Antoine Pitrou, :issue:`9754`.)" @@ -3355,6 +3694,8 @@ msgid "" "def test_anagram(self):\n" " self.assertCountEqual('algorithm', 'logarithm')" msgstr "" +"def test_anagram(self):\n" +"self.assertCountEqual('algoritmo', 'logaritmo')" #: ../Doc/whatsnew/3.2.rst:1790 msgid "" @@ -3382,7 +3723,6 @@ msgstr "" "de limpiezas." #: ../Doc/whatsnew/3.2.rst:1799 -#, fuzzy msgid "" "For example, :meth:`~unittest.TestCase.assertRegex` is the new name for :" "meth:`!assertRegexpMatches` which was misnamed because the test uses :func:" @@ -3392,12 +3732,13 @@ msgid "" "old name for the :mod:`re` module, and it has unambiguous camel-casing." msgstr "" "Por ejemplo, :meth:`~unittest.TestCase.assertRegex` es el nuevo nombre de :" -"meth:`~unittest.TestCase.assertRegexpMatches` que fue mal nombrado porque la " -"prueba usa :func:`re.search`, no :func:`re.match`. Otros métodos que usan " +"meth:`!assertRegexpMatches`, que se nombró incorrectamente porque la prueba " +"usa :func:`re.search`, no :func:`re.match`. Otros métodos que usan " "expresiones regulares ahora se nombran usando la forma corta \"Regex\" en " -"lugar de \"Regexp\" -- esto coincide con los nombres usados en otras " -"implementaciones de unittest, coincide con el nombre antiguo de Python para " -"el módulo :mod:`re`, y utiliza inequívocamente camel-case." +"lugar de \"Regexp\"; esto coincide con los nombres usados ​​en otras " +"implementaciones de pruebas unitarias, coincide con el nombre antiguo de " +"Python para el módulo :mod:`re` y tiene un uso inequívoco de mayúsculas y " +"minúsculas." #: ../Doc/whatsnew/3.2.rst:1807 msgid "(Contributed by Raymond Hettinger and implemented by Ezio Melotti.)" @@ -3420,77 +3761,68 @@ msgid "Preferred Name" msgstr "Preferred Name" #: ../Doc/whatsnew/3.2.rst:1815 -#, fuzzy msgid ":meth:`!assert_`" -msgstr ":meth:`assert_`" +msgstr ":meth:`!assert_`" #: ../Doc/whatsnew/3.2.rst:1815 msgid ":meth:`.assertTrue`" msgstr ":meth:`.assertTrue`" #: ../Doc/whatsnew/3.2.rst:1816 -#, fuzzy msgid ":meth:`!assertEquals`" -msgstr ":meth:`assertEquals`" +msgstr ":meth:`!assertEquals`" #: ../Doc/whatsnew/3.2.rst:1816 msgid ":meth:`.assertEqual`" msgstr ":meth:`.assertEqual`" #: ../Doc/whatsnew/3.2.rst:1817 -#, fuzzy msgid ":meth:`!assertNotEquals`" -msgstr ":meth:`assertNotEquals`" +msgstr ":meth:`!assertNotEquals`" #: ../Doc/whatsnew/3.2.rst:1817 msgid ":meth:`.assertNotEqual`" msgstr ":meth:`.assertNotEqual`" #: ../Doc/whatsnew/3.2.rst:1818 -#, fuzzy msgid ":meth:`!assertAlmostEquals`" -msgstr ":meth:`assertAlmostEquals`" +msgstr ":meth:`!assertAlmostEquals`" #: ../Doc/whatsnew/3.2.rst:1818 msgid ":meth:`.assertAlmostEqual`" msgstr ":meth:`.assertAlmostEqual`" #: ../Doc/whatsnew/3.2.rst:1819 -#, fuzzy msgid ":meth:`!assertNotAlmostEquals`" -msgstr ":meth:`assertNotAlmostEquals`" +msgstr ":meth:`!assertNotAlmostEquals`" #: ../Doc/whatsnew/3.2.rst:1819 msgid ":meth:`.assertNotAlmostEqual`" msgstr ":meth:`.assertNotAlmostEqual`" #: ../Doc/whatsnew/3.2.rst:1822 -#, fuzzy msgid "" "Likewise, the ``TestCase.fail*`` methods deprecated in Python 3.1 are " "expected to be removed in Python 3.3." msgstr "" "Asimismo, se espera que los métodos ``TestCase.fail*`` obsoletos en Python " -"3.1 se eliminen en Python 3.3. También vea la sección :ref:`deprecated-" -"aliases` en la documentación :mod:`unittest`." +"3.1 se eliminen en Python 3.3." #: ../Doc/whatsnew/3.2.rst:1825 msgid "(Contributed by Ezio Melotti; :issue:`9424`.)" msgstr "(Contribución de Ezio Melotti; :issue:`9424`.)" #: ../Doc/whatsnew/3.2.rst:1827 -#, fuzzy msgid "" "The :meth:`!assertDictContainsSubset` method was deprecated because it was " "misimplemented with the arguments in the wrong order. This created hard-to-" "debug optical illusions where tests like ``TestCase()." "assertDictContainsSubset({'a':1, 'b':2}, {'a':1})`` would fail." msgstr "" -"El método :meth:`~unittest.TestCase.assertDictContainsSubset` quedó obsoleto " -"porque porque estaba mal implementado con los argumentos en el orden " -"incorrecto. Esto creó ilusiones ópticas difíciles de depurar en las que " -"pruebas como ``TestCase().assertDictContainsSubset({'a':1, 'b':2}, " -"{'a':1})`` fallarían." +"El método :meth:`!assertDictContainsSubset` quedó obsoleto porque se " +"implementó incorrectamente con los argumentos en el orden incorrecto. Esto " +"generó ilusiones ópticas difíciles de depurar donde fallaban pruebas como " +"``TestCase().assertDictContainsSubset({'a':1, 'b':2}, {'a':1})``." #: ../Doc/whatsnew/3.2.rst:1835 msgid "random" @@ -3545,7 +3877,6 @@ msgid "asyncore" msgstr "asyncore" #: ../Doc/whatsnew/3.2.rst:1861 -#, fuzzy msgid "" ":class:`!asyncore.dispatcher` now provides a :meth:`!handle_accepted` method " "returning a ``(sock, addr)`` pair which is called when a connection has " @@ -3553,12 +3884,11 @@ msgid "" "used as a replacement for old :meth:`!handle_accept` and avoids the user to " "call :meth:`!accept` directly." msgstr "" -":class:`asyncore.dispatcher` ahora proporciona un método :meth:`~asyncore." -"dispatcher.handle_accepted()` que devuelve un par ``(sock, addr)`` al que se " -"llama cuando se ha establecido realmente una conexión con un nuevo extremo " -"remoto. Se supone que esto se usa como reemplazo del antiguo :meth:" -"`~asyncore.dispatcher.handle_accept()` y evita que el usuario llame " -"directamente a :meth:`~asyncore.dispatcher.accept()`." +":class:`!asyncore.dispatcher` ahora proporciona un método :meth:`!" +"handle_accepted` que devuelve un par ``(sock, addr)`` que se llama cuando se " +"ha establecido una conexión con un nuevo punto final remoto. Se supone que " +"esto se usa como reemplazo del antiguo :meth:`!handle_accept` y evita que el " +"usuario llame directamente a :meth:`!accept`." #: ../Doc/whatsnew/3.2.rst:1868 msgid "(Contributed by Giampaolo Rodolà; :issue:`6706`.)" @@ -3583,6 +3913,8 @@ msgid "" "with tempfile.TemporaryDirectory() as tmpdirname:\n" " print('created temporary dir:', tmpdirname)" msgstr "" +"con tempfile.TemporaryDirectory() como tmpdirname:\n" +"print('directorio temporal creado:', tmpdirname)" #: ../Doc/whatsnew/3.2.rst:1880 msgid "(Contributed by Neil Schemenauer and Nick Coghlan; :issue:`5178`.)" @@ -3619,6 +3951,20 @@ msgid "" ">>> getgeneratorstate(g)\n" "'GEN_CLOSED'" msgstr "" +">>> de inspeccionar importar obtenergeneratorstate\n" +">>> def gen():\n" +"... rendimiento 'demo'\n" +"...\n" +">>> g = gen()\n" +">>> obtenergeneratorstate(g)\n" +"'GEN_CREATED'\n" +">>> siguiente(g)\n" +"'demo'\n" +">>> obtenergeneratorstate(g)\n" +"'GEN_SUSPENDED'\n" +">>> siguiente(g, None)\n" +">>> obtenergeneratorstate(g)\n" +"'GEN_CLOSED'" #: ../Doc/whatsnew/3.2.rst:1904 msgid "(Contributed by Rodolpho Eckhardt and Nick Coghlan, :issue:`10220`.)" @@ -3652,6 +3998,18 @@ msgid "" ">>> inspect.getattr_static(a, 'f')\n" "" msgstr "" +">>> clase A:\n" +"... @property\n" +"... def f(self):\n" +"... print('En ejecución')\n" +"... return 10\n" +"...\n" +">>> a = A()\n" +">>> getattr(a, 'f')\n" +"En ejecución\n" +"10\n" +">>> inspect.getattr_static(a, 'f')\n" +"" #: ../Doc/whatsnew/3.2.rst:1927 msgid "pydoc" @@ -3669,7 +4027,7 @@ msgstr "" #: ../Doc/whatsnew/3.2.rst:1933 msgid "$ pydoc3.2 -b" -msgstr "" +msgstr "$pydoc3.2-b" #: ../Doc/whatsnew/3.2.rst:1937 msgid "(Contributed by Ron Adam; :issue:`2001`.)" @@ -3717,6 +4075,28 @@ msgid "" " 1: seq\n" " 2: i" msgstr "" +">>> import dis, random\n" +">>> dis.show_code(random.choice)\n" +"Nombre: choice\n" +"Nombre de archivo: /Library/Frameworks/Python.framework/Versions/3.2/lib/" +"python3.2/random.py\n" +"Número de argumentos: 2\n" +"Argumentos solo de Kw: 0\n" +"Número de variables locales: 3\n" +"Tamaño de pila: 11\n" +"Indicadores: OPTIMIZED, NEWLOCALS, NOFREE\n" +"Constantes:\n" +"0: 'Elija un elemento aleatorio de una secuencia no vacía'.\n" +"1: 'No se puede elegir de una secuencia vacía'\n" +"Nombres:\n" +"0: _randbelow\n" +"1: len\n" +"2: ValueError\n" +"3: IndexError\n" +"Nombres de variables:\n" +"0: self\n" +"1: seq\n" +"2: i" #: ../Doc/whatsnew/3.2.rst:1969 msgid "" @@ -3748,6 +4128,23 @@ msgid "" " 34 BINARY_FLOOR_DIVIDE\n" " 35 RETURN_VALUE" msgstr "" +">>> dis('3*x+1 si x%2==1 sino x//2')\n" +"1 0 CARGAR_NOMBRE 0 (x)\n" +"3 CARGAR_CONST 0 (2)\n" +"6 MÓDULO_BINARIO\n" +"7 CARGAR_CONST 1 (1)\n" +"10 COMPARAR_OP 2 (==)\n" +"13 POP_SALTAR_SI_FALSO 28\n" +"16 CARGAR_CONST 2 (3)\n" +"19 CARGAR_NOMBRE 0 (x)\n" +"22 MULTIPLICACIÓN_BINARIA\n" +"23 CARGAR_CONST 1 (1)\n" +"26 SUMA_BINARIA\n" +"27 VALOR_DEVUELTO\n" +">> 28 CARGAR_NOMBRE 0 (x)\n" +"31 CARGAR_CONST 0 (2)\n" +"34 DIVISIÓN_PISO_BINARIO\n" +"35 VALOR_DEVUELTO" #: ../Doc/whatsnew/3.2.rst:1991 msgid "" @@ -3767,13 +4164,12 @@ msgid "dbm" msgstr "dbm" #: ../Doc/whatsnew/3.2.rst:2000 -#, fuzzy msgid "" "All database modules now support the :meth:`!get` and :meth:`!setdefault` " "methods." msgstr "" -"Todos los módulos de base de datos ahora admiten los métodos :meth:`get` y :" -"meth:`setdefault`." +"Todos los módulos de base de datos ahora admiten los métodos :meth:`!get` y :" +"meth:`!setdefault`." #: ../Doc/whatsnew/3.2.rst:2002 msgid "(Suggested by Ray Allen in :issue:`9523`.)" @@ -3839,6 +4235,16 @@ msgid "" ">>> site.getusersitepackages()\n" "'/Users/raymondhettinger/Library/Python/3.2/lib/python/site-packages'" msgstr "" +">>> importar sitio\n" +">>> site.getsitepackages()\n" +"['/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-" +"packages',\n" +"'/Library/Frameworks/Python.framework/Versions/3.2/lib/site-python',\n" +"'/Library/Python/3.2/site-packages']\n" +">>> site.getuserbase()\n" +"'/Usuarios/raymondhettinger/Library/Python/3.2'\n" +">>> site.getusersitepackages()\n" +"'/Usuarios/raymondhettinger/Library/Python/3.2/lib/python/site-packages'" #: ../Doc/whatsnew/3.2.rst:2035 msgid "" @@ -3855,6 +4261,10 @@ msgid "" "$ python -m site --user-site\n" "/Users/raymondhettinger/.local/lib/python3.2/site-packages" msgstr "" +"$ python -m site --user-base\n" +"/Usuarios/raymondhettinger/.local\n" +"$ python -m site --user-site\n" +"/Usuarios/raymondhettinger/.local/lib/python3.2/site-packages" #: ../Doc/whatsnew/3.2.rst:2045 msgid "(Contributed by Tarek Ziadé in :issue:`6693`.)" @@ -3899,16 +4309,15 @@ msgstr "" "Python como\" 3.2 \"." #: ../Doc/whatsnew/3.2.rst:2062 -#, fuzzy msgid "" "It also provides access to the paths and variables corresponding to one of " "seven named schemes used by ``distutils``. Those include *posix_prefix*, " "*posix_home*, *posix_user*, *nt*, *nt_user*, *os2*, *os2_home*:" msgstr "" "También proporciona acceso a las rutas y variables correspondientes a uno de " -"los siete esquemas con nombre utilizados por :mod:`distutils`. Estos " -"incluyen *posix_prefix*, *posix_home*, *posix_user*, *nt*, *nt_user *, " -"*os2*, *os2_home*:" +"los siete esquemas con nombre utilizados por ``distutils``, entre los que se " +"incluyen *posix_prefix*, *posix_home*, *posix_user*, *nt*, *nt_user*, *os2* " +"y *os2_home*:" #: ../Doc/whatsnew/3.2.rst:2066 msgid "" @@ -3968,6 +4377,41 @@ msgid "" " userbase = \"C:\\Documents and Settings\\Raymond\\Application " "Data\\Python\"" msgstr "" +"C:\\Python32>python -m sysconfig\n" +"Plataforma: \"win32\"\n" +"Versión de Python: \"3.2\"\n" +"Esquema de instalación actual: \"nt\"\n" +"\n" +"Rutas:\n" +"data = \"C:\\Python32\"\n" +"include = \"C:\\Python32\\Include\"\n" +"platinclude = \"C:\\Python32\\Include\"\n" +"platlib = \"C:\\Python32\\Lib\\site-packages\"\n" +"platstdlib = \"C:\\Python32\\Lib\"\n" +"purelib = \"C:\\Python32\\Lib\\site-packages\"\n" +"scripts = \"C:\\Python32\\Scripts\"\n" +"stdlib = \"C:\\Python32\\Lib\"\n" +"\n" +"Variables:\n" +"BINDIR = \"C:\\Python32\"\n" +"BINLIBDEST = \"C:\\Python32\\Lib\"\n" +"EXE = \".exe\"\n" +"INCLUDEPY = \"C:\\Python32\\Include\"\n" +"LIBDEST = \"C:\\Python32\\Lib\"\n" +"SO = \".pyd\"\n" +"VERSION = \"32\"\n" +"abiflags = \"\"\n" +"base = \"C:\\Python32\"\n" +"exec_prefix = \"C:\\Python32\"\n" +"platbase = \"C:\\Python32\"\n" +"prefix = \"C:\\Python32\"\n" +"projectbase = \"C:\\Python32\"\n" +"py_version = \"3.2\"\n" +"py_version_nodot = \"32\"\n" +"py_version_short = \"3.2\"\n" +"srcdir = \"C:\\Python32\"\n" +"userbase = \"C:\\Documentos y configuraciones\\Raymond\\Datos de " +"aplicación\\Python\"" #: ../Doc/whatsnew/3.2.rst:2110 msgid "(Moved out of Distutils by Tarek Ziadé.)" @@ -4000,11 +4444,11 @@ msgstr "" "``continue`` y ``next`` que continúan depurando." #: ../Doc/whatsnew/3.2.rst:2121 -#, fuzzy msgid "" "The :class:`~pdb.Pdb` class constructor now accepts a *nosigint* argument." msgstr "" -"El constructor de la clase :class:`Pdb` ahora acepta un argumento *nosigint*." +"El constructor de la clase :class:`~pdb.Pdb` ahora acepta un argumento " +"*nosigint*." #: ../Doc/whatsnew/3.2.rst:2122 msgid "" @@ -4046,7 +4490,6 @@ msgid "configparser" msgstr "configparser" #: ../Doc/whatsnew/3.2.rst:2135 -#, fuzzy msgid "" "The :mod:`configparser` module was modified to improve usability and " "predictability of the default parser and its supported INI syntax. The old :" @@ -4058,11 +4501,11 @@ msgid "" msgstr "" "El módulo :mod:`configparser` se modificó para mejorar la usabilidad y la " "previsibilidad del analizador predeterminado y su sintaxis INI compatible. " -"La antigua clase :class:`ConfigParser` fue eliminada en favor de :class:" -"`SafeConfigParser` que a su vez ha sido renombrada a :class:`~configparser." +"La antigua clase :class:`!ConfigParser` se eliminó en favor de :class:`!" +"SafeConfigParser`, que a su vez se renombró como :class:`~configparser." "ConfigParser`. La compatibilidad con comentarios en línea ahora está " -"desactivada de forma predeterminada y no se permiten duplicados de secciones " -"u opciones en una única fuente de configuración." +"desactivada de manera predeterminada y no se permiten secciones u opciones " +"duplicadas en una única fuente de configuración." #: ../Doc/whatsnew/3.2.rst:2142 msgid "Config parsers gained a new API based on the mapping protocol::" @@ -4099,6 +4542,31 @@ msgid "" ">>> section['title']\n" "'Options (editable: no)'" msgstr "" +">>> parser = ConfigParser()\n" +">>> parser.read_string(\"\"\"\n" +"... [PREDETERMINADO]\n" +"... ubicación = esquina superior izquierda\n" +"... visible = sí\n" +"... editable = no\n" +"... color = azul\n" +"...\n" +"... [principal]\n" +"... título = Menú principal\n" +"... color = verde\n" +"...\n" +"... [opciones]\n" +"... título = Opciones\n" +"... \"\"\")\n" +">>> parser['main']['color']\n" +"'verde'\n" +">>> parser['main']['editable']\n" +"'no'\n" +">>> sección = parser['opciones']\n" +">>> sección['título']\n" +"'Opciones'\n" +">>> sección['título'] = 'Opciones (editables: %(editables)s)'\n" +">>> sección['título']\n" +"'Opciones (editables: no)'" #: ../Doc/whatsnew/3.2.rst:2170 msgid "" @@ -4159,6 +4627,35 @@ msgid "" ">>> instance['zope9-location']\n" "'/opt/zope'" msgstr "" +">>> parser = ConfigParser(interpolation=ExtendedInterpolation())\n" +">>> parser.read_dict({'buildout': {'directorio': '/home/ambv/zope9'},\n" +"... 'personalizado': {'prefijo': '/usr/local'}})\n" +">>> parser.read_string(\"\"\"\n" +"... [buildout]\n" +"... partes =\n" +"... zope9\n" +"... instancia\n" +"... enlaces-de-busqueda =\n" +"... ${buildout:directorio}/descargas/dist\n" +"...\n" +"... [zope9]\n" +"... receta = plone.recipe.zope9install\n" +"... ubicación = /opt/zope\n" +"...\n" +"... [instancia]\n" +"... receta = plone.recipe.zope9instance\n" +"... ubicación-zope9 = ${zope9:ubicación}\n" +"... configuración-zope = ${personalizado:prefijo}/etc/zope.conf\n" +"... \"\"\")\n" +">>> parser['buildout']['find-links']\n" +"'\\n/home/ambv/zope9/downloads/dist'\n" +">>> parser['instancia']['zope-conf']\n" +"'/usr/local/etc/zope.conf'\n" +">>> instancia = parser['instancia']\n" +">>> instancia['zope-conf']\n" +"'/usr/local/etc/zope.conf'\n" +">>> instancia['zope9-location']\n" +"'/opt/zope'" #: ../Doc/whatsnew/3.2.rst:2210 msgid "" @@ -4213,6 +4710,13 @@ msgid "" ">>> r.fragment\n" "'target'" msgstr "" +">>> r = urllib.parse.urldefrag('http://python.org/about/#target')\n" +">>> r\n" +"DefragResult(url='http://python.org/about/', fragment='target')\n" +">>> r[0]\n" +"'http://python.org/about/'\n" +">>> r.fragment\n" +"'target'" #: ../Doc/whatsnew/3.2.rst:2245 msgid "" @@ -4235,6 +4739,11 @@ msgid "" "... encoding='latin-1')\n" "'type=telenovela&name=%BFD%F3nde+Est%E1+Elisa%3F'" msgstr "" +">>> urllib.parse.urlencode([\n" +"... ('tipo', 'telenovela'),\n" +"... ('nombre', '¿Dónde Está Elisa?')],\n" +"... codificación = 'latin-1')\n" +"'tipo=telenovela&nombre=%BFD%F3nde+Est%E1+Elisa%3F'" #: ../Doc/whatsnew/3.2.rst:2256 msgid "" @@ -4344,22 +4853,20 @@ msgid "turtledemo" msgstr "turtledemo" #: ../Doc/whatsnew/3.2.rst:2304 -#, fuzzy msgid "" "The demonstration code for the :mod:`turtle` module was moved from the " "*Demo* directory to main library. It includes over a dozen sample scripts " "with lively displays. Being on :data:`sys.path`, it can now be run directly " "from the command-line:" msgstr "" -"El código de demostración para el módulo :mod:`turtle` se movió del " +"El código de demostración del módulo :mod:`turtle` se trasladó del " "directorio *Demo* a la biblioteca principal. Incluye más de una docena de " -"scripts de muestra con pantallas animadas. Al estar en :attr:`sys.path`, " -"ahora se puede ejecutar directamente desde la línea de comandos:" +"scripts de muestra con visualizaciones dinámicas. Al estar en :data:`sys." +"path`, ahora se puede ejecutar directamente desde la línea de comandos:" #: ../Doc/whatsnew/3.2.rst:2309 -#, fuzzy msgid "$ python -m turtledemo" -msgstr "turtledemo" +msgstr "$ python -m turtledemo" #: ../Doc/whatsnew/3.2.rst:2313 msgid "" @@ -4372,7 +4879,6 @@ msgid "Multi-threading" msgstr "Multi-threading" #: ../Doc/whatsnew/3.2.rst:2318 -#, fuzzy msgid "" "The mechanism for serializing execution of concurrently running Python " "threads (generally known as the :term:`GIL` or Global Interpreter Lock) has " @@ -4385,13 +4891,14 @@ msgid "" msgstr "" "Se ha reescrito el mecanismo para serializar la ejecución de subprocesos de " "Python que se ejecutan simultáneamente (generalmente conocido como :term:" -"`GIL` o Global Interpreter Lock). Entre los objetivos estaban los intervalos " -"de conmutación más predecibles y la reducción de la sobrecarga debido a la " -"contención de bloqueo y la cantidad de llamadas al sistema consiguientes. La " -"noción de un \"intervalo de verificación\" para permitir cambios de hilo ha " -"sido abandonada y reemplazada por una duración absoluta expresada en " -"segundos. Este parámetro se puede ajustar a través de :func:`sys." -"setswitchinterval()`. Actualmente, el valor predeterminado es 5 milisegundos." +"`GIL` o Global Interpreter Lock). Entre los objetivos se encontraban " +"intervalos de conmutación más predecibles y una reducción de la sobrecarga " +"debido a la contención de bloqueos y la cantidad de llamadas al sistema " +"resultantes. Se ha abandonado la noción de un \"intervalo de verificación\" " +"para permitir cambios de subproceso y se ha reemplazado por una duración " +"absoluta expresada en segundos. Este parámetro se puede ajustar a través de :" +"func:`sys.setswitchinterval`. Actualmente, el valor predeterminado es 5 " +"milisegundos." #: ../Doc/whatsnew/3.2.rst:2327 msgid "" @@ -4478,6 +4985,9 @@ msgid "" "if extension in {'xml', 'html', 'xhtml', 'css'}:\n" " handle(name)" msgstr "" +"extensión = nombre.rpartition('.')[2]\n" +"si extensión en {'xml', 'html', 'xhtml', 'css'}:\n" +"handle(nombre)" #: ../Doc/whatsnew/3.2.rst:2366 msgid "" @@ -4559,7 +5069,6 @@ msgid "(Contributed by Antoine Pitrou; :issue:`3001`.)" msgstr "(Contribución de Antoine Pitrou; :issue:`3001`.)" #: ../Doc/whatsnew/3.2.rst:2397 -#, fuzzy msgid "" "The fast-search algorithm in stringlib is now used by the :meth:`~str." "split`, :meth:`~str.rsplit`, :meth:`~str.splitlines` and :meth:`~str." @@ -4567,11 +5076,11 @@ msgid "" "objects. Likewise, the algorithm is also used by :meth:`~str.rfind`, :meth:" "`~str.rindex`, :meth:`~str.rsplit` and :meth:`~str.rpartition`." msgstr "" -"El algoritmo de búsqueda rápida en stringlib ahora es usado por los métodos :" -"meth:`split`, :meth:`rsplit`, :meth:`splitlines` y :meth:`replace` en " -"objetos :class:`bytes`, :class:`bytearray` y :class:`str`. Asimismo, el " -"algoritmo también es utilizado por :meth:`rfind`, :meth:`rindex`, :meth:" -"`rsplit` y :meth:`rpartition`." +"El algoritmo de búsqueda rápida de stringlib ahora lo utilizan los métodos :" +"meth:`~str.split`, :meth:`~str.rsplit`, :meth:`~str.splitlines` y :meth:" +"`~str.replace` en los objetos :class:`bytes`, :class:`bytearray` y :class:" +"`str`. Asimismo, el algoritmo también lo utilizan :meth:`~str.rfind`, :meth:" +"`~str.rindex`, :meth:`~str.rsplit` y :meth:`~str.rpartition`." #: ../Doc/whatsnew/3.2.rst:2403 msgid "(Patch by Florent Xicluna in :issue:`7622` and :issue:`7462`.)" @@ -4591,7 +5100,6 @@ msgid "(:issue:`6713` by Gawain Bolton, Mark Dickinson, and Victor Stinner.)" msgstr "(:issue:`6713` de Gawain Bolton, Mark Dickinson y Victor Stinner.)" #: ../Doc/whatsnew/3.2.rst:2411 -#, fuzzy msgid "" "There were several other minor optimizations. Set differencing now runs " "faster when one operand is much larger than the other (patch by Andress " @@ -4603,15 +5111,15 @@ msgid "" "ConfigParser` loads multi-line arguments a bit faster (:issue:`7113` by " "Łukasz Langa)." msgstr "" -"Hubo varias otras optimizaciones menores. Establecer diferencias ahora se " -"ejecuta más rápido cuando un operando es mucho más grande que el otro " -"(parche de Andress Bennetts en :issue:`8685`). El método :meth:`array." +"Se realizaron otras optimizaciones menores. La diferenciación de conjuntos " +"ahora se ejecuta más rápido cuando un operando es mucho más grande que el " +"otro (parche de Andress Bennetts en :issue:`8685`). El método :meth:`!array." "repeat` tiene una implementación más rápida (:issue:`1569291` de Alexander " -"Belopolsky). El :class:`BaseHTTPRequestHandler` tiene un almacenamiento en " -"búfer más eficiente (:issue:`3709` por Andrew Schaaf). La función :func:" -"`operator.attrgetter` se ha acelerado (:issue:`10160` de Christos Georgiou). " -"Y :class:`ConfigParser` carga argumentos de varias líneas un poco más rápido " -"(:issue:`7113` de Łukasz Langa)." +"Belopolsky). El :class:`~http.server.BaseHTTPRequestHandler` tiene un " +"almacenamiento en búfer más eficiente (:issue:`3709` de Andrew Schaaf). La " +"función :func:`operator.attrgetter` se ha acelerado (:issue:`10160` de " +"Christos Georgiou). Y :class:`~configparser.ConfigParser` carga argumentos " +"de varias líneas un poco más rápido (:issue:`7113` de Łukasz Langa)." #: ../Doc/whatsnew/3.2.rst:2422 msgid "Unicode" @@ -4942,38 +5450,35 @@ msgstr "" "`9778`.)" #: ../Doc/whatsnew/3.2.rst:2565 -#, fuzzy msgid "" "A new macro :c:macro:`!Py_VA_COPY` copies the state of the variable argument " "list. It is equivalent to C99 *va_copy* but available on all Python " "platforms (:issue:`2443`)." msgstr "" -"Una nueva macro :c:macro:`Py_VA_COPY` copia el estado de la lista de " +"Una nueva macro :c:macro:`!Py_VA_COPY` copia el estado de la lista de " "argumentos de la variable. Es equivalente a C99 *va_copy* pero está " "disponible en todas las plataformas Python (:issue:`2443`)." #: ../Doc/whatsnew/3.2.rst:2569 -#, fuzzy msgid "" "A new C API function :c:func:`!PySys_SetArgvEx` allows an embedded " "interpreter to set :data:`sys.argv` without also modifying :data:`sys.path` " "(:issue:`5753`)." msgstr "" -"Una nueva función de la API de C :c:func:`PySys_SetArgvEx` permite que un " -"intérprete integrado establezca :attr:`sys.argv` sin modificar también :attr:" -"`sys.path` (:issue:`5753`)." +"Una nueva función API C :c:func:`!PySys_SetArgvEx` permite que un intérprete " +"integrado configure :data:`sys.argv` sin modificar también :data:`sys.path` " +"(:issue:`5753`)." #: ../Doc/whatsnew/3.2.rst:2573 -#, fuzzy msgid "" ":c:func:`!PyEval_CallObject` is now only available in macro form. The " "function declaration, which was kept for backwards compatibility reasons, is " "now removed -- the macro was introduced in 1997 (:issue:`8276`)." msgstr "" -":c:macro:`PyEval_CallObject` ahora solo está disponible en forma de macro. " -"La declaración de función, que se mantuvo por razones de compatibilidad con " -"versiones anteriores, ahora se elimina; la macro se introdujo en 1997 (:" -"issue:`8276`)." +":c:func:`!PyEval_CallObject` ahora solo está disponible en formato macro. La " +"declaración de función, que se mantuvo por razones de compatibilidad con " +"versiones anteriores, se ha eliminado: la macro se introdujo en 1997 (:issue:" +"`8276`)." #: ../Doc/whatsnew/3.2.rst:2577 msgid "" @@ -5038,7 +5543,6 @@ msgstr "" "obtener una lista completa." #: ../Doc/whatsnew/3.2.rst:2602 -#, fuzzy msgid "" "Also, there were a number of updates to the Mac OS X build, see `Mac/" "BuildScript/README.txt `_\\. See https://www.python." "org/download/mac/tcltk/ for additional details." msgstr "" -"Además, hubo una serie de actualizaciones en la compilación de Mac OS X, " +"Además, se realizaron varias actualizaciones en la compilación de Mac OS X; " "consulte `Mac/BuildScript/README.txt `_ para obtener más detalles. Para los " "usuarios que ejecutan una compilación de 32/64 bits, existe un problema " "conocido con el Tcl/Tk predeterminado en Mac OS X 10.6. En consecuencia, " "recomendamos instalar una alternativa actualizada como `ActiveState Tcl/Tk " -"8.5.9 `_\\. Consulte " -"https://www.python.org/download/mac/tcltk/ para obtener detalles adicionales." +"8.5.9 `_\\. Consulte https://www.python.org/download/mac/" +"tcltk/ para obtener más detalles." #: ../Doc/whatsnew/3.2.rst:2611 msgid "Porting to Python 3.2" @@ -5071,17 +5576,16 @@ msgstr "" "correcciones de errores que pueden requerir cambios en su código:" #: ../Doc/whatsnew/3.2.rst:2616 -#, fuzzy msgid "" "The :mod:`configparser` module has a number of clean-ups. The major change " "is to replace the old :class:`!ConfigParser` class with long-standing " "preferred alternative :class:`!SafeConfigParser`. In addition there are a " "number of smaller incompatibilities:" msgstr "" -"El módulo :mod:`configparser` tiene una serie de limpiezas. El cambio " -"principal es reemplazar la antigua :class:`ConfigParser` con la alternativa " -"preferida de larga data :class:`SafeConfigParser`. Además, hay una serie de " -"incompatibilidades menores:" +"El módulo :mod:`configparser` tiene una serie de mejoras. El cambio " +"principal es reemplazar la antigua clase :class:`!ConfigParser` por la " +"alternativa preferida de larga data :class:`!SafeConfigParser`. Además, hay " +"una serie de incompatibilidades menores:" #: ../Doc/whatsnew/3.2.rst:2621 #, python-format @@ -5149,13 +5653,12 @@ msgstr "" "una cadena vacía. Para cadenas vacías, use ``\"option =\"`` en una línea." #: ../Doc/whatsnew/3.2.rst:2647 -#, fuzzy msgid "" "The :mod:`!nntplib` module was reworked extensively, meaning that its APIs " "are often incompatible with the 3.1 APIs." msgstr "" -"El módulo :mod:`nntplib` se modificó ampliamente, lo que significa que sus " -"API a menudo son incompatibles con las API 3.1." +"El módulo :mod:`!nntplib` fue rediseñado ampliamente, lo que significa que " +"sus API a menudo son incompatibles con las API 3.1." #: ../Doc/whatsnew/3.2.rst:2650 msgid "" @@ -5166,16 +5669,16 @@ msgstr "" "lugar, deben convertirse a :class:`bytes`." #: ../Doc/whatsnew/3.2.rst:2653 -#, fuzzy msgid "" "The :meth:`!array.tostring` and :meth:`!array.fromstring` have been renamed " "to :meth:`array.tobytes() ` and :meth:`array." "frombytes() ` for clarity. The old names have been " "deprecated. (See :issue:`8990`.)" msgstr "" -"Los :meth:`array.tostring` y :meth:`array.fromstring` han sido renombrados " -"a :meth:`array.tobytes` y :meth:`array.frombytes` para mayor claridad. Los " -"nombres antiguos han quedado obsoletos. (Ver :issue:`8990`.)" +"Los nombres :meth:`!array.tostring` y :meth:`!array.fromstring` se han " +"cambiado a :meth:`array.tobytes() ` y :meth:`array." +"frombytes() ` para mayor claridad. Los nombres " +"antiguos han quedado obsoletos. (Consulte :issue:`8990`)." #: ../Doc/whatsnew/3.2.rst:2658 msgid "``PyArg_Parse*()`` functions:" @@ -5191,26 +5694,24 @@ msgstr "" "Se han eliminado los formatos \"w\" y \"w #\": utilice \"w*\" en su lugar" #: ../Doc/whatsnew/3.2.rst:2663 -#, fuzzy msgid "" "The :c:type:`!PyCObject` type, deprecated in 3.1, has been removed. To wrap " "opaque C pointers in Python objects, the :c:type:`PyCapsule` API should be " "used instead; the new type has a well-defined interface for passing typing " "safety information and a less complicated signature for calling a destructor." msgstr "" -"El tipo :c:type:`PyCObject`, obsoleto en 3.1, ha sido eliminado. Para " -"envolver punteros C opacos en objetos Python, se debe utilizar la API :c:" -"type:`PyCapsule`; el nuevo tipo tiene una interfaz bien definida para pasar " -"información de seguridad de escritura y una firma menos complicada para " -"llamar a un destructor." +"Se ha eliminado el tipo :c:type:`!PyCObject`, que quedó obsoleto en la " +"versión 3.1. Para encapsular punteros C opacos en objetos Python, se debe " +"utilizar la API :c:type:`PyCapsule`; el nuevo tipo tiene una interfaz bien " +"definida para pasar información de seguridad de tipado y una firma menos " +"complicada para llamar a un destructor." #: ../Doc/whatsnew/3.2.rst:2668 -#, fuzzy msgid "" "The :func:`!sys.setfilesystemencoding` function was removed because it had a " "flawed design." msgstr "" -"La función :func:`sys.setfilesystemencoding` se eliminó porque tenía un " +"La función :func:`!sys.setfilesystemencoding` se eliminó porque tenía un " "diseño defectuoso." #: ../Doc/whatsnew/3.2.rst:2671 @@ -5226,7 +5727,6 @@ msgstr "" "en *1*, ``random.seed(s, version=1)``." #: ../Doc/whatsnew/3.2.rst:2676 -#, fuzzy msgid "" "The previously deprecated :func:`!string.maketrans` function has been " "removed in favor of the static methods :meth:`bytes.maketrans` and :meth:" @@ -5236,20 +5736,18 @@ msgid "" "**translate** methods with intermediate translation tables of the " "appropriate type." msgstr "" -"La función anteriormente obsoleta :func:`string.maketrans` ha sido eliminada " -"en favor de los métodos estáticos :meth:`bytes.maketrans` y :meth:`bytearray." -"maketrans`. Este cambio resuelve la confusión sobre qué tipos eran " -"compatibles con el módulo :mod:`string`. Ahora, :class:`str`, :class:" -"`bytes`, y :class:`bytearray` cada uno tiene sus propios métodos " -"**maketrans** y **translate** con tablas de traducción intermedias del tipo " -"apropiado." +"La función :func:`!string.maketrans`, que anteriormente estaba en desuso, se " +"ha eliminado en favor de los métodos estáticos :meth:`bytes.maketrans` y :" +"meth:`bytearray.maketrans`. Este cambio resuelve la confusión sobre qué " +"tipos eran compatibles con el módulo :mod:`string`. Ahora, :class:`str`, :" +"class:`bytes` y :class:`bytearray` tienen sus propios métodos **maketrans** " +"y **translate** con tablas de traducción intermedias del tipo adecuado." #: ../Doc/whatsnew/3.2.rst:2684 msgid "(Contributed by Georg Brandl; :issue:`5675`.)" msgstr "(Contribución de Georg Brandl; :issue:`5675`.)" #: ../Doc/whatsnew/3.2.rst:2686 -#, fuzzy msgid "" "The previously deprecated :func:`!contextlib.nested` function has been " "removed in favor of a plain :keyword:`with` statement which can accept " @@ -5257,11 +5755,12 @@ msgid "" "built-in), and it does a better job finalizing multiple context managers " "when one of them raises an exception::" msgstr "" -"La función anteriormente obsoleta :func:`contextlib.nested` ha sido " -"eliminada en favor de una declaración simple :keyword:`with` que puede " +"La función :func:`!contextlib.nested`, que anteriormente estaba en desuso, " +"se ha eliminado en favor de una declaración :keyword:`with` simple que puede " "aceptar múltiples administradores de contexto. La última técnica es más " -"rápida (porque está integrada) y hace un mejor trabajo finalizando múltiples " -"administradores de contexto cuando uno de ellos genera una excepción::" +"rápida (porque está incorporada) y hace un mejor trabajo al finalizar " +"múltiples administradores de contexto cuando uno de ellos genera una " +"excepción:" #: ../Doc/whatsnew/3.2.rst:2692 msgid "" @@ -5270,6 +5769,11 @@ msgid "" " if '' in line:\n" " outfile.write(line)" msgstr "" +"con open('mylog.txt') como archivo de entrada, open('a.out', 'w') como " +"archivo de salida:\n" +"para línea en archivo de entrada:\n" +"si '' está en línea:\n" +"archivo de salida.write(línea)" #: ../Doc/whatsnew/3.2.rst:2697 msgid "" @@ -5372,27 +5876,25 @@ msgid "(Contributed by Antoine Pitrou, :issue:`10272`.)" msgstr "(Contribución de Antoine Pitrou, :issue:`10272`.)" #: ../Doc/whatsnew/3.2.rst:2736 -#, fuzzy msgid "" "The misleading functions :c:func:`!PyEval_AcquireLock` and :c:func:`!" "PyEval_ReleaseLock` have been officially deprecated. The thread-state aware " "APIs (such as :c:func:`PyEval_SaveThread` and :c:func:" "`PyEval_RestoreThread`) should be used instead." msgstr "" -"Las funciones engañosas :c:func:`PyEval_AcquireLock()` y :c:func:" -"`PyEval_ReleaseLock()` han quedado oficialmente obsoletas. Las API que " -"reconocen el estado del hilo (como :c:func:`PyEval_SaveThread()` y :c:func:" -"`PyEval_RestoreThread()`) deben usarse en su lugar." +"Las funciones engañosas :c:func:`!PyEval_AcquireLock` y :c:func:`!" +"PyEval_ReleaseLock` han quedado oficialmente obsoletas. En su lugar, se " +"deben utilizar las API que reconocen el estado del subproceso (como :c:func:" +"`PyEval_SaveThread` y :c:func:`PyEval_RestoreThread`)." #: ../Doc/whatsnew/3.2.rst:2741 -#, fuzzy msgid "" "Due to security risks, :func:`!asyncore.handle_accept` has been deprecated, " "and a new function, :func:`!asyncore.handle_accepted`, was added to replace " "it." msgstr "" -"Debido a riesgos de seguridad, :func:`asyncore.handle_accept` ha quedado " -"obsoleto, y se agregó una nueva función, :func:`asyncore.handle_accepted`, " +"Debido a riesgos de seguridad, :func:`!asyncore.handle_accept` ha quedado " +"obsoleto y se agregó una nueva función, :func:`!asyncore.handle_accepted`, " "para reemplazarlo." #: ../Doc/whatsnew/3.2.rst:2744 @@ -5400,10 +5902,9 @@ msgid "(Contributed by Giampaolo Rodola in :issue:`6706`.)" msgstr "(Contribución de Giampaolo Rodola en :issue:`6706`.)" #: ../Doc/whatsnew/3.2.rst:2746 -#, fuzzy msgid "" "Due to the new :term:`GIL` implementation, :c:func:`!PyEval_InitThreads` " "cannot be called before :c:func:`Py_Initialize` anymore." msgstr "" -"Debido a la nueva implementación de :term:`GIL`, :c:func:" -"`PyEval_InitThreads()` ya no se puede llamar antes :c:func:`Py_Initialize()`." +"Debido a la nueva implementación de :term:`GIL`, ya no se puede llamar a :c:" +"func:`!PyEval_InitThreads` antes que a :c:func:`Py_Initialize`."