diff --git a/.overrides/CONTRIBUTING.rst b/.overrides/CONTRIBUTING.rst index eaa4d8a447..903fd6aa46 100644 --- a/.overrides/CONTRIBUTING.rst +++ b/.overrides/CONTRIBUTING.rst @@ -119,6 +119,11 @@ Paso 2: ¡Comienza a traducir! .. note:: Si estás en Windows y tienes problemas, mira los comentarios de :ref:`powrap_windows` para más información. + .. note:: En 3.13 notamos un problema de inconsistencia en las versiones + de powrap que podrían ser utilizadas, con lo que la verificación + del CI fue deshabilitada, pero te recomendamos que puedas ejecutar + `powrap` localmente de todas formas. + #. **Corrección ortográfica**: Para verificar la ortografía de tu archivo puedes utilizar la herramienta pospell_ para que verifiques que todas las palabras están aceptadas o incluidas en diccionarios. Para ello tenemos @@ -135,6 +140,14 @@ Paso 2: ¡Comienza a traducir! .. note:: Si estás en Windows y tienes problemas, mira los comentarios de :ref:`pospell_windows` para más información. + .. note:: En 3.13 los trozos de código ahora pueden ser traducidos, + con lo cual esperamos que puedas traducir solo los comentarios + de dichos códigos. Es probable que `check_spell.py` falle con + algunas entradas, esto se debe a que pospell (docutils) no tienen + compatibilidad para entender líneas de código. La solución temporal + es **no traducir** las entradas que `check_spell.py` genere errores + con el mensaje **Unexpected identation**. + #. Cuando hayas terminado tu sesión, debes guardar tus cambios y enviarlos a GitHub (No olvides añadir tu nombre al archivo ``TRANSLATORS``). Si estuvieras trabajando en el archivo ``library/ast.po`` los pasos serían:: diff --git a/TRANSLATORS b/TRANSLATORS index c9f3f441d0..fe9b569dff 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -45,6 +45,7 @@ Carlos Joel Delgado Pizarro (@c0x6a) Carlos Martel Lamas (@Letram) Carlos Mena Pérez (@carlosm00) Catalina Arrey Amunátegui (@CatalinaArrey) +Charly Román (@Carlangueitor) Claudia Millán Nebot (@clacri @cheshireminima) Constanza Areal (@geekcoty) Cristhian Ortiz (@crisortiz92) @@ -194,6 +195,7 @@ nicocastanio Nicolás Demarchi (@gilgamezh) Nicolás Lunardi (@nicolunardi) Omar Mendo (@beejeke) +Oscar Criado (@ocriado91) Oscar Garzon (@oscar-garzon) Oscar Martinez Pablo Lobariñas (@Qkolnek) diff --git a/deprecations/pending-removal-in-3.16.po b/deprecations/pending-removal-in-3.16.po index 2d93360f51..bc7cf73870 100644 --- a/deprecations/pending-removal-in-3.16.po +++ b/deprecations/pending-removal-in-3.16.po @@ -10,23 +10,24 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2024-11-30 21:00-0600\n" +"Last-Translator: \n" "Language-Team: 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" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/pending-removal-in-3.16.rst:2 msgid "Pending Removal in Python 3.16" -msgstr "" +msgstr "Eliminación pendiente en Python 3.16" #: ../Doc/deprecations/pending-removal-in-3.16.rst:4 msgid ":mod:`builtins`:" -msgstr "" +msgstr ":mod:`builtins`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:6 msgid "" @@ -36,10 +37,16 @@ msgid "" "of a Boolean. In the rare case that you need the bitwise inversion of the " "underlying integer, convert to ``int`` explicitly (``~int(x)``)." msgstr "" +"La inversión bit a bit en tipos booleanos, ``~True`` o ``~False`` ha quedado " +"obsoleta desde Python 3.12, ya que produce resultados sorprendentes y poco " +"intuitivos (``-2`` y ``-1``). En su lugar, se utiliza ``not x`` para la " +"negación lógica de un booleano. En el caso poco frecuente de que se necesite " +"la inversión bit a bit del entero subyacente, convertir a ``int`` " +"explícitamente (``~int(x)``)." #: ../Doc/deprecations/pending-removal-in-3.16.rst:13 msgid ":mod:`array`:" -msgstr "" +msgstr ":mod:`array`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:15 msgid "" @@ -47,10 +54,14 @@ msgid "" "documentation since Python 3.3 and at runtime since Python 3.13. Use the " "``'w'`` format code (:c:type:`Py_UCS4`) for Unicode characters instead." msgstr "" +"El código de formato ``'u'`` (:c:type:`wchar_t`) ha quedado obsoleto en la " +"documentación desde Python 3.3 y en tiempo de ejecución desde Python 3.13. " +"En su lugar, se utiliza el código de formato ``'w'`` (:c:type:`Py_UCS4`) " +"para caracteres Unicode." #: ../Doc/deprecations/pending-removal-in-3.16.rst:21 msgid ":mod:`shutil`:" -msgstr "" +msgstr ":mod:`shutil`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:23 msgid "" @@ -58,20 +69,25 @@ msgid "" "has not been used by any function in :mod:`!shutil` since Python 3.4, and is " "now an alias of :exc:`RuntimeError`." msgstr "" +"La excepción :class:`!ExecError` ha quedado obsoleta desde Python 3.14. No " +"se ha utilizado por ninguna función en :mod:`!shutil` desde Python 3.4, y " +"ahora es un alias de :exc:`RuntimeError`." #: ../Doc/deprecations/pending-removal-in-3.16.rst:28 msgid ":mod:`symtable`:" -msgstr "" +msgstr ":mod:`symtable`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:30 msgid "" "The :meth:`Class.get_methods ` method has been " "deprecated since Python 3.14." msgstr "" +"El método :meth:`Class.get_methods ` ha quedado " +"obsoleto desde Python 3.14." #: ../Doc/deprecations/pending-removal-in-3.16.rst:33 msgid ":mod:`sys`:" -msgstr "" +msgstr ":mod:`sys`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:35 msgid "" @@ -79,13 +95,18 @@ msgid "" "since Python 3.13. Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " "environment variable instead." msgstr "" +"La función :func:`~sys._enablelegacywindowsfsencoding` ha quedado obsoleta " +"desde Python 3.13. En su lugar, se utiliza la variable de entorno :envvar:" +"`PYTHONLEGACYWINDOWSFSENCODING`." #: ../Doc/deprecations/pending-removal-in-3.16.rst:39 msgid ":mod:`tarfile`:" -msgstr "" +msgstr ":mod:`tarfile`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:41 msgid "" "The undocumented and unused :attr:`!TarFile.tarfile` attribute has been " "deprecated since Python 3.13." msgstr "" +"El atributo :attr:`!TarFile.tarfile` que no se ha documentado ni utilizado " +"ha quedado obsoleto desde Python 3.13." diff --git a/dictionaries/howto_argparse.txt b/dictionaries/howto_argparse.txt new file mode 100644 index 0000000000..28bac62aa1 --- /dev/null +++ b/dictionaries/howto_argparse.txt @@ -0,0 +1,2 @@ +ávidamente +unrecognized diff --git a/dictionaries/howto_enum.txt b/dictionaries/howto_enum.txt index 99fd071a97..38d5bffd2d 100644 --- a/dictionaries/howto_enum.txt +++ b/dictionaries/howto_enum.txt @@ -1,3 +1,17 @@ +coordinate +custom decapables -subclasificables +favorite +gravity +mass +members +mood multibit +pantone +planet +radius +subclasificables +surface +swatch +today +unknown diff --git a/dictionaries/whatsnew_2.0.txt b/dictionaries/whatsnew_2.0.txt index ccd36d3f9f..2e26cd629c 100644 --- a/dictionaries/whatsnew_2.0.txt +++ b/dictionaries/whatsnew_2.0.txt @@ -51,22 +51,51 @@ Waldman Ward Yakov Zadka +andrew +appendChild +childNodes codificándola crucialmente discrepantes +documentElement dyld +endElement +exprN +filter front hacks +hamlet +hlinuxtname +iadd ifdefs infórmelo +insertBefore +kw +lookup manejadora +moshe +myself +nombredelhost patches +pers pipelining recompiladas +removeChild rpm sdist +secuenciaN +startElement +streamreader +streamwriter subelemento +sublist +substring suffix +toxml trashcan +unistr wininst +xmlparse xmlproc +xmlrole +xmltok diff --git a/dictionaries/whatsnew_2.1.txt b/dictionaries/whatsnew_2.1.txt index 4b38953e67..bd0d43b18d 100644 --- a/dictionaries/whatsnew_2.1.txt +++ b/dictionaries/whatsnew_2.1.txt @@ -23,6 +23,7 @@ Prescod Purcell Pythoneers Pythonistas +Recursion Reformulación Reifschneider Tishler @@ -33,10 +34,18 @@ Wouters Yee Zadka autodetectando +category dev +displayhook +filter +filterwarnings frame llamable makefiles memoización +memoize +obsolete +retval software supplied +xreadlines diff --git a/dictionaries/whatsnew_2.2.txt b/dictionaries/whatsnew_2.2.txt index 948f4e3e15..3fce374a3c 100644 --- a/dictionaries/whatsnew_2.2.txt +++ b/dictionaries/whatsnew_2.2.txt @@ -1,61 +1,88 @@ -An -Baxter -Bolen -Bremmer -Briggs -Carel -Common -Corp -Donnell -Edward -Eiffel -Fellinger -Gerhard -Hagino -Hansen -Hetland -Häring -Icon -Itamar -Jens -Joonas -Jun -Keith -Labs -Language -Lauder -Magnus -Mathewson -Michel -Moore -Overview -Paalasma -Pelletier -Piers -Programming -Quade -Reinhardt -Romberg -Shtull -Solutions -Stephen -Stolk -Tom -Trauring -Ward -What -Wise -descomentarlos -desocuparlos -dev -generización -hackeando -ichiro -itojun -memberst -must -ndiff -of -reanudables -subclasificarse -uu +Abr +Ago +An +Baxter +Bolen +Bremmer +Briggs +Carel +Common +Corp +Daily +Dic +Donnell +Edward +Eiffel +Feb +Fellinger +Freshmeat +Gerhard +Hagino +Hansen +Hetland +Häring +Icon +Itamar +Jens +Joonas +Jul +Jun +Keith +Labs +Language +Lauder +Magnus +Mathewson +Michel +Moore +Nov +Oct +Overview +Paalasma +Pelletier +Piers +Programming +Quade +Reinhardt +Romberg +Shtull +Solutions +Stephen +Stolk +Tom +Trauring +Ul +Ward +What +Wise +channel +channels +computation +descomentarlos +desocuparlos +dev +eiffel +eiffelmethod +filter +furrfu +generización +getChannels +getItems +hackeando +ichiro +inorder +itojun +meerkat +memberst +mnemotécnicos +must +ndiff +newattr +ny +of +pseudosecuencias +reanudables +save +subclasificarse +uu +xc diff --git a/dictionaries/whatsnew_2.3.txt b/dictionaries/whatsnew_2.3.txt index f0aec1eacd..6791433c0f 100644 --- a/dictionaries/whatsnew_2.3.txt +++ b/dictionaries/whatsnew_2.3.txt @@ -10,10 +10,12 @@ Connor Craig Dalke Daniels +Dec Denis Detlef Drake Dörwald +Fr Francesco Fraser Geert @@ -51,6 +53,7 @@ Martelli Martin Martins Mick +Mon Montanaro Moore Neal @@ -69,6 +72,7 @@ Palkovsky Pedroni Piers Programming +Quixote Reifschneider Ricciardi Richie @@ -78,31 +82,59 @@ Samuele Simionato Simon Skip +Sn Subsequent Suzi Suzuki Tishler +Topic Travis Trent Walter Ward +We Wells What Wilson +abcd benchmark +cad +calc chooses chosen +classifiers +cmp configurarla +critical +days +delitem deserializadas desescalado dev +distutil empaquetarlo enumerate +fill frame +getLogger +hasattr +heappop +heappush idna +importer +inorder +intersection +issubset +issuperset +jwzthreading +keylist +kw llamables longer +mp +nombrearchivo operations +popitem population ports pystone @@ -112,9 +144,21 @@ reelaborado reescríbalas reformateada replacing +samp +sample +sampmodule +setitem sobreescrituras +strip than +timer topológica +union +unzip +valuelist +wantobjects works xmlrpclib +xrange +zfill Åstrand diff --git a/dictionaries/whatsnew_2.4.txt b/dictionaries/whatsnew_2.4.txt index e9fc5a89d0..b20987dca3 100644 --- a/dictionaries/whatsnew_2.4.txt +++ b/dictionaries/whatsnew_2.4.txt @@ -27,14 +27,28 @@ Urtubia Vasiliev Yves against +alacazam +appendleft +arbcd +black +blue +cmp +colormap core +creationflags +deco didn differs +dpkg earlier either euc expression +finder +followed gbk +getcontext +ghi hkscs independent iterated @@ -44,14 +58,34 @@ jisx johab jp kr +letters +levelname +lower matched +most +newlines optional +popleft +prec +recent replicate +require returns shift something specified +sqrt +startupinfo +sts +substitute symbolic +tcsh +tee tested +transpose +traps whether will +wxy +xrange +yellow diff --git a/dictionaries/whatsnew_2.5.txt b/dictionaries/whatsnew_2.5.txt index 5034b1dcc2..f5c30bff98 100644 --- a/dictionaries/whatsnew_2.5.txt +++ b/dictionaries/whatsnew_2.5.txt @@ -32,6 +32,7 @@ Kurt Louko Lowe Lynn +Nel Netlink Oleg Optik @@ -55,21 +56,76 @@ Tillenius Walter Wd Weikart +aee asignadoras autodetectada +baf +buf +cammin +chr contextlib coroutines +db direccionar +diritta +download +eb +ee elinks +execute +fada hook +httpd +ih +jpg +kwds +localcontext +longest +lower maildir +medium +menu +mezzo +my +nel netlink +nostra +nsmallest +numarray obmalloc +popup +prec +price +px pybench +pythonapi +qty reelaborado reutilizándolo +ritrovai +row +rpartition +share +smarrita sprint sprints +sqrt +src ssize +still +stocks +strfry +subsystem +svg +symbol +trans +transaction tripleta +ts +unichr +via +where +wraps +wsgi wsgiref +zerodict diff --git a/dictionaries/whatsnew_2.7.txt b/dictionaries/whatsnew_2.7.txt index 54c06aa0a9..dab9202ed2 100644 --- a/dictionaries/whatsnew_2.7.txt +++ b/dictionaries/whatsnew_2.7.txt @@ -1,110 +1,105 @@ -Brändström -structseq -Maru -Newby -devel -pybsddb -Hagen -Fürstenau -Mats -Kindahl -Conti Anatoly -Techtonik -Lennart -Regebro -Mouzo -Hagen -Fürstenau -gzipped -Jacques -Frechet -Tadek -Pietraszek -Eldon -Ziegler -Chambon -escaneos -nirinA -raseliarison -lekma +Anders +Beda +Belchenko +Bethard +Brändström Cazabon -reinicializa -Zsolt +Chambon +Chrigström +Clinton +Conti +Cournapeau Cserna -Giuca -Francois +Donald +Dyer Eldon -Ziegler -Nagle -renegociación -Beda +Francois +Frechet +Fürstenau +Genellina +George +Giuca +Hagen +Hatch +Horsen +Hugh +Inge +Jacques +Kaliszewski +Kindahl Kosata +Kuba +Kuchling +Leander +Lennart Lesher -Anders -Chrigström -ampersands +Lingard +Lovett +Löwis +Martin +Maru +Mats +Meador +Mouzo Muller -Kuba -Wieczorek -Genellina -sysconfig -reimplementan -Tile -Tck -Dyer +Nagle +Newby +Oliphant +Ożarowski +Pietraszek +Piotr +Regebro Roddy -etree -whatever -pyo -lekma -Horsen -Troya -Clinton Roy -Cournapeau -Genellina -Ziga +Sakkis +Secker Seilnacht -multinúcleo -Piotr -Ożarowski -Leander -ampersands -Muller -ensurepip -ensurepip -rediseñadas -Donald -Stufft -Donald Stufft -autotools -Lovett -Hugh -Secker -Walker -argparse -Kuchling -subsistemas -syslogging +Tadek +Tck +Techtonik +Tile Travis -Hatch -Belchenko -George -Meador -Inge -Löwis -Martin +Troya +Walker +Wieczorek +Ziegler +Ziga +Zsolt amk -warnings -simplefilter -Bethard -values +ampersands +argparse +autotools +chr +devel +encapsulador +ensurepip +escaneos +etree +fragment +gzipped +invented items -Oliphant +lekma +multinúcleo +nirinA +pybsddb +pyo +raseliarison +rediseñadas +reimplementan +reinicializa reinsertándola +renegociación +scheme +simplefilter +structseq +subsistemas suncc -Sakkis -Lingard -Kaliszewski +sysconfig +syslogging +values +viewkeys +warnings +whatever diff --git a/dictionaries/whatsnew_3.0.txt b/dictionaries/whatsnew_3.0.txt index 02db351826..75192e1859 100644 --- a/dictionaries/whatsnew_3.0.txt +++ b/dictionaries/whatsnew_3.0.txt @@ -3,4 +3,6 @@ Tru atractivamente generate introspeccionar +metaclass +primary softspace diff --git a/dictionaries/whatsnew_3.1.txt b/dictionaries/whatsnew_3.1.txt index 416977a667..4afcdf27e5 100644 --- a/dictionaries/whatsnew_3.1.txt +++ b/dictionaries/whatsnew_3.1.txt @@ -8,6 +8,7 @@ Armin Belopolsky Bob Brandl +Camelot Chu Coghlan Dalcrin @@ -15,6 +16,7 @@ Derek Diederich Eby Forgeot +Gallahad Georg Guilherme Ippolito @@ -34,13 +36,36 @@ Roger Ronacher Ross Serwy +Sir TestResult Vajda Vassalotti +addHandler +banana +cbuiltins could +critical +dept +desc +execute for found +getLogger +gimzo +gizmo handlers icc +lp +mylog +nL +nRp +naL +natp +nestablecer +np pickler +region +rename +row +skipUnless ttk 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/dictionaries/whatsnew_3.4.txt b/dictionaries/whatsnew_3.4.txt index ef659077af..808bb02480 100644 --- a/dictionaries/whatsnew_3.4.txt +++ b/dictionaries/whatsnew_3.4.txt @@ -91,6 +91,7 @@ cli cmdline cms completamiento +descontinuación dicts dispatch enchufable diff --git a/dictionaries/whatsnew_3.7.txt b/dictionaries/whatsnew_3.7.txt index efe53b5598..28ba3001d7 100644 --- a/dictionaries/whatsnew_3.7.txt +++ b/dictionaries/whatsnew_3.7.txt @@ -1,3 +1,5 @@ +Avery +Cathy Goldschmidt Jin Trusty @@ -11,6 +13,7 @@ jessie nix shot sincronicas +srv stretch subminutos switch diff --git a/howto/annotations.po b/howto/annotations.po index 646f32bc03..8597d1cc49 100644 --- a/howto/annotations.po +++ b/howto/annotations.po @@ -9,15 +9,16 @@ msgstr "" "Project-Id-Version: Python en Español 3.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2023-10-17 22:46-0500\n" +"PO-Revision-Date: 2024-11-26 13:30-0600\n" "Last-Translator: José Luis Salgado Banda \n" -"Language: es\n" "Language-Team: \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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/howto/annotations.rst:5 msgid "Annotations Best Practices" @@ -197,6 +198,14 @@ msgid "" "\n" "print(Derived.__annotations__)" msgstr "" +"class Base:\n" +" a: int = 3\n" +" b: str = 'abc'\n" +"\n" +"class Derived(Base):\n" +" pass\n" +"\n" +"print(Derived.__annotations__)" #: ../Doc/howto/annotations.rst:98 msgid "This will print the annotations dict from ``Base``, not ``Derived``." @@ -204,7 +213,6 @@ msgstr "" "Esto imprimirá el diccionario de anotaciones de ``Base``, no de ``Derived``." #: ../Doc/howto/annotations.rst:101 -#, fuzzy msgid "" "Your code will have to have a separate code path if the object you're " "examining is a class (``isinstance(o, type)``). In that case, best practice " @@ -217,9 +225,9 @@ msgstr "" "examinando es una clase (``isinstance(o, type)``). En este caso, la práctica " "recomendada se basa en un detalle de implementación de las versiones de " "Python 3.9 y anteriores: si una clase tiene anotaciones definidas, se " -"almacenan en el diccionario ``__dict__`` de la clase. Dado que la clase " -"puede o no tener anotaciones definidas, la mejor práctica es llamar al " -"método ``get`` en el diccionario de la clase." +"almacenan en el diccionario :attr:`~type.__dict__` de la clase. Dado que la " +"clase puede o no tener anotaciones definidas, la mejor práctica es llamar al " +"método :meth:`~dict.get` en el diccionario de la clase." #: ../Doc/howto/annotations.rst:109 msgid "" @@ -238,6 +246,10 @@ msgid "" "else:\n" " ann = getattr(o, '__annotations__', None)" msgstr "" +"if isinstance(o, type):\n" +" ann = o.__dict__.get('__annotations__', None)\n" +"else:\n" +" ann = getattr(o, '__annotations__', None)" #: ../Doc/howto/annotations.rst:118 msgid "" @@ -250,15 +262,15 @@ msgstr "" "func:`isinstance` antes de un examen más detenido." #: ../Doc/howto/annotations.rst:123 -#, fuzzy msgid "" "Note that some exotic or malformed type objects may not have a :attr:`~type." "__dict__` attribute, so for extra safety you may also wish to use :func:" "`getattr` to access :attr:`!__dict__`." msgstr "" "Tome en cuenta que algunos objetos de tipo exótico o con formato incorrecto " -"pueden no tener un atributo ``__dict__``, así que para mayor seguridad, " -"también puede usar :func:`getattr` para acceder a ``__dict__``." +"pueden no tener un atributo :attr:`~type.__dict__` , así que para mayor " +"seguridad, también puede usar :func:`getattr` para acceder a :attr:`!" +"__dict__`." #: ../Doc/howto/annotations.rst:129 msgid "Manually Un-Stringizing Stringized Annotations" @@ -326,13 +338,12 @@ msgstr "" "corresponda, hasta que haya encontrado la función raíz sin envolver." #: ../Doc/howto/annotations.rst:155 -#, fuzzy msgid "" "If ``o`` is a callable (but not a class), use :attr:`o.__globals__ ` as the globals when calling :func:`eval`." msgstr "" -"Si ``o`` es un invocable (pero no una clase), use ``o.__globals__`` como " -"``globals`` cuando llame a :func:`eval`." +"Si ``o`` es un invocable (pero no una clase), use :attr:`o.__globals__ " +"` como globales cuando llame a :func:`eval`." #: ../Doc/howto/annotations.rst:159 msgid "" @@ -488,6 +499,10 @@ msgid "" "\n" "print(foo.__annotations__)" msgstr "" +"from __future__ import annotations\n" +"def foo(a: \"str\"): pass\n" +"\n" +"print(foo.__annotations__)" #: ../Doc/howto/annotations.rst:232 msgid "" diff --git a/howto/argparse.po b/howto/argparse.po index 86ce95e251..47e4eea2bc 100644 --- a/howto/argparse.po +++ b/howto/argparse.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2023-11-02 11:48-0300\n" +"PO-Revision-Date: 2024-11-26 22:57-0600\n" "Last-Translator: Alfonso Areiza Guerra \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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/howto/argparse.rst:5 msgid "Argparse Tutorial" @@ -85,6 +86,22 @@ msgid "" "Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.\n" "..." msgstr "" +"$ ls\n" +"cpython devguide prog.py pypy rm-unused-function.patch\n" +"$ ls pypy\n" +"ctypes_configure demo dotviewer include lib_pypy lib-python ...\n" +"$ ls -l\n" +"total 20\n" +"drwxr-xr-x 19 wena wena 4096 Feb 18 18:51 cpython\n" +"drwxr-xr-x 4 wena wena 4096 Feb 8 12:04 devguide\n" +"-rwxr-xr-x 1 wena wena 535 Feb 19 00:05 prog.py\n" +"drwxr-xr-x 14 wena wena 4096 Feb 7 00:59 pypy\n" +"-rw-r--r-- 1 wena wena 741 Feb 18 01:01 rm-unused-function.patch\n" +"$ ls --help\n" +"Usage: ls [OPTION]... [FILE]...\n" +"List information about the FILEs (the current directory by default).\n" +"Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.\n" +"..." #: ../Doc/howto/argparse.rst:48 msgid "A few concepts we can learn from the four commands:" @@ -153,6 +170,9 @@ msgid "" "parser = argparse.ArgumentParser()\n" "parser.parse_args()" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.parse_args()" #: ../Doc/howto/argparse.rst:80 ../Doc/howto/argparse.rst:188 #: ../Doc/howto/argparse.rst:209 @@ -174,6 +194,18 @@ msgid "" "usage: prog.py [-h]\n" "prog.py: error: unrecognized arguments: foo" msgstr "" +"$ python prog.py\n" +"$ python prog.py --help\n" +"usage: prog.py [-h]\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +"$ python prog.py --verbose\n" +"usage: prog.py [-h]\n" +"prog.py: error: unrecognized arguments: --verbose\n" +"$ python prog.py foo\n" +"usage: prog.py [-h]\n" +"prog.py: error: unrecognized arguments: foo" #: ../Doc/howto/argparse.rst:97 ../Doc/howto/argparse.rst:254 #: ../Doc/howto/argparse.rst:298 @@ -224,6 +256,11 @@ msgid "" "args = parser.parse_args()\n" "print(args.echo)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"echo\")\n" +"args = parser.parse_args()\n" +"print(args.echo)" #: ../Doc/howto/argparse.rst:122 msgid "And running the code:" @@ -245,6 +282,19 @@ msgid "" "$ python prog.py foo\n" "foo" msgstr "" +"$ python prog.py\n" +"usage: prog.py [-h] echo\n" +"prog.py: error: the following arguments are required: echo\n" +"$ python prog.py --help\n" +"usage: prog.py [-h] echo\n" +"\n" +"positional arguments:\n" +" echo\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +"$ python prog.py foo\n" +"foo" #: ../Doc/howto/argparse.rst:140 msgid "Here is what's happening:" @@ -308,6 +358,11 @@ msgid "" "args = parser.parse_args()\n" "print(args.echo)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"echo\", help=\"echo the string you use here\")\n" +"args = parser.parse_args()\n" +"print(args.echo)" #: ../Doc/howto/argparse.rst:167 msgid "And we get:" @@ -324,6 +379,14 @@ msgid "" "options:\n" " -h, --help show this help message and exit" msgstr "" +"$ python prog.py -h\n" +"usage: prog.py [-h] echo\n" +"\n" +"positional arguments:\n" +" echo echo the string you use here\n" +"\n" +"options:\n" +" -h, --help show this help message and exit" #: ../Doc/howto/argparse.rst:180 msgid "Now, how about doing something even more useful::" @@ -338,6 +401,12 @@ msgid "" "args = parser.parse_args()\n" "print(args.square**2)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", help=\"display a square of a given " +"number\")\n" +"args = parser.parse_args()\n" +"print(args.square**2)" #: ../Doc/howto/argparse.rst:190 msgid "" @@ -347,6 +416,11 @@ msgid "" " print(args.square**2)\n" "TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'" msgstr "" +"$ python prog.py 4\n" +"Traceback (most recent call last):\n" +" File \"prog.py\", line 5, in \n" +" print(args.square**2)\n" +"TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'" #: ../Doc/howto/argparse.rst:198 msgid "" @@ -368,6 +442,13 @@ msgid "" "args = parser.parse_args()\n" "print(args.square**2)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", help=\"display a square of a given " +"number\",\n" +" type=int)\n" +"args = parser.parse_args()\n" +"print(args.square**2)" #: ../Doc/howto/argparse.rst:211 msgid "" @@ -377,6 +458,11 @@ msgid "" "usage: prog.py [-h] square\n" "prog.py: error: argument square: invalid int value: 'four'" msgstr "" +"$ python prog.py 4\n" +"16\n" +"$ python prog.py four\n" +"usage: prog.py [-h] square\n" +"prog.py: error: argument square: invalid int value: 'four'" #: ../Doc/howto/argparse.rst:219 msgid "" @@ -407,6 +493,12 @@ msgid "" "if args.verbosity:\n" " print(\"verbosity turned on\")" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"--verbosity\", help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"if args.verbosity:\n" +" print(\"verbosity turned on\")" #: ../Doc/howto/argparse.rst:236 ../Doc/howto/argparse.rst:282 #: ../Doc/howto/argparse.rst:398 ../Doc/howto/argparse.rst:432 @@ -429,6 +521,19 @@ msgid "" "usage: prog.py [-h] [--verbosity VERBOSITY]\n" "prog.py: error: argument --verbosity: expected one argument" msgstr "" +"$ python prog.py --verbosity 1\n" +"verbosity turned on\n" +"$ python prog.py\n" +"$ python prog.py --help\n" +"usage: prog.py [-h] [--verbosity VERBOSITY]\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" --verbosity VERBOSITY\n" +" increase output verbosity\n" +"$ python prog.py --verbosity\n" +"usage: prog.py [-h] [--verbosity VERBOSITY]\n" +"prog.py: error: argument --verbosity: expected one argument" #: ../Doc/howto/argparse.rst:256 msgid "" @@ -485,6 +590,13 @@ msgid "" "if args.verbose:\n" " print(\"verbosity turned on\")" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"--verbose\", help=\"increase output verbosity\",\n" +" action=\"store_true\")\n" +"args = parser.parse_args()\n" +"if args.verbose:\n" +" print(\"verbosity turned on\")" #: ../Doc/howto/argparse.rst:284 msgid "" @@ -500,6 +612,17 @@ msgid "" " -h, --help show this help message and exit\n" " --verbose increase output verbosity" msgstr "" +"$ python prog.py --verbose\n" +"verbosity turned on\n" +"$ python prog.py --verbose 1\n" +"usage: prog.py [-h] [--verbose]\n" +"prog.py: error: unrecognized arguments: 1\n" +"$ python prog.py --help\n" +"usage: prog.py [-h] [--verbose]\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" --verbose increase output verbosity" #: ../Doc/howto/argparse.rst:300 msgid "" @@ -553,6 +676,14 @@ msgid "" "if args.verbose:\n" " print(\"verbosity turned on\")" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"-v\", \"--verbose\", help=\"increase output " +"verbosity\",\n" +" action=\"store_true\")\n" +"args = parser.parse_args()\n" +"if args.verbose:\n" +" print(\"verbosity turned on\")" #: ../Doc/howto/argparse.rst:328 msgid "And here goes:" @@ -569,6 +700,14 @@ msgid "" " -h, --help show this help message and exit\n" " -v, --verbose increase output verbosity" msgstr "" +"$ python prog.py -v\n" +"verbosity turned on\n" +"$ python prog.py --help\n" +"usage: prog.py [-h] [-v]\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" -v, --verbose increase output verbosity" #: ../Doc/howto/argparse.rst:341 msgid "Note that the new ability is also reflected in the help text." @@ -599,6 +738,18 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", type=int,\n" +" help=\"display a square of a given number\")\n" +"parser.add_argument(\"-v\", \"--verbose\", action=\"store_true\",\n" +" help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"answer = args.square**2\n" +"if args.verbose:\n" +" print(f\"the square of {args.square} equals {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:362 msgid "And now the output:" @@ -616,6 +767,15 @@ msgid "" "$ python prog.py --verbose 4\n" "the square of 4 equals 16" msgstr "" +"$ python prog.py\n" +"usage: prog.py [-h] [-v] square\n" +"prog.py: error: the following arguments are required: square\n" +"$ python prog.py 4\n" +"16\n" +"$ python prog.py 4 --verbose\n" +"the square of 4 equals 16\n" +"$ python prog.py --verbose 4\n" +"the square of 4 equals 16" #: ../Doc/howto/argparse.rst:376 msgid "We've brought back a positional argument, hence the complaint." @@ -650,6 +810,20 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", type=int,\n" +" help=\"display a square of a given number\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", type=int,\n" +" help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"answer = args.square**2\n" +"if args.verbosity == 2:\n" +" print(f\"the square of {args.square} equals {answer}\")\n" +"elif args.verbosity == 1:\n" +" print(f\"{args.square}^2 == {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:400 msgid "" @@ -665,6 +839,17 @@ msgid "" "$ python prog.py 4 -v 3\n" "16" msgstr "" +"$ python prog.py 4\n" +"16\n" +"$ python prog.py 4 -v\n" +"usage: prog.py [-h] [-v VERBOSITY] square\n" +"prog.py: error: argument -v/--verbosity: expected one argument\n" +"$ python prog.py 4 -v 1\n" +"4^2 == 16\n" +"$ python prog.py 4 -v 2\n" +"the square of 4 equals 16\n" +"$ python prog.py 4 -v 3\n" +"16" #: ../Doc/howto/argparse.rst:414 msgid "" @@ -693,6 +878,20 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", type=int,\n" +" help=\"display a square of a given number\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", type=int, choices=[0, 1, 2],\n" +" help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"answer = args.square**2\n" +"if args.verbosity == 2:\n" +" print(f\"the square of {args.square} equals {answer}\")\n" +"elif args.verbosity == 1:\n" +" print(f\"{args.square}^2 == {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:434 msgid "" @@ -711,6 +910,20 @@ msgid "" " -v, --verbosity {0,1,2}\n" " increase output verbosity" msgstr "" +"$ python prog.py 4 -v 3\n" +"usage: prog.py [-h] [-v {0,1,2}] square\n" +"prog.py: error: argument -v/--verbosity: invalid choice: 3 (choose from 0, " +"1, 2)\n" +"$ python prog.py 4 -h\n" +"usage: prog.py [-h] [-v {0,1,2}] square\n" +"\n" +"positional arguments:\n" +" square display a square of a given number\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" -v, --verbosity {0,1,2}\n" +" increase output verbosity" #: ../Doc/howto/argparse.rst:450 msgid "" @@ -748,6 +961,20 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", type=int,\n" +" help=\"display the square of a given number\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", action=\"count\",\n" +" help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"answer = args.square**2\n" +"if args.verbosity == 2:\n" +" print(f\"the square of {args.square} equals {answer}\")\n" +"elif args.verbosity == 1:\n" +" print(f\"{args.square}^2 == {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:472 msgid "" @@ -782,6 +1009,28 @@ msgid "" "$ python prog.py 4 -vvv\n" "16" msgstr "" +"$ python prog.py 4\n" +"16\n" +"$ python prog.py 4 -v\n" +"4^2 == 16\n" +"$ python prog.py 4 -vv\n" +"the square of 4 equals 16\n" +"$ python prog.py 4 --verbosity --verbosity\n" +"the square of 4 equals 16\n" +"$ python prog.py 4 -v 1\n" +"usage: prog.py [-h] [-v] square\n" +"prog.py: error: unrecognized arguments: 1\n" +"$ python prog.py 4 -h\n" +"usage: prog.py [-h] [-v] square\n" +"\n" +"positional arguments:\n" +" square display a square of a given number\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" -v, --verbosity increase output verbosity\n" +"$ python prog.py 4 -vvv\n" +"16" #: ../Doc/howto/argparse.rst:501 msgid "" @@ -857,6 +1106,22 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", type=int,\n" +" help=\"display a square of a given number\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", action=\"count\",\n" +" help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"answer = args.square**2\n" +"\n" +"# bugfix: replace == with >=\n" +"if args.verbosity >= 2:\n" +" print(f\"the square of {args.square} equals {answer}\")\n" +"elif args.verbosity >= 1:\n" +" print(f\"{args.square}^2 == {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:541 msgid "And this is what it gives:" @@ -874,6 +1139,15 @@ msgid "" " if args.verbosity >= 2:\n" "TypeError: '>=' not supported between instances of 'NoneType' and 'int'" msgstr "" +"$ python prog.py 4 -vvv\n" +"the square of 4 equals 16\n" +"$ python prog.py 4 -vvvv\n" +"the square of 4 equals 16\n" +"$ python prog.py 4\n" +"Traceback (most recent call last):\n" +" File \"prog.py\", line 11, in \n" +" if args.verbosity >= 2:\n" +"TypeError: '>=' not supported between instances of 'NoneType' and 'int'" #: ../Doc/howto/argparse.rst:556 msgid "" @@ -908,6 +1182,20 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"square\", type=int,\n" +" help=\"display a square of a given number\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", action=\"count\", default=0,\n" +" help=\"increase output verbosity\")\n" +"args = parser.parse_args()\n" +"answer = args.square**2\n" +"if args.verbosity >= 2:\n" +" print(f\"the square of {args.square} equals {answer}\")\n" +"elif args.verbosity >= 1:\n" +" print(f\"{args.square}^2 == {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:578 msgid "" @@ -932,6 +1220,8 @@ msgid "" "$ python prog.py 4\n" "16" msgstr "" +"$ python prog.py 4\n" +"16" #: ../Doc/howto/argparse.rst:592 msgid "" @@ -971,6 +1261,19 @@ msgid "" "else:\n" " print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"x\", type=int, help=\"the base\")\n" +"parser.add_argument(\"y\", type=int, help=\"the exponent\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", action=\"count\", default=0)\n" +"args = parser.parse_args()\n" +"answer = args.x**args.y\n" +"if args.verbosity >= 2:\n" +" print(f\"{args.x} to the power {args.y} equals {answer}\")\n" +"elif args.verbosity >= 1:\n" +" print(f\"{args.x}^{args.y} == {answer}\")\n" +"else:\n" +" print(answer)" #: ../Doc/howto/argparse.rst:618 ../Doc/howto/argparse.rst:656 msgid "Output:" @@ -994,6 +1297,21 @@ msgid "" "$ python prog.py 4 2 -v\n" "4^2 == 16" msgstr "" +"$ python prog.py\n" +"usage: prog.py [-h] [-v] x y\n" +"prog.py: error: the following arguments are required: x, y\n" +"$ python prog.py -h\n" +"usage: prog.py [-h] [-v] x y\n" +"\n" +"positional arguments:\n" +" x the base\n" +" y the exponent\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" -v, --verbosity\n" +"$ python prog.py 4 2 -v\n" +"4^2 == 16" #: ../Doc/howto/argparse.rst:639 msgid "" @@ -1020,6 +1338,18 @@ msgid "" " print(f\"{args.x}^{args.y} == \", end=\"\")\n" "print(answer)" msgstr "" +"import argparse\n" +"parser = argparse.ArgumentParser()\n" +"parser.add_argument(\"x\", type=int, help=\"the base\")\n" +"parser.add_argument(\"y\", type=int, help=\"the exponent\")\n" +"parser.add_argument(\"-v\", \"--verbosity\", action=\"count\", default=0)\n" +"args = parser.parse_args()\n" +"answer = args.x**args.y\n" +"if args.verbosity >= 2:\n" +" print(f\"Running '{__file__}'\")\n" +"if args.verbosity >= 1:\n" +" print(f\"{args.x}^{args.y} == \", end=\"\")\n" +"print(answer)" #: ../Doc/howto/argparse.rst:658 msgid "" @@ -1031,6 +1361,13 @@ msgid "" "Running 'prog.py'\n" "4^2 == 16" msgstr "" +"$ python prog.py 4 2\n" +"16\n" +"$ python prog.py 4 2 -v\n" +"4^2 == 16\n" +"$ python prog.py 4 2 -vv\n" +"Running 'prog.py'\n" +"4^2 == 16" #: ../Doc/howto/argparse.rst:672 msgid "Specifying ambiguous arguments" @@ -1067,6 +1404,24 @@ msgid "" ">>> parser.parse_args(['-n', '1', '--', '2', '3'])\n" "Namespace(args=['2', '3'], n=['1'])" msgstr "" +">>> parser = argparse.ArgumentParser(prog='PROG')\n" +">>> parser.add_argument('-n', nargs='+')\n" +">>> parser.add_argument('args', nargs='*')\n" +"\n" +">>> # ambiguo, parse_args asume que es una opción\n" +">>> parser.parse_args(['-f'])\n" +"usage: PROG [-h] [-n N [N ...]] [args ...]\n" +"PROG: error: unrecognized arguments: -f\n" +"\n" +">>> parser.parse_args(['--', '-f'])\n" +"Namespace(args=['-f'], n=None)\n" +"\n" +">>> # ambiguo, la opción -n option acepta argumentos ávidamente\n" +">>> parser.parse_args(['-n', '1', '2', '3'])\n" +"Namespace(args=[], n=['1', '2', '3'])\n" +"\n" +">>> parser.parse_args(['-n', '1', '--', '2', '3'])\n" +"Namespace(args=['2', '3'], n=['1'])" #: ../Doc/howto/argparse.rst:699 msgid "Conflicting options" @@ -1108,6 +1463,23 @@ msgid "" "else:\n" " print(f\"{args.x}^{args.y} == {answer}\")" msgstr "" +"import argparse\n" +"\n" +"parser = argparse.ArgumentParser()\n" +"group = parser.add_mutually_exclusive_group()\n" +"group.add_argument(\"-v\", \"--verbose\", action=\"store_true\")\n" +"group.add_argument(\"-q\", \"--quiet\", action=\"store_true\")\n" +"parser.add_argument(\"x\", type=int, help=\"the base\")\n" +"parser.add_argument(\"y\", type=int, help=\"the exponent\")\n" +"args = parser.parse_args()\n" +"answer = args.x**args.y\n" +"\n" +"if args.quiet:\n" +" print(answer)\n" +"elif args.verbose:\n" +" print(f\"{args.x} to the power {args.y} equals {answer}\")\n" +"else:\n" +" print(f\"{args.x}^{args.y} == {answer}\")" #: ../Doc/howto/argparse.rst:727 msgid "" @@ -1132,6 +1504,18 @@ msgid "" "usage: prog.py [-h] [-v | -q] x y\n" "prog.py: error: argument -q/--quiet: not allowed with argument -v/--verbose" msgstr "" +"$ python prog.py 4 2\n" +"4^2 == 16\n" +"$ python prog.py 4 2 -q\n" +"16\n" +"$ python prog.py 4 2 -v\n" +"4 to the power 2 equals 16\n" +"$ python prog.py 4 2 -vq\n" +"usage: prog.py [-h] [-v | -q] x y\n" +"prog.py: error: argument -q/--quiet: not allowed with argument -v/--verbose\n" +"$ python prog.py 4 2 -v --quiet\n" +"usage: prog.py [-h] [-v | -q] x y\n" +"prog.py: error: argument -q/--quiet: not allowed with argument -v/--verbose" #: ../Doc/howto/argparse.rst:745 msgid "" @@ -1172,6 +1556,24 @@ msgid "" "else:\n" " print(f\"{args.x}^{args.y} == {answer}\")" msgstr "" +"import argparse\n" +"\n" +"parser = argparse.ArgumentParser(description=\"calculate X to the power of " +"Y\")\n" +"group = parser.add_mutually_exclusive_group()\n" +"group.add_argument(\"-v\", \"--verbose\", action=\"store_true\")\n" +"group.add_argument(\"-q\", \"--quiet\", action=\"store_true\")\n" +"parser.add_argument(\"x\", type=int, help=\"the base\")\n" +"parser.add_argument(\"y\", type=int, help=\"the exponent\")\n" +"args = parser.parse_args()\n" +"answer = args.x**args.y\n" +"\n" +"if args.quiet:\n" +" print(answer)\n" +"elif args.verbose:\n" +" print(f\"{args.x} to the power {args.y} equals {answer}\")\n" +"else:\n" +" print(f\"{args.x}^{args.y} == {answer}\")" #: ../Doc/howto/argparse.rst:770 msgid "" @@ -1199,6 +1601,19 @@ msgid "" " -v, --verbose\n" " -q, --quiet" msgstr "" +"$ python prog.py --help\n" +"usage: prog.py [-h] [-v | -q] x y\n" +"\n" +"calculate X to the power of Y\n" +"\n" +"positional arguments:\n" +" x the base\n" +" y the exponent\n" +"\n" +"options:\n" +" -h, --help show this help message and exit\n" +" -v, --verbose\n" +" -q, --quiet" #: ../Doc/howto/argparse.rst:792 msgid "How to translate the argparse output" @@ -1240,7 +1655,7 @@ msgstr "" #: ../Doc/howto/argparse.rst:824 msgid "$ pybabel extract -o messages.po /usr/lib/python3.12/argparse.py" -msgstr "" +msgstr "$ pybabel extract -o messages.po /usr/lib/python3.12/argparse.py" #: ../Doc/howto/argparse.rst:828 msgid "" @@ -1265,6 +1680,8 @@ msgid "" "import argparse\n" "print(argparse.__file__)" msgstr "" +"import argparse\n" +"print(argparse.__file__)" #: ../Doc/howto/argparse.rst:838 msgid "" diff --git a/howto/enum.po b/howto/enum.po index 1929a3235f..e22a399000 100644 --- a/howto/enum.po +++ b/howto/enum.po @@ -9,22 +9,22 @@ msgstr "" "Project-Id-Version: Python en Español 3.11\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2023-11-13 00:32-0500\n" +"PO-Revision-Date: 2024-11-28 14:40-0600\n" "Last-Translator: \n" -"Language: es_US\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_US\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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/howto/enum.rst:5 msgid "Enum HOWTO" msgstr "HOWTO - Enum" #: ../Doc/howto/enum.rst:11 -#, fuzzy msgid "" "An :class:`Enum` is a set of symbolic names bound to unique values. They " "are similar to global variables, but they offer a more useful :func:`repr`, " @@ -55,6 +55,15 @@ msgid "" "... SATURDAY = 6\n" "... SUNDAY = 7" msgstr "" +">>> from enum import Enum\n" +">>> class Weekday(Enum):\n" +"... MONDAY = 1\n" +"... TUESDAY = 2\n" +"... WEDNESDAY = 3\n" +"... THURSDAY = 4\n" +"... FRIDAY = 5\n" +"... SATURDAY = 6\n" +"... SUNDAY = 7" #: ../Doc/howto/enum.rst:28 msgid "Or perhaps the RGB primary colors::" @@ -68,6 +77,11 @@ msgid "" "... GREEN = 2\n" "... BLUE = 3" msgstr "" +">>> from enum import Enum\n" +">>> class Color(Enum):\n" +"... RED = 1\n" +"... GREEN = 2\n" +"... BLUE = 3" #: ../Doc/howto/enum.rst:36 msgid "" @@ -109,6 +123,8 @@ msgid "" ">>> Weekday(3)\n" "" msgstr "" +">>> Weekday(3)\n" +"" #: ../Doc/howto/enum.rst:53 msgid "" @@ -125,6 +141,8 @@ msgid "" ">>> print(Weekday.THURSDAY)\n" "Weekday.THURSDAY" msgstr "" +">>> print(Weekday.THURSDAY)\n" +"Weekday.THURSDAY" #: ../Doc/howto/enum.rst:60 msgid "The *type* of an enumeration member is the enum it belongs to::" @@ -139,6 +157,10 @@ msgid "" ">>> isinstance(Weekday.FRIDAY, Weekday)\n" "True" msgstr "" +">>> type(Weekday.MONDAY)\n" +"\n" +">>> isinstance(Weekday.FRIDAY, Weekday)\n" +"True" #: ../Doc/howto/enum.rst:67 msgid "Enum members have an attribute that contains just their :attr:`name`::" @@ -151,6 +173,8 @@ msgid "" ">>> print(Weekday.TUESDAY.name)\n" "TUESDAY" msgstr "" +">>> print(Weekday.TUESDAY.name)\n" +"TUESDAY" #: ../Doc/howto/enum.rst:72 msgid "Likewise, they have an attribute for their :attr:`value`::" @@ -161,6 +185,8 @@ msgid "" ">>> Weekday.WEDNESDAY.value\n" "3" msgstr "" +">>> Weekday.WEDNESDAY.value\n" +"3" #: ../Doc/howto/enum.rst:78 msgid "" @@ -187,6 +213,9 @@ msgid "" "def from_date(cls, date):\n" " return cls(date.isoweekday())" msgstr "" +"@classmethod\n" +"def from_date(cls, date):\n" +" return cls(date.isoweekday())" #: ../Doc/howto/enum.rst:90 msgid "The complete :class:`Weekday` enum now looks like this::" @@ -207,6 +236,18 @@ msgid "" "... def from_date(cls, date):\n" "... return cls(date.isoweekday())" msgstr "" +">>> class Weekday(Enum):\n" +"... MONDAY = 1\n" +"... TUESDAY = 2\n" +"... WEDNESDAY = 3\n" +"... THURSDAY = 4\n" +"... FRIDAY = 5\n" +"... SATURDAY = 6\n" +"... SUNDAY = 7\n" +"... #\n" +"... @classmethod\n" +"... def from_date(cls, date):\n" +"... return cls(date.isoweekday())" #: ../Doc/howto/enum.rst:105 msgid "Now we can find out what today is! Observe::" @@ -218,6 +259,9 @@ msgid "" ">>> Weekday.from_date(date.today()) \n" "" msgstr "" +">>> from datetime import date\n" +">>> Weekday.from_date(date.today())\n" +"" #: ../Doc/howto/enum.rst:111 msgid "" @@ -250,6 +294,15 @@ msgid "" "... SATURDAY = 32\n" "... SUNDAY = 64" msgstr "" +">>> from enum import Flag\n" +">>> class Weekday(Flag):\n" +"... MONDAY = 1\n" +"... TUESDAY = 2\n" +"... WEDNESDAY = 4\n" +"... THURSDAY = 8\n" +"... FRIDAY = 16\n" +"... SATURDAY = 32\n" +"... SUNDAY = 64" #: ../Doc/howto/enum.rst:128 msgid "" @@ -273,6 +326,9 @@ msgid "" ">>> first_week_day\n" "" msgstr "" +">>> first_week_day = Weekday.MONDAY\n" +">>> first_week_day\n" +"" #: ../Doc/howto/enum.rst:137 msgid "" @@ -288,6 +344,9 @@ msgid "" ">>> weekend\n" "" msgstr "" +">>> weekend = Weekday.SATURDAY | Weekday.SUNDAY\n" +">>> weekend\n" +"" #: ../Doc/howto/enum.rst:144 msgid "You can even iterate over a :class:`Flag` variable::" @@ -300,6 +359,10 @@ msgid "" "Weekday.SATURDAY\n" "Weekday.SUNDAY" msgstr "" +">>> for day in weekend:\n" +"... print(day)\n" +"Weekday.SATURDAY\n" +"Weekday.SUNDAY" #: ../Doc/howto/enum.rst:151 msgid "Okay, let's get some chores set up::" @@ -314,6 +377,12 @@ msgid "" "... 'answer SO questions': Weekday.SATURDAY,\n" "... }" msgstr "" +">>> chores_for_ethan = {\n" +"... 'feed the cat': Weekday.MONDAY | Weekday.WEDNESDAY | Weekday." +"FRIDAY,\n" +"... 'do the dishes': Weekday.TUESDAY | Weekday.THURSDAY,\n" +"... 'answer SO questions': Weekday.SATURDAY,\n" +"... }" #: ../Doc/howto/enum.rst:159 msgid "And a function to display the chores for a given day::" @@ -329,9 +398,15 @@ msgid "" ">>> show_chores(chores_for_ethan, Weekday.SATURDAY)\n" "answer SO questions" msgstr "" +">>> def show_chores(chores, day):\n" +"... for chore, days in chores.items():\n" +"... if day in days:\n" +"... print(chore)\n" +"...\n" +">>> show_chores(chores_for_ethan, Weekday.SATURDAY)\n" +"answer SO questions" #: ../Doc/howto/enum.rst:169 -#, fuzzy msgid "" "In cases where the actual values of the members do not matter, you can save " "yourself some work and use :func:`auto` for the values::" @@ -352,6 +427,16 @@ msgid "" "... SUNDAY = auto()\n" "... WEEKEND = SATURDAY | SUNDAY" msgstr "" +">>> from enum import auto\n" +">>> class Weekday(Flag):\n" +"... MONDAY = auto()\n" +"... TUESDAY = auto()\n" +"... WEDNESDAY = auto()\n" +"... THURSDAY = auto()\n" +"... FRIDAY = auto()\n" +"... SATURDAY = auto()\n" +"... SUNDAY = auto()\n" +"... WEEKEND = SATURDAY | SUNDAY" #: ../Doc/howto/enum.rst:188 msgid "Programmatic access to enumeration members and their attributes" @@ -375,6 +460,10 @@ msgid "" ">>> Color(3)\n" "" msgstr "" +">>> Color(1)\n" +"\n" +">>> Color(3)\n" +"" #: ../Doc/howto/enum.rst:199 msgid "If you want to access enum members by *name*, use item access::" @@ -389,6 +478,10 @@ msgid "" ">>> Color['GREEN']\n" "" msgstr "" +">>> Color['RED']\n" +"\n" +">>> Color['GREEN']\n" +"" #: ../Doc/howto/enum.rst:206 msgid "If you have an enum member and need its :attr:`name` or :attr:`value`::" @@ -404,6 +497,11 @@ msgid "" ">>> member.value\n" "1" msgstr "" +">>> member = Color.RED\n" +">>> member.name\n" +"'RED'\n" +">>> member.value\n" +"1" #: ../Doc/howto/enum.rst:216 msgid "Duplicating enum members and values" @@ -423,6 +521,13 @@ msgid "" "...\n" "TypeError: 'SQUARE' already defined as 2" msgstr "" +">>> class Shape(Enum):\n" +"... SQUARE = 2\n" +"... SQUARE = 3\n" +"...\n" +"Traceback (most recent call last):\n" +"...\n" +"TypeError: 'SQUARE' already defined as 2" #: ../Doc/howto/enum.rst:228 msgid "" @@ -454,6 +559,18 @@ msgid "" ">>> Shape(2)\n" "" msgstr "" +">>> class Shape(Enum):\n" +"... SQUARE = 2\n" +"... DIAMOND = 1\n" +"... CIRCLE = 3\n" +"... ALIAS_FOR_SQUARE = 2\n" +"...\n" +">>> Shape.SQUARE\n" +"\n" +">>> Shape.ALIAS_FOR_SQUARE\n" +"\n" +">>> Shape(2)\n" +"" #: ../Doc/howto/enum.rst:249 msgid "" @@ -492,6 +609,17 @@ msgid "" "...\n" "ValueError: duplicate values found in : FOUR -> THREE" msgstr "" +">>> from enum import Enum, unique\n" +">>> @unique\n" +"... class Mistake(Enum):\n" +"... ONE = 1\n" +"... TWO = 2\n" +"... THREE = 3\n" +"... FOUR = 3\n" +"...\n" +"Traceback (most recent call last):\n" +"...\n" +"ValueError: duplicate values found in : FOUR -> THREE" #: ../Doc/howto/enum.rst:274 msgid "Using automatic values" @@ -512,6 +640,14 @@ msgid "" ">>> [member.value for member in Color]\n" "[1, 2, 3]" msgstr "" +">>> from enum import Enum, auto\n" +">>> class Color(Enum):\n" +"... RED = auto()\n" +"... BLUE = auto()\n" +"... GREEN = auto()\n" +"...\n" +">>> [member.value for member in Color]\n" +"[1, 2, 3]" #: ../Doc/howto/enum.rst:287 msgid "" @@ -537,6 +673,19 @@ msgid "" ">>> [member.value for member in Ordinal]\n" "['NORTH', 'SOUTH', 'EAST', 'WEST']" msgstr "" +">>> class AutoName(Enum):\n" +"... @staticmethod\n" +"... def _generate_next_value_(name, start, count, last_values):\n" +"... return name\n" +"...\n" +">>> class Ordinal(AutoName):\n" +"... NORTH = auto()\n" +"... SOUTH = auto()\n" +"... EAST = auto()\n" +"... WEST = auto()\n" +"...\n" +">>> [member.value for member in Ordinal]\n" +"['NORTH', 'SOUTH', 'EAST', 'WEST']" #: ../Doc/howto/enum.rst:306 msgid "" @@ -562,6 +711,12 @@ msgid "" "THURSDAY: 8>, , , ]" msgstr "" +">>> list(Shape)\n" +"[, , ]\n" +">>> list(Weekday)\n" +"[, , , , , , ]" #: ../Doc/howto/enum.rst:318 msgid "" @@ -591,6 +746,13 @@ msgid "" "('CIRCLE', )\n" "('ALIAS_FOR_SQUARE', )" msgstr "" +">>> for name, member in Shape.__members__.items():\n" +"... name, member\n" +"...\n" +"('SQUARE', )\n" +"('DIAMOND', )\n" +"('CIRCLE', )\n" +"('ALIAS_FOR_SQUARE', )" #: ../Doc/howto/enum.rst:332 msgid "" @@ -607,6 +769,9 @@ msgid "" "name]\n" "['ALIAS_FOR_SQUARE']" msgstr "" +">>> [name for name, member in Shape.__members__.items() if member.name != " +"name]\n" +"['ALIAS_FOR_SQUARE']" #: ../Doc/howto/enum.rst:340 msgid "" @@ -633,6 +798,12 @@ msgid "" ">>> Color.RED is not Color.BLUE\n" "True" msgstr "" +">>> Color.RED is Color.RED\n" +"True\n" +">>> Color.RED is Color.BLUE\n" +"False\n" +">>> Color.RED is not Color.BLUE\n" +"True" #: ../Doc/howto/enum.rst:356 msgid "" @@ -650,6 +821,10 @@ msgid "" " File \"\", line 1, in \n" "TypeError: '<' not supported between instances of 'Color' and 'Color'" msgstr "" +">>> Color.RED < Color.BLUE\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: '<' not supported between instances of 'Color' and 'Color'" #: ../Doc/howto/enum.rst:364 msgid "Equality comparisons are defined though::" @@ -664,6 +839,12 @@ msgid "" ">>> Color.BLUE == Color.BLUE\n" "True" msgstr "" +">>> Color.BLUE == Color.RED\n" +"False\n" +">>> Color.BLUE != Color.RED\n" +"True\n" +">>> Color.BLUE == Color.BLUE\n" +"True" #: ../Doc/howto/enum.rst:373 msgid "" @@ -680,6 +861,8 @@ msgid "" ">>> Color.BLUE == 2\n" "False" msgstr "" +">>> Color.BLUE == 2\n" +"False" #: ../Doc/howto/enum.rst:382 msgid "" @@ -737,6 +920,22 @@ msgid "" "... return cls.HAPPY\n" "..." msgstr "" +">>> class Mood(Enum):\n" +"... FUNKY = 1\n" +"... HAPPY = 3\n" +"...\n" +"... def describe(self):\n" +"... # self es el miembro aquí\n" +"... return self.name, self.value\n" +"...\n" +"... def __str__(self):\n" +"... return 'my custom str! {0}'.format(self.value)\n" +"...\n" +"... @classmethod\n" +"... def favorite_mood(cls):\n" +"... # cls es la enumeración aquí\n" +"... return cls.HAPPY\n" +"..." #: ../Doc/howto/enum.rst:415 msgid "Then::" @@ -751,6 +950,12 @@ msgid "" ">>> str(Mood.FUNKY)\n" "'my custom str! 1'" msgstr "" +">>> Mood.favorite_mood()\n" +"\n" +">>> Mood.HAPPY.describe()\n" +"('HAPPY', 3)\n" +">>> str(Mood.FUNKY)\n" +"'my custom str! 1'" #: ../Doc/howto/enum.rst:424 msgid "" @@ -810,6 +1015,8 @@ msgid "" "class EnumName([mix-in, ...,] [data-type,] base-enum):\n" " pass" msgstr "" +"class EnumName([mix-in, ...,] [data-type,] base-enum):\n" +" pass" #: ../Doc/howto/enum.rst:453 msgid "" @@ -828,6 +1035,12 @@ msgid "" "...\n" "TypeError: cannot extend " msgstr "" +">>> class MoreColor(Color):\n" +"... PINK = 17\n" +"...\n" +"Traceback (most recent call last):\n" +"...\n" +"TypeError: cannot extend " #: ../Doc/howto/enum.rst:463 msgid "But this is allowed::" @@ -844,6 +1057,14 @@ msgid "" "... SAD = 2\n" "..." msgstr "" +">>> class Foo(Enum):\n" +"... def some_behavior(self):\n" +"... pass\n" +"...\n" +">>> class Bar(Foo):\n" +"... HAPPY = 1\n" +"... SAD = 2\n" +"..." #: ../Doc/howto/enum.rst:474 msgid "" @@ -886,15 +1107,27 @@ msgid "" ">>> Creature.DOG\n" "" msgstr "" +">>> from dataclasses import dataclass, field\n" +">>> @dataclass\n" +"... class CreatureDataMixin:\n" +"... size: str\n" +"... legs: int\n" +"... tail: bool = field(repr=False, default=True)\n" +"...\n" +">>> class Creature(CreatureDataMixin, Enum):\n" +"... BEETLE = 'small', 6\n" +"... DOG = 'medium', 4\n" +"...\n" +">>> Creature.DOG\n" +"" #: ../Doc/howto/enum.rst:502 -#, fuzzy msgid "" "Use the :func:`~dataclasses.dataclass` argument ``repr=False`` to use the " "standard :func:`repr`." msgstr "" -"Utilice el argumento ``repr=False`` de :func:`!dataclass` para utilizar el :" -"func:`repr` estándar." +"Utilice el argumento ``repr=False`` de :func:`~dataclasses.dataclass` para " +"utilizar el :func:`repr` estándar." #: ../Doc/howto/enum.rst:505 msgid "" @@ -911,6 +1144,10 @@ msgid "" "produce very strange results at runtime, such as members being equal to each " "other::" msgstr "" +"Añadir el decorador :func:`~dataclasses.dataclass` a :class:`Enum` y sus " +"subclases no está soportado. No lanzará ningún error, pero producirá " +"resultados bastante extraños en tiempo de ejecución, como miembros siendo " +"iguales a otros:" #: ../Doc/howto/enum.rst:516 msgid "" @@ -924,6 +1161,15 @@ msgid "" ">>> Color.RED == Color.BLUE # problem is here: they should not be equal\n" "True" msgstr "" +">>> @dataclass # no haga esto: no tiene ningún sentido\n" +"... class Color(Enum):\n" +"... RED = 1\n" +"... BLUE = 2\n" +"...\n" +">>> Color.RED is Color.BLUE\n" +"False\n" +">>> Color.RED == Color.BLUE # problema aquí:: no deberían ser iguales\n" +"True" #: ../Doc/howto/enum.rst:528 msgid "Pickling" @@ -940,6 +1186,10 @@ msgid "" ">>> Fruit.TOMATO is loads(dumps(Fruit.TOMATO))\n" "True" msgstr "" +">>> from test.test_enum import Fruit\n" +">>> from pickle import dumps, loads\n" +">>> Fruit.TOMATO is loads(dumps(Fruit.TOMATO))\n" +"True" #: ../Doc/howto/enum.rst:537 msgid "" @@ -976,6 +1226,9 @@ msgid "" ">>> class MyEnum(enum.Enum):\n" "... __reduce_ex__ = enum.pickle_by_enum_name" msgstr "" +">>> import enum\n" +">>> class MyEnum(enum.Enum):\n" +"... __reduce_ex__ = enum.pickle_by_enum_name" #: ../Doc/howto/enum.rst:556 msgid "" @@ -1006,6 +1259,13 @@ msgid "" ">>> list(Animal)\n" "[, , , ]" msgstr "" +">>> Animal = Enum('Animal', 'ANT BEE CAT DOG')\n" +">>> Animal\n" +"\n" +">>> Animal.ANT\n" +"\n" +">>> list(Animal)\n" +"[, , , ]" #: ../Doc/howto/enum.rst:573 msgid "" @@ -1046,6 +1306,12 @@ msgid "" "... DOG = 4\n" "..." msgstr "" +">>> class Animal(Enum):\n" +"... ANT = 1\n" +"... BEE = 2\n" +"... CAT = 3\n" +"... DOG = 4\n" +"..." #: ../Doc/howto/enum.rst:592 msgid "" @@ -1074,7 +1340,7 @@ msgstr "" #: ../Doc/howto/enum.rst:602 msgid ">>> Animal = Enum('Animal', 'ANT BEE CAT DOG', module=__name__)" -msgstr "" +msgstr ">>> Animal = Enum('Animal', 'ANT BEE CAT DOG', module=__name__)" #: ../Doc/howto/enum.rst:606 msgid "" @@ -1087,7 +1353,6 @@ msgstr "" "errores más cerca de la fuente, se desactivará el decapado." #: ../Doc/howto/enum.rst:610 -#, fuzzy msgid "" "The new pickle protocol 4 also, in some circumstances, relies on :attr:" "`~type.__qualname__` being set to the location where pickle will be able to " @@ -1095,14 +1360,15 @@ msgid "" "SomeData in the global scope::" msgstr "" "El nuevo protocolo pickle 4 también, en algunas circunstancias, depende de " -"que :attr:`~definition.__qualname__` se establezca en la ubicación donde " -"pickle podrá encontrar la clase. Por ejemplo, si la clase estuvo disponible " -"en la clase SomeData en el ámbito global:" +"que :attr:`~type.__qualname__` se establezca en la ubicación donde pickle " +"podrá encontrar la clase. Por ejemplo, si la clase estuvo disponible en la " +"clase SomeData en el ámbito global:" #: ../Doc/howto/enum.rst:615 msgid "" ">>> Animal = Enum('Animal', 'ANT BEE CAT DOG', qualname='SomeData.Animal')" msgstr "" +">>> Animal = Enum('Animal', 'ANT BEE CAT DOG', qualname='SomeData.Animal')" #: ../Doc/howto/enum.rst:617 msgid "The complete signature is::" @@ -1120,25 +1386,33 @@ msgid "" " start=1,\n" " )" msgstr "" +"Enum(\n" +" value='NewEnumName',\n" +" names=<...>,\n" +" *,\n" +" module='...',\n" +" qualname='...',\n" +" type=,\n" +" start=1,\n" +" )" #: ../Doc/howto/enum.rst:629 -#, fuzzy msgid "*value*: What the new enum class will record as its name." -msgstr "Lo que la nueva clase de enumeración registrará como su nombre." +msgstr "" +"*value*: Lo que la nueva clase de enumeración registrará como su nombre." #: ../Doc/howto/enum.rst:631 -#, fuzzy msgid "" "*names*: The enum members. This can be a whitespace- or comma-separated " "string (values will start at 1 unless otherwise specified)::" msgstr "" -"Los miembros de la enumeración. Puede ser una cadena separada por comas o " -"espacios en blanco (los valores comenzarán en 1 a menos que se especifique " -"lo contrario):" +"*names*: Los miembros de la enumeración. Puede ser una cadena separada por " +"comas o espacios en blanco (los valores comenzarán en 1 a menos que se " +"especifique lo contrario):" #: ../Doc/howto/enum.rst:634 msgid "'RED GREEN BLUE' | 'RED,GREEN,BLUE' | 'RED, GREEN, BLUE'" -msgstr "" +msgstr "'RED GREEN BLUE' | 'RED,GREEN,BLUE' | 'RED, GREEN, BLUE'" #: ../Doc/howto/enum.rst:636 msgid "or an iterator of names::" @@ -1146,7 +1420,7 @@ msgstr "o un iterador de nombres::" #: ../Doc/howto/enum.rst:638 msgid "['RED', 'GREEN', 'BLUE']" -msgstr "" +msgstr "['RED', 'GREEN', 'BLUE']" #: ../Doc/howto/enum.rst:640 msgid "or an iterator of (name, value) pairs::" @@ -1154,7 +1428,7 @@ msgstr "o un iterador de (nombre, valor) pares::" #: ../Doc/howto/enum.rst:642 msgid "[('CYAN', 4), ('MAGENTA', 5), ('YELLOW', 6)]" -msgstr "" +msgstr "[('CYAN', 4), ('MAGENTA', 5), ('YELLOW', 6)]" #: ../Doc/howto/enum.rst:644 msgid "or a mapping::" @@ -1162,28 +1436,27 @@ msgstr "o un mapeo::" #: ../Doc/howto/enum.rst:646 msgid "{'CHARTREUSE': 7, 'SEA_GREEN': 11, 'ROSEMARY': 42}" -msgstr "" +msgstr "{'CHARTREUSE': 7, 'SEA_GREEN': 11, 'ROSEMARY': 42}" #: ../Doc/howto/enum.rst:648 -#, fuzzy msgid "*module*: name of module where new enum class can be found." msgstr "" -"nombre del módulo donde se puede encontrar la nueva clase de enumeración." +"*module*: nombre del módulo donde se puede encontrar la nueva clase de " +"enumeración." #: ../Doc/howto/enum.rst:650 -#, fuzzy msgid "*qualname*: where in module new enum class can be found." -msgstr "donde en el módulo se puede encontrar la nueva clase de enumeración." +msgstr "" +"*qualname*: donde en el módulo se puede encontrar la nueva clase de " +"enumeración." #: ../Doc/howto/enum.rst:652 -#, fuzzy msgid "*type*: type to mix in to new enum class." -msgstr "tipo para mezclar en la nueva clase de enumeración." +msgstr "*type*: tipo para mezclar en la nueva clase de enumeración." #: ../Doc/howto/enum.rst:654 -#, fuzzy msgid "*start*: number to start counting at if only names are passed in." -msgstr "número para comenzar a contar si solo se pasan nombres." +msgstr "*start*: número para comenzar a contar si solo se pasan nombres." #: ../Doc/howto/enum.rst:656 msgid "The *start* parameter was added." @@ -1227,6 +1500,21 @@ msgid "" ">>> Shape.CIRCLE == Request.POST\n" "True" msgstr "" +">>> from enum import IntEnum\n" +">>> class Shape(IntEnum):\n" +"... CIRCLE = 1\n" +"... SQUARE = 2\n" +"...\n" +">>> class Request(IntEnum):\n" +"... POST = 1\n" +"... GET = 2\n" +"...\n" +">>> Shape == 1\n" +"False\n" +">>> Shape.CIRCLE == 1\n" +"True\n" +">>> Shape.CIRCLE == Request.POST\n" +"True" #: ../Doc/howto/enum.rst:687 msgid "" @@ -1249,6 +1537,16 @@ msgid "" ">>> Shape.CIRCLE == Color.RED\n" "False" msgstr "" +">>> class Shape(IntEnum):\n" +"... CIRCLE = 1\n" +"... SQUARE = 2\n" +"...\n" +">>> class Color(Enum):\n" +"... RED = 1\n" +"... GREEN = 2\n" +"...\n" +">>> Shape.CIRCLE == Color.RED\n" +"False" #: ../Doc/howto/enum.rst:700 msgid "" @@ -1266,6 +1564,12 @@ msgid "" ">>> [i for i in range(Shape.SQUARE)]\n" "[0, 1]" msgstr "" +">>> int(Shape.CIRCLE)\n" +"1\n" +">>> ['a', 'b', 'c'][Shape.CIRCLE]\n" +"'b'\n" +">>> [i for i in range(Shape.SQUARE)]\n" +"[0, 1]" #: ../Doc/howto/enum.rst:711 msgid "StrEnum" @@ -1340,6 +1644,19 @@ msgid "" ">>> Perm.R in RW\n" "True" msgstr "" +">>> from enum import IntFlag\n" +">>> class Perm(IntFlag):\n" +"... R = 4\n" +"... W = 2\n" +"... X = 1\n" +"...\n" +">>> Perm.R | Perm.W\n" +"\n" +">>> Perm.R + Perm.W\n" +"6\n" +">>> RW = Perm.R | Perm.W\n" +">>> Perm.R in RW\n" +"True" #: ../Doc/howto/enum.rst:758 msgid "It is also possible to name the combinations::" @@ -1360,6 +1677,18 @@ msgid "" ">>> Perm(7)\n" "" msgstr "" +">>> class Perm(IntFlag):\n" +"... R = 4\n" +"... W = 2\n" +"... X = 1\n" +"... RWX = 7\n" +"...\n" +">>> Perm.RWX\n" +"\n" +">>> ~Perm.RWX\n" +"\n" +">>> Perm(7)\n" +"" #: ../Doc/howto/enum.rst:775 msgid "" @@ -1387,6 +1716,10 @@ msgid "" ">>> bool(Perm.R & Perm.X)\n" "False" msgstr "" +">>> Perm.R & Perm.X\n" +"\n" +">>> bool(Perm.R & Perm.X)\n" +"False" #: ../Doc/howto/enum.rst:788 msgid "" @@ -1405,6 +1738,11 @@ msgid "" ">>> Perm.X + 8\n" "9" msgstr "" +">>> Perm.X | 4\n" +"\n" +"\n" +">>> Perm.X + 8\n" +"9" #: ../Doc/howto/enum.rst:799 msgid "" @@ -1419,6 +1757,8 @@ msgid "" ">>> (~Perm.X).value == (Perm.R|Perm.W).value == 6\n" "True" msgstr "" +">>> (~Perm.X).value == (Perm.R|Perm.W).value == 6\n" +"True" #: ../Doc/howto/enum.rst:805 msgid ":class:`IntFlag` members can also be iterated over::" @@ -1429,6 +1769,8 @@ msgid "" ">>> list(RW)\n" "[, ]" msgstr "" +">>> list(RW)\n" +"[, ]" #: ../Doc/howto/enum.rst:814 msgid "Flag" @@ -1473,6 +1815,16 @@ msgid "" ">>> bool(Color.RED & Color.GREEN)\n" "False" msgstr "" +">>> from enum import Flag, auto\n" +">>> class Color(Flag):\n" +"... RED = auto()\n" +"... BLUE = auto()\n" +"... GREEN = auto()\n" +"...\n" +">>> Color.RED & Color.GREEN\n" +"\n" +">>> bool(Color.RED & Color.GREEN)\n" +"False" #: ../Doc/howto/enum.rst:839 msgid "" @@ -1493,6 +1845,14 @@ msgid "" ">>> Color.WHITE\n" "" msgstr "" +">>> class Color(Flag):\n" +"... RED = auto()\n" +"... BLUE = auto()\n" +"... GREEN = auto()\n" +"... WHITE = RED | BLUE | GREEN\n" +"...\n" +">>> Color.WHITE\n" +"" #: ../Doc/howto/enum.rst:851 msgid "" @@ -1515,6 +1875,16 @@ msgid "" ">>> bool(Color.BLACK)\n" "False" msgstr "" +">>> class Color(Flag):\n" +"... BLACK = 0\n" +"... RED = auto()\n" +"... BLUE = auto()\n" +"... GREEN = auto()\n" +"...\n" +">>> Color.BLACK\n" +"\n" +">>> bool(Color.BLACK)\n" +"False" #: ../Doc/howto/enum.rst:865 msgid ":class:`Flag` members can also be iterated over::" @@ -1526,6 +1896,9 @@ msgid "" ">>> list(purple)\n" "[, ]" msgstr "" +">>> purple = Color.RED | Color.BLUE\n" +">>> list(purple)\n" +"[, ]" #: ../Doc/howto/enum.rst:875 msgid "" @@ -1563,6 +1936,8 @@ msgid "" "class IntEnum(int, ReprEnum): # or Enum instead of ReprEnum\n" " pass" msgstr "" +"class IntEnum(int, ReprEnum): # o Enum en lugar de ReprEnum\n" +" pass" #: ../Doc/howto/enum.rst:893 msgid "" @@ -1579,7 +1954,6 @@ msgid "Some rules:" msgstr "Algunas reglas:" #: ../Doc/howto/enum.rst:898 -#, fuzzy msgid "" "When subclassing :class:`Enum`, mix-in types must appear before the :class:" "`Enum` class itself in the sequence of bases, as in the :class:`IntEnum` " @@ -1679,14 +2053,37 @@ msgid "" "For example, if you want to pass several items to the constructor, but only " "want one of them to be the value::" msgstr "" -"Por ejemplo, si desea pasar varios elementos al constructor, pero solo desea " -"que uno de ellos sea el valor:" - -#: ../Doc/howto/enum.rst:938 -msgid "" +"Por ejemplo, si desea pasar varios elementos al constructor, pero solo desea " +"que uno de ellos sea el valor:" + +#: ../Doc/howto/enum.rst:938 +msgid "" +">>> class Coordinate(bytes, Enum):\n" +"... \"\"\"\n" +"... Coordinate with binary codes that can be indexed by the int code.\n" +"... \"\"\"\n" +"... def __new__(cls, value, label, unit):\n" +"... obj = bytes.__new__(cls, [value])\n" +"... obj._value_ = value\n" +"... obj.label = label\n" +"... obj.unit = unit\n" +"... return obj\n" +"... PX = (0, 'P.X', 'km')\n" +"... PY = (1, 'P.Y', 'km')\n" +"... VX = (2, 'V.X', 'km/s')\n" +"... VY = (3, 'V.Y', 'km/s')\n" +"...\n" +"\n" +">>> print(Coordinate['PY'])\n" +"Coordinate.PY\n" +"\n" +">>> print(Coordinate(3))\n" +"Coordinate.VY" +msgstr "" ">>> class Coordinate(bytes, Enum):\n" "... \"\"\"\n" -"... Coordinate with binary codes that can be indexed by the int code.\n" +"... Coordenada con códigos binarios que pueden ser indexada por el " +"código entero\n" "... \"\"\"\n" "... def __new__(cls, value, label, unit):\n" "... obj = bytes.__new__(cls, [value])\n" @@ -1705,7 +2102,6 @@ msgid "" "\n" ">>> print(Coordinate(3))\n" "Coordinate.VY" -msgstr "" #: ../Doc/howto/enum.rst:962 msgid "" @@ -1747,80 +2143,79 @@ msgid "Supported ``_sunder_`` names" msgstr "Nombres ``_sunder_`` admitidos" #: ../Doc/howto/enum.rst:983 -#, fuzzy msgid ":attr:`~Enum._name_` -- name of the member" -msgstr "``_name_`` -- nombre del miembro" +msgstr ":attr:`~Enum._name_` -- nombre del miembro" #: ../Doc/howto/enum.rst:984 -#, fuzzy msgid ":attr:`~Enum._value_` -- value of the member; can be set in ``__new__``" msgstr "" -"``_value_`` -- valor del miembro; se puede configurar/modificar en " +":attr:`~Enum._value_` -- valor del miembro; se puede configurar/modificar en " "``__new__``" #: ../Doc/howto/enum.rst:985 -#, fuzzy msgid "" ":meth:`~Enum._missing_` -- a lookup function used when a value is not found; " "may be overridden" msgstr "" -"``_missing_``: una función de búsqueda utilizada cuando no se encuentra un " -"valor; puede ser anulado" +":meth:`~Enum._missing_` -- una función de búsqueda utilizada cuando no se " +"encuentra un valor; puede ser anulado" #: ../Doc/howto/enum.rst:987 -#, fuzzy msgid "" ":attr:`~Enum._ignore_` -- a list of names, either as a :class:`list` or a :" "class:`str`, that will not be transformed into members, and will be removed " "from the final class" msgstr "" -"``_ignore_`` -- una lista de nombres, ya sea como :class:`list` o :class:" -"`str`, que no se transformarán en miembros y se eliminarán de la clase final" +":attr:`~Enum._ignore_` -- una lista de nombres, ya sea como :class:`list` o :" +"class:`str`, que no se transformarán en miembros y se eliminarán de la clase " +"final" #: ../Doc/howto/enum.rst:990 -#, fuzzy msgid "" ":meth:`~Enum._generate_next_value_` -- used to get an appropriate value for " "an enum member; may be overridden" msgstr "" -"``_generate_next_value_``: utilizado por `Functional API`_ y por :class:" -"`auto` para obtener un valor apropiado para un miembro de enumeración; puede " -"ser anulado" +":meth:`~Enum._generate_next_value_` -- utilizado para obtener un valor " +"apropiado para un miembro de enumeración; puede ser sobrescrito" #: ../Doc/howto/enum.rst:992 msgid "" ":meth:`~Enum._add_alias_` -- adds a new name as an alias to an existing " "member." msgstr "" +":meth:`~Enum._add_alias_` -- añade un nombre nuevo como alias a un miembro " +"existente." #: ../Doc/howto/enum.rst:994 msgid "" ":meth:`~Enum._add_value_alias_` -- adds a new value as an alias to an " "existing member. See `MultiValueEnum`_ for an example." msgstr "" +":meth:`~Enum._add_value_alias_` -- añade un valor nuevo como alias a un " +"miembro existente. Vea `MultiValueEnum`_ para un ejemplo ." #: ../Doc/howto/enum.rst:999 -#, fuzzy msgid "" "For standard :class:`Enum` classes the next value chosen is the highest " "value seen incremented by one." msgstr "" "Para las clases :class:`Enum` estándar, el siguiente valor elegido es el " -"último valor visto incrementado en uno." +"valor más alto incrementado en uno." #: ../Doc/howto/enum.rst:1002 -#, fuzzy msgid "" "For :class:`Flag` classes the next value chosen will be the next highest " "power-of-two." msgstr "" "Para las clases :class:`Flag`, el siguiente valor elegido será la siguiente " -"potencia de dos más alta, independientemente del último valor visto." +"potencia de dos más alta." #: ../Doc/howto/enum.rst:1005 msgid "" "Prior versions would use the last seen value instead of the highest value." msgstr "" +"Versiones anteriores usarían el último valor visto en lugar del valor más " +"alto." #: ../Doc/howto/enum.rst:1008 msgid "``_missing_``, ``_order_``, ``_generate_next_value_``" @@ -1832,7 +2227,7 @@ msgstr "``_ignore_``" #: ../Doc/howto/enum.rst:1010 msgid "``_add_alias_``, ``_add_value_alias_``" -msgstr "" +msgstr "``_add_alias_``, ``_add_value_alias_``" #: ../Doc/howto/enum.rst:1012 msgid "" @@ -1858,6 +2253,17 @@ msgid "" " ['RED', 'BLUE', 'GREEN']\n" " ['RED', 'GREEN', 'BLUE']" msgstr "" +">>> class Color(Enum):\n" +"... _order_ = 'RED GREEN BLUE'\n" +"... RED = 1\n" +"... BLUE = 3\n" +"... GREEN = 2\n" +"...\n" +"Traceback (most recent call last):\n" +"...\n" +"TypeError: member order does not match _order_:\n" +" ['RED', 'BLUE', 'GREEN']\n" +" ['RED', 'GREEN', 'BLUE']" #: ../Doc/howto/enum.rst:1030 msgid "" @@ -1922,6 +2328,11 @@ msgid "" ">>> MyEnum.example.value # and hex(11) is...\n" "17" msgstr "" +">>> class MyEnum(IntEnum): # help(int) -> int(x, base=10) -> integer\n" +"... example = '11', 16 # so x='11' and base=16\n" +"...\n" +">>> MyEnum.example.value # and hex(11) is...\n" +"17" #: ../Doc/howto/enum.rst:1071 msgid "Boolean value of ``Enum`` classes and members" @@ -1946,6 +2357,8 @@ msgid "" "def __bool__(self):\n" " return bool(self.value)" msgstr "" +"def __bool__(self):\n" +" return bool(self.value)" #: ../Doc/howto/enum.rst:1082 msgid "Plain :class:`Enum` classes always evaluate as :data:`True`." @@ -1974,6 +2387,12 @@ msgid "" "['__class__', '__doc__', '__module__', 'mass', 'name', 'radius', " "'surface_gravity', 'value']" msgstr "" +">>> dir(Planet)\n" +"['EARTH', 'JUPITER', 'MARS', 'MERCURY', 'NEPTUNE', 'SATURN', 'URANUS', " +"'VENUS', '__class__', '__doc__', '__members__', '__module__']\n" +">>> dir(Planet.EARTH)\n" +"['__class__', '__doc__', '__module__', 'mass', 'name', 'radius', " +"'surface_gravity', 'value']" #: ../Doc/howto/enum.rst:1099 msgid "Combining members of ``Flag``" @@ -2002,6 +2421,18 @@ msgid "" ">>> Color(7) # not named combination\n" "" msgstr "" +">>> class Color(Flag):\n" +"... RED = auto()\n" +"... GREEN = auto()\n" +"... BLUE = auto()\n" +"... MAGENTA = RED | BLUE\n" +"... YELLOW = RED | GREEN\n" +"... CYAN = GREEN | BLUE\n" +"...\n" +">>> Color(3) #combinación con nombre\n" +"\n" +">>> Color(7) # combinación sin nombre\n" +"" #: ../Doc/howto/enum.rst:1119 msgid "``Flag`` and ``IntFlag`` minutia" @@ -2022,6 +2453,14 @@ msgid "" "... WHITE = RED | GREEN | BLUE\n" "..." msgstr "" +">>> class Color(IntFlag):\n" +"... BLACK = 0\n" +"... RED = 1\n" +"... GREEN = 2\n" +"... BLUE = 4\n" +"... PURPLE = RED | BLUE\n" +"... WHITE = RED | GREEN | BLUE\n" +"..." #: ../Doc/howto/enum.rst:1132 msgid "the following are true:" @@ -2044,6 +2483,8 @@ msgid "" ">>> list(Color.WHITE)\n" "[, , ]" msgstr "" +">>> list(Color.WHITE)\n" +"[, , ]" #: ../Doc/howto/enum.rst:1141 msgid "" @@ -2061,6 +2502,11 @@ msgid "" ">>> ~Color.BLUE\n" "" msgstr "" +">>> Color.BLUE\n" +"\n" +"\n" +">>> ~Color.BLUE\n" +"" #: ../Doc/howto/enum.rst:1150 msgid "names of pseudo-flags are constructed from their members' names::" @@ -2081,6 +2527,16 @@ msgid "" ">>> (Perm.R & Perm.W).name is None # effectively Perm(0)\n" "True" msgstr "" +">>> (Color.RED | Color.GREEN).name\n" +"'RED|GREEN'\n" +"\n" +">>> class Perm(IntFlag):\n" +"... R = 4\n" +"... W = 2\n" +"... X = 1\n" +"...\n" +">>> (Perm.R & Perm.W).name is None # efectivamente Perm(0)\n" +"True" #: ../Doc/howto/enum.rst:1163 msgid "multi-bit flags, aka aliases, can be returned from operations::" @@ -2099,6 +2555,14 @@ msgid "" ">>> Color(0)\n" "" msgstr "" +">>> Color.RED | Color.BLUE\n" +"\n" +"\n" +">>> Color(7) # or Color(-1)\n" +"\n" +"\n" +">>> Color(0)\n" +"" #: ../Doc/howto/enum.rst:1174 msgid "" @@ -2113,6 +2577,8 @@ msgid "" ">>> Color.BLACK in Color.WHITE\n" "True" msgstr "" +">>> Color.BLACK in Color.WHITE\n" +"True" #: ../Doc/howto/enum.rst:1180 msgid "" @@ -2130,6 +2596,11 @@ msgid "" ">>> Color.GREEN in Color.PURPLE\n" "False" msgstr "" +">>> Color.PURPLE in Color.WHITE\n" +"True\n" +"\n" +">>> Color.GREEN in Color.PURPLE\n" +"False" #: ../Doc/howto/enum.rst:1189 msgid "" @@ -2269,6 +2740,8 @@ msgid "" ">>> list(Color)\n" "[, , ]" msgstr "" +">>> list(Color)\n" +"[, , ]" #: ../Doc/howto/enum.rst:1251 msgid "(Note that ``BLACK``, ``PURPLE``, and ``WHITE`` do not show up.)" @@ -2287,6 +2760,8 @@ msgid "" ">>> ~Color.RED\n" "" msgstr "" +">>> ~Color.RED\n" +"" #: ../Doc/howto/enum.rst:1259 msgid "" @@ -2301,6 +2776,8 @@ msgid "" ">>> len(Color.PURPLE)\n" "2" msgstr "" +">>> len(Color.PURPLE)\n" +"2" #: ../Doc/howto/enum.rst:1269 msgid "Enum Cookbook" @@ -2379,6 +2856,13 @@ msgid "" ">>> Color.GREEN\n" "" msgstr "" +">>> class Color(Enum):\n" +"... RED = auto()\n" +"... BLUE = auto()\n" +"... GREEN = auto()\n" +"...\n" +">>> Color.GREEN\n" +"" #: ../Doc/howto/enum.rst:1310 msgid "Using :class:`object`" @@ -2398,6 +2882,13 @@ msgid "" ">>> Color.GREEN \n" ">" msgstr "" +">>> class Color(Enum):\n" +"... RED = object()\n" +"... GREEN = object()\n" +"... BLUE = object()\n" +"...\n" +">>> Color.GREEN\n" +">" #: ../Doc/howto/enum.rst:1322 msgid "" @@ -2420,6 +2911,15 @@ msgid "" ">>> Color.GREEN\n" "" msgstr "" +">>> class Color(Enum):\n" +"... RED = object()\n" +"... GREEN = object()\n" +"... BLUE = object()\n" +"... def __repr__(self):\n" +"... return \"<%s.%s>\" % (self.__class__.__name__, self._name_)\n" +"...\n" +">>> Color.GREEN\n" +"" #: ../Doc/howto/enum.rst:1338 msgid "Using a descriptive string" @@ -2439,6 +2939,13 @@ msgid "" ">>> Color.GREEN\n" "" msgstr "" +">>> class Color(Enum):\n" +"... RED = 'stop'\n" +"... GREEN = 'go'\n" +"... BLUE = 'too fast!'\n" +"...\n" +">>> Color.GREEN\n" +"" #: ../Doc/howto/enum.rst:1352 msgid "Using a custom :meth:`__new__`" @@ -2465,6 +2972,20 @@ msgid "" ">>> Color.GREEN\n" "" msgstr "" +">>> class AutoNumber(Enum):\n" +"... def __new__(cls):\n" +"... value = len(cls.__members__) + 1\n" +"... obj = object.__new__(cls)\n" +"... obj._value_ = value\n" +"... return obj\n" +"...\n" +">>> class Color(AutoNumber):\n" +"... RED = ()\n" +"... GREEN = ()\n" +"... BLUE = ()\n" +"...\n" +">>> Color.GREEN\n" +"" #: ../Doc/howto/enum.rst:1371 msgid "" @@ -2484,6 +3005,14 @@ msgid "" "... return obj\n" "..." msgstr "" +">>> class AutoNumber(Enum):\n" +"... def __new__(cls, *args): # éste es el único cambio respecto a " +"lo anterior\n" +"... value = len(cls.__members__) + 1\n" +"... obj = object.__new__(cls)\n" +"... obj._value_ = value\n" +"... return obj\n" +"..." #: ../Doc/howto/enum.rst:1381 msgid "" @@ -2509,6 +3038,19 @@ msgid "" ">>> Swatch.BLEACHED_CORAL.pantone\n" "'unknown'" msgstr "" +">>> class Swatch(AutoNumber):\n" +"... def __init__(self, pantone='unknown'):\n" +"... self.pantone = pantone\n" +"... AUBURN = '3497'\n" +"... SEA_GREEN = '1246'\n" +"... BLEACHED_CORAL = () # ¡Nuevo color, aún sin código Pantone!\n" +"...\n" +">>> Swatch.SEA_GREEN\n" +"\n" +">>> Swatch.SEA_GREEN.pantone\n" +"'1246'\n" +">>> Swatch.BLEACHED_CORAL.pantone\n" +"'unknown'" #: ../Doc/howto/enum.rst:1400 msgid "" @@ -2530,7 +3072,7 @@ msgstr "" #: ../Doc/howto/enum.rst:1409 msgid "obj = int.__new__(cls, value)" -msgstr "" +msgstr "obj = int.__new__(cls, value)" #: ../Doc/howto/enum.rst:1413 msgid "OrderedEnum" @@ -2576,6 +3118,33 @@ msgid "" ">>> Grade.C < Grade.A\n" "True" msgstr "" +">>> class OrderedEnum(Enum):\n" +"... def __ge__(self, other):\n" +"... if self.__class__ is other.__class__:\n" +"... return self.value >= other.value\n" +"... return NotImplemented\n" +"... def __gt__(self, other):\n" +"... if self.__class__ is other.__class__:\n" +"... return self.value > other.value\n" +"... return NotImplemented\n" +"... def __le__(self, other):\n" +"... if self.__class__ is other.__class__:\n" +"... return self.value <= other.value\n" +"... return NotImplemented\n" +"... def __lt__(self, other):\n" +"... if self.__class__ is other.__class__:\n" +"... return self.value < other.value\n" +"... return NotImplemented\n" +"...\n" +">>> class Grade(OrderedEnum):\n" +"... A = 5\n" +"... B = 4\n" +"... C = 3\n" +"... D = 2\n" +"... F = 1\n" +"...\n" +">>> Grade.C < Grade.A\n" +"True" #: ../Doc/howto/enum.rst:1449 msgid "DuplicateFreeEnum" @@ -2613,6 +3182,26 @@ msgid "" " ...\n" "ValueError: aliases not allowed in DuplicateFreeEnum: 'GRENE' --> 'GREEN'" msgstr "" +">>> class DuplicateFreeEnum(Enum):\n" +"... def __init__(self, *args):\n" +"... cls = self.__class__\n" +"... if any(self.value == e.value for e in cls):\n" +"... a = self.name\n" +"... e = cls(self.value).name\n" +"... raise ValueError(\n" +"... \"aliases not allowed in DuplicateFreeEnum: %r --> " +"%r\"\n" +"... % (a, e))\n" +"...\n" +">>> class Color(DuplicateFreeEnum):\n" +"... RED = 1\n" +"... GREEN = 2\n" +"... BLUE = 3\n" +"... GRENE = 2\n" +"...\n" +"Traceback (most recent call last):\n" +" ...\n" +"ValueError: aliases not allowed in DuplicateFreeEnum: 'GRENE' --> 'GREEN'" #: ../Doc/howto/enum.rst:1476 msgid "" @@ -2626,11 +3215,11 @@ msgstr "" #: ../Doc/howto/enum.rst:1482 msgid "MultiValueEnum" -msgstr "" +msgstr "MultiValueEnum" #: ../Doc/howto/enum.rst:1484 msgid "Supports having more than one value per member::" -msgstr "" +msgstr "Soporta tener más de un valor por miembro:" #: ../Doc/howto/enum.rst:1486 msgid "" @@ -2651,6 +3240,22 @@ msgid "" ">>> DType(9)\n" "" msgstr "" +">>> class MultiValueEnum(Enum):\n" +"... def __new__(cls, value, *values):\n" +"... self = object.__new__(cls)\n" +"... self._value_ = value\n" +"... for v in values:\n" +"... self._add_value_alias_(v)\n" +"... return self\n" +"...\n" +">>> class DType(MultiValueEnum):\n" +"... float32 = 'f', 8\n" +"... double64 = 'd', 9\n" +"...\n" +">>> DType('f')\n" +"\n" +">>> DType(9)\n" +"" #: ../Doc/howto/enum.rst:1505 msgid "Planet" @@ -2689,6 +3294,28 @@ msgid "" ">>> Planet.EARTH.surface_gravity\n" "9.802652743337129" msgstr "" +">>> class Planet(Enum):\n" +"... MERCURY = (3.303e+23, 2.4397e6)\n" +"... VENUS = (4.869e+24, 6.0518e6)\n" +"... EARTH = (5.976e+24, 6.37814e6)\n" +"... MARS = (6.421e+23, 3.3972e6)\n" +"... JUPITER = (1.9e+27, 7.1492e7)\n" +"... SATURN = (5.688e+26, 6.0268e7)\n" +"... URANUS = (8.686e+25, 2.5559e7)\n" +"... NEPTUNE = (1.024e+26, 2.4746e7)\n" +"... def __init__(self, mass, radius):\n" +"... self.mass = mass # in kilograms\n" +"... self.radius = radius # in meters\n" +"... @property\n" +"... def surface_gravity(self):\n" +"... # universal gravitational constant (m3 kg-1 s-2)\n" +"... G = 6.67300E-11\n" +"... return G * self.mass / (self.radius * self.radius)\n" +"...\n" +">>> Planet.EARTH.value\n" +"(5.976e+24, 6378140.0)\n" +">>> Planet.EARTH.surface_gravity\n" +"9.802652743337129" #: ../Doc/howto/enum.rst:1536 msgid "TimePeriod" @@ -2716,6 +3343,20 @@ msgid "" "[, ]" msgstr "" +">>> from datetime import timedelta\n" +">>> class Period(timedelta, Enum):\n" +"... \"different lengths of time\"\n" +"... _ignore_ = 'Period i'\n" +"... Period = vars()\n" +"... for i in range(367):\n" +"... Period['day_%d' % i] = i\n" +"...\n" +">>> list(Period)[:2]\n" +"[, ]\n" +">>> list(Period)[-2:]\n" +"[, ]" #: ../Doc/howto/enum.rst:1557 msgid "Subclassing EnumType" diff --git a/howto/index.po b/howto/index.po index a29ee6aa2d..681a0e1bce 100644 --- a/howto/index.po +++ b/howto/index.po @@ -11,22 +11,22 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2020-05-08 14:12+0200\n" +"PO-Revision-Date: 2024-11-25 15:38-0600\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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/howto/index.rst:3 msgid "Python HOWTOs" msgstr "Comos (*HOWTOs*) de Python" #: ../Doc/howto/index.rst:5 -#, fuzzy msgid "" "Python HOWTOs are documents that cover a specific topic in-depth. Modeled on " "the Linux Documentation Project's HOWTO collection, this collection is an " @@ -41,104 +41,104 @@ msgstr "" #: ../Doc/howto/index.rst:38 msgid "General:" -msgstr "" +msgstr "General:" #: ../Doc/howto/index.rst:40 msgid ":ref:`annotations-howto`" -msgstr "" +msgstr ":ref:`annotations-howto`" #: ../Doc/howto/index.rst:41 msgid ":ref:`argparse-tutorial`" -msgstr "" +msgstr ":ref:`argparse-tutorial`" #: ../Doc/howto/index.rst:42 msgid ":ref:`descriptorhowto`" -msgstr "" +msgstr ":ref:`descriptorhowto`" #: ../Doc/howto/index.rst:43 msgid ":ref:`enum-howto`" -msgstr "" +msgstr ":ref:`enum-howto`" #: ../Doc/howto/index.rst:44 msgid ":ref:`functional-howto`" -msgstr "" +msgstr ":ref:`functional-howto`" #: ../Doc/howto/index.rst:45 msgid ":ref:`ipaddress-howto`" -msgstr "" +msgstr ":ref:`ipaddress-howto`" #: ../Doc/howto/index.rst:46 msgid ":ref:`logging-howto`" -msgstr "" +msgstr ":ref:`logging-howto`" #: ../Doc/howto/index.rst:47 msgid ":ref:`logging-cookbook`" -msgstr "" +msgstr ":ref:`logging-cookbook`" #: ../Doc/howto/index.rst:48 msgid ":ref:`regex-howto`" -msgstr "" +msgstr ":ref:`regex-howto`" #: ../Doc/howto/index.rst:49 msgid ":ref:`sortinghowto`" -msgstr "" +msgstr ":ref:`sortinghowto`" #: ../Doc/howto/index.rst:50 msgid ":ref:`unicode-howto`" -msgstr "" +msgstr ":ref:`unicode-howto`" #: ../Doc/howto/index.rst:51 msgid ":ref:`urllib-howto`" -msgstr "" +msgstr ":ref:`urllib-howto`" #: ../Doc/howto/index.rst:53 msgid "Advanced development:" -msgstr "" +msgstr "Desarrollo avanzado:" #: ../Doc/howto/index.rst:55 msgid ":ref:`curses-howto`" -msgstr "" +msgstr ":ref:`curses-howto`" #: ../Doc/howto/index.rst:56 msgid ":ref:`freethreading-python-howto`" -msgstr "" +msgstr ":ref:`freethreading-python-howto`" #: ../Doc/howto/index.rst:57 msgid ":ref:`freethreading-extensions-howto`" -msgstr "" +msgstr ":ref:`freethreading-extensions-howto`" #: ../Doc/howto/index.rst:58 msgid ":ref:`isolating-extensions-howto`" -msgstr "" +msgstr ":ref:`isolating-extensions-howto`" #: ../Doc/howto/index.rst:59 msgid ":ref:`python_2.3_mro`" -msgstr "" +msgstr ":ref:`python_2.3_mro`" #: ../Doc/howto/index.rst:60 msgid ":ref:`socket-howto`" -msgstr "" +msgstr ":ref:`socket-howto`" #: ../Doc/howto/index.rst:61 msgid ":ref:`timerfd-howto`" -msgstr "" +msgstr ":ref:`timerfd-howto`" #: ../Doc/howto/index.rst:62 msgid ":ref:`cporting-howto`" -msgstr "" +msgstr ":ref:`cporting-howto`" #: ../Doc/howto/index.rst:64 msgid "Debugging and profiling:" -msgstr "" +msgstr "Depuración y Perfilado:" #: ../Doc/howto/index.rst:66 msgid ":ref:`gdb`" -msgstr "" +msgstr ":ref:`gdb`" #: ../Doc/howto/index.rst:67 msgid ":ref:`instrumentation`" -msgstr "" +msgstr ":ref:`instrumentation`" #: ../Doc/howto/index.rst:68 msgid ":ref:`perf_profiling`" -msgstr "" +msgstr ":ref:`perf_profiling`" diff --git a/reference/introduction.po b/reference/introduction.po index c3db03e318..5fe665f369 100644 --- a/reference/introduction.po +++ b/reference/introduction.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-01-22 13:59-0500\n" +"PO-Revision-Date: 2024-11-27 23:58+0100\n" "Last-Translator: Xavi Francisco \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" +"X-Generator: Poedit 3.5\n" #: ../Doc/reference/introduction.rst:6 msgid "Introduction" @@ -180,7 +181,6 @@ msgid "PyPy" msgstr "PyPy" #: ../Doc/reference/introduction.rst:72 -#, fuzzy msgid "" "An implementation of Python written completely in Python. It supports " "several advanced features not found in other implementations like stackless " @@ -192,11 +192,11 @@ msgid "" msgstr "" "Una implementación de Python escrita completamente en Python. Soporta varias " "características avanzadas que no se encuentran en otras implementaciones " -"como soporte stackless y un compilador Just in Time. Uno de los objetivos " -"del proyecto es fomentar la experimentación con el propio lenguaje " +"como compatibilidad stackless y un compilador Just in Time. Uno de los " +"objetivos del proyecto es fomentar la experimentación con el propio lenguaje " "facilitando la modificación del intérprete (ya que está escrito en Python). " "Puede encontrar más información en la página principal del proyecto 'PyPy " -"_'" +"_'." #: ../Doc/reference/introduction.rst:79 msgid "" @@ -217,15 +217,15 @@ msgid "Notation" msgstr "Notación" #: ../Doc/reference/introduction.rst:93 -#, fuzzy, python-format msgid "" "The descriptions of lexical analysis and syntax use a modified `Backus–Naur " "form (BNF) `_ " "grammar notation. This uses the following style of definition:" msgstr "" "Las descripciones del análisis léxico y sintáctico usan una notación " -"gramatical BNF modificada. De tal forma, utilizan el siguiente estilo de " -"definición:" +"gramatical BNF modificada `Backus–Naur form (BNF) `_. De tal forma, utilizan el siguiente estilo " +"de definición:" #: ../Doc/reference/introduction.rst:101 msgid "" diff --git a/requirements-own.txt b/requirements-own.txt index 9c7ff0787f..719d53f5ba 100644 --- a/requirements-own.txt +++ b/requirements-own.txt @@ -12,5 +12,5 @@ sphinx-autorun sphinxemoji sphinx-intl>=2.3.0 sphinx-lint==0.7.0 -sphinx-tabs==3.4.5 +sphinx-tabs==3.4.7 tabulate diff --git a/whatsnew/2.0.po b/whatsnew/2.0.po index 8433016763..9257d4305b 100644 --- a/whatsnew/2.0.po +++ b/whatsnew/2.0.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-12-08 21:38+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.0.rst:3 @@ -286,7 +286,6 @@ msgstr "" "de documentar las opiniones discrepantes." #: ../Doc/whatsnew/2.0.rst:130 -#, fuzzy msgid "" "Read the rest of :pep:`1` for the details of the PEP editorial process, " "style, and format. PEPs are kept in the Python CVS tree on SourceForge, " @@ -296,11 +295,11 @@ msgid "" "225, \"Elementwise/Objectwise Operators\"." msgstr "" "Lea el resto de :pep:`1` para conocer los detalles del proceso editorial, el " -"estilo y el formato de PEP. Los PEP se mantienen en el árbol CVS de Python " -"en SourceForge, aunque no forman parte de la distribución de Python 2.0 y " -"también están disponibles en formato HTML en https://peps.python.org/. A " -"partir de septiembre de 2000, hay 25 PEPS, que van desde :pep:`201`, " -"\"Iteración Lockstep\", hasta PEP 225, \"Operadores de elementos/objetos\"." +"estilo y el formato de PEP. Los PEP se guardan en el árbol CVS de Python en " +"SourceForge, aunque no son parte de la distribución de Python 2.0, y también " +"están disponibles en formato HTML en https://peps.python.org/. A partir de " +"septiembre de 2000, existen 25 PEP, que van desde :pep:`201`, \"Iteración en " +"sincronía\", hasta PEP 225, \"Operadores por elementos y por objetos\"." #: ../Doc/whatsnew/2.0.rst:141 msgid "Unicode" @@ -336,7 +335,6 @@ msgstr "" "puntos más significativos de las interfaces Unicode." #: ../Doc/whatsnew/2.0.rst:155 -#, fuzzy msgid "" "In Python source code, Unicode strings are written as ``u\"string\"``. " "Arbitrary Unicode characters can be written using a new escape sequence, :" @@ -345,12 +343,13 @@ msgid "" "and octal escapes can be used for characters up to U+01FF, which is " "represented by ``\\777``." msgstr "" -"En el código fuente de Python, las cadenas Unicode se escriben como ``u " -"\"cadena\"``. Los caracteres Unicode arbitrarios pueden escribirse " -"utilizando una nueva secuencia de escape, ``uHHHH``, donde *HHHH* es un " -"número hexadecimal de 4 dígitos desde 0000 hasta FFFF. También se puede " -"utilizar la secuencia de escape existente ``xHHHH``, y se pueden utilizar " -"escapes octales para caracteres hasta U+01FF, que se representa con ``777``." +"En el código fuente de Python, las cadenas Unicode se escriben como " +"``u\"string\"``. Se pueden escribir caracteres Unicode arbitrarios " +"utilizando una nueva secuencia de escape, :samp:`\\\\u{HHHH}`, donde *HHHH* " +"es un número hexadecimal de 4 dígitos de 0000 a FFFF. También se puede " +"utilizar la secuencia de escape existente :samp:`\\\\x{HH}`, y se pueden " +"utilizar escapes octales para caracteres hasta U+01FF, que se representa " +"mediante ``\\777``." #: ../Doc/whatsnew/2.0.rst:161 msgid "" @@ -498,30 +497,29 @@ msgstr "" "cadena de 8 bits se consumió." #: ../Doc/whatsnew/2.0.rst:219 -#, fuzzy msgid "" "*stream_reader* is a class that supports decoding input from a stream. " "*stream_reader(file_obj)* returns an object that supports the :meth:`!" "read`, :meth:`!readline`, and :meth:`!readlines` methods. These methods " "will all translate from the given encoding and return Unicode strings." msgstr "" -"*stream_reader* es una clase que soporta la decodificación de la entrada de " -"un flujo. *stream_reader(file_obj)* retorna un objeto que soporta los " -"métodos :meth:`read`, :meth:`readline` y :meth:`readlines`. Todos estos " -"métodos traducirán desde la codificación dada y retornarán cadenas Unicode." +"*stream_reader* es una clase que admite la decodificación de la entrada de " +"un flujo. *stream_reader(file_obj)* devuelve un objeto que admite los " +"métodos :meth:`!read`, :meth:`!readline` y :meth:`!readlines`. Todos estos " +"métodos traducirán a partir de la codificación dada y devolverán cadenas " +"Unicode." #: ../Doc/whatsnew/2.0.rst:224 -#, fuzzy msgid "" "*stream_writer*, similarly, is a class that supports encoding output to a " "stream. *stream_writer(file_obj)* returns an object that supports the :meth:" "`!write` and :meth:`!writelines` methods. These methods expect Unicode " "strings, translating them to the given encoding on output." msgstr "" -"*stream_writer*, de forma similar, es una clase que soporta la codificación " -"de la salida a un flujo. *stream_writer(file_obj)* retorna un objeto que " -"soporta los métodos :meth:`write` y :meth:`writelines`. Estos métodos " -"esperan cadenas Unicode, traduciéndolas a la codificación dada en la salida." +"De manera similar, *stream_writer* es una clase que admite la codificación " +"de la salida en una secuencia. *stream_writer(file_obj)* devuelve un objeto " +"que admite los métodos :meth:`!write` y :meth:`!writelines`. Estos métodos " +"esperan cadenas Unicode y las traducen a la codificación dada en la salida." #: ../Doc/whatsnew/2.0.rst:229 msgid "" @@ -544,6 +542,16 @@ msgid "" "output.write( unistr )\n" "output.close()" msgstr "" +"import codecs\n" +"\n" +"unistr = u'\\u0660\\u2000ab ...'\n" +"\n" +"(UTF8_encode, UTF8_decode,\n" +" UTF8_streamreader, UTF8_streamwriter) = codecs.lookup('UTF-8')\n" +"\n" +"output = UTF8_streamwriter( open( '/tmp/output', 'wb') )\n" +"output.write( unistr )\n" +"output.close()" #: ../Doc/whatsnew/2.0.rst:243 msgid "The following code would then read UTF-8 input from the file::" @@ -555,6 +563,9 @@ msgid "" "print repr(input.read())\n" "input.close()" msgstr "" +"input = UTF8_streamreader( open( '/tmp/output', 'rb') )\n" +"print repr(input.read())\n" +"input.close()" #: ../Doc/whatsnew/2.0.rst:249 msgid "" @@ -629,6 +640,11 @@ msgid "" " string.find(s, substring) != -1,\n" " L)" msgstr "" +"# Given the list L, make a list of all strings\n" +"# containing the substring S.\n" +"sublist = filter( lambda s, substring=S:\n" +" string.find(s, substring) != -1,\n" +" L)" #: ../Doc/whatsnew/2.0.rst:286 msgid "" @@ -643,7 +659,7 @@ msgstr "" #: ../Doc/whatsnew/2.0.rst:290 msgid "sublist = [ s for s in L if string.find(s, S) != -1 ]" -msgstr "" +msgstr "sublista = [ s para s en L si cadena.find(s, S) != -1 ]" #: ../Doc/whatsnew/2.0.rst:292 msgid "List comprehensions have the form::" @@ -656,6 +672,10 @@ msgid "" " for exprN in sequenceN\n" " if condition ]" msgstr "" +"[ expression for expr in sequence1\n" +" for expr2 in sequence2 ...\n" +" for exprN in sequenceN\n" +" if condition ]" #: ../Doc/whatsnew/2.0.rst:299 msgid "" @@ -694,6 +714,14 @@ msgid "" " # the expression to the\n" " # resulting list." msgstr "" +"for expr1 in sequence1:\n" +" for expr2 in sequence2:\n" +" ...\n" +" for exprN in sequenceN:\n" +" if (condition):\n" +" # Append the value of\n" +" # the expression to the\n" +" # resulting list." #: ../Doc/whatsnew/2.0.rst:319 msgid "" @@ -715,6 +743,11 @@ msgid "" "[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1),\n" "('c', 2), ('c', 3)]" msgstr "" +"seq1 = 'abc'\n" +"seq2 = (1,2,3)\n" +">>> [ (x,y) for x in seq1 for y in seq2]\n" +"[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1),\n" +"('c', 2), ('c', 3)]" #: ../Doc/whatsnew/2.0.rst:330 msgid "" @@ -734,6 +767,10 @@ msgid "" "# Correct\n" "[ (x,y) for x in seq1 for y in seq2]" msgstr "" +"# Syntax error\n" +"[ x,y for x in seq1 for y in seq2]\n" +"# Correct\n" +"[ (x,y) for x in seq1 for y in seq2]" #: ../Doc/whatsnew/2.0.rst:339 msgid "" @@ -769,7 +806,6 @@ msgstr "" "la sentencia algo más larga ``a = a + 2``." #: ../Doc/whatsnew/2.0.rst:356 -#, fuzzy msgid "" "The full list of supported assignment operators is ``+=``, ``-=``, ``*=``, " "``/=``, ``%=``, ``**=``, ``&=``, ``|=``, ``^=``, ``>>=``, and ``<<=``. " @@ -778,12 +814,12 @@ msgid "" "following :class:`!Number` class stores a number and supports using += to " "create a new instance with an incremented value." msgstr "" -"La lista completa de operadores de asignación soportados es ``+=``, ``-=``, " -"``*=``, ``/=``, ``%=``, ``**=``, ``&=``, ``|=``, ``^=``, ``>>=``, y ``<=``. " +"La lista completa de operadores de asignación admitidos es ``+=``, ``-=``, " +"``*=``, ``/=``, ``%=``, ``**=``, ``&=``, ``|=``, ``^=``, ``>>=`` y ``<<=``. " "Las clases de Python pueden anular los operadores de asignación aumentados " -"definiendo métodos llamados :meth:`__iadd__`, :meth:`__isub__`, etc. Por " -"ejemplo, la siguiente clase :class:`Number` almacena un número y soporta el " -"uso de += para crear una nueva instancia con un valor incrementado." +"definiendo métodos denominados :meth:`!__iadd__`, :meth:`!__isub__`, etc. " +"Por ejemplo, la siguiente clase :class:`!Number` almacena un número y admite " +"el uso de += para crear una nueva instancia con un valor incrementado." #: ../Doc/whatsnew/2.0.rst:367 msgid "" @@ -797,19 +833,27 @@ msgid "" "n += 3\n" "print n.value" msgstr "" +"class Number:\n" +" def __init__(self, value):\n" +" self.value = value\n" +" def __iadd__(self, increment):\n" +" return Number( self.value + increment)\n" +"\n" +"n = Number(5)\n" +"n += 3\n" +"print n.value" #: ../Doc/whatsnew/2.0.rst:377 -#, fuzzy msgid "" "The :meth:`!__iadd__` special method is called with the value of the " "increment, and should return a new instance with an appropriately modified " "value; this return value is bound as the new value of the variable on the " "left-hand side." msgstr "" -"El método especial :meth:`__iadd__` es llamado con el valor del incremento, " -"y debe retornar una nueva instancia con un valor adecuadamente modificado; " -"este valor de retorno se vincula como el nuevo valor de la variable del lado " -"izquierdo." +"El método especial :meth:`!__iadd__` se llama con el valor del incremento y " +"debe devolver una nueva instancia con un valor modificado apropiadamente; " +"este valor de retorno está vinculado como el nuevo valor de la variable en " +"el lado izquierdo." #: ../Doc/whatsnew/2.0.rst:381 msgid "" @@ -828,7 +872,6 @@ msgid "String Methods" msgstr "Métodos de cadena de caracteres" #: ../Doc/whatsnew/2.0.rst:392 -#, fuzzy msgid "" "Until now string-manipulation functionality was in the :mod:`string` module, " "which was usually a front-end for the :mod:`!strop` module written in C. " @@ -838,13 +881,13 @@ msgid "" "replace`, which takes 3 string arguments, that means eight possible " "permutations, and correspondingly complicated code." msgstr "" -"Hasta ahora, la funcionalidad de manipulación de cadenas de caracteres " -"estaba en el módulo :mod:`string`, que normalmente era un front-end para el " -"módulo :mod:`strop` escrito en C. La adición de Unicode supuso una " -"dificultad para el módulo :mod:`strop`, porque todas las funciones tendrían " -"que ser reescritas para aceptar cadenas de 8 bits o Unicode. Para funciones " -"como :func:`string.replace`, que toma 3 argumentos de cadena, eso significa " -"ocho posibles permutaciones, y el correspondiente código complicado." +"Hasta ahora, la funcionalidad de manipulación de cadenas estaba en el " +"módulo :mod:`string`, que normalmente era una interfaz para el módulo :mod:`!" +"strop` escrito en C. La incorporación de Unicode planteó una dificultad para " +"el módulo :mod:`!strop`, porque todas las funciones debían reescribirse para " +"aceptar cadenas de 8 bits o Unicode. Para funciones como :func:`!string." +"replace`, que acepta 3 cadenas como argumentos, eso significa ocho " +"permutaciones posibles y, en consecuencia, un código complicado." #: ../Doc/whatsnew/2.0.rst:400 msgid "" @@ -865,6 +908,12 @@ msgid "" ">>> 'moshe'.find('sh')\n" "2" msgstr "" +">>> 'andrew'.capitalize()\n" +"'Andrew'\n" +">>> 'hostname'.replace('os', 'linux')\n" +"'hlinuxtname'\n" +">>> 'moshe'.find('sh')\n" +"2" #: ../Doc/whatsnew/2.0.rst:411 msgid "" @@ -887,20 +936,18 @@ msgstr "" "de cadena de caracteres." #: ../Doc/whatsnew/2.0.rst:418 -#, fuzzy msgid "" "Two methods which have no parallel in pre-2.0 versions, although they did " "exist in JPython for quite some time, are :meth:`!startswith` and :meth:`!" "endswith`. ``s.startswith(t)`` is equivalent to ``s[:len(t)] == t``, while " "``s.endswith(t)`` is equivalent to ``s[-len(t):] == t``." msgstr "" -"Dos métodos que no tienen paralelo en las versiones anteriores a la 2.0, " -"aunque existieron en JPython durante bastante tiempo, son :meth:`startswith` " -"y :meth:`endswith`. ``s.startswith(t)`` es equivalente a ``s[:len(t)] == " -"t``, mientras que ``s.endswith(t)`` es equivalente a ``s[-len(t):] == t``." +"Dos métodos que no tienen paralelo en versiones anteriores a la 2.0, aunque " +"existieron en JPython durante bastante tiempo, son :meth:`!startswith` y :" +"meth:`!endswith`. ``s.startswith(t)`` es equivalente a ``s[:len(t)] == t``, " +"mientras que ``s.endswith(t)`` es equivalente a ``s[-len(t):] == t``." #: ../Doc/whatsnew/2.0.rst:423 -#, fuzzy msgid "" "One other method which deserves special mention is :meth:`!join`. The :meth:" "`!join` method of a string receives one parameter, a sequence of strings, " @@ -908,11 +955,11 @@ msgid "" "`string` module, with the arguments reversed. In other words, ``s." "join(seq)`` is equivalent to the old ``string.join(seq, s)``." msgstr "" -"Otro método que merece una mención especial es :meth:`join`. El método :meth:" -"`join` de una cadena recibe un parámetro, una secuencia de cadenas, y es " -"equivalente a la función :func:`string.join` del antiguo módulo :mod:" -"`string`, con los argumentos invertidos. En otras palabras, ``s.join(seq)`` " -"es equivalente a la antigua ``string.join(seq, s)``." +"Otro método que merece una mención especial es el :meth:`!join`. El método :" +"meth:`!join` de una cadena recibe un parámetro, una secuencia de cadenas, y " +"es equivalente a la función :func:`!string.join` del antiguo módulo :mod:" +"`string`, con los argumentos invertidos. En otras palabras, el ``s." +"join(seq)`` es equivalente al antiguo ``string.join(seq, s)``." #: ../Doc/whatsnew/2.0.rst:433 msgid "Garbage Collection of Cycles" @@ -965,6 +1012,8 @@ msgid "" "instance = SomeClass()\n" "instance.myself = instance" msgstr "" +"instancia = SomeClass()\n" +"instancia.myself = instancia" #: ../Doc/whatsnew/2.0.rst:455 msgid "" @@ -1074,7 +1123,6 @@ msgid "Minor Language Changes" msgstr "Cambios menores del lenguaje" #: ../Doc/whatsnew/2.0.rst:504 -#, fuzzy msgid "" "A new syntax makes it more convenient to call a given function with a tuple " "of arguments and/or a dictionary of keyword arguments. In Python 1.5 and " @@ -1085,15 +1133,14 @@ msgid "" "and clearer way to achieve the same effect. This syntax is symmetrical with " "the syntax for defining functions::" msgstr "" -"Una nueva sintaxis hace más conveniente llamar a una función dada con una " -"tupla de argumentos y/o un diccionario de argumentos de palabras clave. En " -"Python 1.5 y anteriores, se utilizaba la función incorporada :func:`apply`: " -"``apply(f, args, kw)`` llama a la función :func:`f` con la tupla de " +"Una nueva sintaxis hace que sea más conveniente llamar a una función dada " +"con una tupla de argumentos y/o un diccionario de argumentos de palabras " +"clave. En Python 1.5 y anteriores, se usaba la función incorporada :func:`!" +"apply`: ``apply(f, args, kw)`` llama a la función :func:`!f` con la tupla de " "argumentos *args* y los argumentos de palabras clave en el diccionario " -"*kw*. :func:`apply` es lo mismo en 2.0, pero gracias a un parche de Greg " -"Ewing, ``f(*args, **kw)`` es una forma más corta y clara de conseguir el " -"mismo efecto. Esta sintaxis es simétrica con la sintaxis para definir " -"funciones::" +"*kw*. :func:`!apply` es lo mismo en 2.0, pero gracias a un parche de Greg " +"Ewing, ``f(*args, **kw)`` es una forma más corta y clara de lograr el mismo " +"efecto. Esta sintaxis es simétrica con la sintaxis para definir funciones:" #: ../Doc/whatsnew/2.0.rst:513 msgid "" @@ -1102,9 +1149,12 @@ msgid "" " # kw is a dictionary of keyword args\n" " ..." msgstr "" +"def f(*args, **kw):\n" +" # args is a tuple of positional args,\n" +" # kw is a dictionary of keyword args\n" +" ..." #: ../Doc/whatsnew/2.0.rst:518 -#, fuzzy msgid "" "The ``print`` statement can now have its output directed to a file-like " "object by following the ``print`` with ``>> file``, similar to the " @@ -1114,17 +1164,17 @@ msgid "" "``sys.stdout`` and then restore the old value. For sending output to " "standard error, it's much easier to write this::" msgstr "" -"La sentencia ``print`` puede ahora tener su salida dirigida a un objeto tipo " -"archivo siguiendo a ``print`` con ``>> archivo``, similar al operador de " -"redirección en los shells de Unix. Antes había que utilizar el método :meth:" -"`write` del objeto tipo archivo, que carece de la comodidad y simplicidad de " -"``print``, o bien asignar un nuevo valor a ``sys.stdout`` y luego restaurar " -"el valor anterior. Para enviar la salida al error estándar, es mucho más " -"fácil escribir esto::" +"Ahora, la salida de la sentencia ``print`` puede dirigirse a un objeto " +"similar a un archivo si se sigue ``print`` con ``>> file``, de forma similar " +"al operador de redirección de los shells de Unix. Antes, se tenía que " +"utilizar el método :meth:`!write` del objeto similar a un archivo, que " +"carece de la comodidad y la simplicidad de ``print``, o se podía asignar un " +"nuevo valor a ``sys.stdout`` y luego restaurar el valor anterior. Para " +"enviar la salida al error estándar, es mucho más fácil escribir esto:" #: ../Doc/whatsnew/2.0.rst:526 msgid "print >> sys.stderr, \"Warning: action field not supplied\"" -msgstr "" +msgstr "print >> sys.stderr, \"Warning: action field not supplied\"" #: ../Doc/whatsnew/2.0.rst:528 msgid "" @@ -1153,7 +1203,6 @@ msgstr "" "``'abc' abc``." #: ../Doc/whatsnew/2.0.rst:538 -#, fuzzy msgid "" "Previously there was no way to implement a class that overrode Python's " "built-in :keyword:`in` operator and implemented a custom version. ``obj in " @@ -1165,16 +1214,16 @@ msgid "" "built-in objects written in C can define what :keyword:`!in` means for them " "via a new slot in the sequence protocol." msgstr "" -"Anteriormente no había forma de implementar una clase que sobrepasara el " -"operador incorporado de Python :keyword:`in` e implementara una versión " -"personalizada.``obj in seq`` retorna verdadero si *obj* está presente en la " -"secuencia *seq*; Python lo calcula simplemente probando cada índice de la " -"secuencia hasta que se encuentra *obj* o se encuentra un :exc:`IndexError`. " -"Moshe Zadka ha contribuido con un parche que añade un método mágico :meth:" -"`__contains__` para proporcionar una implementación personalizada para :" -"keyword:`!in`. Además, los nuevos objetos incorporados escritos en C pueden " -"definir lo que :keyword:`!in` significa para ellos a través de una nueva " -"ranura en el protocolo de secuencia." +"Anteriormente no había forma de implementar una clase que anulara el " +"operador :keyword:`in` incorporado de Python e implementara una versión " +"personalizada. ``obj in seq`` devuelve verdadero si *obj* está presente en " +"la secuencia *seq*; Python calcula esto simplemente probando cada índice de " +"la secuencia hasta que se encuentre *obj* o :exc:`IndexError`. Moshe Zadka " +"contribuyó con un parche que agrega un método mágico :meth:`!__contains__` " +"para proporcionar una implementación personalizada para :keyword:`!in`. " +"Además, los nuevos objetos incorporados escritos en C pueden definir lo que :" +"keyword:`!in` significa para ellos a través de una nueva ranura en el " +"protocolo de secuencia." #: ../Doc/whatsnew/2.0.rst:547 msgid "" @@ -1200,9 +1249,12 @@ msgid "" "a.append(a)\n" "b.append(b)" msgstr "" +"a = []\n" +"b = []\n" +"a.append(a)\n" +"b.append(b)" #: ../Doc/whatsnew/2.0.rst:559 -#, fuzzy msgid "" "The comparison ``a==b`` returns true, because the two recursive data " "structures are isomorphic. See the thread \"trashcan and PR#7\" in the April " @@ -1213,15 +1265,15 @@ msgid "" "even if a user-defined :meth:`!__cmp__` method encountered an error, since " "the resulting exception would simply be silently swallowed." msgstr "" -"La comparación ``a==b`` retorna verdadero, porque las dos estructuras de " -"datos recursivas son isomorfas. Véase el hilo \"trashcan and PR#7\" en los " -"archivos de abril de 2000 de la lista de correo de python-dev para la " -"discusión que condujo a esta implementación, y algunos enlaces relevantes " +"La comparación ``a==b`` devuelve verdadero, porque las dos estructuras de " +"datos recursivas son isomorfas. Consulte el hilo \"trashcan y PR#7\" en los " +"archivos de abril de 2000 de la lista de correo python-dev para ver la " +"discusión que condujo a esta implementación y algunos enlaces relevantes " "útiles. Tenga en cuenta que las comparaciones ahora también pueden generar " "excepciones. En versiones anteriores de Python, una operación de comparación " -"como ``cmp(a,b)`` siempre producía una respuesta, incluso si un método :meth:" -"`__cmp__` definido por el usuario encontraba un error, ya que la excepción " -"resultante simplemente se tragaba en silencio." +"como ``cmp(a,b)`` siempre produciría una respuesta, incluso si un método :" +"meth:`!__cmp__` definido por el usuario encontrara un error, ya que la " +"excepción resultante simplemente se tragaría silenciosamente." #: ../Doc/whatsnew/2.0.rst:571 msgid "" @@ -1280,6 +1332,10 @@ msgid "" " i = i + 1\n" "f()" msgstr "" +"def f():\n" +" print \"i=\",i\n" +" i = i + 1\n" +"f()" #: ../Doc/whatsnew/2.0.rst:595 msgid "" @@ -1313,7 +1369,6 @@ msgstr "" "corta." #: ../Doc/whatsnew/2.0.rst:610 -#, fuzzy msgid "" "The :func:`int` and :func:`!long` functions now accept an optional \"base\" " "parameter when the first argument is a string. ``int('123', 10)`` returns " @@ -1321,11 +1376,11 @@ msgid "" "`TypeError` exception with the message \"can't convert non-string with " "explicit base\"." msgstr "" -"Las funciones :func:`int` y :func:`long` aceptan ahora un parámetro \"base\" " -"opcional cuando el primer argumento es una cadena. ``int('123', 10)`` " -"retorna 123, mientras que ``int('123', 16)`` retorna 291. ``int(123, 16)`` " -"lanza una excepción :exc:`TypeError` con el mensaje \"no se puede convertir " -"una cadena con base explícita\"." +"Las funciones :func:`int` y :func:`!long` ahora aceptan un parámetro " +"\"base\" opcional cuando el primer argumento es una cadena. ``int('123', " +"10)`` devuelve 123, mientras que ``int('123', 16)`` devuelve 291. ``int(123, " +"16)`` genera una excepción :exc:`TypeError` con el mensaje \"no se puede " +"convertir una cadena con una base explícita\"." #: ../Doc/whatsnew/2.0.rst:616 msgid "" @@ -1343,7 +1398,6 @@ msgstr "" "una versión final." #: ../Doc/whatsnew/2.0.rst:622 -#, fuzzy msgid "" "Dictionaries have an odd new method, ``setdefault(key, default)``, which " "behaves similarly to the existing :meth:`!get` method. However, if the key " @@ -1351,11 +1405,12 @@ msgid "" "`!get` would do, and also inserts it into the dictionary as the value for " "*key*. Thus, the following lines of code::" msgstr "" -"Los diccionarios tienen un nuevo y extraño método, ``setdefault(key, " -"default)``, que se comporta de forma similar al método :meth:`get` " -"existente. Sin embargo, si falta la clave, :meth:`setdefault` retorna el " -"valor de *default* como haría :meth:`get`, y también lo inserta en el " -"diccionario como valor de *key*. Así, las siguientes líneas de código::" +"Los diccionarios tienen un nuevo método extraño, ``setdefault(key, " +"default)``, que se comporta de manera similar al método :meth:`!get` " +"existente. Sin embargo, si falta la clave, :meth:`!setdefault` devuelve el " +"valor de *default* como lo haría :meth:`!get` y también lo inserta en el " +"diccionario como el valor de *key*. Por lo tanto, las siguientes líneas de " +"código:" #: ../Doc/whatsnew/2.0.rst:628 msgid "" @@ -1364,6 +1419,10 @@ msgid "" " dict[key] = []\n" " return dict[key]" msgstr "" +"if dict.has_key( key ): return dict[key]\n" +"else:\n" +" dict[key] = []\n" +" return dict[key]" #: ../Doc/whatsnew/2.0.rst:633 msgid "" @@ -1412,7 +1471,6 @@ msgstr "" "Python antiguo se rompa." #: ../Doc/whatsnew/2.0.rst:656 -#, fuzzy msgid "" "The change which will probably break the most code is tightening up the " "arguments accepted by some methods. Some methods would take multiple " @@ -1424,19 +1482,18 @@ msgid "" "to simply add an extra set of parentheses to pass both values as a tuple: " "``L.append( (1,2) )``." msgstr "" -"El cambio que probablemente romperá la mayor parte del código es el " -"endurecimiento de los argumentos aceptados por algunos métodos. Algunos " -"métodos tomaban múltiples argumentos y los trataban como una tupla, " -"particularmente varios métodos de lista como :meth:`append` y :meth:" -"`insert`. En versiones anteriores de Python, si ``L`` es una lista, ``L." -"append( 1,2 )`` añade la tupla ``(1,2)`` a la lista. En Python 2.0 esto " -"provoca una excepción :exc:`TypeError` con el mensaje 'append requiere " -"exactamente 1 argumento; se han dado 2'. La solución es simplemente añadir " -"un conjunto extra de paréntesis para pasar ambos valores como una tupla: " +"El cambio que probablemente romperá la mayor parte del código es el ajuste " +"de los argumentos aceptados por algunos métodos. Algunos métodos tomarían " +"múltiples argumentos y los tratarían como una tupla, particularmente varios " +"métodos de lista como :meth:`!append` y :meth:`!insert`. En versiones " +"anteriores de Python, si ``L`` es una lista, ``L.append( 1,2 )`` agrega la " +"tupla ``(1,2)`` a la lista. En Python 2.0 esto hace que se genere una " +"excepción :exc:`TypeError`, con el mensaje: 'append requiere exactamente 1 " +"argumento; se proporcionaron 2'. La solución es simplemente agregar un " +"conjunto adicional de paréntesis para pasar ambos valores como una tupla: " "``L.append( (1,2) )``." #: ../Doc/whatsnew/2.0.rst:665 -#, fuzzy msgid "" "The earlier versions of these methods were more forgiving because they used " "an old function in Python's C interface to parse their arguments; 2.0 " @@ -1448,17 +1505,16 @@ msgid "" "this isn't recommended." msgstr "" "Las versiones anteriores de estos métodos eran más indulgentes porque " -"utilizaban una antigua función de la interfaz C de Python para analizar sus " -"argumentos; la versión 2.0 los moderniza para utilizar :func:" -"`PyArg_ParseTuple`, la función actual de análisis de argumentos, que " -"proporciona mensajes de error más útiles y trata las llamadas con múltiples " -"argumentos como errores. Si es absolutamente necesario usar la versión 2.0 " -"pero no puedes arreglar tu código, puedes editar :file:`Objects/listobject." -"c` y definir el símbolo del preprocesador ``NO_STRICT_LIST_APPEND`` para " -"preservar el antiguo comportamiento; esto no es recomendable." +"utilizaban una función antigua en la interfaz C de Python para analizar sus " +"argumentos; la versión 2.0 los moderniza para utilizar :c:func:" +"`PyArg_ParseTuple`, la función de análisis de argumentos actual, que " +"proporciona mensajes de error más útiles y trata las llamadas de múltiples " +"argumentos como errores. Si es absolutamente necesario utilizar la versión " +"2.0 pero no puede corregir su código, puede editar :file:`Objects/listobject." +"c` y definir el símbolo de preprocesador ``NO_STRICT_LIST_APPEND`` para " +"preservar el comportamiento anterior; esto no se recomienda." #: ../Doc/whatsnew/2.0.rst:673 -#, fuzzy msgid "" "Some of the functions in the :mod:`socket` module are still forgiving in " "this way. For example, ``socket.connect( ('hostname', 25) )`` is the " @@ -1474,16 +1530,17 @@ msgid "" "version." msgstr "" "Algunas de las funciones del módulo :mod:`socket` siguen siendo indulgentes " -"en este sentido. Por ejemplo, :func:`socket.connect( ('hostname', 25) )` es " -"la forma correcta, pasando una tupla que representa una dirección IP, pero :" -"func:`socket.connect( 'hostname', 25 )` también funciona. :func:`socket." -"connect_ex` y :func:`socket.bind` son igualmente fáciles de usar. 2.0alpha1 " -"endureció estas funciones, pero como la documentación utilizaba la forma " -"errónea de argumentos múltiples, mucha gente escribió código que se rompería " -"con la comprobación más estricta. GvR se echó atrás en los cambios ante la " -"reacción del público, así que para el módulo :mod:`socket`, la documentación " -"se arregló y la forma de argumento múltiple simplemente se marcó como " -"obsoleta; se *reforzará* de nuevo en una futura versión de Python." +"en este sentido. Por ejemplo, ``socket.connect( ('hostname', 25) )`` es la " +"forma correcta, ya que pasa una tupla que representa una dirección IP, pero " +"``socket.connect('hostname', 25)`` también funciona. :meth:`socket." +"connect_ex ` y :meth:`socket.bind ` son igualmente fáciles de usar. 2.0alpha1 restringió estas funciones, " +"pero debido a que la documentación en realidad usaba la forma de argumentos " +"múltiples errónea, muchas personas escribieron código que rompería con la " +"verificación más estricta. GvR retiró los cambios ante la reacción del " +"público, por lo que para el módulo :mod:`socket`, la documentación se " +"corrigió y la forma de argumentos múltiples simplemente se marcó como " +"obsoleta; *will* se ajustará nuevamente en una futura versión de Python." #: ../Doc/whatsnew/2.0.rst:684 msgid "" @@ -1512,7 +1569,7 @@ msgstr "" "y el código escrito para aprovechar este hecho se romperá en la versión 2.0." #: ../Doc/whatsnew/2.0.rst:694 -#, fuzzy, python-format +#, python-format msgid "" "Some work has been done to make integers and long integers a bit more " "interchangeable. In 1.5.2, large-file support was added for Solaris, to " @@ -1528,20 +1585,20 @@ msgid "" "the ``%`` operator (``%d``, ``%i``, ``%x``, etc.). For example, ``\"%d\" % " "2L**64`` will produce the string ``18446744073709551616``." msgstr "" -"Se ha trabajado para que los enteros y los enteros largos sean un poco más " -"intercambiables. En la versión 1.5.2, se añadió soporte para archivos " -"grandes en Solaris, para permitir la lectura de archivos de más de 2 GiB; " -"esto hizo que el método :meth:`tell` de los objetos de archivo retornara un " -"entero largo en lugar de un entero normal. Algunos códigos restaban dos " -"desplazamientos de archivos e intentaban utilizar el resultado para " -"multiplicar una secuencia o cortar una cadena, pero esto generaba un :exc:" -"`TypeError`. En la versión 2.0, los enteros largos pueden utilizarse para " -"multiplicar o cortar una secuencia, y se comportarán como se espera " -"intuitivamente; ``3L * 'abc'`` produce 'abcabcabc', y ``(0,1,2,3)[2L:4L]`` " -"produce (2,3). Los enteros largos también pueden utilizarse en varios " -"contextos en los que antes sólo se aceptaban enteros, como en el método :" -"meth:`seek` de los objetos de archivo, y en los formatos soportados por el " -"operador ``%`` (``%d``, ``%i``, ``%x``, etc.). Por ejemplo, ``\"%d\" % " +"Se ha trabajado un poco para que los números enteros y los números enteros " +"largos sean un poco más intercambiables. En 1.5.2, se agregó soporte para " +"archivos grandes para Solaris, para permitir la lectura de archivos mayores " +"a 2 GiB; esto hizo que el método :meth:`!tell` de objetos de archivo " +"devolviera un número entero largo en lugar de un número entero regular. " +"Algunos códigos restaban dos desplazamientos de archivo e intentaban usar el " +"resultado para multiplicar una secuencia o cortar una cadena, pero esto " +"generaba un :exc:`TypeError`. En 2.0, los números enteros largos se pueden " +"usar para multiplicar o cortar una secuencia, y se comportará como esperaría " +"intuitivamente; ``3L * 'abc'`` produce 'abcabcabc' y ``(0,1,2,3)[2L:4L]`` " +"produce (2,3). Los números enteros largos también se pueden usar en varios " +"contextos donde anteriormente solo se aceptaban números enteros, como en el " +"método :meth:`!seek` de objetos de archivo y en los formatos admitidos por " +"el operador ``%`` (``%d``, ``%i``, ``%x``, etc.). Por ejemplo, ``\"%d\" % " "2L**64`` producirá la cadena ``18446744073709551616``." #: ../Doc/whatsnew/2.0.rst:708 @@ -1563,7 +1620,7 @@ msgstr "" "perderá el dígito final." #: ../Doc/whatsnew/2.0.rst:716 -#, fuzzy, python-format +#, python-format msgid "" "Taking the :func:`repr` of a float now uses a different formatting precision " "than :func:`str`. :func:`repr` uses ``%.17g`` format string for C's :func:`!" @@ -1573,17 +1630,16 @@ msgid "" "in binary, so ``repr(8.1)`` is ``'8.0999999999999996'``, while str(8.1) is " "``'8.1'``." msgstr "" -"Tomar el :func:`repr` de un flotador utiliza ahora una precisión de formato " -"diferente a la de :func:`str`. :func:`repr` utiliza la cadena de formato " -"``%.17g`` para el :func:`sprintf` de C, mientras que :func:`str` utiliza " -"``%.12g`` como antes. El efecto es que :func:`repr` puede mostrar " -"ocasionalmente más decimales que :func:`str`, para ciertos números. Por " -"ejemplo, el número 8,1 no puede representarse exactamente en binario, por lo " -"que ``repr(8,1)`` es ``'8,09999999999996'``, mientras que str(8,1) es " -"``'8,1'``." +"Ahora, al tomar el :func:`repr` de un float, se utiliza una precisión de " +"formato diferente a la de :func:`str`. :func:`repr` utiliza la cadena de " +"formato ``%.17g`` para :func:`!sprintf` de C, mientras que :func:`str` " +"utiliza ``%.12g`` como antes. El efecto es que :func:`repr` puede mostrar " +"ocasionalmente más decimales que :func:`str` para ciertos números. Por " +"ejemplo, el número 8.1 no se puede representar exactamente en binario, por " +"lo que ``repr(8.1)`` es ``'8.0999999999999996'``, mientras que str(8.1) es " +"``'8.1'``." #: ../Doc/whatsnew/2.0.rst:724 -#, fuzzy msgid "" "The ``-X`` command-line option, which turned all standard exceptions into " "strings instead of classes, has been removed; the standard exceptions will " @@ -1591,10 +1647,10 @@ msgid "" "standard exceptions was translated from Python to a built-in C module, " "written by Barry Warsaw and Fredrik Lundh." msgstr "" -"La opción de línea de comandos ``-X``, que convertía todas las excepciones " -"estándar en cadenas en lugar de clases, ha sido eliminada; las excepciones " -"estándar serán ahora siempre clases. El módulo :mod:`exceptions` que " -"contiene las excepciones estándar ha sido traducido de Python a un módulo C " +"Se ha eliminado la opción de línea de comandos ``-X``, que convertía todas " +"las excepciones estándar en cadenas en lugar de clases; ahora las " +"excepciones estándar siempre serán clases. El módulo :mod:`!exceptions` que " +"contiene las excepciones estándar se tradujo de Python a un módulo C " "integrado, escrito por Barry Warsaw y Fredrik Lundh." #: ../Doc/whatsnew/2.0.rst:740 @@ -1663,7 +1719,6 @@ msgstr "" "pyport.h`." #: ../Doc/whatsnew/2.0.rst:767 -#, fuzzy msgid "" "Vladimir Marangozov's long-awaited malloc restructuring was completed, to " "make it easy to have the Python interpreter use a custom allocator instead " @@ -1672,13 +1727,13 @@ msgid "" "discussions during which the interface was hammered out, see the web " "archives of the 'patches' and 'python-dev' lists at python.org." msgstr "" -"Se ha completado la tan esperada reestructuración de malloc de Vladimir " -"Marangozov, para facilitar que el intérprete de Python utilice un asignador " -"personalizado en lugar del estándar de C :func:`malloc`. Para la " -"documentación, lea los comentarios en :file:`Include/pymem.h` y :file:" -"`Include/objimpl.h`. Para ver las largas discusiones durante las cuales se " -"elaboró la interfaz, consulte los archivos web de las listas 'patches' y " -"'python-dev' en python.org." +"La esperada reestructuración de malloc de Vladimir Marangozov se completó " +"para facilitar que el intérprete de Python use un asignador personalizado en " +"lugar del :c:func:`malloc` estándar de C. Para consultar la documentación, " +"lea los comentarios en :file:`Include/pymem.h` y :file:`Include/objimpl.h`. " +"Para consultar las extensas discusiones durante las cuales se elaboró ​​la " +"interfaz, consulte los archivos web de las listas 'patches' y 'python-dev' " +"en python.org." #: ../Doc/whatsnew/2.0.rst:774 msgid "" @@ -1735,7 +1790,6 @@ msgstr "" "G. Waldman eleva el límite de ``2^16`` a ``2^{32}``." #: ../Doc/whatsnew/2.0.rst:796 -#, fuzzy msgid "" "Three new convenience functions intended for adding constants to a module's " "dictionary at module initialization time were added: :c:func:" @@ -1745,24 +1799,24 @@ msgid "" "third argument for the value to be assigned to the name. This third " "argument is, respectively, a Python object, a C long, or a C string." msgstr "" -"Se han añadido tres nuevas funciones para añadir constantes al diccionario " -"de un módulo en el momento de la inicialización: :func:" -"`PyModule_AddObject`, :func:`PyModule_AddIntConstant`, y :func:" -"`PyModule_AddStringConstant`. Cada una de estas funciones toma un objeto de " -"módulo, una cadena C terminada en cero que contiene el nombre a añadir, y un " -"tercer argumento para el valor a asignar al nombre. Este tercer argumento " -"es, respectivamente, un objeto Python, un C long o una cadena C." +"Se agregaron tres nuevas funciones de conveniencia destinadas a agregar " +"constantes al diccionario de un módulo en el momento de inicialización del " +"módulo: :c:func:`PyModule_AddObject`, :c:func:`PyModule_AddIntConstant` y :c:" +"func:`PyModule_AddStringConstant`. Cada una de estas funciones toma un " +"objeto de módulo, una cadena C terminada en cero que contiene el nombre que " +"se agregará y un tercer argumento para el valor que se asignará al nombre. " +"Este tercer argumento es, respectivamente, un objeto Python, un long C o una " +"cadena C." #: ../Doc/whatsnew/2.0.rst:804 -#, fuzzy msgid "" "A wrapper API was added for Unix-style signal handlers. :c:func:" "`PyOS_getsig` gets a signal handler and :c:func:`PyOS_setsig` will set a new " "handler." msgstr "" -"Se ha añadido una API envolvente para los manejadores de señales de estilo " -"Unix. :func:`PyOS_getsig` obtiene un manejador de señales y :func:" -"`PyOS_setsig` establecerá un nuevo manejador." +"Se agregó una API contenedora para los controladores de señales de estilo " +"Unix. :c:func:`PyOS_getsig` obtiene un controlador de señales y :c:func:" +"`PyOS_setsig` establecerá un nuevo controlador." #: ../Doc/whatsnew/2.0.rst:811 msgid "Distutils: Making Modules Easy to Install" @@ -1790,7 +1844,6 @@ msgstr "" "una instalación de Python fuera una tarea ardua." #: ../Doc/whatsnew/2.0.rst:821 -#, fuzzy msgid "" "The SIG for distribution utilities, shepherded by Greg Ward, has created the " "Distutils, a system to make package installation much easier. They form the " @@ -1805,19 +1858,19 @@ msgid "" "separating the build from the install, building or installing in non-default " "directories, and more." msgstr "" -"El SIG de utilidades de distribución, liderado por Greg Ward, ha creado las " -"Distutils, un sistema para facilitar la instalación de paquetes. Forman el " -"paquete :mod:`distutils`, una nueva parte de la biblioteca estándar de " -"Python. En el mejor de los casos, la instalación de un módulo de Python " -"desde el código fuente requerirá los mismos pasos: primero simplemente hay " -"que desempaquetar el archivo tar o zip, y ejecutar \"``python setup.py " -"install``. La plataforma será detectada automáticamente, el compilador será " -"reconocido, los módulos de extensión C serán compilados, y la distribución " -"será instalada en el directorio apropiado. Los argumentos opcionales de la " -"línea de comandos proporcionan más control sobre el proceso de instalación, " +"El SIG para utilidades de distribución, dirigido por Greg Ward, ha creado " +"Distutils, un sistema para facilitar enormemente la instalación de paquetes. " +"Forman el paquete ``distutils``, una nueva parte de la biblioteca estándar " +"de Python. En el mejor de los casos, instalar un módulo Python desde el " +"código fuente requerirá los mismos pasos: primero, simplemente hay que " +"descomprimir el archivo tarball o zip y ejecutar \"``python setup.py " +"install``\". La plataforma se detectará automáticamente, se reconocerá el " +"compilador, se compilarán los módulos de extensión de C y se instalará la " +"distribución en el directorio adecuado. Los argumentos opcionales de la " +"línea de comandos proporcionan más control sobre el proceso de instalación; " "el paquete distutils ofrece muchos lugares para anular los valores " -"predeterminados - separando la construcción de la instalación, construyendo " -"o instalando en directorios no predeterminados, y más." +"predeterminados, separando la compilación de la instalación, compilando o " +"instalando en directorios que no sean los predeterminados, y más." #: ../Doc/whatsnew/2.0.rst:833 msgid "" @@ -1835,6 +1888,9 @@ msgid "" "setup (name = \"foo\", version = \"1.0\",\n" " py_modules = [\"module1\", \"module2\"])" msgstr "" +"from distutils.core import setup\n" +"setup (name = \"foo\", version = \"1.0\",\n" +" py_modules = [\"module1\", \"module2\"])" #: ../Doc/whatsnew/2.0.rst:841 msgid "" @@ -1850,6 +1906,9 @@ msgid "" "setup (name = \"foo\", version = \"1.0\",\n" " packages = [\"package\", \"package.subpackage\"])" msgstr "" +"from distutils.core import setup\n" +"setup (name = \"foo\", version = \"1.0\",\n" +" packages = [\"package\", \"package.subpackage\"])" #: ../Doc/whatsnew/2.0.rst:848 msgid "" @@ -1874,6 +1933,18 @@ msgid "" "setup (name = \"PyXML\", version = \"0.5.4\",\n" " ext_modules =[ expat_extension ] )" msgstr "" +"from distutils.core import setup, Extension\n" +"\n" +"expat_extension = Extension('xml.parsers.pyexpat',\n" +" define_macros = [('XML_NS', None)],\n" +" include_dirs = [ 'extensions/expat/xmltok',\n" +" 'extensions/expat/xmlparse' ],\n" +" sources = [ 'extensions/pyexpat.c',\n" +" 'extensions/expat/xmltok/xmltok.c',\n" +" 'extensions/expat/xmltok/xmlrole.c', ]\n" +" )\n" +"setup (name = \"PyXML\", version = \"0.5.4\",\n" +" ext_modules =[ expat_extension ] )" #: ../Doc/whatsnew/2.0.rst:864 msgid "" @@ -1908,7 +1979,6 @@ msgid "XML Modules" msgstr "Módulos XML" #: ../Doc/whatsnew/2.0.rst:882 -#, fuzzy msgid "" "Python 1.5.2 included a simple XML parser in the form of the :mod:`!xmllib` " "module, contributed by Sjoerd Mullender. Since 1.5.2's release, two " @@ -1922,25 +1992,24 @@ msgid "" "documentation or the source code for complete details. The Python XML SIG is " "also working on improved documentation." msgstr "" -"La versión 1.5.2 de Python incluía un sencillo analizador XML en forma de " -"módulo :mod:`xmllib`, aportado por Sjoerd Mullender. Desde el lanzamiento de " -"la versión 1.5.2, se han generalizado dos interfaces diferentes para el " -"procesamiento de XML: SAX2 (versión 2 de la API Simple para XML) proporciona " -"una interfaz basada en eventos con algunas similitudes con :mod:`xmllib`, y " -"el DOM (Modelo de Objetos de Documento) proporciona una interfaz basada en " -"un árbol, transformando un documento XML en un árbol de nodos que puede ser " -"atravesado y modificado. Python 2.0 incluye una interfaz SAX2 y una interfaz " -"DOM reducida como parte del paquete :mod:`xml`. Aquí daremos una breve " -"descripción de estas nuevas interfaces; consulte la documentación de Python " -"o el código fuente para obtener detalles completos. El SIG XML de Python " -"también está trabajando en la mejora de la documentación." +"Python 1.5.2 incluía un analizador XML simple en forma del módulo :mod:`!" +"xmllib`, aportado por Sjoerd Mullender. Desde el lanzamiento de la versión " +"1.5.2, se han vuelto comunes dos interfaces diferentes para procesar XML: " +"SAX2 (versión 2 de la API simple para XML) proporciona una interfaz basada " +"en eventos con algunas similitudes con :mod:`!xmllib`, y DOM (Document " +"Object Model) proporciona una interfaz basada en árboles, transformando un " +"documento XML en un árbol de nodos que se puede recorrer y modificar. Python " +"2.0 incluye una interfaz SAX2 y una interfaz DOM simplificada como parte del " +"paquete :mod:`xml`. Aquí daremos una breve descripción general de estas " +"nuevas interfaces; consulte la documentación de Python o el código fuente " +"para obtener detalles completos. El SIG de XML de Python también está " +"trabajando en una documentación mejorada." #: ../Doc/whatsnew/2.0.rst:896 msgid "SAX2 Support" msgstr "Soporte de SAX2" #: ../Doc/whatsnew/2.0.rst:898 -#, fuzzy msgid "" "SAX defines an event-driven interface for parsing XML. To use SAX, you must " "write a SAX handler class. Handler classes inherit from various classes " @@ -1951,13 +2020,15 @@ msgid "" "meth:`~xml.sax.handler.ContentHandler.characters` method is called for every " "chunk of character data, and so forth." msgstr "" -"SAX define una interfaz basada en eventos para analizar XML. Para usar SAX, " -"debes escribir una clase manejadora de SAX. Las clases manejadoras heredan " -"de varias clases proporcionadas por SAX, y sobrescriben varios métodos que " -"luego serán llamados por el analizador XML. Por ejemplo, los métodos :meth:" -"`startElement` y :meth:`endElement` son llamados para cada etiqueta inicial " -"y final encontrada por el analizador, el método :meth:`characters` es " -"llamado para cada trozo de datos de caracteres, etc." +"SAX define una interfaz controlada por eventos para analizar XML. Para " +"utilizar SAX, debe escribir una clase controladora de SAX. Las clases " +"controladoras heredan de varias clases proporcionadas por SAX y reemplazan " +"varios métodos que luego llamará el analizador XML. Por ejemplo, los " +"métodos :meth:`~xml.sax.handler.ContentHandler.startElement` y :meth:`~xml." +"sax.handler.ContentHandler.endElement` se llaman para cada etiqueta de " +"inicio y fin que encuentre el analizador, el método :meth:`~xml.sax.handler." +"ContentHandler.characters` se llama para cada fragmento de datos de " +"caracteres, y así sucesivamente." #: ../Doc/whatsnew/2.0.rst:906 msgid "" @@ -2004,22 +2075,38 @@ msgid "" "# Parse a file!\n" "parser.parse( 'hamlet.xml' )" msgstr "" +"from xml import sax\n" +"\n" +"class SimpleHandler(sax.ContentHandler):\n" +" def startElement(self, name, attrs):\n" +" print 'Start of element:', name, attrs.keys()\n" +"\n" +" def endElement(self, name):\n" +" print 'End of element:', name\n" +"\n" +"# Create a parser object\n" +"parser = sax.make_parser()\n" +"\n" +"# Tell it what handler to use\n" +"handler = SimpleHandler()\n" +"parser.setContentHandler( handler )\n" +"\n" +"# Parse a file!\n" +"parser.parse( 'hamlet.xml' )" #: ../Doc/whatsnew/2.0.rst:935 -#, fuzzy msgid "" "For more information, consult the Python documentation, or the XML HOWTO at " "https://pyxml.sourceforge.net/topics/howto/xml-howto.html." msgstr "" "Para más información, consulte la documentación de Python o el XML HOWTO en " -"http://pyxml.sourceforge.net/topics/howto/xml-howto.html." +"https://pyxml.sourceforge.net/topics/howto/xml-howto.html." #: ../Doc/whatsnew/2.0.rst:940 msgid "DOM Support" msgstr "Soporte DOM" #: ../Doc/whatsnew/2.0.rst:942 -#, fuzzy msgid "" "The Document Object Model is a tree-based representation for an XML " "document. A top-level :class:`!Document` instance is the root of the tree, " @@ -2030,15 +2117,15 @@ msgid "" "access element and attribute values, insert and delete nodes, and convert " "the tree back into XML." msgstr "" -"El Modelo de Objetos del Documento es una representación basada en un árbol " -"para un documento XML. Una instancia de :class:`Document` de nivel superior " -"es la raíz del árbol, y tiene un único hijo que es la instancia de :class:" -"`Element` de nivel superior. Este :class:`Element` tiene nodos hijos que " -"representan los datos de los caracteres y cualquier subelemento, que puede " -"tener otros hijos propios, y así sucesivamente. Utilizando el DOM puedes " -"recorrer el árbol resultante como quieras, acceder a los valores de los " -"elementos y atributos, insertar y eliminar nodos y volver a convertir el " -"árbol en XML." +"El modelo de objetos de documento es una representación basada en árboles " +"para un documento XML. Una instancia :class:`!Document` de nivel superior es " +"la raíz del árbol y tiene un único elemento secundario que es la instancia :" +"class:`!Element` de nivel superior. Este :class:`!Element` tiene nodos " +"secundarios que representan datos de caracteres y cualquier subelemento, que " +"puede tener otros elementos secundarios propios, y así sucesivamente. Con el " +"DOM, puede recorrer el árbol resultante de la forma que desee, acceder a los " +"valores de los elementos y atributos, insertar y eliminar nodos y convertir " +"el árbol nuevamente en XML." #: ../Doc/whatsnew/2.0.rst:950 msgid "" @@ -2057,26 +2144,26 @@ msgstr "" "```` un archivo." #: ../Doc/whatsnew/2.0.rst:956 -#, fuzzy msgid "" "The DOM implementation included with Python lives in the :mod:`xml.dom." "minidom` module. It's a lightweight implementation of the Level 1 DOM with " "support for XML namespaces. The :func:`!parse` and :func:`!parseString` " "convenience functions are provided for generating a DOM tree::" msgstr "" -"La implementación del DOM incluida en Python se encuentra en el módulo :mod:" -"`xml.dom.minidom`. Es una implementación ligera del DOM de nivel 1 con " -"soporte para espacios de nombres XML. Las funciones :func:`parse` y :func:" -"`parseString` se proporcionan para generar un árbol DOM::" +"La implementación del DOM incluida con Python se encuentra en el módulo :mod:" +"`xml.dom.minidom`. Es una implementación liviana del DOM de nivel 1 con " +"soporte para espacios de nombres XML. Las funciones de conveniencia :func:`!" +"parse` y :func:`!parseString` se proporcionan para generar un árbol DOM:" #: ../Doc/whatsnew/2.0.rst:961 msgid "" "from xml.dom import minidom\n" "doc = minidom.parse('hamlet.xml')" msgstr "" +"from xml.dom import minidom\n" +"doc = minidom.parse('hamlet.xml')" #: ../Doc/whatsnew/2.0.rst:964 -#, fuzzy msgid "" "``doc`` is a :class:`!Document` instance. :class:`!Document`, like all the " "other DOM classes such as :class:`!Element` and :class:`Text`, is a subclass " @@ -2087,15 +2174,15 @@ msgid "" "and :class:`!Document` instances have a method to find all child elements " "with a given tag name. Continuing from the previous 2-line example::" msgstr "" -"``doc`` es una instancia de :class:`Document`. El :class:`Document`, al " -"igual que el resto de clases del DOM como el :class:`Element` y el :class:" -"`Text`, es una subclase de la clase base :class:`Node`. Por lo tanto, todos " -"los nodos de un árbol DOM soportan ciertos métodos comunes, como :meth:" -"`toxml` que retorna una cadena que contiene la representación XML del nodo y " -"sus hijos. Cada clase también tiene métodos especiales propios; por ejemplo, " -"las instancias :class:`Element` y :class:`Document` tienen un método para " -"encontrar todos los elementos hijos con un nombre de etiqueta dado. " -"Continuando con el ejemplo anterior de 2 líneas::" +"``doc`` es una instancia de :class:`!Document`. :class:`!Document`, al igual " +"que todas las demás clases DOM como :class:`!Element` y :class:`Text`, es " +"una subclase de la clase base :class:`!Node`. Por lo tanto, todos los nodos " +"de un árbol DOM admiten ciertos métodos comunes, como :meth:`!toxml`, que " +"devuelve una cadena que contiene la representación XML del nodo y sus hijos. " +"Cada clase también tiene sus propios métodos especiales; por ejemplo, las " +"instancias :class:`!Element` y :class:`!Document` tienen un método para " +"encontrar todos los elementos secundarios con un nombre de etiqueta " +"determinado. Continuando con el ejemplo anterior de 2 líneas:" #: ../Doc/whatsnew/2.0.rst:973 msgid "" @@ -2103,6 +2190,9 @@ msgid "" "print perslist[0].toxml()\n" "print perslist[1].toxml()" msgstr "" +"perslist = doc.getElementsByTagName( 'PERSONA' )\n" +"print perslist[0].toxml()\n" +"print perslist[1].toxml()" #: ../Doc/whatsnew/2.0.rst:977 msgid "For the *Hamlet* XML file, the above few lines output::" @@ -2114,6 +2204,8 @@ msgid "" "CLAUDIUS, king of Denmark. \n" "HAMLET, son to the late, and nephew to the present king." msgstr "" +"CLAUDIO, rey de Dinamarca. \n" +"HAMLET, hijo del difunto rey y sobrino del actual." #: ../Doc/whatsnew/2.0.rst:982 msgid "" @@ -2139,15 +2231,25 @@ msgid "" "# the third child) before the 20th child.\n" "root.insertBefore( root.childNodes[0], root.childNodes[20] )" msgstr "" +"root = doc.documentElement\n" +"\n" +"# Eliminar el primer hijo\n" +"root.removeChild( root.childNodes[0] )\n" +"\n" +"# Mover el nuevo primer hijo al final\n" +"root.appendChild( root.childNodes[0] )\n" +"\n" +"# Insertar el nuevo primer hijo (originalmente,\n" +"# el tercer hijo) antes del hijo número 20.\n" +"root.insertBefore( root.childNodes[0], root.childNodes[20] )" #: ../Doc/whatsnew/2.0.rst:997 -#, fuzzy msgid "" "Again, I will refer you to the Python documentation for a complete listing " "of the different :class:`!Node` classes and their various methods." msgstr "" "Una vez más, te remito a la documentación de Python para obtener una lista " -"completa de las diferentes clases :class:`Node` y sus diversos métodos." +"completa de las diferentes clases :class:`!Node` y sus diversos métodos." #: ../Doc/whatsnew/2.0.rst:1002 msgid "Relationship to PyXML" @@ -2199,17 +2301,15 @@ msgid "The xmlproc validating parser, written by Lars Marius Garshol." msgstr "El parser de validación xmlproc, escrito por Lars Marius Garshol." #: ../Doc/whatsnew/2.0.rst:1023 -#, fuzzy msgid "The :mod:`!sgmlop` parser accelerator module, written by Fredrik Lundh." msgstr "" -"El módulo acelerador del parser :mod:`sgmlop`, escrito por Fredrik Lundh." +"El módulo acelerador del parser :mod:`!sgmlop`, escrito por Fredrik Lundh." #: ../Doc/whatsnew/2.0.rst:1029 msgid "Module changes" msgstr "Cambios en los módulos" #: ../Doc/whatsnew/2.0.rst:1031 -#, fuzzy msgid "" "Lots of improvements and bugfixes were made to Python's extensive standard " "library; some of the affected modules include :mod:`readline`, :mod:" @@ -2218,15 +2318,14 @@ msgid "" "mod:`random`, :mod:`shelve`, and :mod:`!nntplib`. Consult the CVS logs for " "the exact patch-by-patch details." msgstr "" -"Se han realizado muchas mejoras y correcciones de errores en la extensa " -"biblioteca estándar de Python; algunos de los módulos afectados son :mod:" -"`readline`, :mod:`ConfigParser`, :mod:`cgi`, :mod:`calendar`, :mod:`posix`, :" -"mod:`readline`, :mod:`xmllib`, :mod:`aifc`, :mod:`chunk, wave`, :mod:" -"`random`, :mod:`shelve`, y :mod:`nntplib`. Consulte los registros de CVS " -"para conocer los detalles exactos parche por parche." +"Se realizaron muchas mejoras y correcciones de errores en la extensa " +"biblioteca estándar de Python; algunos de los módulos afectados incluyen :" +"mod:`readline`, :mod:`ConfigParser `, :mod:`!cgi`, :mod:" +"`calendar`, :mod:`posix`, :mod:`readline`, :mod:`!xmllib`, :mod:`!aifc`, :" +"mod:`!chunk`, :mod:`wave`, :mod:`random`, :mod:`shelve` y :mod:`!nntplib`. " +"Consulte los registros CVS para obtener detalles exactos de cada parche." #: ../Doc/whatsnew/2.0.rst:1037 -#, fuzzy msgid "" "Brian Gallew contributed OpenSSL support for the :mod:`socket` module. " "OpenSSL is an implementation of the Secure Socket Layer, which encrypts the " @@ -2237,36 +2336,35 @@ msgid "" "and :mod:`urllib` modules were also changed to support ``https://`` URLs, " "though no one has implemented FTP or SMTP over SSL." msgstr "" -"Brian Gallew ha contribuido al soporte de OpenSSL para el módulo :mod:" -"`socket`. OpenSSL es una implementación de Secure Socket Layer, que encripta " -"los datos que se envían a través de un socket. Al compilar Python, puedes " -"editar :file:`Modules/Setup` para incluir el soporte de SSL, que añade una " -"función adicional al módulo :mod:`socket`: ``socket.ssl(socket, keyfile, " -"certfile)``, que toma un objeto socket y retorna un socket SSL. Los módulos :" -"mod:`httplib` y :mod:`urllib` también han sido modificados para soportar " -"URLs ``https://``, aunque nadie ha implementado FTP o SMTP sobre SSL." +"Brian Gallew contribuyó con la compatibilidad con OpenSSL para el módulo :" +"mod:`socket`. OpenSSL es una implementación de la capa de sockets seguros, " +"que cifra los datos que se envían a través de un socket. Al compilar Python, " +"puede editar :file:`Modules/Setup` para incluir compatibilidad con SSL, lo " +"que agrega una función adicional al módulo :mod:`socket`: ``socket." +"ssl(socket, keyfile, certfile)``, que toma un objeto de socket y devuelve un " +"socket SSL. Los módulos :mod:`httplib ` y :mod:`urllib` también se " +"modificaron para admitir las URL de ``https://``, aunque nadie ha " +"implementado FTP o SMTP sobre SSL." #: ../Doc/whatsnew/2.0.rst:1046 msgid "" "The :mod:`httplib ` module has been rewritten by Greg Stein to support " "HTTP/1.1." msgstr "" +"Greg Stein ha reescrito el módulo :mod:`httplib ` para admitir " +"HTTP/1.1." #: ../Doc/whatsnew/2.0.rst:1048 -#, fuzzy msgid "" "Backward compatibility with the 1.5 version of :mod:`!httplib` is provided, " "though using HTTP/1.1 features such as pipelining will require rewriting " "code to use a different set of interfaces." msgstr "" -"El módulo :mod:`httplib` ha sido reescrito por Greg Stein para soportar " -"HTTP/1.1. Se proporciona compatibilidad con la versión 1.5 de :mod:" -"`httplib`, aunque el uso de las características de HTTP/1.1, como el " -"pipelining, requerirá reescribir el código para utilizar un conjunto " -"diferente de interfaces." +"Se proporciona compatibilidad con versiones anteriores de la versión 1.5 de :" +"mod:`!httplib`, aunque el uso de funciones HTTP/1.1 como la canalización " +"requerirá reescribir el código para usar un conjunto diferente de interfaces." #: ../Doc/whatsnew/2.0.rst:1052 -#, fuzzy msgid "" "The :mod:`!Tkinter` module now supports Tcl/Tk version 8.1, 8.2, or 8.3, and " "support for the older 7.x versions has been dropped. The Tkinter module now " @@ -2274,12 +2372,13 @@ msgid "" "contributed an optimization which makes operations like ``create_line`` and " "``create_polygon`` much faster, especially when using lots of coordinates." msgstr "" -"El módulo :mod:`Tkinter` soporta ahora la versión 8.1, 8.2 o 8.3 de Tcl/Tk, " -"y se ha eliminado el soporte para las versiones 7.x más antiguas. El módulo " -"Tkinter ahora soporta la visualización de cadenas Unicode en los widgets Tk. " -"Además, Fredrik Lundh ha contribuido con una optimización que hace que " -"operaciones como ``create_line`` y ``create_polygon`` sean mucho más " -"rápidas, especialmente cuando se utilizan muchas coordenadas." +"El módulo :mod:`!Tkinter` ahora es compatible con las versiones 8.1, 8.2 u " +"8.3 de Tcl/Tk y se ha eliminado la compatibilidad con las versiones 7.x " +"anteriores. El módulo Tkinter ahora es compatible con la visualización de " +"cadenas Unicode en widgets Tk. Además, Fredrik Lundh contribuyó con una " +"optimización que hace que operaciones como ``create_line`` y " +"``create_polygon`` sean mucho más rápidas, especialmente cuando se utilizan " +"muchas coordenadas." #: ../Doc/whatsnew/2.0.rst:1058 msgid "" @@ -2342,24 +2441,22 @@ msgstr "" "la función a llamar al salir. (Contribución de Skip Montanaro)" #: ../Doc/whatsnew/2.0.rst:1087 -#, fuzzy msgid "" ":mod:`codecs`, :mod:`!encodings`, :mod:`unicodedata`: Added as part of the " "new Unicode support." msgstr "" -":mod:`codecs`, :mod:`encodings`, :mod:`unicodedata`: Añadidos como parte " +":mod:`codecs`, :mod:`!encodings`, :mod:`unicodedata`: Añadidos como parte " "del nuevo soporte de Unicode." #: ../Doc/whatsnew/2.0.rst:1090 -#, fuzzy msgid "" ":mod:`filecmp`: Supersedes the old :mod:`!cmp`, :mod:`!cmpcache` and :mod:`!" "dircmp` modules, which have now become deprecated. (Contributed by Gordon " "MacMillan and Moshe Zadka.)" msgstr "" -":mod:`filecmp`: Sustituye a los antiguos módulos :mod:`cmp`, :mod:`cmpcache` " -"y :mod:`dircmp`, que han quedado obsoletos. (Contribución de Gordon " -"MacMillan y Moshe Zadka)" +":mod:`filecmp`: Sustituye a los antiguos módulos :mod:`!cmp`, :mod:`!" +"cmpcache` y :mod:`!dircmp`, que han quedado obsoletos. (Contribución de " +"Gordon MacMillan y Moshe Zadka)" #: ../Doc/whatsnew/2.0.rst:1094 msgid "" @@ -2376,14 +2473,13 @@ msgstr "" "Peter Funk y James Henstridge)" #: ../Doc/whatsnew/2.0.rst:1099 -#, fuzzy msgid "" ":mod:`!linuxaudiodev`: Support for the :file:`/dev/audio` device on Linux, a " "twin to the existing :mod:`!sunaudiodev` module. (Contributed by Peter " "Bosch, with fixes by Jeremy Hylton.)" msgstr "" -":mod:`linuxaudiodev`: Soporte para el dispositivo :file:`/dev/audio` en " -"Linux, un gemelo del módulo existente :mod:`sunaudiodev`. (Contribuido por " +":mod:`!linuxaudiodev`: Soporte para el dispositivo :file:`/dev/audio` en " +"Linux, un gemelo del módulo existente :mod:`!sunaudiodev`. (Contribuido por " "Peter Bosch, con correcciones de Jeremy Hylton)" #: ../Doc/whatsnew/2.0.rst:1103 @@ -2403,16 +2499,14 @@ msgstr "" "Sam Rushing, con algunas extensiones de A.M. Kuchling)" #: ../Doc/whatsnew/2.0.rst:1109 -#, fuzzy msgid "" ":mod:`!pyexpat`: An interface to the Expat XML parser. (Contributed by Paul " "Prescod.)" msgstr "" -":mod:`pyexpat`: Una interfaz para el analizador XML de Expat. (Contribuido " +":mod:`!pyexpat`: Una interfaz para el analizador XML de Expat. (Contribuido " "por Paul Prescod.)" #: ../Doc/whatsnew/2.0.rst:1112 -#, fuzzy msgid "" ":mod:`robotparser `: Parse a :file:`robots.txt` file, " "which is used for writing web spiders that politely avoid certain areas of a " @@ -2420,12 +2514,12 @@ msgid "" "builds a set of rules from it, and can then answer questions about the " "fetchability of a given URL. (Contributed by Skip Montanaro.)" msgstr "" -":mod:`robotparser`: Analiza un archivo :file:`robots.txt`, que se utiliza " -"para escribir arañas web que evitan amablemente ciertas áreas de un sitio " -"web. El analizador acepta el contenido de un archivo :file:`robots.txt`, " -"construye un conjunto de reglas a partir de él y puede responder a preguntas " -"sobre la capacidad de búsqueda de una URL determinada. (Contribución de Skip " -"Montanaro)" +":mod:`robotparser `: Analiza un archivo :file:`robots." +"txt`, que se utiliza para escribir arañas web que evitan amablemente ciertas " +"áreas de un sitio web. El analizador acepta el contenido de un archivo :file:" +"`robots.txt`, construye un conjunto de reglas a partir de él y puede " +"responder a preguntas sobre la capacidad de búsqueda de una URL determinada. " +"(Contribución de Skip Montanaro)" #: ../Doc/whatsnew/2.0.rst:1118 msgid "" @@ -2436,13 +2530,12 @@ msgstr "" "en busca de sangrías ambiguas. (Contribuido por Tim Peters.)" #: ../Doc/whatsnew/2.0.rst:1121 -#, fuzzy msgid "" ":mod:`!UserString`: A base class useful for deriving objects that behave " "like strings." msgstr "" -":mod:`UserString`: Una clase base útil para derivar objetos que se comportan " -"como cadenas." +":mod:`!UserString`: Una clase base útil para derivar objetos que se " +"comportan como cadenas." #: ../Doc/whatsnew/2.0.rst:1124 msgid "" @@ -2466,7 +2559,6 @@ msgstr "" "Fred)" #: ../Doc/whatsnew/2.0.rst:1133 -#, fuzzy msgid "" ":mod:`_winreg `: An interface to the Windows registry. :mod:`!" "_winreg` is an adaptation of functions that have been part of PythonWin " @@ -2474,11 +2566,11 @@ msgid "" "to support Unicode. :mod:`!_winreg` was written by Bill Tutt and Mark " "Hammond." msgstr "" -":mod:`_winreg`: Una interfaz para el registro de Windows. :mod:`_winreg` es " -"una adaptación de las funciones que han formado parte de PythonWin desde " -"1995, pero ahora se ha añadido a la distribución principal, y se ha mejorado " -"para soportar Unicode. :mod:`_winreg` fue escrito por Bill Tutt y Mark " -"Hammond." +":mod:`_winreg `: Una interfaz para el registro de Windows. :mod:`!" +"_winreg` es una adaptación de las funciones que han formado parte de " +"PythonWin desde 1995, pero ahora se ha añadido a la distribución principal, " +"y se ha mejorado para soportar Unicode. :mod:`!_winreg` fue escrito por Bill " +"Tutt y Mark Hammond." #: ../Doc/whatsnew/2.0.rst:1138 msgid "" @@ -2494,17 +2586,16 @@ msgstr "" "de James C. Ahlstrom.)" #: ../Doc/whatsnew/2.0.rst:1143 -#, fuzzy msgid "" ":mod:`!imputil`: A module that provides a simpler way for writing customized " "import hooks, in comparison to the existing :mod:`!ihooks` module. " "(Implemented by Greg Stein, with much discussion on python-dev along the " "way.)" msgstr "" -":mod:`imputil`: Un módulo que proporciona una forma más sencilla de escribir " -"ganchos de importación personalizados, en comparación con el módulo :mod:" -"`ihooks` existente. (Implementado por Greg Stein, con mucha discusión en " -"python-dev a lo largo del camino)" +":mod:`!imputil`: Un módulo que proporciona una forma más sencilla de " +"escribir ganchos de importación personalizados, en comparación con el " +"módulo :mod:`!ihooks` existente. (Implementado por Greg Stein, con mucha " +"discusión en python-dev a lo largo del camino)" #: ../Doc/whatsnew/2.0.rst:1151 msgid "IDLE Improvements" @@ -2588,7 +2679,6 @@ msgid "Deleted and Deprecated Modules" msgstr "Módulos eliminados y obsoletos" #: ../Doc/whatsnew/2.0.rst:1187 -#, fuzzy msgid "" "A few modules have been dropped because they're obsolete, or because there " "are now better ways to do the same thing. The :mod:`!stdwin` module is " @@ -2596,12 +2686,11 @@ msgid "" "developed." msgstr "" "Se han eliminado algunos módulos porque son obsoletos, o porque ahora hay " -"mejores formas de hacer lo mismo. El módulo :mod:`stdwin` ha desaparecido; " +"mejores formas de hacer lo mismo. El módulo :mod:`!stdwin` ha desaparecido; " "era para un conjunto de herramientas de ventanas independientes de la " "plataforma que ya no se desarrolla." #: ../Doc/whatsnew/2.0.rst:1191 -#, fuzzy msgid "" "A number of modules have been moved to the :file:`lib-old` subdirectory: :" "mod:`!cmp`, :mod:`!cmpcache`, :mod:`!dircmp`, :mod:`!dump`, :mod:`!find`, :" @@ -2611,12 +2700,12 @@ msgid "" "path`` to get them back, but you're encouraged to update any code that " "uses these modules." msgstr "" -"Varios módulos han sido trasladados al subdirectorio :file:`lib-old`: :mod:" -"`cmp`, :mod:`cmpcache`, :mod:`dircmp`, :mod:`dump`, :mod:`find`, :mod:" -"`grep`, :mod:`packmail`, :mod:`poly`, :mod:`util`, :mod:`whatsound`, :mod:" -"`zmod`. Si tiene código que depende de un módulo que ha sido movido a :file:" -"`lib-old`, puede simplemente añadir ese directorio a ``sys.path`` para " -"recuperarlo, pero se recomienda actualizar cualquier código que utilice " +"Se han movido varios módulos al subdirectorio :file:`lib-old`: :mod:`!cmp`, :" +"mod:`!cmpcache`, :mod:`!dircmp`, :mod:`!dump`, :mod:`!find`, :mod:`!grep`, :" +"mod:`!packmail`, :mod:`!poly`, :mod:`!util`, :mod:`!whatsound`, :mod:`!" +"zmod`. Si tiene código que depende de un módulo que se ha movido a :file:" +"`lib-old`, puede simplemente agregar ese directorio a ``sys.path`` para " +"recuperarlo, pero se le recomienda que actualice cualquier código que use " "estos módulos." #: ../Doc/whatsnew/2.0.rst:1200 diff --git a/whatsnew/2.1.po b/whatsnew/2.1.po index 02f2709214..3ba77105a0 100644 --- a/whatsnew/2.1.po +++ b/whatsnew/2.1.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2022-10-28 00:38+0200\n" "Last-Translator: Jaime Resano \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.1.rst:3 @@ -39,13 +39,13 @@ msgstr "Introducción" #: ../Doc/whatsnew/2.1.rst:15 msgid "" -"This article explains the new features in Python 2.1. While there aren't as " -"many changes in 2.1 as there were in Python 2.0, there are still some " -"pleasant surprises in store. 2.1 is the first release to be steered through " -"the use of Python Enhancement Proposals, or PEPs, so most of the sizable " +"This article explains the new features in Python 2.1. While there aren't as" +" many changes in 2.1 as there were in Python 2.0, there are still some " +"pleasant surprises in store. 2.1 is the first release to be steered through" +" the use of Python Enhancement Proposals, or PEPs, so most of the sizable " "changes have accompanying PEPs that provide more complete documentation and " -"a design rationale for the change. This article doesn't attempt to document " -"the new features completely, but simply provides an overview of the new " +"a design rationale for the change. This article doesn't attempt to document" +" the new features completely, but simply provides an overview of the new " "features for Python programmers. Refer to the Python 2.1 documentation, or " "to the specific PEP, for more details about any new feature that " "particularly interests you." @@ -53,13 +53,13 @@ msgstr "" "Este artículo explica las nuevas características de Python 2.1. Aunque no " "hay tantos cambios en 2.1 como en Python 2.0, todavía hay algunas sorpresas " "agradables. La versión 2.1 es la primera que se dirige mediante el uso de " -"Propuestas de Mejora de Python, o PEPs, por lo que la mayoría de los cambios " -"importantes tienen PEPs adjuntos que proporcionan una documentación más " +"Propuestas de Mejora de Python, o PEPs, por lo que la mayoría de los cambios" +" importantes tienen PEPs adjuntos que proporcionan una documentación más " "completa y una justificación de diseño para el cambio. Este artículo no " "intenta documentar las nuevas características por completo, sino que " "simplemente proporciona una visión general de las nuevas características " -"para los programadores de Python. Consulta la documentación de Python 2.1, o " -"el PEP específico, para obtener más detalles sobre cualquier nueva " +"para los programadores de Python. Consulta la documentación de Python 2.1, o" +" el PEP específico, para obtener más detalles sobre cualquier nueva " "característica que te interese particularmente." #: ../Doc/whatsnew/2.1.rst:25 @@ -87,16 +87,16 @@ msgstr "PEP 227: Ámbitos anidados" msgid "" "The largest change in Python 2.1 is to Python's scoping rules. In Python " "2.0, at any given time there are at most three namespaces used to look up " -"variable names: local, module-level, and the built-in namespace. This often " -"surprised people because it didn't match their intuitive expectations. For " -"example, a nested recursive function definition doesn't work::" +"variable names: local, module-level, and the built-in namespace. This often" +" surprised people because it didn't match their intuitive expectations. For" +" example, a nested recursive function definition doesn't work::" msgstr "" "El mayor cambio en Python 2.1 es el de las reglas de alcance de Python. En " "Python 2.0, en cualquier momento hay como máximo tres espacios de nombres " "utilizados para buscar nombres de variables: local, a nivel de módulo y el " "espacio de nombres incorporado. Esto a menudo sorprendía a la gente porque " -"no coincidía con sus expectativas intuitivas. Por ejemplo, una definición de " -"función recursiva anidada no funciona::" +"no coincidía con sus expectativas intuitivas. Por ejemplo, una definición de" +" función recursiva anidada no funciona::" #: ../Doc/whatsnew/2.1.rst:44 msgid "" @@ -107,27 +107,33 @@ msgid "" " return g(value-1) + 1\n" " ..." msgstr "" +"def f():\n" +"...\n" +"def g(valor):\n" +"...\n" +"return g(valor-1) + 1\n" +"..." #: ../Doc/whatsnew/2.1.rst:51 -#, fuzzy msgid "" "The function :func:`!g` will always raise a :exc:`NameError` exception, " -"because the binding of the name ``g`` isn't in either its local namespace or " -"in the module-level namespace. This isn't much of a problem in practice " +"because the binding of the name ``g`` isn't in either its local namespace or" +" in the module-level namespace. This isn't much of a problem in practice " "(how often do you recursively define interior functions like this?), but " -"this also made using the :keyword:`lambda` expression clumsier, and this was " -"a problem in practice. In code which uses :keyword:`lambda` you can often " +"this also made using the :keyword:`lambda` expression clumsier, and this was" +" a problem in practice. In code which uses :keyword:`lambda` you can often " "find local variables being copied by passing them as the default values of " "arguments. ::" msgstr "" -"La función :func:`g` siempre lanzará una excepción :exc:`NameError`, porque " -"el enlace del nombre ``g`` no está ni en su espacio de nombres local ni en " -"el espacio de nombres a nivel de módulo. Esto no es un gran problema en la " -"práctica (¿con qué frecuencia se definen recursivamente funciones interiores " -"como ésta?), pero esto también hacía más torpe el uso de la expresión :" -"keyword:`lambda`, y esto era un problema en la práctica. En el código que " -"utiliza :keyword:`lambda` a menudo se pueden encontrar variables locales que " -"se copian al pasarlas como valores por defecto de los argumentos. ::" +"La función :func:`!g` siempre generará una excepción :exc:`NameError`, " +"porque la vinculación del nombre ``g`` no está en su espacio de nombres " +"local ni en el espacio de nombres a nivel de módulo. Esto no es un gran " +"problema en la práctica (¿con qué frecuencia se definen recursivamente " +"funciones internas como esta?), pero esto también hizo que el uso de la " +"expresión :keyword:`lambda` fuera más complicado, y esto fue un problema en " +"la práctica. En el código que usa :keyword:`lambda`, a menudo se pueden " +"encontrar variables locales que se copian al pasarlas como valores " +"predeterminados de los argumentos. ::" #: ../Doc/whatsnew/2.1.rst:59 msgid "" @@ -137,6 +143,11 @@ msgid "" " self.list_attribute)\n" " return L" msgstr "" +"def find(self, name):\n" +"\"Devuelve una lista de todas las entradas iguales a 'name'\"\n" +"L = filter(lambda x, name=name: x == name,\n" +"self.list_attribute)\n" +"return L" #: ../Doc/whatsnew/2.1.rst:65 msgid "" @@ -150,12 +161,13 @@ msgstr "" msgid "" "The most significant change to Python 2.1 is that static scoping has been " "added to the language to fix this problem. As a first effect, the " -"``name=name`` default argument is now unnecessary in the above example. Put " -"simply, when a given variable name is not assigned a value within a function " -"(by an assignment, or the :keyword:`def`, :keyword:`class`, or :keyword:" -"`import` statements), references to the variable will be looked up in the " -"local namespace of the enclosing scope. A more detailed explanation of the " -"rules, and a dissection of the implementation, can be found in the PEP." +"``name=name`` default argument is now unnecessary in the above example. Put" +" simply, when a given variable name is not assigned a value within a " +"function (by an assignment, or the :keyword:`def`, :keyword:`class`, or " +":keyword:`import` statements), references to the variable will be looked up " +"in the local namespace of the enclosing scope. A more detailed explanation " +"of the rules, and a dissection of the implementation, can be found in the " +"PEP." msgstr "" "El cambio más significativo de Python 2.1 es que se ha añadido al lenguaje " "el ámbito estático para solucionar este problema. Como primer efecto, el " @@ -177,8 +189,8 @@ msgid "" msgstr "" "Este cambio puede causar algunos problemas de compatibilidad para el código " "en el que el mismo nombre de variable se utiliza tanto a nivel de módulo " -"como de variable local dentro de una función que contiene otras definiciones " -"de función. Sin embargo, esto parece bastante improbable, ya que dicho " +"como de variable local dentro de una función que contiene otras definiciones" +" de función. Sin embargo, esto parece bastante improbable, ya que dicho " "código habría sido bastante confuso de leer en primer lugar." #: ../Doc/whatsnew/2.1.rst:83 @@ -186,28 +198,29 @@ msgid "" "One side effect of the change is that the ``from module import *`` and " "``exec`` statements have been made illegal inside a function scope under " "certain conditions. The Python reference manual has said all along that " -"``from module import *`` is only legal at the top level of a module, but the " -"CPython interpreter has never enforced this before. As part of the " -"implementation of nested scopes, the compiler which turns Python source into " -"bytecodes has to generate different code to access variables in a containing " -"scope. ``from module import *`` and ``exec`` make it impossible for the " -"compiler to figure this out, because they add names to the local namespace " -"that are unknowable at compile time. Therefore, if a function contains " -"function definitions or :keyword:`lambda` expressions with free variables, " -"the compiler will flag this by raising a :exc:`SyntaxError` exception." +"``from module import *`` is only legal at the top level of a module, but the" +" CPython interpreter has never enforced this before. As part of the " +"implementation of nested scopes, the compiler which turns Python source into" +" bytecodes has to generate different code to access variables in a " +"containing scope. ``from module import *`` and ``exec`` make it impossible " +"for the compiler to figure this out, because they add names to the local " +"namespace that are unknowable at compile time. Therefore, if a function " +"contains function definitions or :keyword:`lambda` expressions with free " +"variables, the compiler will flag this by raising a :exc:`SyntaxError` " +"exception." msgstr "" "Un efecto secundario del cambio es que las sentencias ``from module import " "*`` y ``exec`` se han hecho ilegales dentro del ámbito de una función bajo " "ciertas condiciones. El manual de referencia de Python ha dicho todo el " -"tiempo que ``from module import *`` sólo es legal en el nivel superior de un " -"módulo, pero el intérprete de CPython nunca ha aplicado esto antes. Como " +"tiempo que ``from module import *`` sólo es legal en el nivel superior de un" +" módulo, pero el intérprete de CPython nunca ha aplicado esto antes. Como " "parte de la implementación de los ámbitos anidados, el compilador que " "convierte el código fuente de Python en bytecodes tiene que generar un " "código diferente para acceder a las variables de un ámbito contenedor. Los " -"códigos ``from module import *`` y ``exec`` hacen que el compilador no pueda " -"averiguar esto, porque añaden nombres al espacio de nombres local que son " -"desconocidos en tiempo de compilación. Por lo tanto, si una función contiene " -"definiciones de funciones o expresiones :keyword:`lambda` con variables " +"códigos ``from module import *`` y ``exec`` hacen que el compilador no pueda" +" averiguar esto, porque añaden nombres al espacio de nombres local que son " +"desconocidos en tiempo de compilación. Por lo tanto, si una función contiene" +" definiciones de funciones o expresiones :keyword:`lambda` con variables " "libres, el compilador lo señalará lanzando una excepción :exc:`SyntaxError`." #: ../Doc/whatsnew/2.1.rst:96 @@ -225,17 +238,22 @@ msgid "" " def g():\n" " return x" msgstr "" +"x = 1\n" +"def f():\n" +"# La siguiente línea es un error de sintaxis\n" +"exec 'x=2'\n" +"def g():\n" +"return x" #: ../Doc/whatsnew/2.1.rst:105 -#, fuzzy msgid "" "Line 4 containing the ``exec`` statement is a syntax error, since ``exec`` " -"would define a new local variable named ``x`` whose value should be accessed " -"by :func:`!g`." +"would define a new local variable named ``x`` whose value should be accessed" +" by :func:`!g`." msgstr "" "La línea 4 que contiene la sentencia ``exec`` es un error de sintaxis, ya " "que ``exec`` definiría una nueva variable local llamada ``x`` cuyo valor " -"debería ser accedido por :func:`g`." +"debería ser accedido por :func:`!g`." #: ../Doc/whatsnew/2.1.rst:109 msgid "" @@ -243,15 +261,15 @@ msgid "" "most Python code (and when it is used, it's often a sign of a poor design " "anyway)." msgstr "" -"Esto no debería ser una gran limitación, ya que ``exec`` rara vez se utiliza " -"en la mayoría del código de Python (y cuando se utiliza, a menudo es un " +"Esto no debería ser una gran limitación, ya que ``exec`` rara vez se utiliza" +" en la mayoría del código de Python (y cuando se utiliza, a menudo es un " "signo de un mal diseño de todos modos)." #: ../Doc/whatsnew/2.1.rst:113 msgid "" -"Compatibility concerns have led to nested scopes being introduced gradually; " -"in Python 2.1, they aren't enabled by default, but can be turned on within a " -"module by using a future statement as described in :pep:`236`. (See the " +"Compatibility concerns have led to nested scopes being introduced gradually;" +" in Python 2.1, they aren't enabled by default, but can be turned on within " +"a module by using a future statement as described in :pep:`236`. (See the " "following section for further discussion of :pep:`236`.) In Python 2.2, " "nested scopes will become the default and there will be no way to turn them " "off, but users will have had all of 2.1's lifetime to fix any breakage " @@ -294,8 +312,8 @@ msgstr "" #: ../Doc/whatsnew/2.1.rst:138 msgid "" -"The syntax uses a ``from...import`` statement using the reserved module " -"name :mod:`__future__`. Nested scopes can be enabled by the following " +"The syntax uses a ``from...import`` statement using the reserved module name" +" :mod:`__future__`. Nested scopes can be enabled by the following " "statement::" msgstr "" "La sintaxis utiliza una sentencia ``from...import`` utilizando el nombre de " @@ -304,24 +322,24 @@ msgstr "" #: ../Doc/whatsnew/2.1.rst:141 msgid "from __future__ import nested_scopes" -msgstr "" +msgstr "desde __future__ importar ámbitos anidados" #: ../Doc/whatsnew/2.1.rst:143 msgid "" "While it looks like a normal :keyword:`import` statement, it's not; there " "are strict rules on where such a future statement can be put. They can only " -"be at the top of a module, and must precede any Python code or regular :" -"keyword:`!import` statements. This is because such statements can affect " -"how the Python bytecode compiler parses code and generates bytecode, so they " -"must precede any statement that will result in bytecodes being produced." +"be at the top of a module, and must precede any Python code or regular " +":keyword:`!import` statements. This is because such statements can affect " +"how the Python bytecode compiler parses code and generates bytecode, so they" +" must precede any statement that will result in bytecodes being produced." msgstr "" "Aunque parece una sentencia :keyword:`import` normal, no lo es; hay reglas " -"estrictas sobre dónde se puede poner una sentencia future. Sólo pueden estar " -"en la parte superior de un módulo, y deben preceder a cualquier código " +"estrictas sobre dónde se puede poner una sentencia future. Sólo pueden estar" +" en la parte superior de un módulo, y deben preceder a cualquier código " "Python o a las sentencias :keyword:`!import` normales. Esto se debe a que " -"tales declaraciones pueden afectar a la forma en que el compilador de código " -"de bytes de Python analiza el código y genera el código de bytes, por lo que " -"deben preceder a cualquier declaración que dé lugar a la producción de " +"tales declaraciones pueden afectar a la forma en que el compilador de código" +" de bytes de Python analiza el código y genera el código de bytes, por lo " +"que deben preceder a cualquier declaración que dé lugar a la producción de " "códigos de bytes." #: ../Doc/whatsnew/2.1.rst:153 @@ -337,33 +355,33 @@ msgid "PEP 207: Rich Comparisons" msgstr "PEP 207: Comparaciones Enriquecidas" #: ../Doc/whatsnew/2.1.rst:162 -#, fuzzy msgid "" "In earlier versions, Python's support for implementing comparisons on user-" "defined classes and extension types was quite simple. Classes could " -"implement a :meth:`!__cmp__` method that was given two instances of a class, " -"and could only return 0 if they were equal or +1 or -1 if they weren't; the " -"method couldn't raise an exception or return anything other than a Boolean " +"implement a :meth:`!__cmp__` method that was given two instances of a class," +" and could only return 0 if they were equal or +1 or -1 if they weren't; the" +" method couldn't raise an exception or return anything other than a Boolean " "value. Users of Numeric Python often found this model too weak and " -"restrictive, because in the number-crunching programs that numeric Python is " -"used for, it would be more useful to be able to perform elementwise " +"restrictive, because in the number-crunching programs that numeric Python is" +" used for, it would be more useful to be able to perform elementwise " "comparisons of two matrices, returning a matrix containing the results of a " "given comparison for each element. If the two matrices are of different " "sizes, then the compare has to be able to raise an exception to signal the " "error." msgstr "" -"En versiones anteriores, el soporte de Python para implementar comparaciones " -"en clases definidas por el usuario y tipos de extensión era bastante simple. " -"Las clases podían implementar un método :meth:`__cmp__` al que se le daban " -"dos instancias de una clase, y sólo podía retornar 0 si eran iguales o +1 o " -"-1 si no lo eran; el método no podía lanzar una excepción ni retornar nada " -"más que un valor booleano. Los usuarios de Python Numérico a menudo " -"encontraban este modelo demasiado débil y restrictivo, porque en los " -"programas de cálculo de números para los que se utiliza Numeric Python, " -"sería más útil poder realizar comparaciones por elementos de dos matrices, " -"retornando una matriz que contenga los resultados de una comparación dada " -"para cada elemento. Si las dos matrices son de diferente tamaño, entonces el " -"comparador tiene que ser capaz de lanzar una excepción para señalar el error." +"En versiones anteriores, el soporte de Python para implementar comparaciones" +" en clases definidas por el usuario y tipos de extensión era bastante " +"simple. Las clases podían implementar un método :meth:`!__cmp__` al que se " +"le daban dos instancias de una clase, y solo podía devolver 0 si eran " +"iguales o +1 o -1 si no lo eran; el método no podía generar una excepción o " +"devolver nada más que un valor booleano. Los usuarios de Python numérico a " +"menudo encontraban que este modelo era demasiado débil y restrictivo, porque" +" en los programas de procesamiento numérico para los que se usa Python " +"numérico, sería más útil poder realizar comparaciones elemento por elemento " +"de dos matrices, devolviendo una matriz que contenga los resultados de una " +"comparación dada para cada elemento. Si las dos matrices son de diferentes " +"tamaños, entonces la comparación tiene que poder generar una excepción para " +"señalar el error." #: ../Doc/whatsnew/2.1.rst:174 msgid "" @@ -390,60 +408,54 @@ msgid "``<``" msgstr "``<``" #: ../Doc/whatsnew/2.1.rst:181 -#, fuzzy msgid ":meth:`~object.__lt__`" -msgstr ":meth:`__lt__`" +msgstr ":meth:`~object.__lt__`" #: ../Doc/whatsnew/2.1.rst:183 msgid "``<=``" msgstr "``<=``" #: ../Doc/whatsnew/2.1.rst:183 -#, fuzzy msgid ":meth:`~object.__le__`" -msgstr ":meth:`__le__`" +msgstr ":meth:`~object.__le__`" #: ../Doc/whatsnew/2.1.rst:185 msgid "``>``" msgstr "``>``" #: ../Doc/whatsnew/2.1.rst:185 -#, fuzzy msgid ":meth:`~object.__gt__`" -msgstr ":meth:`__gt__`" +msgstr ":meth:`~object.__gt__`" #: ../Doc/whatsnew/2.1.rst:187 msgid "``>=``" msgstr "``>=``" #: ../Doc/whatsnew/2.1.rst:187 -#, fuzzy msgid ":meth:`~object.__ge__`" -msgstr ":meth:`__ge__`" +msgstr ":meth:`~object.__ge__`" #: ../Doc/whatsnew/2.1.rst:189 msgid "``==``" msgstr "``==``" #: ../Doc/whatsnew/2.1.rst:189 -#, fuzzy msgid ":meth:`~object.__eq__`" -msgstr ":meth:`__eq__`" +msgstr ":meth:`~object.__eq__`" #: ../Doc/whatsnew/2.1.rst:191 msgid "``!=``" msgstr "``!=``" #: ../Doc/whatsnew/2.1.rst:191 -#, fuzzy msgid ":meth:`~object.__ne__`" -msgstr ":meth:`__ne__`" +msgstr ":meth:`~object.__ne__`" #: ../Doc/whatsnew/2.1.rst:194 msgid "" -"(The magic methods are named after the corresponding Fortran operators ``.LT." -"``. ``.LE.``, &c. Numeric programmers are almost certainly quite familiar " -"with these names and will find them easy to remember.)" +"(The magic methods are named after the corresponding Fortran operators " +"``.LT.``. ``.LE.``, &c. Numeric programmers are almost certainly quite " +"familiar with these names and will find them easy to remember.)" msgstr "" "(Los métodos mágicos se denominan como los correspondientes operadores de " "Fortran ``.LT.``. ``.LE.``, &c. Los programadores numéricos están casi " @@ -460,13 +472,13 @@ msgstr "" "Cada uno de estos métodos mágicos tiene la forma ``method(self, other)``, " "donde ``self`` será el objeto que se encuentre en el lado izquierdo del " "operador, mientras que ``other`` será el objeto que se encuentre en el lado " -"derecho. Por ejemplo, la expresión ``A < B`` hará que se llame a ``A." -"__lt__(B)``." +"derecho. Por ejemplo, la expresión ``A < B`` hará que se llame a " +"``A.__lt__(B)``." #: ../Doc/whatsnew/2.1.rst:203 msgid "" -"Each of these magic methods can return anything at all: a Boolean, a matrix, " -"a list, or any other Python object. Alternatively they can raise an " +"Each of these magic methods can return anything at all: a Boolean, a matrix," +" a list, or any other Python object. Alternatively they can raise an " "exception if the comparison is impossible, inconsistent, or otherwise " "meaningless." msgstr "" @@ -476,7 +488,6 @@ msgstr "" "no tiene sentido." #: ../Doc/whatsnew/2.1.rst:207 -#, fuzzy msgid "" "The built-in ``cmp(A,B)`` function can use the rich comparison machinery, " "and now accepts an optional argument specifying which comparison operation " @@ -486,26 +497,27 @@ msgid "" "previous versions of Python; otherwise it will call the appropriate method " "and can return any Python object." msgstr "" -"La función incorporada ``cmp(A,B)`` puede utilizar la comparación " -"enriquecida, y ahora acepta un argumento opcional que especifica la " -"operación de comparación a utilizar; esto se da como una de las cadenas " -"``\"<\"``, ``\"<=\"``, ``\">\"``, ``\">=\"``, ``\"==\"``, o ``\"!=\"``. Si " -"se llama sin el tercer argumento opcional, :func:`cmp` sólo retornará -1, 0 " -"o +1 como en versiones anteriores de Python; en caso contrario, llamará al " -"método apropiado y puede retornar cualquier objeto de Python." +"La función ``cmp(A,B)`` incorporada puede utilizar la rica maquinaria de " +"comparación y ahora acepta un argumento opcional que especifica qué " +"operación de comparación utilizar; esto se proporciona como una de las " +"cadenas ``\"<\"``, ``\"<=\"``, ``\">\"``, ``\">=\"``, ``\"==\"`` o " +"``\"!=\"``. Si se llama sin el tercer argumento opcional, :func:`!cmp` solo " +"devolverá -1, 0 o +1 como en versiones anteriores de Python; de lo " +"contrario, llamará al método apropiado y puede devolver cualquier objeto de " +"Python." #: ../Doc/whatsnew/2.1.rst:214 msgid "" -"There are also corresponding changes of interest to C programmers; there's a " -"new slot ``tp_richcmp`` in type objects and an API for performing a given " -"rich comparison. I won't cover the C API here, but will refer you to :pep:" -"`207`, or to 2.1's C API documentation, for the full list of related " +"There are also corresponding changes of interest to C programmers; there's a" +" new slot ``tp_richcmp`` in type objects and an API for performing a given " +"rich comparison. I won't cover the C API here, but will refer you to " +":pep:`207`, or to 2.1's C API documentation, for the full list of related " "functions." msgstr "" -"También hay cambios correspondientes de interés para los programadores de C; " -"hay una nueva ranura ``tp_richcmp`` en los objetos de tipo y una API para " -"realizar una comparación rica determinada. No cubrirá la API de C aquí, sino " -"que le remitiré a :pep:`207`, o a la documentación de la API de C de 2.1, " +"También hay cambios correspondientes de interés para los programadores de C;" +" hay una nueva ranura ``tp_richcmp`` en los objetos de tipo y una API para " +"realizar una comparación rica determinada. No cubrirá la API de C aquí, sino" +" que le remitiré a :pep:`207`, o a la documentación de la API de C de 2.1, " "para la lista completa de funciones relacionadas." #: ../Doc/whatsnew/2.1.rst:223 @@ -532,28 +544,28 @@ msgid "" "uses it --- perhaps no programs depend on the feature, or perhaps many do. " "To enable removing old features in a more structured way, a warning " "framework was added. When the Python developers want to get rid of a " -"feature, it will first trigger a warning in the next version of Python. The " -"following Python version can then drop the feature, and users will have had " -"a full release cycle to remove uses of the old feature." +"feature, it will first trigger a warning in the next version of Python. The" +" following Python version can then drop the feature, and users will have had" +" a full release cycle to remove uses of the old feature." msgstr "" "A lo largo de sus 10 años de existencia, Python ha acumulado un cierto " -"número de módulos y características obsoletas en el camino. Es difícil saber " -"cuándo es seguro eliminar una característica, ya que no hay manera de saber " -"cuánto código la utiliza --- tal vez ningún programa depende de la " +"número de módulos y características obsoletas en el camino. Es difícil saber" +" cuándo es seguro eliminar una característica, ya que no hay manera de saber" +" cuánto código la utiliza --- tal vez ningún programa depende de la " "característica, o tal vez muchos lo hacen. Para permitir la eliminación de " "características antiguas de una manera más estructurada, se añadió un marco " "de advertencia. Cuando los desarrolladores de Python quieran deshacerse de " "una característica, primero se activará una advertencia en la siguiente " -"versión de Python. La siguiente versión de Python puede entonces eliminar la " -"característica, y los usuarios habrán tenido un ciclo de lanzamiento " +"versión de Python. La siguiente versión de Python puede entonces eliminar la" +" característica, y los usuarios habrán tenido un ciclo de lanzamiento " "completo para eliminar los usos de la antigua característica." #: ../Doc/whatsnew/2.1.rst:242 msgid "" -"Python 2.1 adds the warning framework to be used in this scheme. It adds a :" -"mod:`warnings` module that provide functions to issue warnings, and to " -"filter out warnings that you don't want to be displayed. Third-party modules " -"can also use this framework to deprecate old features that they no longer " +"Python 2.1 adds the warning framework to be used in this scheme. It adds a " +":mod:`warnings` module that provide functions to issue warnings, and to " +"filter out warnings that you don't want to be displayed. Third-party modules" +" can also use this framework to deprecate old features that they no longer " "wish to support." msgstr "" "Python 2.1 añade el marco de trabajo de las advertencias para ser utilizado " @@ -563,13 +575,12 @@ msgstr "" "trabajo para dejar de lado funciones antiguas que ya no desean soportar." #: ../Doc/whatsnew/2.1.rst:248 -#, fuzzy msgid "" "For example, in Python 2.1 the :mod:`!regex` module is deprecated, so " "importing it causes a warning to be printed::" msgstr "" -"Por ejemplo, en Python 2.1 el módulo :mod:`regex` está obsoleto, por lo que " -"al importarlo se imprime una advertencia::" +"Por ejemplo, en Python 2.1 el módulo :mod:`!regex` está obsoleto, por lo que" +" al importarlo se imprime una advertencia::" #: ../Doc/whatsnew/2.1.rst:251 msgid "" @@ -578,16 +589,20 @@ msgid "" " is deprecated; please use the re module\n" ">>>" msgstr "" +">>> import regex\n" +"__main__:1: DeprecationWarning: el módulo regex\n" +"está obsoleto; utilice el módulo re\n" +">>>" #: ../Doc/whatsnew/2.1.rst:256 msgid "Warnings can be issued by calling the :func:`warnings.warn` function::" msgstr "" -"Las advertencias se pueden emitir llamando a la función :func:`warnings." -"warn`::" +"Las advertencias se pueden emitir llamando a la función " +":func:`warnings.warn`::" #: ../Doc/whatsnew/2.1.rst:258 msgid "warnings.warn(\"feature X no longer supported\")" -msgstr "" +msgstr "advertencias.warn(\"la función X ya no es compatible\")" #: ../Doc/whatsnew/2.1.rst:260 msgid "" @@ -595,23 +610,23 @@ msgid "" "parameters can be used to specify a particular warning category." msgstr "" "El primer parámetro es el mensaje de advertencia; se pueden utilizar otros " -"parámetros opcionales para especificar una categoría de advertencia concreta." +"parámetros opcionales para especificar una categoría de advertencia " +"concreta." #: ../Doc/whatsnew/2.1.rst:263 -#, fuzzy msgid "" "Filters can be added to disable certain warnings; a regular expression " "pattern can be applied to the message or to the module name in order to " -"suppress a warning. For example, you may have a program that uses the :mod:" -"`!regex` module and not want to spare the time to convert it to use the :mod:" -"`re` module right now. The warning can be suppressed by calling ::" +"suppress a warning. For example, you may have a program that uses the " +":mod:`!regex` module and not want to spare the time to convert it to use the" +" :mod:`re` module right now. The warning can be suppressed by calling ::" msgstr "" -"Se pueden añadir filtros para desactivar ciertas advertencias; se puede " +"Se pueden agregar filtros para desactivar ciertas advertencias; se puede " "aplicar un patrón de expresión regular al mensaje o al nombre del módulo " "para suprimir una advertencia. Por ejemplo, puede tener un programa que " -"utilice el módulo :mod:`regex` y no querer dedicar tiempo a convertirlo para " -"que utilice el módulo :mod:`re` en este momento. La advertencia puede " -"suprimirse llamando a ::" +"utiliza el módulo :mod:`!regex` y no desea perder tiempo en convertirlo para" +" que utilice el módulo :mod:`re` en este momento. La advertencia se puede " +"suprimir llamando a ::" #: ../Doc/whatsnew/2.1.rst:269 msgid "" @@ -621,26 +636,31 @@ msgid "" " category=DeprecationWarning,\n" " module = '__main__')" msgstr "" +"advertencias de importación\n" +"warnings.filterwarnings(action = 'ignore',\n" +"message='.*regex module is obsolete',\n" +"category=DeprecationWarning,\n" +"module = '__main__')" #: ../Doc/whatsnew/2.1.rst:275 -#, fuzzy -msgid "" -"This adds a filter that will apply only to warnings of the class :class:" -"`DeprecationWarning` triggered in the :mod:`__main__` module, and applies a " -"regular expression to only match the message about the :mod:`!regex` module " -"being deprecated, and will cause such warnings to be ignored. Warnings can " -"also be printed only once, printed every time the offending code is " -"executed, or turned into exceptions that will cause the program to stop " -"(unless the exceptions are caught in the usual way, of course)." -msgstr "" -"Esto añade un filtro que se aplicará sólo a las advertencias de la clase :" -"class:`DeprecationWarning` lanzadas en el módulo :mod:`__main__`, y aplica " -"una expresión regular para que sólo coincida con el mensaje sobre el módulo :" -"mod:`regex` que está obsoleto, y hará que tales advertencias sean ignoradas. " -"Las advertencias también pueden imprimirse sólo una vez, imprimirse cada vez " -"que se ejecute el código infractor, o convertirse en excepciones que harán " -"que el programa se detenga (a menos que las excepciones se atrapen de la " -"forma habitual, por supuesto)." +msgid "" +"This adds a filter that will apply only to warnings of the class " +":class:`DeprecationWarning` triggered in the :mod:`__main__` module, and " +"applies a regular expression to only match the message about the " +":mod:`!regex` module being deprecated, and will cause such warnings to be " +"ignored. Warnings can also be printed only once, printed every time the " +"offending code is executed, or turned into exceptions that will cause the " +"program to stop (unless the exceptions are caught in the usual way, of " +"course)." +msgstr "" +"Esto agrega un filtro que se aplicará solo a las advertencias de la clase " +":class:`DeprecationWarning` activadas en el módulo :mod:`__main__` y aplica " +"una expresión regular para que coincida solo con el mensaje sobre que el " +"módulo :mod:`!regex` está obsoleto y hará que se ignoren dichas " +"advertencias. Las advertencias también se pueden imprimir solo una vez, " +"imprimirse cada vez que se ejecuta el código infractor o convertirse en " +"excepciones que harán que el programa se detenga (a menos que las " +"excepciones se detecten de la manera habitual, por supuesto)." #: ../Doc/whatsnew/2.1.rst:283 msgid "" @@ -663,8 +683,8 @@ msgid "" "from Prescod's proposal." msgstr "" "Escrito por Paul Prescod, para especificar los procedimientos a seguir " -"cuando se eliminan características antiguas de PythonLa política descrita en " -"este PEP no ha sido adoptada oficialmente, pero la política final " +"cuando se eliminan características antiguas de PythonLa política descrita en" +" este PEP no ha sido adoptada oficialmente, pero la política final " "probablemente no será muy diferente de la propuesta de Prescod." #: ../Doc/whatsnew/2.1.rst:295 @@ -681,72 +701,75 @@ msgstr "PEP 229: Sistema de construcción nuevo" #: ../Doc/whatsnew/2.1.rst:304 msgid "" -"When compiling Python, the user had to go in and edit the :file:`Modules/" -"Setup` file in order to enable various additional modules; the default set " -"is relatively small and limited to modules that compile on most Unix " -"platforms. This means that on Unix platforms with many more features, most " -"notably Linux, Python installations often don't contain all useful modules " -"they could." -msgstr "" -"Al compilar Python, el usuario tenía que entrar y editar el archivo :file:" -"`Modules/Setup` para habilitar varios módulos adicionales; el conjunto por " -"defecto es relativamente pequeño y se limita a los módulos que se compilan " -"en la mayoría de las plataformas Unix. Esto significa que en plataformas " -"Unix con muchas más características, sobre todo Linux, las instalaciones de " -"Python no suelen contener todos los módulos útiles que podrían." +"When compiling Python, the user had to go in and edit the " +":file:`Modules/Setup` file in order to enable various additional modules; " +"the default set is relatively small and limited to modules that compile on " +"most Unix platforms. This means that on Unix platforms with many more " +"features, most notably Linux, Python installations often don't contain all " +"useful modules they could." +msgstr "" +"Al compilar Python, el usuario tenía que entrar y editar el archivo " +":file:`Modules/Setup` para habilitar varios módulos adicionales; el conjunto" +" por defecto es relativamente pequeño y se limita a los módulos que se " +"compilan en la mayoría de las plataformas Unix. Esto significa que en " +"plataformas Unix con muchas más características, sobre todo Linux, las " +"instalaciones de Python no suelen contener todos los módulos útiles que " +"podrían." #: ../Doc/whatsnew/2.1.rst:310 msgid "" "Python 2.0 added the Distutils, a set of modules for distributing and " "installing extensions. In Python 2.1, the Distutils are used to compile " "much of the standard library of extension modules, autodetecting which ones " -"are supported on the current machine. It's hoped that this will make Python " -"installations easier and more featureful." +"are supported on the current machine. It's hoped that this will make Python" +" installations easier and more featureful." msgstr "" "Python 2.0 añadió los Distutils, un conjunto de módulos para distribuir e " -"instalar extensiones. En Python 2.1, los Distutils se utilizan para compilar " -"gran parte de la biblioteca estándar de módulos de extensión, autodetectando " -"cuáles son compatibles con la máquina actual Se espera que esto haga que las " -"instalaciones de Python sean más fáciles y tengan más funciones." +"instalar extensiones. En Python 2.1, los Distutils se utilizan para compilar" +" gran parte de la biblioteca estándar de módulos de extensión, " +"autodetectando cuáles son compatibles con la máquina actual Se espera que " +"esto haga que las instalaciones de Python sean más fáciles y tengan más " +"funciones." #: ../Doc/whatsnew/2.1.rst:316 msgid "" "Instead of having to edit the :file:`Modules/Setup` file in order to enable " -"modules, a :file:`setup.py` script in the top directory of the Python source " -"distribution is run at build time, and attempts to discover which modules " +"modules, a :file:`setup.py` script in the top directory of the Python source" +" distribution is run at build time, and attempts to discover which modules " "can be enabled by examining the modules and header files on the system. If " -"a module is configured in :file:`Modules/Setup`, the :file:`setup.py` script " -"won't attempt to compile that module and will defer to the :file:`Modules/" -"Setup` file's contents. This provides a way to specific any strange command-" -"line flags or libraries that are required for a specific platform." -msgstr "" -"En lugar de tener que editar el archivo :file:`Modules/Setup` para habilitar " -"los módulos, un script :file:`setup.py` en el directorio superior de la " +"a module is configured in :file:`Modules/Setup`, the :file:`setup.py` script" +" won't attempt to compile that module and will defer to the " +":file:`Modules/Setup` file's contents. This provides a way to specific any " +"strange command-line flags or libraries that are required for a specific " +"platform." +msgstr "" +"En lugar de tener que editar el archivo :file:`Modules/Setup` para habilitar" +" los módulos, un script :file:`setup.py` en el directorio superior de la " "distribución de fuentes de Python se ejecuta en el momento de la " "compilación, e intenta descubrir qué módulos pueden ser habilitados " "examinando los módulos y archivos de cabecera en el sistema. Si un módulo " "está configurado en :file:`Modules/Setup`, el script :file:`setup.py` no " -"intentará compilar ese módulo y se remitirá al contenido del archivo :file:" -"`Modules/Setup`. Esto proporciona una manera de especificar cualquier flag " -"de línea de comandos extraña o bibliotecas que se requieren para una " +"intentará compilar ese módulo y se remitirá al contenido del archivo " +":file:`Modules/Setup`. Esto proporciona una manera de especificar cualquier " +"flag de línea de comandos extraña o bibliotecas que se requieren para una " "plataforma específica." #: ../Doc/whatsnew/2.1.rst:325 msgid "" "In another far-reaching change to the build mechanism, Neil Schemenauer " "restructured things so Python now uses a single makefile that isn't " -"recursive, instead of makefiles in the top directory and in each of the :" -"file:`Python/`, :file:`Parser/`, :file:`Objects/`, and :file:`Modules/` " +"recursive, instead of makefiles in the top directory and in each of the " +":file:`Python/`, :file:`Parser/`, :file:`Objects/`, and :file:`Modules/` " "subdirectories. This makes building Python faster and also makes hacking " "the Makefiles clearer and simpler." msgstr "" "En otro cambio de gran alcance en el mecanismo de construcción, Neil " "Schemenauer reestructuró las cosas para que Python ahora utilice un único " "makefile que no es recursivo, en lugar de makefiles en el directorio " -"superior y en cada uno de los subdirectorios :file:`Python/`, :file:`Parser/" -"`, :file:`Objects/`, y :file:`Modules/`. Esto hace que la construcción de " -"Python sea más rápida y también hace que el hackeo de los Makefiles sea más " -"claro y sencillo." +"superior y en cada uno de los subdirectorios :file:`Python/`, " +":file:`Parser/`, :file:`Objects/`, y :file:`Modules/`. Esto hace que la " +"construcción de Python sea más rápida y también hace que el hackeo de los " +"Makefiles sea más claro y sencillo." #: ../Doc/whatsnew/2.1.rst:335 msgid ":pep:`229` - Using Distutils to Build Python" @@ -765,8 +788,8 @@ msgid "" "Weak references, available through the :mod:`weakref` module, are a minor " "but useful new data type in the Python programmer's toolbox." msgstr "" -"Las referencias débiles, disponibles a través del módulo :mod:`weakref`, son " -"un nuevo tipo de datos menor pero útil en la caja de herramientas del " +"Las referencias débiles, disponibles a través del módulo :mod:`weakref`, son" +" un nuevo tipo de datos menor pero útil en la caja de herramientas del " "programador de Python." #: ../Doc/whatsnew/2.1.rst:347 @@ -774,8 +797,8 @@ msgid "" "Storing a reference to an object (say, in a dictionary or a list) has the " "side effect of keeping that object alive forever. There are a few specific " "cases where this behaviour is undesirable, object caches being the most " -"common one, and another being circular references in data structures such as " -"trees." +"common one, and another being circular references in data structures such as" +" trees." msgstr "" "Almacenar una referencia a un objeto (por ejemplo, en un diccionario o una " "lista) tiene el efecto secundario de mantener ese objeto vivo para siempre. " @@ -790,8 +813,8 @@ msgid "" "in a dictionary::" msgstr "" "Por ejemplo, considere una función de memoización que almacena en caché los " -"resultados de otra función ``f(x)`` almacenando el argumento de la función y " -"su resultado en un diccionario::" +"resultados de otra función ``f(x)`` almacenando el argumento de la función y" +" su resultado en un diccionario::" #: ../Doc/whatsnew/2.1.rst:356 msgid "" @@ -807,23 +830,33 @@ msgid "" "\n" " return retval" msgstr "" +"_cache = {}\n" +"def memoize(x):\n" +"if _cache.has_key(x):\n" +"return _cache[x]\n" +"\n" +"retval = f(x)\n" +"\n" +"# Almacenar en caché el objeto devuelto\n" +"_cache[x] = retval\n" +"\n" +"return retval" #: ../Doc/whatsnew/2.1.rst:368 -#, fuzzy msgid "" "This version works for simple things such as integers, but it has a side " -"effect; the ``_cache`` dictionary holds a reference to the return values, so " -"they'll never be deallocated until the Python process exits and cleans up. " +"effect; the ``_cache`` dictionary holds a reference to the return values, so" +" they'll never be deallocated until the Python process exits and cleans up. " "This isn't very noticeable for integers, but if :func:`!f` returns an " "object, or a data structure that takes up a lot of memory, this can be a " "problem." msgstr "" -"Esta versión funciona para cosas simples como los enteros, pero tiene un " -"efecto secundario; el diccionario ``_cache`` mantiene una referencia a los " -"valores retornados, por lo que nunca serán desocupados hasta que el proceso " -"de Python salga y se limpie. Esto no es muy notable para los enteros, pero " -"si :func:`f` retorna un objeto, o una estructura de datos que ocupa mucha " -"memoria, esto puede ser un problema." +"Esta versión funciona para cosas simples como números enteros, pero tiene un" +" efecto secundario: el diccionario ``_cache`` contiene una referencia a los " +"valores de retorno, por lo que nunca se desasignarán hasta que el proceso de" +" Python salga y limpie. Esto no es muy notorio para los números enteros, " +"pero si :func:`!f` devuelve un objeto o una estructura de datos que ocupa " +"mucha memoria, esto puede ser un problema." #: ../Doc/whatsnew/2.1.rst:374 msgid "" @@ -846,13 +879,12 @@ msgstr "" "objeto referenciado, o ``None`` si el objeto ya no existe." #: ../Doc/whatsnew/2.1.rst:382 -#, fuzzy msgid "" "This makes it possible to write a :func:`!memoize` function whose cache " "doesn't keep objects alive, by storing weak references in the cache. ::" msgstr "" -"Esto hace posible escribir una función :func:`memoize` cuya caché no " -"mantenga objetos vivos, almacenando referencias débiles en la caché. ::" +"Esto permite escribir una función :func:`!memoize` cuyo caché no mantiene " +"vivos los objetos, almacenando referencias débiles en el caché. ::" #: ../Doc/whatsnew/2.1.rst:385 msgid "" @@ -871,9 +903,22 @@ msgid "" "\n" " return retval" msgstr "" +"_cache = {}\n" +"def memoize(x):\n" +"if _cache.has_key(x):\n" +"obj = _cache[x]()\n" +"# Si el objeto de referencia débil aún existe,\n" +"# lo devuelve\n" +"if obj no es None: return obj\n" +"\n" +"retval = f(x)\n" +"\n" +"# Almacena en caché una referencia débil\n" +"_cache[x] = weakref.ref(retval)\n" +"\n" +"return retval" #: ../Doc/whatsnew/2.1.rst:400 -#, fuzzy msgid "" "The :mod:`weakref` module also allows creating proxy objects which behave " "like weak references --- an object referenced only by proxy objects is " @@ -884,12 +929,12 @@ msgid "" "raised. ::" msgstr "" "El módulo :mod:`weakref` también permite crear objetos proxy que se " -"comportan como referencias débiles --- un objeto referenciado sólo por " -"objetos proxy es desasignado - pero en lugar de requerir una llamada " -"explícita para recuperar el objeto, el proxy reenvía de forma transparente " -"todas las operaciones al objeto mientras éste siga existiendo. Si el objeto " -"es desocupado, el intento de usar un proxy causará una excepción :exc:" -"`weakref.ReferenceError`. ::" +"comportan como referencias débiles (un objeto al que sólo hacen referencia " +"objetos proxy se desasigna), pero en lugar de requerir una llamada explícita" +" para recuperar el objeto, el proxy reenvía de forma transparente todas las " +"operaciones al objeto mientras éste siga existiendo. Si se desasigna el " +"objeto, intentar usar un proxy provocará que se genere una excepción " +":exc:`!weakref.ReferenceError`. ::" #: ../Doc/whatsnew/2.1.rst:407 msgid "" @@ -899,6 +944,11 @@ msgid "" "del obj\n" "proxy.attr # raises weakref.ReferenceError" msgstr "" +"proxy = weakref.proxy(obj)\n" +"proxy.attr # Equivalente a obj.attr\n" +"proxy.meth() # Equivalente a obj.meth()\n" +"del obj\n" +"proxy.attr # lanza weakref.ReferenceError" #: ../Doc/whatsnew/2.1.rst:416 msgid ":pep:`205` - Weak References" @@ -913,30 +963,29 @@ msgid "PEP 232: Function Attributes" msgstr "PEP 232: Atributos de la función" #: ../Doc/whatsnew/2.1.rst:425 -#, fuzzy msgid "" "In Python 2.1, functions can now have arbitrary information attached to " -"them. People were often using docstrings to hold information about functions " -"and methods, because the :attr:`~function.__doc__` attribute was the only " +"them. People were often using docstrings to hold information about functions" +" and methods, because the :attr:`~function.__doc__` attribute was the only " "way of attaching any information to a function. For example, in the Zope " "web application server, functions are marked as safe for public access by " -"having a docstring, and in John Aycock's SPARK parsing framework, docstrings " -"hold parts of the BNF grammar to be parsed. This overloading is " +"having a docstring, and in John Aycock's SPARK parsing framework, docstrings" +" hold parts of the BNF grammar to be parsed. This overloading is " "unfortunate, since docstrings are really intended to hold a function's " "documentation; for example, it means you can't properly document functions " "intended for private use in Zope." msgstr "" -"En Python 2.1, las funciones ahora pueden tener información arbitraria " -"adjunta a ellas. La gente solía utilizar docstrings para mantener la " -"información sobre las funciones y los métodos, porque el atributo " -"``__doc__`` era la única manera de adjuntar cualquier información a una " -"función. Por ejemplo, en el servidor de aplicaciones web Zope, las funciones " -"se marcan como seguras para el acceso público teniendo un docstring, y en el " -"marco de análisis SPARK de John Aycock, los docstrings contienen partes de " -"la gramática BNF para ser analizada. Esta sobrecarga es desafortunada, ya " -"que los docstrings están realmente pensados para contener la documentación " -"de una función; por ejemplo, significa que no puedes documentar " -"adecuadamente las funciones destinadas al uso privado en Zope." +"En Python 2.1, las funciones pueden tener información arbitraria adjunta. La" +" gente solía usar cadenas de documentación para guardar información sobre " +"funciones y métodos, porque el atributo :attr:`~function.__doc__` era la " +"única forma de adjuntar información a una función. Por ejemplo, en el " +"servidor de aplicaciones web Zope, las funciones se marcan como seguras para" +" el acceso público al tener una cadena de documentación, y en el marco de " +"análisis SPARK de John Aycock, las cadenas de documentación contienen partes" +" de la gramática BNF que se analizarán. Esta sobrecarga es desafortunada, ya" +" que las cadenas de documentación están realmente pensadas para guardar la " +"documentación de una función; por ejemplo, significa que no se pueden " +"documentar adecuadamente las funciones destinadas a un uso privado en Zope." #: ../Doc/whatsnew/2.1.rst:436 msgid "" @@ -954,24 +1003,28 @@ msgid "" "f.secure = 1\n" "f.grammar = \"A ::= B (C D)*\"" msgstr "" +"def f(): pass\n" +"\n" +"f.publish = 1\n" +"f.secure = 1\n" +"f.grammar = \"A ::= B (C D)*\"" #: ../Doc/whatsnew/2.1.rst:445 -#, fuzzy msgid "" -"The dictionary containing attributes can be accessed as the function's :attr:" -"`~function.__dict__`. Unlike the :attr:`~type.__dict__` attribute of class " -"instances, in functions you can actually assign a new dictionary to :attr:" -"`~function.__dict__`, though the new value is restricted to a regular Python " -"dictionary; you *can't* be tricky and set it to a :class:`!UserDict` " +"The dictionary containing attributes can be accessed as the function's " +":attr:`~function.__dict__`. Unlike the :attr:`~type.__dict__` attribute of " +"class instances, in functions you can actually assign a new dictionary to " +":attr:`~function.__dict__`, though the new value is restricted to a regular " +"Python dictionary; you *can't* be tricky and set it to a :class:`!UserDict` " "instance, or any other random object that behaves like a mapping." msgstr "" -"Se puede acceder al diccionario que contiene los atributos como :attr:" -"`~objeto.__dict__` de la función. A diferencia del atributo :attr:`~objeto." -"__dict__` de las instancias de clase, en las funciones se puede asignar un " -"nuevo diccionario a :attr:`~objeto.__dict__`, aunque el nuevo valor está " -"restringido a un diccionario normal de Python; no se puede ser complicado y " -"establecerlo como una instancia de :class:`UserDict`, o cualquier otro " -"objeto aleatorio que se comporte como un mapeo." +"Se puede acceder al diccionario que contiene los atributos como " +":attr:`~function.__dict__` de la función. A diferencia del atributo " +":attr:`~type.__dict__` de las instancias de clase, en las funciones se puede" +" asignar un nuevo diccionario a :attr:`~function.__dict__`, aunque el nuevo " +"valor está restringido a un diccionario Python normal; *can't* puede ser " +"astuto y establecerlo en una instancia :class:`!UserDict` o cualquier otro " +"objeto aleatorio que se comporte como una asignación." #: ../Doc/whatsnew/2.1.rst:455 msgid ":pep:`232` - Function Attributes" @@ -989,25 +1042,26 @@ msgstr "" #: ../Doc/whatsnew/2.1.rst:464 msgid "" -"Some operating systems have filesystems that are case-insensitive, MacOS and " -"Windows being the primary examples; on these systems, it's impossible to " +"Some operating systems have filesystems that are case-insensitive, MacOS and" +" Windows being the primary examples; on these systems, it's impossible to " "distinguish the filenames ``FILE.PY`` and ``file.py``, even though they do " "store the file's name in its original case (they're case-preserving, too)." msgstr "" "Algunos sistemas operativos tienen sistemas de archivos que no distinguen " "entre mayúsculas y minúsculas, siendo MacOS y Windows los principales " "ejemplos; en estos sistemas, es imposible distinguir los nombres de archivo " -"``FILE.PY`` y ``file.py``, aunque almacenan el nombre del archivo en su caso " -"original (también preservan las mayúsculas)." +"``FILE.PY`` y ``file.py``, aunque almacenan el nombre del archivo en su caso" +" original (también preservan las mayúsculas)." #: ../Doc/whatsnew/2.1.rst:469 msgid "" "In Python 2.1, the :keyword:`import` statement will work to simulate case-" "sensitivity on case-insensitive platforms. Python will now search for the " "first case-sensitive match by default, raising an :exc:`ImportError` if no " -"such file is found, so ``import file`` will not import a module named ``FILE." -"PY``. Case-insensitive matching can be requested by setting the :envvar:" -"`PYTHONCASEOK` environment variable before starting the Python interpreter." +"such file is found, so ``import file`` will not import a module named " +"``FILE.PY``. Case-insensitive matching can be requested by setting the " +":envvar:`PYTHONCASEOK` environment variable before starting the Python " +"interpreter." msgstr "" "En Python 2.1, la sentencia :keyword:`import` funcionará para simular la " "distinción entre mayúsculas y minúsculas en plataformas que no las " @@ -1030,8 +1084,8 @@ msgid "" "be called instead of :func:`repr`. For example, you can set it to a special " "pretty-printing function::" msgstr "" -"Cuando se utiliza el intérprete de Python de forma interactiva, la salida de " -"los comandos se muestra utilizando la función incorporada :func:`repr`. En " +"Cuando se utiliza el intérprete de Python de forma interactiva, la salida de" +" los comandos se muestra utilizando la función incorporada :func:`repr`. En " "Python 2.1, la variable :func:`sys.displayhook` puede establecerse a un " "objeto invocable que será llamado en lugar de :func:`repr`. Por ejemplo, " "puede establecerla a una función especial de impresión bonita::" @@ -1050,6 +1104,17 @@ msgid "" "[1, 2, 3, ]\n" ">>>" msgstr "" +">>> # Crea una estructura de datos recursiva\n" +"... L = [1,2,3]\n" +">>> L.append(L)\n" +">>> L # Muestra la salida predeterminada de Python\n" +"[1, 2, 3, [...]]\n" +">>> # Usa pprint.pprint() como función de visualización\n" +"... import sys, pprint\n" +">>> sys.displayhook = pprint.pprint\n" +">>> L\n" +"[1, 2, 3, ]\n" +">>>" #: ../Doc/whatsnew/2.1.rst:503 msgid ":pep:`217` - Display Hook for Interactive Use" @@ -1076,8 +1141,8 @@ msgstr "" #: ../Doc/whatsnew/2.1.rst:516 msgid "" -"Extension types can now set the type flag ``Py_TPFLAGS_CHECKTYPES`` in their " -"``PyTypeObject`` structure to indicate that they support the new coercion " +"Extension types can now set the type flag ``Py_TPFLAGS_CHECKTYPES`` in their" +" ``PyTypeObject`` structure to indicate that they support the new coercion " "model. In such extension types, the numeric slot functions can no longer " "assume that they'll be passed two arguments of the same type; instead they " "may be passed two arguments of differing types, and can then perform their " @@ -1092,8 +1157,8 @@ msgid "" "object's numeric methods)." msgstr "" "Los tipos de extensión pueden ahora establecer el indicador de tipo " -"``Py_TPFLAGS_CHECKTYPES`` en su estructura ``PyTypeObject`` para indicar que " -"soportan el nuevo modelo de coerción. En tales tipos de extensión, las " +"``Py_TPFLAGS_CHECKTYPES`` en su estructura ``PyTypeObject`` para indicar que" +" soportan el nuevo modelo de coerción. En tales tipos de extensión, las " "funciones numéricas de ranura ya no pueden asumir que se les pasarán dos " "argumentos del mismo tipo; en su lugar, se les pueden pasar dos argumentos " "de tipos diferentes, y entonces pueden realizar su propia coerción interna. " @@ -1103,8 +1168,8 @@ msgstr "" "probadas, y quizás puedan manejar la operación; si el otro tipo también " "retorna ``Py_NotImplemented``, entonces se levantará un :exc:`TypeError`Los " "métodos numéricos escritos en Python también pueden retornar " -"``Py_NotImplemented``, haciendo que el intérprete actúe como si el método no " -"existiera (tal vez lanzando un :exc:`TypeError`, tal vez probando los " +"``Py_NotImplemented``, haciendo que el intérprete actúe como si el método no" +" existiera (tal vez lanzando un :exc:`TypeError`, tal vez probando los " "métodos numéricos de otro objeto)." #: ../Doc/whatsnew/2.1.rst:535 @@ -1113,13 +1178,13 @@ msgstr ":pep:`208` - Reformulación del modelo de coerción" #: ../Doc/whatsnew/2.1.rst:534 msgid "" -"Written and implemented by Neil Schemenauer, heavily based upon earlier work " -"by Marc-André Lemburg. Read this to understand the fine points of how " +"Written and implemented by Neil Schemenauer, heavily based upon earlier work" +" by Marc-André Lemburg. Read this to understand the fine points of how " "numeric operations will now be processed at the C level." msgstr "" "Escrito e implementado por Neil Schemenauer, basado en gran medida en el " -"trabajo anterior de Marc-André Lemburg. Léalo para entender los puntos finos " -"de cómo las operaciones numéricas serán ahora procesadas en el nivel C." +"trabajo anterior de Marc-André Lemburg. Léalo para entender los puntos finos" +" de cómo las operaciones numéricas serán ahora procesadas en el nivel C." #: ../Doc/whatsnew/2.1.rst:542 msgid "PEP 241: Metadata in Python Packages" @@ -1130,28 +1195,28 @@ msgid "" "A common complaint from Python users is that there's no single catalog of " "all the Python modules in existence. T. Middleton's Vaults of Parnassus at " "``www.vex.net/parnassus/`` (retired in February 2009, `available in the " -"Internet Archive Wayback Machine `_) was the largest catalog of Python modules, " -"but registering software at the Vaults is optional, and many people did not " -"bother." +"Internet Archive Wayback Machine " +"`_)" +" was the largest catalog of Python modules, but registering software at the " +"Vaults is optional, and many people did not bother." msgstr "" "Una queja común de los usuarios de Python es que no existe un solo catálogo " "de todos los módulos de Python existentes. T. Middleton's Vault of " "Parnassus en ``www.vex.net/parnassus/`` (borrado en febrero de 2009, " -"`disponible en Internet Archive Wayback Machine `_) fue uno de los mayores " -"catálogos de módulos de Python, pero registrar software en los archivos es " -"opcional, y a mucha gente no le importó." +"`disponible en Internet Archive Wayback Machine " +"`_)" +" fue uno de los mayores catálogos de módulos de Python, pero registrar " +"software en los archivos es opcional, y a mucha gente no le importó." #: ../Doc/whatsnew/2.1.rst:552 msgid "" "As a first small step toward fixing the problem, Python software packaged " -"using the Distutils :command:`sdist` command will include a file named :file:" -"`PKG-INFO` containing information about the package such as its name, " +"using the Distutils :command:`sdist` command will include a file named " +":file:`PKG-INFO` containing information about the package such as its name, " "version, and author (metadata, in cataloguing terminology). :pep:`241` " -"contains the full list of fields that can be present in the :file:`PKG-INFO` " -"file. As people began to package their software using Python 2.1, more and " -"more packages will include metadata, making it possible to build automated " +"contains the full list of fields that can be present in the :file:`PKG-INFO`" +" file. As people began to package their software using Python 2.1, more and" +" more packages will include metadata, making it possible to build automated " "cataloguing systems and experiment with them. With the result experience, " "perhaps it'll be possible to design a really good catalog and then build " "support for it into Python 2.2. For example, the Distutils :command:`sdist` " @@ -1159,15 +1224,15 @@ msgid "" "would automatically upload your package to a catalog server." msgstr "" "Como primer pequeño paso para solucionar el problema, el software de Python " -"empaquetado con el comando :command:`sdist` de Distutils incluirá un archivo " -"llamado :file:`PKG-INFO` que contiene información sobre el paquete, como su " -"nombre, versión y autor (metadatos, en terminología de catalogación). :pep:" -"`241` contiene la lista completa de campos que pueden estar presentes en el " -"archivo :file:`PKG-INFO`A medida que la gente empiece a empaquetar su " -"software usando Python 2.1, más y más paquetes incluirán metadatos, haciendo " -"posible construir sistemas de catalogación automatizados y experimentar con " -"ellosCon la experiencia resultante, tal vez sea posible diseñar un catálogo " -"realmente bueno y luego construir soporte para él en Python 2.2. Por " +"empaquetado con el comando :command:`sdist` de Distutils incluirá un archivo" +" llamado :file:`PKG-INFO` que contiene información sobre el paquete, como su" +" nombre, versión y autor (metadatos, en terminología de catalogación). " +":pep:`241` contiene la lista completa de campos que pueden estar presentes " +"en el archivo :file:`PKG-INFO`A medida que la gente empiece a empaquetar su " +"software usando Python 2.1, más y más paquetes incluirán metadatos, haciendo" +" posible construir sistemas de catalogación automatizados y experimentar con" +" ellosCon la experiencia resultante, tal vez sea posible diseñar un catálogo" +" realmente bueno y luego construir soporte para él en Python 2.2. Por " "ejemplo, los comandos Distutils :command:`sdist` y :command:`bdist_\\*` " "podrían soportar una opción ``upload`` que subiera automáticamente tu " "paquete a un servidor de catálogos." @@ -1178,11 +1243,11 @@ msgid "" "not using Python 2.1, since a new release of the Distutils will be made for " "users of earlier Python versions. Version 1.0.2 of the Distutils includes " "the changes described in :pep:`241`, as well as various bugfixes and " -"enhancements. It will be available from the Distutils SIG at https://www." -"python.org/community/sigs/current/distutils-sig/." +"enhancements. It will be available from the Distutils SIG at " +"https://www.python.org/community/sigs/current/distutils-sig/." msgstr "" -"Puedes empezar a crear paquetes que contengan :file:`PKG-INFO` incluso si no " -"estás usando Python 2.1, ya que se hará una nueva versión de las Distutils " +"Puedes empezar a crear paquetes que contengan :file:`PKG-INFO` incluso si no" +" estás usando Python 2.1, ya que se hará una nueva versión de las Distutils " "para los usuarios de versiones anteriores de PythonLa versión 1.0.2 de las " "Distutils incluye los cambios descritos en :pep:`241`, así como varias " "correcciones de errores y mejoras. Estará disponible en el SIG de Distutils " @@ -1198,8 +1263,8 @@ msgstr ":pep:`243` - Mecanismo de carga del repositorio de módulos" #: ../Doc/whatsnew/2.1.rst:578 msgid "" -"Written by Sean Reifschneider, this draft PEP describes a proposed mechanism " -"for uploading Python packages to a central server." +"Written by Sean Reifschneider, this draft PEP describes a proposed mechanism" +" for uploading Python packages to a central server." msgstr "" "Escrito por Sean Reifschneider, este borrador de PEP describe un mecanismo " "propuesto para subir paquetes de Python a un servidor central." @@ -1209,21 +1274,21 @@ msgid "New and Improved Modules" msgstr "Módulos nuevos y mejorados" #: ../Doc/whatsnew/2.1.rst:587 -#, fuzzy msgid "" "Ka-Ping Yee contributed two new modules: :mod:`!inspect.py`, a module for " "getting information about live Python code, and :mod:`!pydoc.py`, a module " -"for interactively converting docstrings to HTML or text. As a bonus, :file:" -"`Tools/scripts/pydoc`, which is now automatically installed, uses :mod:`!" -"pydoc.py` to display documentation given a Python module, package, or class " -"name. For example, ``pydoc xml.dom`` displays the following::" -msgstr "" -"Ka-Ping Yee ha contribuido con dos nuevos módulos: :mod:`inspect.py`, un " -"módulo para obtener información sobre código Python en vivo, y :mod:`pydoc." -"py`, un módulo para convertir interactivamente docstrings a HTML o texto. " -"Además, :file:`Tools/scripts/pydoc`, que se instala automáticamente, " -"utiliza :mod:`pydoc.py` para mostrar la documentación de un módulo, paquete " -"o clase de Python. Por ejemplo, ``pydoc xml.dom`` muestra lo siguiente::" +"for interactively converting docstrings to HTML or text. As a bonus, " +":file:`Tools/scripts/pydoc`, which is now automatically installed, uses " +":mod:`!pydoc.py` to display documentation given a Python module, package, or" +" class name. For example, ``pydoc xml.dom`` displays the following::" +msgstr "" +"Ka-Ping Yee contribuyó con dos nuevos módulos: :mod:`!inspect.py`, un módulo" +" para obtener información sobre código Python en vivo, y :mod:`!pydoc.py`, " +"un módulo para convertir de forma interactiva cadenas de documentación a " +"HTML o texto. Como beneficio adicional, :file:`Tools/scripts/pydoc`, que " +"ahora se instala automáticamente, utiliza :mod:`!pydoc.py` para mostrar la " +"documentación según el nombre de un módulo, paquete o clase de Python. Por " +"ejemplo, ``pydoc xml.dom`` muestra lo siguiente:" #: ../Doc/whatsnew/2.1.rst:594 msgid "" @@ -1242,125 +1307,138 @@ msgid "" " This package contains the following modules:\n" " ..." msgstr "" +"Documentación de la biblioteca de Python: paquete xml.dom en xml\n" +"\n" +"NOMBRE\n" +"xml.dom: implementación del modelo de objetos de documento del W3C para Python.\n" +"\n" +"ARCHIVO\n" +"/usr/local/lib/python2.1/xml/dom/__init__.pyc\n" +"\n" +"DESCRIPCIÓN\n" +"La asignación de Python del modelo de objetos de documento está documentada en la\n" +"Referencia de la biblioteca de Python en la sección sobre el paquete xml.dom.\n" +"\n" +"Este paquete contiene los siguientes módulos:\n" +"..." #: ../Doc/whatsnew/2.1.rst:609 msgid "" -":file:`pydoc` also includes a Tk-based interactive help browser. :file:" -"`pydoc` quickly becomes addictive; try it out!" +":file:`pydoc` also includes a Tk-based interactive help browser. " +":file:`pydoc` quickly becomes addictive; try it out!" msgstr "" ":file:`pydoc` también incluye un navegador de ayuda interactiva basado en " "Tk. :file:`pydoc` se vuelve rápidamente adictivo; ¡pruébalo!" #: ../Doc/whatsnew/2.1.rst:612 -#, fuzzy msgid "" "Two different modules for unit testing were added to the standard library. " "The :mod:`doctest` module, contributed by Tim Peters, provides a testing " -"framework based on running embedded examples in docstrings and comparing the " -"results against the expected output. PyUnit, contributed by Steve Purcell, " -"is a unit testing framework inspired by JUnit, which was in turn an " -"adaptation of Kent Beck's Smalltalk testing framework. See https://pyunit." -"sourceforge.net/ for more information about PyUnit." -msgstr "" -"Se han añadido a la biblioteca estándar dos módulos diferentes para realizar " -"pruebas unitarias. El módulo :mod:`doctest`, aportado por Tim Peters, " -"proporciona un marco de pruebas basado en la ejecución de ejemplos " -"incrustados en docstrings y la comparación de los resultados con la salida " -"esperadaPyUnit, contribuido por Steve Purcell, es un marco de pruebas " -"unitarias inspirado en JUnit, que a su vez fue una adaptación del marco de " -"pruebas Smalltalk de Kent BeckConsulte http://pyunit.sourceforge.net/ para " +"framework based on running embedded examples in docstrings and comparing the" +" results against the expected output. PyUnit, contributed by Steve Purcell," +" is a unit testing framework inspired by JUnit, which was in turn an " +"adaptation of Kent Beck's Smalltalk testing framework. See " +"https://pyunit.sourceforge.net/ for more information about PyUnit." +msgstr "" +"Se agregaron dos módulos diferentes para pruebas unitarias a la biblioteca " +"estándar. El módulo :mod:`doctest`, aportado por Tim Peters, proporciona un " +"marco de pruebas basado en la ejecución de ejemplos integrados en cadenas de" +" documentación y la comparación de los resultados con la salida esperada. " +"PyUnit, aportado por Steve Purcell, es un marco de pruebas unitarias " +"inspirado en JUnit, que a su vez fue una adaptación del marco de pruebas " +"Smalltalk de Kent Beck. Consulte https://pyunit.sourceforge.net/ para " "obtener más información sobre PyUnit." #: ../Doc/whatsnew/2.1.rst:620 -#, fuzzy -msgid "" -"The :mod:`difflib` module contains a class, :class:`~difflib." -"SequenceMatcher`, which compares two sequences and computes the changes " -"required to transform one sequence into the other. For example, this module " -"can be used to write a tool similar to the Unix :program:`diff` program, and " -"in fact the sample program :file:`Tools/scripts/ndiff.py` demonstrates how " -"to write such a script." -msgstr "" -"El módulo :mod:`difflib` contiene una clase, :class:`SequenceMatcher`, que " -"compara dos secuencias y calcula los cambios necesarios para transformar una " -"secuencia en la otra. Por ejemplo, este módulo puede utilizarse para " -"escribir una herramienta similar al programa :program:`diff` de Unix, y de " -"hecho el programa de ejemplo :file:`Tools/scripts/ndiff.py` demuestra cómo " -"escribir un script de este tipo." +msgid "" +"The :mod:`difflib` module contains a class, " +":class:`~difflib.SequenceMatcher`, which compares two sequences and computes" +" the changes required to transform one sequence into the other. For " +"example, this module can be used to write a tool similar to the Unix " +":program:`diff` program, and in fact the sample program " +":file:`Tools/scripts/ndiff.py` demonstrates how to write such a script." +msgstr "" +"El módulo :mod:`difflib` contiene una clase, " +":class:`~difflib.SequenceMatcher`, que compara dos secuencias y calcula los " +"cambios necesarios para transformar una secuencia en la otra. Por ejemplo, " +"este módulo se puede utilizar para escribir una herramienta similar al " +"programa :program:`diff` de Unix y, de hecho, el programa de ejemplo " +":file:`Tools/scripts/ndiff.py` demuestra cómo escribir un script de este " +"tipo." #: ../Doc/whatsnew/2.1.rst:626 msgid "" -":mod:`curses.panel`, a wrapper for the panel library, part of ncurses and of " -"SYSV curses, was contributed by Thomas Gellekum. The panel library provides " -"windows with the additional feature of depth. Windows can be moved higher or " -"lower in the depth ordering, and the panel library figures out where panels " -"overlap and which sections are visible." +":mod:`curses.panel`, a wrapper for the panel library, part of ncurses and of" +" SYSV curses, was contributed by Thomas Gellekum. The panel library " +"provides windows with the additional feature of depth. Windows can be moved " +"higher or lower in the depth ordering, and the panel library figures out " +"where panels overlap and which sections are visible." msgstr "" ":mod:`curses.panel`, una envoltura para la biblioteca de paneles, parte de " -"ncurses y de curses SYSV, fue contribuida por Thomas Gellekum. La biblioteca " -"de paneles proporciona ventanas con la característica adicional de la " +"ncurses y de curses SYSV, fue contribuida por Thomas Gellekum. La biblioteca" +" de paneles proporciona ventanas con la característica adicional de la " "profundidad. Las ventanas pueden ser movidas más arriba o más abajo en el " "ordenamiento de la profundidad, y la librería de paneles calcula dónde se " "superponen los paneles y qué secciones son visibles." #: ../Doc/whatsnew/2.1.rst:632 -#, fuzzy msgid "" "The PyXML package has gone through a few releases since Python 2.0, and " "Python 2.1 includes an updated version of the :mod:`xml` package. Some of " -"the noteworthy changes include support for Expat 1.2 and later versions, the " -"ability for Expat parsers to handle files in any encoding supported by " +"the noteworthy changes include support for Expat 1.2 and later versions, the" +" ability for Expat parsers to handle files in any encoding supported by " "Python, and various bugfixes for SAX, DOM, and the :mod:`!minidom` module." msgstr "" "El paquete PyXML ha pasado por varias versiones desde Python 2.0, y Python " "2.1 incluye una versión actualizada del paquete :mod:`xml`. Algunos de los " -"cambios notables incluyen soporte para Expat 1.2 y versiones posteriores, la " -"capacidad de los analizadores Expat para manejar archivos en cualquier " -"codificación soportada por Python, y varias correcciones de errores para " -"SAX, DOM, y el módulo :mod:`minidom`." +"cambios notables incluyen compatibilidad con Expat 1.2 y versiones " +"posteriores, la capacidad de los analizadores de Expat para manejar archivos" +" en cualquier codificación compatible con Python y varias correcciones de " +"errores para SAX, DOM y el módulo :mod:`!minidom`." #: ../Doc/whatsnew/2.1.rst:638 msgid "" -"Ping also contributed another hook for handling uncaught exceptions. :func:" -"`sys.excepthook` can be set to a callable object. When an exception isn't " -"caught by any :keyword:`try`...\\ :keyword:`except` blocks, the exception " -"will be passed to :func:`sys.excepthook`, which can then do whatever it " -"likes. At the Ninth Python Conference, Ping demonstrated an application for " -"this hook: printing an extended traceback that not only lists the stack " -"frames, but also lists the function arguments and the local variables for " -"each frame." +"Ping also contributed another hook for handling uncaught exceptions. " +":func:`sys.excepthook` can be set to a callable object. When an exception " +"isn't caught by any :keyword:`try`...\\ :keyword:`except` blocks, the " +"exception will be passed to :func:`sys.excepthook`, which can then do " +"whatever it likes. At the Ninth Python Conference, Ping demonstrated an " +"application for this hook: printing an extended traceback that not only " +"lists the stack frames, but also lists the function arguments and the local " +"variables for each frame." msgstr "" "Ping también contribuyó con otro gancho para manejar excepciones no " "detectadas. :func:`sys.excepthook` se puede configurar como un objeto " -"invocable. Cuando una excepción no es detectada por ningún bloque :keyword:" -"`try`...\\ :keyword:`except`, la excepción se pasará a :func:`sys." -"excepthook`, que puede hacer lo que quiera. En la Novena Conferencia de " -"Python, Ping demostró una aplicación para este gancho: imprimir un rastreo " -"extendido que no solo enumera los marcos de la pila, sino que también " -"enumera los argumentos de la función y las variables locales para cada marco." +"invocable. Cuando una excepción no es detectada por ningún bloque " +":keyword:`try`...\\ :keyword:`except`, la excepción se pasará a " +":func:`sys.excepthook`, que puede hacer lo que quiera. En la Novena " +"Conferencia de Python, Ping demostró una aplicación para este gancho: " +"imprimir un rastreo extendido que no solo enumera los marcos de la pila, " +"sino que también enumera los argumentos de la función y las variables " +"locales para cada marco." #: ../Doc/whatsnew/2.1.rst:646 -#, fuzzy msgid "" "Various functions in the :mod:`time` module, such as :func:`~time.asctime` " "and :func:`~time.localtime`, require a floating-point argument containing " -"the time in seconds since the epoch. The most common use of these functions " -"is to work with the current time, so the floating-point argument has been " +"the time in seconds since the epoch. The most common use of these functions" +" is to work with the current time, so the floating-point argument has been " "made optional; when a value isn't provided, the current time will be used. " "For example, log file entries usually need a string containing the current " "time; in Python 2.1, ``time.asctime()`` can be used, instead of the " "lengthier ``time.asctime(time.localtime(time.time()))`` that was previously " "required." msgstr "" -"Varias funciones del módulo :mod:`time`, como :func:`asctime` y :func:" -"`localtime`, requieren un argumento de punto flotante que contiene el tiempo " -"en segundos desde la época. El uso más común de estas funciones es trabajar " -"con la hora actual, por lo que el argumento de punto flotante se ha hecho " -"opcional; cuando no se proporciona un valor, se utilizará la hora actual. " -"Por ejemplo, las entradas de archivos de registro suelen necesitar una " -"cadena que contenga la hora actual; en Python 2.1, se puede utilizar ``time." -"asctime()``, en lugar del más largo ``time.asctime(time.localtime(time." -"time()))`` que se requería anteriormente." +"Varias funciones del módulo :mod:`time`, como :func:`~time.asctime` y " +":func:`~time.localtime`, requieren un argumento de punto flotante que " +"contenga el tiempo en segundos desde la época. El uso más común de estas " +"funciones es trabajar con la hora actual, por lo que el argumento de punto " +"flotante se ha vuelto opcional; cuando no se proporciona un valor, se " +"utilizará la hora actual. Por ejemplo, las entradas de archivos de registro " +"generalmente necesitan una cadena que contenga la hora actual; en Python " +"2.1, se puede utilizar ``time.asctime()``, en lugar del " +"``time.asctime(time.localtime(time.time()))`` más extenso que se requería " +"anteriormente." #: ../Doc/whatsnew/2.1.rst:655 msgid "This change was proposed and implemented by Thomas Wouters." @@ -1371,8 +1449,8 @@ msgid "" "The :mod:`ftplib` module now defaults to retrieving files in passive mode, " "because passive mode is more likely to work from behind a firewall. This " "request came from the Debian bug tracking system, since other Debian " -"packages use :mod:`ftplib` to retrieve files and then don't work from behind " -"a firewall. It's deemed unlikely that this will cause problems for anyone, " +"packages use :mod:`ftplib` to retrieve files and then don't work from behind" +" a firewall. It's deemed unlikely that this will cause problems for anyone, " "because Netscape defaults to passive mode and few people complain, but if " "passive mode is unsuitable for your application or network setup, call " "``set_pasv(0)`` on FTP objects to disable passive mode." @@ -1382,8 +1460,8 @@ msgstr "" "un cortafuegos. Esta petición vino del sistema de seguimiento de errores de " "Debian, ya que otros paquetes de Debian utilizan :mod:`ftplib` para " "recuperar archivos y entonces no funcionan desde detrás de un cortafuegos. " -"Se considera poco probable que esto cause problemas a nadie, porque Netscape " -"utiliza por defecto el modo pasivo y poca gente se queja, pero si el modo " +"Se considera poco probable que esto cause problemas a nadie, porque Netscape" +" utiliza por defecto el modo pasivo y poca gente se queja, pero si el modo " "pasivo no es adecuado para su aplicación o configuración de red, llame a " "``set_pasv(0)`` en los objetos FTP para desactivar el modo pasivo." @@ -1392,36 +1470,36 @@ msgid "" "Support for raw socket access has been added to the :mod:`socket` module, " "contributed by Grant Edwards." msgstr "" -"Se ha añadido soporte para el acceso a sockets sin procesar en el módulo :" -"mod:`socket`, aportado por Grant Edwards." +"Se ha añadido soporte para el acceso a sockets sin procesar en el módulo " +":mod:`socket`, aportado por Grant Edwards." #: ../Doc/whatsnew/2.1.rst:669 msgid "" "The :mod:`pstats` module now contains a simple interactive statistics " -"browser for displaying timing profiles for Python programs, invoked when the " -"module is run as a script. Contributed by Eric S. Raymond." +"browser for displaying timing profiles for Python programs, invoked when the" +" module is run as a script. Contributed by Eric S. Raymond." msgstr "" -"El módulo :mod:`pstats` contiene ahora un sencillo navegador de estadísticas " -"interactivo para mostrar los perfiles de tiempo de los programas de Python, " -"invocado cuando el módulo se ejecuta como un script. Contribuido por Eric S. " -"Raymond." +"El módulo :mod:`pstats` contiene ahora un sencillo navegador de estadísticas" +" interactivo para mostrar los perfiles de tiempo de los programas de Python," +" invocado cuando el módulo se ejecuta como un script. Contribuido por Eric " +"S. Raymond." #: ../Doc/whatsnew/2.1.rst:673 msgid "" "A new implementation-dependent function, ``sys._getframe([depth])``, has " -"been added to return a given frame object from the current call stack. :func:" -"`sys._getframe` returns the frame at the top of the call stack; if the " -"optional integer argument *depth* is supplied, the function returns the " -"frame that is *depth* calls below the top of the stack. For example, ``sys." -"_getframe(1)`` returns the caller's frame object." -msgstr "" -"Se ha agregado una nueva función dependiente de la implementación, ``sys." -"_getframe([depth])``, para devolver un objeto de marco determinado de la " -"pila de llamadas actual. :func:`sys._getframe` devuelve el marco en la parte " -"superior de la pila de llamadas; si el argumento de entero opcional *depth* " -"is supplied, the function returns the frame that is *depth* llama debajo de " -"la parte superior de la pila. Por ejemplo, ``sys._getframe(1)`` devuelve el " -"objeto de trama de la persona que llama." +"been added to return a given frame object from the current call stack. " +":func:`sys._getframe` returns the frame at the top of the call stack; if " +"the optional integer argument *depth* is supplied, the function returns the " +"frame that is *depth* calls below the top of the stack. For example, " +"``sys._getframe(1)`` returns the caller's frame object." +msgstr "" +"Se ha agregado una nueva función dependiente de la implementación, " +"``sys._getframe([depth])``, para devolver un objeto de marco determinado de " +"la pila de llamadas actual. :func:`sys._getframe` devuelve el marco en la " +"parte superior de la pila de llamadas; si el argumento de entero opcional " +"*depth* is supplied, the function returns the frame that is *depth* llama " +"debajo de la parte superior de la pila. Por ejemplo, ``sys._getframe(1)`` " +"devuelve el objeto de trama de la persona que llama." #: ../Doc/whatsnew/2.1.rst:680 msgid "" @@ -1450,98 +1528,96 @@ msgstr "" "ambas cifras estén subestimadas. Algunos de los cambios más notables son:" #: ../Doc/whatsnew/2.1.rst:695 -#, fuzzy msgid "" "A specialized object allocator is now optionally available, that should be " "faster than the system :c:func:`malloc` and have less memory overhead. The " "allocator uses C's :c:func:`!malloc` function to get large pools of memory, " "and then fulfills smaller memory requests from these pools. It can be " -"enabled by providing the :option:`!--with-pymalloc` option to the :program:" -"`configure` script; see :file:`Objects/obmalloc.c` for the implementation " -"details." +"enabled by providing the :option:`!--with-pymalloc` option to the " +":program:`configure` script; see :file:`Objects/obmalloc.c` for the " +"implementation details." msgstr "" "Ahora está disponible opcionalmente un asignador de objetos especializado, " -"que debería ser más rápido que el sistema :func:`malloc` y tener menos " -"sobrecarga de memoria. El asignador utiliza la función :func:`malloc` de C " -"para obtener grandes reservas de memoria, y luego satisface las peticiones " -"de memoria más pequeñas de estas reservas. Puede activarse proporcionando la " -"opción :option:`!--with-pymalloc` al script :program:`configure`; véase :" -"file:`Objects/obmalloc.c` para los detalles de la implementación." +"que debería ser más rápido que el :c:func:`malloc` del sistema y tener menos" +" sobrecarga de memoria. El asignador utiliza la función :c:func:`!malloc` de" +" C para obtener grandes grupos de memoria y luego cumple con las solicitudes" +" de memoria más pequeñas de estos grupos. Se puede habilitar proporcionando " +"la opción :option:`!--with-pymalloc` al script :program:`configure`; " +"consulte :file:`Objects/obmalloc.c` para obtener los detalles de " +"implementación." #: ../Doc/whatsnew/2.1.rst:702 -#, fuzzy msgid "" "Authors of C extension modules should test their code with the object " -"allocator enabled, because some incorrect code may break, causing core dumps " -"at runtime. There are a bunch of memory allocation functions in Python's C " -"API that have previously been just aliases for the C library's :c:func:" -"`malloc` and :c:func:`free`, meaning that if you accidentally called " -"mismatched functions, the error wouldn't be noticeable. When the object " +"allocator enabled, because some incorrect code may break, causing core dumps" +" at runtime. There are a bunch of memory allocation functions in Python's C " +"API that have previously been just aliases for the C library's " +":c:func:`malloc` and :c:func:`free`, meaning that if you accidentally called" +" mismatched functions, the error wouldn't be noticeable. When the object " "allocator is enabled, these functions aren't aliases of :c:func:`!malloc` " "and :c:func:`!free` any more, and calling the wrong function to free memory " -"will get you a core dump. For example, if memory was allocated using :c:" -"macro:`PyMem_New`, it has to be freed using :c:func:`PyMem_Del`, not :c:func:" -"`!free`. A few modules included with Python fell afoul of this and had to " -"be fixed; doubtless there are more third-party modules that will have the " -"same problem." -msgstr "" -"Los autores de los módulos de extensión de C deberían probar su código con " -"el asignador de objetos activado, porque algún código incorrecto puede " -"romperse, causando volcados del núcleo en tiempo de ejecución. Hay un montón " +"will get you a core dump. For example, if memory was allocated using " +":c:macro:`PyMem_New`, it has to be freed using :c:func:`PyMem_Del`, not " +":c:func:`!free`. A few modules included with Python fell afoul of this and " +"had to be fixed; doubtless there are more third-party modules that will have" +" the same problem." +msgstr "" +"Los autores de módulos de extensión de C deberían probar su código con el " +"asignador de objetos habilitado, porque algún código incorrecto puede " +"fallar, causando volcados de memoria en tiempo de ejecución. Hay un montón " "de funciones de asignación de memoria en la API de C de Python que " -"anteriormente eran sólo alias de :func:`malloc` y :func:`free` de la " +"anteriormente eran solo alias para :c:func:`malloc` y :c:func:`free` de la " "biblioteca de C, lo que significa que si accidentalmente llamabas a " -"funciones que no coincidían, el error no se notaba. Cuando el asignador de " -"objetos está habilitado, estas funciones ya no son alias de :func:`malloc` " -"y :func:`free`, y llamar a la función incorrecta para liberar memoria te " -"hará un volcado del núcleo. Por ejemplo, si la memoria fue asignada usando :" -"func:`PyMem_New`, tiene que ser liberada usando :func:`PyMem_Del`, no :func:" -"`free`. Unos cuantos módulos incluidos en Python han caído en la trampa y " -"han tenido que ser corregidos; sin duda hay más módulos de terceros que " -"tendrán el mismo problema." +"funciones que no coinciden, el error no sería perceptible. Cuando el " +"asignador de objetos está habilitado, estas funciones ya no son alias de " +":c:func:`!malloc` y :c:func:`!free`, y llamar a la función incorrecta para " +"liberar memoria te dará un volcado de memoria. Por ejemplo, si la memoria se" +" asignó usando :c:macro:`PyMem_New`, debe liberarse usando " +":c:func:`PyMem_Del`, no :c:func:`!free`. Algunos módulos incluidos con " +"Python tuvieron problemas con esto y tuvieron que ser reparados; sin duda " +"hay más módulos de terceros que tendrán el mismo problema." #: ../Doc/whatsnew/2.1.rst:715 msgid "The object allocator was contributed by Vladimir Marangozov." msgstr "El asignador de objetos fue aportado por Vladimir Marangozov." #: ../Doc/whatsnew/2.1.rst:717 -#, fuzzy msgid "" "The speed of line-oriented file I/O has been improved because people often " "complain about its lack of speed, and because it's often been used as a " "naïve benchmark. The :meth:`readline` method of file objects has therefore " -"been rewritten to be much faster. The exact amount of the speedup will vary " -"from platform to platform depending on how slow the C library's :c:func:`!" -"getc` was, but is around 66%, and potentially much faster on some particular " -"operating systems. Tim Peters did much of the benchmarking and coding for " -"this change, motivated by a discussion in comp.lang.python." +"been rewritten to be much faster. The exact amount of the speedup will vary" +" from platform to platform depending on how slow the C library's " +":c:func:`!getc` was, but is around 66%, and potentially much faster on some " +"particular operating systems. Tim Peters did much of the benchmarking and " +"coding for this change, motivated by a discussion in comp.lang.python." msgstr "" "La velocidad de la E/S de archivos orientada a líneas se ha mejorado porque " -"la gente suele quejarse de su falta de velocidad, y porque a menudo se ha " -"utilizado como referencia ingenua. El método :meth:`readline` de los objetos " -"de archivo ha sido reescrito para ser mucho más rápido. La cantidad exacta " -"de la aceleración variará de una plataforma a otra dependiendo de la " -"lentitud del método :func:`getc` de la biblioteca C, pero es alrededor del " -"66%, y potencialmente mucho más rápido en algunos sistemas operativos " -"concretos. Tim Peters hizo gran parte de la evaluación comparativa y la " -"codificación de este cambio, motivado por una discusión en comp.lang.python." +"la gente suele quejarse de su falta de velocidad y porque a menudo se ha " +"utilizado como un punto de referencia ingenuo. Por lo tanto, el método " +":meth:`readline` de objetos de archivo se ha reescrito para que sea mucho " +"más rápido. La cantidad exacta de la aceleración variará de una plataforma a" +" otra dependiendo de lo lento que fuera el :c:func:`!getc` de la biblioteca " +"C, pero es de alrededor del 66% y potencialmente mucho más rápido en algunos" +" sistemas operativos particulares. Tim Peters realizó gran parte de la " +"evaluación comparativa y la codificación para este cambio, motivado por una " +"discusión en comp.lang.python." #: ../Doc/whatsnew/2.1.rst:726 -#, fuzzy -msgid "" -"A new module and method for file objects was also added, contributed by Jeff " -"Epler. The new method, :meth:`!xreadlines`, is similar to the existing :func:" -"`!xrange` built-in. :func:`!xreadlines` returns an opaque sequence object " -"that only supports being iterated over, reading a line on every iteration " -"but not reading the entire file into memory as the existing :meth:`!" -"readlines` method does. You'd use it like this::" -msgstr "" -"También se ha añadido un nuevo módulo y método para objetos de archivo, " -"aportado por Jeff Epler. El nuevo método, :meth:`xreadlines`, es similar al " -"ya existente :func:`xrange` incorporado. :func:`xreadlines` retorna un " -"objeto de secuencia opaco que sólo admite ser iterado, leyendo una línea en " -"cada iteración pero no leyendo todo el archivo en memoria como hace el " -"método :meth:`readlines` existente. Se usaría así::" +msgid "" +"A new module and method for file objects was also added, contributed by Jeff" +" Epler. The new method, :meth:`!xreadlines`, is similar to the existing " +":func:`!xrange` built-in. :func:`!xreadlines` returns an opaque sequence " +"object that only supports being iterated over, reading a line on every " +"iteration but not reading the entire file into memory as the existing " +":meth:`!readlines` method does. You'd use it like this::" +msgstr "" +"También se agregó un nuevo módulo y método para objetos de archivo, aportado" +" por Jeff Epler. El nuevo método, :meth:`!xreadlines`, es similar al " +":func:`!xrange` existente. :func:`!xreadlines` devuelve un objeto de " +"secuencia opaca que solo admite iteraciones, leyendo una línea en cada " +"iteración, pero no leyendo el archivo completo en la memoria como lo hace el" +" método :meth:`!readlines` existente. Lo usaría de esta manera:" #: ../Doc/whatsnew/2.1.rst:733 msgid "" @@ -1549,19 +1625,21 @@ msgid "" " # ... do something for each line ...\n" " ..." msgstr "" +"para la línea en sys.stdin.xreadlines():\n" +"# ... hacer algo para cada línea ...\n" +"..." #: ../Doc/whatsnew/2.1.rst:737 msgid "" "For a fuller discussion of the line I/O changes, see the python-dev summary " -"for January 1--15, 2001 at https://mail.python.org/pipermail/python-dev/2001-" -"January/." +"for January 1--15, 2001 at https://mail.python.org/pipermail/python-" +"dev/2001-January/." msgstr "" "Para una discusión más completa de los cambios en la línea de E/S, véase el " -"resumen de python-dev del 1 al 15 de enero de 2001 en https://mail.python." -"org/pipermail/python-dev/2001-January/." +"resumen de python-dev del 1 al 15 de enero de 2001 en " +"https://mail.python.org/pipermail/python-dev/2001-January/." #: ../Doc/whatsnew/2.1.rst:740 -#, fuzzy msgid "" "A new method, :meth:`~dict.popitem`, was added to dictionaries to enable " "destructively iterating through the contents of a dictionary; this can be " @@ -1571,26 +1649,26 @@ msgid "" "was implemented mostly by Tim Peters and Guido van Rossum, after a " "suggestion and preliminary patch by Moshe Zadka." msgstr "" -"Se ha añadido un nuevo método, :meth:`popitem`, a los diccionarios para " +"Se agregó un nuevo método, :meth:`~dict.popitem`, a los diccionarios para " "permitir la iteración destructiva a través del contenido de un diccionario; " "esto puede ser más rápido para diccionarios grandes porque no hay necesidad " -"de construir una lista que contenga todas las claves o valores. ``D." -"popitem()`` elimina un par aleatorio ``(key, value)`` del diccionario ``D`` " -"y lo retorna como una 2-tupla. Esto fue implementado principalmente por Tim " -"Peters y Guido van Rossum, después de una sugerencia y un parche preliminar " -"de Moshe Zadka." +"de construir una lista que contenga todas las claves o valores. " +"``D.popitem()`` elimina un par aleatorio ``(key, value)`` del diccionario " +"``D`` y lo devuelve como una tupla de 2. Esto fue implementado " +"principalmente por Tim Peters y Guido van Rossum, después de una sugerencia " +"y un parche preliminar de Moshe Zadka." #: ../Doc/whatsnew/2.1.rst:748 msgid "" "Modules can now control which names are imported when ``from module import " -"*`` is used, by defining an ``__all__`` attribute containing a list of names " -"that will be imported. One common complaint is that if the module imports " +"*`` is used, by defining an ``__all__`` attribute containing a list of names" +" that will be imported. One common complaint is that if the module imports " "other modules such as :mod:`sys` or :mod:`string`, ``from module import *`` " -"will add them to the importing module's namespace. To fix this, simply list " -"the public names in ``__all__``::" +"will add them to the importing module's namespace. To fix this, simply list" +" the public names in ``__all__``::" msgstr "" -"Ahora los módulos pueden controlar qué nombres se importan cuando se utiliza " -"``from module import *``, definiendo un atributo ``__all__`` que contiene " +"Ahora los módulos pueden controlar qué nombres se importan cuando se utiliza" +" ``from module import *``, definiendo un atributo ``__all__`` que contiene " "una lista de nombres que se importarán. Una queja común es que si el módulo " "importa otros módulos como :mod:`sys` o :mod:`string`, ``from module import " "*`` los añadirá al espacio de nombres del módulo importador. Para arreglar " @@ -1601,6 +1679,8 @@ msgid "" "# List public names\n" "__all__ = ['Database', 'open']" msgstr "" +"# Lista de nombres públicos\n" +"__all__ = ['Base de datos', 'abierta']" #: ../Doc/whatsnew/2.1.rst:758 msgid "" @@ -1623,8 +1703,8 @@ msgid "" msgstr "" "Al aplicar :func:`repr` a las cadenas, antes se utilizaban escapes octales " "para los caracteres no imprimibles; por ejemplo, una nueva línea era " -"``'\\012'``. Esto era un vestigio de la ascendencia de Python en C, pero hoy " -"en día el octal tiene muy poco uso práctico. Ka-Ping Yee sugirió usar " +"``'\\012'``. Esto era un vestigio de la ascendencia de Python en C, pero hoy" +" en día el octal tiene muy poco uso práctico. Ka-Ping Yee sugirió usar " "escapes hexadecimales en lugar de octales, y usar los escapes ``\\n``, " "``\\t``, ``\\r`` para los caracteres apropiados, e implementó este nuevo " "formato." @@ -1641,23 +1721,22 @@ msgstr "" "compilador realizada por Jeremy Hylton." #: ../Doc/whatsnew/2.1.rst:773 -#, fuzzy msgid "" -"C extensions which import other modules have been changed to use :c:func:" -"`PyImport_ImportModule`, which means that they will use any import hooks " -"that have been installed. This is also encouraged for third-party " +"C extensions which import other modules have been changed to use " +":c:func:`PyImport_ImportModule`, which means that they will use any import " +"hooks that have been installed. This is also encouraged for third-party " "extensions that need to import some other module from C code." msgstr "" -"Las extensiones C que importan otros módulos han sido cambiadas para usar :" -"func:`PyImport_ImportModule`, lo que significa que usarán cualquier gancho " -"de importación que haya sido instalado. Esto también se fomenta para las " -"extensiones de terceros que necesitan importar algún otro módulo desde el " +"Las extensiones C que importan otros módulos se han modificado para utilizar" +" :c:func:`PyImport_ImportModule`, lo que significa que utilizarán cualquier " +"gancho de importación que se haya instalado. Esto también se recomienda para" +" extensiones de terceros que necesiten importar algún otro módulo desde el " "código C." #: ../Doc/whatsnew/2.1.rst:778 msgid "" -"The size of the Unicode character database was shrunk by another 340K thanks " -"to Fredrik Lundh." +"The size of the Unicode character database was shrunk by another 340K thanks" +" to Fredrik Lundh." msgstr "" "El tamaño de la base de datos de caracteres Unicode se redujo en otros 340K " "gracias a Fredrik Lundh." @@ -1675,12 +1754,12 @@ msgstr "" #: ../Doc/whatsnew/2.1.rst:785 msgid "" "And there's the usual list of minor bugfixes, minor memory leaks, docstring " -"edits, and other tweaks, too lengthy to be worth itemizing; see the CVS logs " -"for the full details if you want them." +"edits, and other tweaks, too lengthy to be worth itemizing; see the CVS logs" +" for the full details if you want them." msgstr "" -"Y hay la lista habitual de correcciones de errores menores, fugas de memoria " -"menores, ediciones de docstrings, y otros ajustes, demasiado largos para que " -"valga la pena detallarlos; vea los registros de CVS para los detalles " +"Y hay la lista habitual de correcciones de errores menores, fugas de memoria" +" menores, ediciones de docstrings, y otros ajustes, demasiado largos para " +"que valga la pena detallarlos; vea los registros de CVS para los detalles " "completos si los quiere." #: ../Doc/whatsnew/2.1.rst:793 @@ -1689,12 +1768,12 @@ msgstr "Agradecimientos" #: ../Doc/whatsnew/2.1.rst:795 msgid "" -"The author would like to thank the following people for offering suggestions " -"on various drafts of this article: Graeme Cross, David Goodger, Jay Graves, " -"Michael Hudson, Marc-André Lemburg, Fredrik Lundh, Neil Schemenauer, Thomas " -"Wouters." +"The author would like to thank the following people for offering suggestions" +" on various drafts of this article: Graeme Cross, David Goodger, Jay Graves," +" Michael Hudson, Marc-André Lemburg, Fredrik Lundh, Neil Schemenauer, Thomas" +" Wouters." msgstr "" "El autor desea agradecer a las siguientes personas sus sugerencias sobre " -"varios borradores de este artículo: Graeme Cross, David Goodger, Jay Graves, " -"Michael Hudson, Marc-André Lemburg, Fredrik Lundh, Neil Schemenauer, Thomas " -"Wouters." +"varios borradores de este artículo: Graeme Cross, David Goodger, Jay Graves," +" Michael Hudson, Marc-André Lemburg, Fredrik Lundh, Neil Schemenauer, Thomas" +" Wouters." diff --git a/whatsnew/2.2.po b/whatsnew/2.2.po index 45081c5b23..52b25502c8 100644 --- a/whatsnew/2.2.po +++ b/whatsnew/2.2.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2024-01-21 18:26+0100\n" "Last-Translator: Claudia Millan \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.2.rst:3 @@ -101,7 +101,6 @@ msgstr "" "algunos comentarios." #: ../Doc/whatsnew/2.2.rst:52 -#, fuzzy msgid "" "A long time ago I wrote a web page listing flaws in Python's design. One of " "the most significant flaws was that it's impossible to subclass Python types " @@ -112,15 +111,15 @@ msgid "" "there's lots of C code that expects a regular Python list and won't accept " "a :class:`~collections.UserList` instance." msgstr "" -"Hace mucho tiempo escribí una página web que enumeraba los defectos en el " -"diseño de Python. Una de las fallas más importantes fue que es imposible " -"subclasificar tipos de Python implementados en C. En particular, no es " -"posible subclasificar tipos incorporados, por lo que no se puede solo " -"subclasificar, digamos, listas para agregar un solo método útil para ellos. " -"El módulo :mod:`UserList` proporciona una clase que admite todos los métodos " -"de listas y que puede subclasificarse aún más, pero hay mucho código C que " -"espera una lista normal de Python y no aceptará una instancia :class:" -"`UserList`." +"Hace mucho tiempo escribí una página web en la que enumeraba los defectos de " +"diseño de Python. Uno de los defectos más importantes era que resulta " +"imposible crear subclases de los tipos de Python implementados en C. En " +"particular, no es posible crear subclases de los tipos integrados, por lo " +"que no se pueden crear subclases de, por ejemplo, listas para añadirles un " +"único método útil. El módulo :mod:`!UserList` proporciona una clase que " +"admite todos los métodos de las listas y que se puede subclasificar aún más, " +"pero hay mucho código C que espera una lista de Python normal y no acepta " +"una instancia de :class:`~collections.UserList`." #: ../Doc/whatsnew/2.2.rst:61 msgid "" @@ -148,7 +147,6 @@ msgstr "" "de instancia disponibles en versiones anteriores de Python." #: ../Doc/whatsnew/2.2.rst:70 -#, fuzzy msgid "" "It's also possible to automatically call methods on accessing or setting an " "instance attribute by using a new mechanism called :dfn:`properties`. Many " @@ -156,12 +154,12 @@ msgid "" "instead, making the resulting code simpler and faster. As a small side " "benefit, attributes can now have docstrings, too." msgstr "" -"También es posible llamar automáticamente métodos al acceder o configurar un " -"atributo de instancia mediante el uso de un nuevo mecanismo llamado :dfn:" -"`properties`. Muchos usos de :meth:`__getattr__` se pueden reescribir para " -"usar propiedades en su lugar, haciendo que el código resultante sea más " -"simple y rápido. Como un pequeño beneficio secundario, ahora también los " -"atributos pueden tener docstrings." +"También es posible llamar automáticamente a métodos al acceder o configurar " +"un atributo de instancia mediante un nuevo mecanismo llamado :dfn:" +"`properties`. Muchos usos de :meth:`~object.__getattr__` se pueden " +"reescribir para utilizar propiedades en su lugar, lo que hace que el código " +"resultante sea más simple y rápido. Como pequeño beneficio adicional, los " +"atributos ahora también pueden tener cadenas de documentación." #: ../Doc/whatsnew/2.2.rst:76 msgid "" @@ -267,9 +265,12 @@ msgid "" " ...\n" " ..." msgstr "" +"clase C(objeto):\n" +"def __init__(self):\n" +"...\n" +"..." #: ../Doc/whatsnew/2.2.rst:121 -#, fuzzy msgid "" "This means that :keyword:`class` statements that don't have any base classes " "are always classic classes in Python 2.2. (Actually you can also change " @@ -277,11 +278,11 @@ msgid "" "see :pep:`253` for the details --- but it's easier to just subclass :class:" "`object`.)" msgstr "" -"Esto significa que las declaraciones :keyword:`class` que no tienen ninguna " -"clase base siempre son clases clásicas en Python 2.2. (Realmente también " -"puedes cambiar esto configurando una variable de nivel de módulo llamada :" -"attr:`__metaclass__` --- consultar :pep:`253` para más detalles --- pero es " -"más fácil solo subclasificar :class:`object`.)" +"Esto significa que las instrucciones :keyword:`class` que no tienen ninguna " +"clase base siempre son clases clásicas en Python 2.2. (En realidad, también " +"puede cambiar esto configurando una variable a nivel de módulo llamada :attr:" +"`!__metaclass__` --- consulte :pep:`253` para obtener más detalles --- pero " +"es más fácil simplemente subclasificar :class:`object`)." #: ../Doc/whatsnew/2.2.rst:126 msgid "" @@ -303,17 +304,21 @@ msgid "" ">>> int('123')\n" "123" msgstr "" +">>> int\n" +"\n" +">>> int('123')\n" +"123" #: ../Doc/whatsnew/2.2.rst:136 -#, fuzzy msgid "" "To make the set of types complete, new type objects such as :func:`dict` " "and :func:`!file` have been added. Here's a more interesting example, " "adding a :meth:`!lock` method to file objects::" msgstr "" -"Para completar el conjunto de tipos, se agregaron nuevos objetos de tipo " -"como :func:`dict` y :func:`file`. Aquí hay un ejemplo más interesante, " -"agregando un método :meth:`lock` a los objetos de archivo::" +"Para completar el conjunto de tipos, se han añadido nuevos objetos de tipo, " +"como :func:`dict` y :func:`!file`. A continuación, se muestra un ejemplo más " +"interesante, en el que se añade un método :meth:`!lock` a los objetos de " +"archivo:" #: ../Doc/whatsnew/2.2.rst:140 msgid "" @@ -323,27 +328,30 @@ msgid "" " return fcntl.lockf(self.fileno(), operation,\n" " length, start, whence)" msgstr "" +"clase LockableFile(archivo):\n" +"def lock (self, operación, longitud=0, inicio=0, origen=0):\n" +"import fcntl\n" +"return fcntl.lockf(self.fileno(), operación,\n" +"longitud, inicio, origen)" #: ../Doc/whatsnew/2.2.rst:146 -#, fuzzy msgid "" "The now-obsolete :mod:`!posixfile` module contained a class that emulated " "all of a file object's methods and also added a :meth:`!lock` method, but " "this class couldn't be passed to internal functions that expected a built-in " "file, something which is possible with our new :class:`!LockableFile`." msgstr "" -"El módulo ahora obsoleto :mod:`posixfile` contenía una clase que emulaba " +"El módulo :mod:`!posixfile`, ahora obsoleto, contenía una clase que emulaba " "todos los métodos de un objeto de archivo y también agregaba un método :meth:" -"`lock`, pero esta clase no podía pasarse a funciones internas que esperaban " -"un archivo incorporado, algo que es posible con nuestra nueva clase :class:" -"`LockableFile`." +"`!lock`, pero esta clase no podía pasarse a funciones internas que esperaban " +"un archivo integrado, algo que es posible con nuestro nuevo :class:`!" +"LockableFile`." #: ../Doc/whatsnew/2.2.rst:153 msgid "Descriptors" msgstr "Descriptores" #: ../Doc/whatsnew/2.2.rst:155 -#, fuzzy msgid "" "In previous versions of Python, there was no consistent way to discover what " "attributes and methods were supported by an object. There were some informal " @@ -355,13 +363,13 @@ msgid "" "still be inaccurate." msgstr "" "En versiones anteriores de Python, no había una forma consistente de " -"descubrir qué atributos y métodos eran compatibles con un objeto. Había " -"algunas convenciones informales, como definir atributos :attr:`__members__` " -"y :attr:`__methods__` que eran listas de nombres, pero a menudo el autor de " -"un tipo de extensión o una clase no se molestaría en definirlos. Podrías " -"recurrir a inspeccionar el :attr:`~object.__dict__` de un objeto, pero " -"cuando la herencia de una clase o un gancho arbitrario :meth:`__getattr__` " -"estuvieran en uso, esto podría ser inexacto." +"descubrir qué atributos y métodos eran compatibles con un objeto. Existían " +"algunas convenciones informales, como definir los atributos :attr:`!" +"__members__` y :attr:`!__methods__` que eran listas de nombres, pero a " +"menudo el autor de un tipo de extensión o una clase no se molestaba en " +"definirlos. Se podía recurrir a inspeccionar el :attr:`~object.__dict__` de " +"un objeto, pero cuando se utilizaba la herencia de clase o un gancho :meth:`!" +"__getattr__` arbitrario, esto podía seguir siendo inexacto." #: ../Doc/whatsnew/2.2.rst:163 msgid "" @@ -391,9 +399,8 @@ msgid ":attr:`~definition.__name__` is the attribute's name." msgstr ":attr:`~definition.__name__` es el nombre del atributo." #: ../Doc/whatsnew/2.2.rst:174 -#, fuzzy msgid ":attr:`~definition.__doc__` is the attribute's docstring." -msgstr ":attr:`__doc__` es el docstring del atributo." +msgstr ":attr:`~definition.__doc__` es el docstring del atributo." #: ../Doc/whatsnew/2.2.rst:176 msgid "" @@ -426,9 +433,10 @@ msgid "" "descriptor = obj.__class__.x\n" "descriptor.__get__(obj)" msgstr "" +"descriptor = obj.__class__.x\n" +"descriptor.__get__(obj)" #: ../Doc/whatsnew/2.2.rst:189 -#, fuzzy msgid "" "For methods, :meth:`descriptor.__get__ ` returns a temporary " "object that's callable, and wraps up the instance and the method to be " @@ -439,14 +447,15 @@ msgid "" "functions. Class methods are passed the class of the object, but not the " "object itself. Static and class methods are defined like this::" msgstr "" -"Para los métodos, :meth:`descriptor.__get__` retorna un objeto temporal que " -"se puede llamar y contiene la instancia y el método que se llamará en él. " -"También esto es el por qué los métodos estáticos y de clase ahora son " -"posibles; tienen descriptores que contienen solo el método o el método y la " -"clase. Como una breve explicación de estos tipos nuevos de métodos, los " -"métodos estáticos no se pasan a la instancia y, por lo tanto, se asemejan a " -"funciones regulares. Los métodos de clase se pasan a la clase del objeto, " -"pero no al objeto en sí. Los métodos estáticos y de clase se definen así::" +"Para los métodos, :meth:`descriptor.__get__ ` devuelve un " +"objeto temporal que se puede llamar y envuelve la instancia y el método que " +"se llamará en él. Esta es también la razón por la que ahora son posibles los " +"métodos estáticos y los métodos de clase; tienen descriptores que envuelven " +"solo el método, o el método y la clase. Como breve explicación de estos " +"nuevos tipos de métodos, los métodos estáticos no se pasan a la instancia y, " +"por lo tanto, se parecen a las funciones normales. A los métodos de clase se " +"les pasa la clase del objeto, pero no el objeto en sí. Los métodos estáticos " +"y de clase se definen de la siguiente manera:" #: ../Doc/whatsnew/2.2.rst:199 msgid "" @@ -459,9 +468,16 @@ msgid "" " ...\n" " g = classmethod(g)" msgstr "" +"clase C(objeto):\n" +"def f(arg1, arg2):\n" +"...\n" +"f = método estático(f)\n" +"\n" +"def g(cls, arg1, arg2):\n" +"...\n" +"g = método de clase(g)" #: ../Doc/whatsnew/2.2.rst:208 -#, fuzzy msgid "" "The :func:`staticmethod` function takes the function :func:`!f`, and returns " "it wrapped up in a descriptor so it can be stored in the class object. You " @@ -469,11 +485,12 @@ msgid "" "static f``, ``defstatic f()``, or something like that) but no such syntax " "has been defined yet; that's been left for future versions of Python." msgstr "" -"La función :func:`staticmethod` toma la función :func:`f` y la retorna en un " -"descriptor para que pueda almacenarse en el objeto de clase. Puedes esperar " -"que haya una sintaxis especial para crear tales métodos (``def static f``, " -"``defstatic f()`` o algo así) pero aún no se ha definido dicha sintaxis; que " -"se ha dejado para versiones futuras de Python." +"La función :func:`staticmethod` toma la función :func:`!f` y la devuelve " +"envuelta en un descriptor para que pueda almacenarse en el objeto de clase. " +"Se podría esperar que existiera una sintaxis especial para crear dichos " +"métodos (``def static f``, ``defstatic f()`` o algo similar), pero aún no se " +"ha definido dicha sintaxis; eso se ha dejado para futuras versiones de " +"Python." #: ../Doc/whatsnew/2.2.rst:214 msgid "" @@ -508,9 +525,22 @@ msgid "" "\n" " f = eiffelmethod(f, pre_f, post_f)" msgstr "" +"from eiffel import eiffelmethod\n" +"\n" +"class C(object):\n" +"def f(self, arg1, arg2):\n" +"# La función actual\n" +"...\n" +"def pre_f(self):\n" +"# Verificar condiciones previas\n" +"...\n" +"def post_f(self):\n" +"# Verificar condiciones posteriores\n" +"...\n" +"\n" +"f = eiffelmethod(f, pre_f, post_f)" #: ../Doc/whatsnew/2.2.rst:236 -#, fuzzy msgid "" "Note that a person using the new :func:`!eiffelmethod` doesn't have to " "understand anything about descriptors. This is why I think the new features " @@ -519,13 +549,13 @@ msgid "" "the ZODB or whatever, but most users will just write code on top of the " "resulting libraries and ignore the implementation details." msgstr "" -"Toma en cuenta que una persona que usa la nueva función :func:`eiffelmethod` " -"no tiene que entender nada sobre descriptores. Esta es la razón por la que " -"creo que las nuevas características no incrementan la complejidad básica del " -"lenguaje. Habrá algunos asistentes que necesitarán conocerlo para escribir :" -"func:`eiffelmethod` o la ZODB o lo que sea, pero la mayoría de los usuarios " -"solo escribirán código sobre las bibliotecas resultantes e ignorarán los " -"detalles de implementación." +"Tenga en cuenta que una persona que utilice el nuevo :func:`!eiffelmethod` " +"no tiene por qué entender nada sobre descriptores. Por eso creo que las " +"nuevas características no aumentan la complejidad básica del lenguaje. Habrá " +"algunos expertos que necesitarán saber sobre él para escribir :func:`!" +"eiffelmethod` o ZODB o lo que sea, pero la mayoría de los usuarios " +"simplemente escribirán código sobre las bibliotecas resultantes e ignorarán " +"los detalles de implementación." #: ../Doc/whatsnew/2.2.rst:245 msgid "Multiple Inheritance: The Diamond Rule" @@ -557,9 +587,21 @@ msgid "" " \\ /\n" " class D" msgstr "" +"clase A:\n" +"^ ^ def save(self): ...\n" +"/ \\\n" +"/ \\\n" +"/ \\\n" +"/ \\\n" +"clase B clase C:\n" +"^ ^ def save(self): ...\n" +"\\ /\n" +"\\ /\n" +"\\ /\n" +"\\ /\n" +"clase D" #: ../Doc/whatsnew/2.2.rst:265 -#, fuzzy msgid "" "The lookup rule for classic classes is simple but not very smart; the base " "classes are searched depth-first, going from left to right. A reference to :" @@ -569,14 +611,13 @@ msgid "" "meth:`!save` method is saving some internal state specific to :class:`!C`, " "not calling it will result in that state never getting saved." msgstr "" -"La regla de búsqueda para clases clásicas es simple pero no muy inteligente; " -"se buscan las clases base primero en profundidad, yendo de izquierda a " -"derecha. Una referencia a :meth:`D.save` buscará las clases :class:`D`, :" -"class:`B` y luego :class:`A`, donde :meth:`save` se encontraría y " -"retornaría. :meth:`C.save` nunca se encontraría en absoluto. Esto es malo, " -"porque si el método :meth:`save` de :class:`C` está guardando algún estado " -"interno específico de :class:`C`, no llamarlo resultará en que este estado " -"nunca se guardará." +"La regla de búsqueda para las clases clásicas es simple pero no muy " +"inteligente; las clases base se buscan primero en profundidad, de izquierda " +"a derecha. Una referencia a :meth:`!D.save` buscará las clases :class:`!D`, :" +"class:`!B` y luego :class:`!A`, donde se encontraría y devolvería :meth:`!" +"save`. :meth:`!C.save` nunca se encontraría. Esto es malo, porque si el " +"método :meth:`!save` de :class:`!C` está guardando algún estado interno " +"específico de :class:`!C`, no llamarlo hará que ese estado nunca se guarde." #: ../Doc/whatsnew/2.2.rst:273 msgid "" @@ -593,33 +634,30 @@ msgstr "" "para gráficos de herencia realmente complicados.)" #: ../Doc/whatsnew/2.2.rst:278 -#, fuzzy msgid "" "List all the base classes, following the classic lookup rule and include a " "class multiple times if it's visited repeatedly. In the above example, the " "list of visited classes is [:class:`!D`, :class:`!B`, :class:`!A`, :class:`!" "C`, :class:`!A`]." msgstr "" -"Enumera todas las clases base, siguiendo la regla de búsqueda clásica e " -"incluye una clase varias veces si se visita repetidamente. En el ejemplo " -"anterior, la lista de clases visitadas es [:class:`D`, :class:`B`, :class:" -"`A`, :class:`C`, :class:`A`]." +"Enumere todas las clases base siguiendo la regla de búsqueda clásica e " +"incluya una clase varias veces si se la visita repetidamente. En el ejemplo " +"anterior, la lista de clases visitadas es [:class:`!D`, :class:`!B`, :class:" +"`!A`, :class:`!C`, :class:`!A`]." #: ../Doc/whatsnew/2.2.rst:283 -#, fuzzy msgid "" "Scan the list for duplicated classes. If any are found, remove all but one " "occurrence, leaving the *last* one in the list. In the above example, the " "list becomes [:class:`!D`, :class:`!B`, :class:`!C`, :class:`!A`] after " "dropping duplicates." msgstr "" -"Escanea la lista en busca de clases duplicadas. Si encuentra alguna, elimina " -"todas menos una, dejando la *última* en la lista. En el ejemplo anterior, la " -"lista se convierte en [:class:`D`, :class:`B`, :class:`C`, :class:`A`] " -"después de eliminar las duplicadas." +"Examine la lista en busca de clases duplicadas. Si encuentra alguna, elimine " +"todas las instancias excepto una y deje la *last* en la lista. En el ejemplo " +"anterior, la lista se convierte en [:class:`!D`, :class:`!B`, :class:`!C`, :" +"class:`!A`] después de eliminar los duplicados." #: ../Doc/whatsnew/2.2.rst:288 -#, fuzzy msgid "" "Following this rule, referring to :meth:`!D.save` will return :meth:`!C." "save`, which is the behaviour we're after. This lookup rule is the same as " @@ -631,15 +669,15 @@ msgid "" "the superclass; for example, :class:`!D`'s :meth:`!save` method would look " "like this::" msgstr "" -"Siguiendo esta regla, refiriéndose a :meth:`D.save` retornará :meth:`C." -"save`, el cual es el comportamiento que buscamos. Esta regla de búsqueda es " -"la misma que sigue Common Lisp. Una nueva función incorporada, :func:" -"`super`, proporciona una forma de acceder a las superclases de una clase sin " -"tener que volver a implementar el algoritmo de Python. La forma más " -"utilizada será ``super(class, obj)``, la cual retorna un objeto de " -"superclase vinculado. Esta forma se usará en métodos para llamar a un método " -"en la superclase; por ejemplo, el método :meth:`save` de :class:`D` se vería " -"así::" +"Siguiendo esta regla, al hacer referencia a :meth:`!D.save` se devolverá :" +"meth:`!C.save`, que es el comportamiento que buscamos. Esta regla de " +"búsqueda es la misma que sigue Common Lisp. Una nueva función incorporada, :" +"func:`super`, proporciona una forma de acceder a las superclases de una " +"clase sin tener que volver a implementar el algoritmo de Python. La forma " +"más utilizada será ``super(class, obj)``, que devuelve un objeto de " +"superclase enlazado (no el objeto de clase real). Esta forma se utilizará en " +"métodos para llamar a un método en la superclase; por ejemplo, el método :" +"meth:`!save` de :class:`!D` se vería así:" #: ../Doc/whatsnew/2.2.rst:297 msgid "" @@ -650,6 +688,12 @@ msgid "" " # Save D's private information here\n" " ..." msgstr "" +"clase D (B,C):\n" +"def save (self):\n" +"# Llamar a la superclase .save()\n" +"super(D, self).save()\n" +"# Guardar la información privada de D aquí\n" +"..." #: ../Doc/whatsnew/2.2.rst:304 msgid "" @@ -666,7 +710,6 @@ msgid "Attribute Access" msgstr "Acceso a atributos" #: ../Doc/whatsnew/2.2.rst:312 -#, fuzzy msgid "" "A fair number of sophisticated Python classes define hooks for attribute " "access using :meth:`~object.__getattr__`; most commonly this is done for " @@ -674,12 +717,12 @@ msgid "" "attribute access such as ``obj.parent`` into a method call such as ``obj." "get_parent``. Python 2.2 adds some new ways of controlling attribute access." msgstr "" -"Un buen número de clases sofisticadas de Python definen ganchos para el " -"acceso de atributos usando :meth:`__getattr__`; más comúnmente, esto se hace " -"por conveniencia, para hacer que el código sea más legible al mapear " -"automáticamente un acceso de atributo como ``obj.parent`` en una llamada de " +"Una buena cantidad de clases sofisticadas de Python definen ganchos para el " +"acceso a atributos mediante :meth:`~object.__getattr__`; lo más común es que " +"esto se haga por conveniencia, para que el código sea más legible al asignar " +"automáticamente un acceso a atributos como ``obj.parent`` a una llamada de " "método como ``obj.get_parent``. Python 2.2 agrega algunas formas nuevas de " -"controlar el acceso de atributos." +"controlar el acceso a atributos." #: ../Doc/whatsnew/2.2.rst:318 msgid "" @@ -694,7 +737,6 @@ msgstr "" "``foo`` en el diccionario de la instancia." #: ../Doc/whatsnew/2.2.rst:323 -#, fuzzy msgid "" "New-style classes also support a new method, " "``__getattribute__(attr_name)``. The difference between the two methods is " @@ -704,12 +746,11 @@ msgid "" msgstr "" "Las clases de nuevo estilo también admiten un nuevo método, " "``__getattribute__(attr_name)``. La diferencia entre los dos métodos es que :" -"meth:`__getattribute__` *siempre* se llama cada vez que se accede a " -"cualquier atributo, mientras que el antiguo :meth:`__getattr__` se llama " -"solo si no se encuentra ``foo`` en el diccionario de la instancia." +"meth:`~object.__getattribute__` se llama *always* siempre que se accede a un " +"atributo, mientras que el antiguo :meth:`~object.__getattr__` solo se llama " +"si ``foo`` no se encuentra en el diccionario de la instancia." #: ../Doc/whatsnew/2.2.rst:329 -#, fuzzy msgid "" "However, Python 2.2's support for :dfn:`properties` will often be a simpler " "way to trap attribute references. Writing a :meth:`!__getattr__` method is " @@ -722,28 +763,27 @@ msgid "" "in a sizable performance loss." msgstr "" "Sin embargo, el soporte de Python 2.2 para :dfn:`properties` será a menudo " -"una forma más simple de atrapar referencias de atributos. Escribir un " -"método :meth:`__getattr__` es complicado porque para evitar la recursividad " -"no puedes usar accesos regulares a atributos dentro de ellos, y en su lugar " -"tienes que jugar con el contenido de :attr:`~object.__dict__`. Los métodos :" -"meth:`__getattr__` también terminan siendo llamados por Python cuando busca " -"otros métodos como :meth:`__repr__` o :meth:`__coerce__`, por lo que se " -"tienen que escribirse teniendo esto en cuenta. Finalmente, llamar una " -"función en cada acceso de atributo resulta en una pérdida de rendimiento " -"considerable." +"una forma más sencilla de atrapar referencias de atributos. Escribir un " +"método :meth:`!__getattr__` es complicado porque para evitar la recursión no " +"se pueden utilizar accesos a atributos regulares dentro de ellos, y en su " +"lugar hay que jugar con el contenido de :attr:`~object.__dict__`. Los " +"métodos :meth:`~object.__getattr__` también terminan siendo llamados por " +"Python cuando comprueba otros métodos como :meth:`~object.__repr__` o :meth:" +"`!__coerce__`, y por lo tanto tienen que ser escritos con esto en mente. " +"Finalmente, llamar a una función en cada acceso a un atributo da como " +"resultado una pérdida de rendimiento considerable." #: ../Doc/whatsnew/2.2.rst:338 -#, fuzzy msgid "" ":class:`property` is a new built-in type that packages up three functions " "that get, set, or delete an attribute, and a docstring. For example, if you " "want to define a :attr:`!size` attribute that's computed, but also settable, " "you could write::" msgstr "" -":class:`property` es un nuevo tipo integrado que empaqueta tres funciones " -"obtienen, establecen o eliminan un atributo y una docstring. Por ejemplo, si " -"quieres definir un atributo :attr:`size` que se calcula, pero que también se " -"puede configurar, puedes escribir::" +":class:`property` es un nuevo tipo integrado que incluye tres funciones que " +"obtienen, establecen o eliminan un atributo y una cadena de documentación. " +"Por ejemplo, si desea definir un atributo :attr:`!size` que se calcule, pero " +"que también se pueda configurar, puede escribir:" #: ../Doc/whatsnew/2.2.rst:343 msgid "" @@ -762,9 +802,22 @@ msgid "" " None,\n" " \"Storage size of this instance\")" msgstr "" +"clase C(objeto):\n" +"def get_size (self):\n" +"result = ... computation ...\n" +"return result\n" +"def set_size (self, size):\n" +"... calcula algo en función del tamaño\n" +"y establece el estado interno de forma adecuada ...\n" +"\n" +"# Define una propiedad. El método 'eliminar este atributo'\n" +"# se define como None, por lo que el atributo\n" +"# no se puede eliminar.\n" +"size = property(get_size, set_size,\n" +"None,\n" +"\"Tamaño de almacenamiento de esta instancia\")" #: ../Doc/whatsnew/2.2.rst:358 -#, fuzzy msgid "" "That is certainly clearer and easier to write than a pair of :meth:`!" "__getattr__`/:meth:`!__setattr__` methods that check for the :attr:`!size` " @@ -773,12 +826,13 @@ msgid "" "the only ones which have to perform the work of calling a function, so " "references to other attributes run at their usual speed." msgstr "" -"Eso es ciertamente más claro y fácil de escribir que un par de métodos :meth:" -"`__getattr__`/:meth:`__setattr__` que verifican el atributo :attr:`size` y " -"lo manejan especialmente mientras recuperan todos los demás atributos :attr:" -"`~object.__dict__` de la instancia. Los accesos a :attr:`size` también son " -"los únicos que tienen que realizar el trabajo de llamar a una función, por " -"lo que las referencias a otros atributos se ejecutan a su velocidad habitual." +"Sin duda, esto es más claro y más fácil de escribir que un par de métodos :" +"meth:`!__getattr__`/:meth:`!__setattr__` que comprueban el atributo :attr:`!" +"size` y lo gestionan de forma especial mientras recuperan todos los demás " +"atributos del :attr:`~object.__dict__` de la instancia. Los accesos a :attr:" +"`!size` también son los únicos que tienen que realizar el trabajo de llamar " +"a una función, por lo que las referencias a otros atributos se ejecutan a su " +"velocidad habitual." #: ../Doc/whatsnew/2.2.rst:365 msgid "" @@ -815,6 +869,19 @@ msgid "" " File \"\", line 1, in ?\n" "AttributeError: 'C' object has no attribute 'newattr'" msgstr "" +">>> class C(object):\n" +"... __slots__ = ('template', 'name')\n" +"...\n" +">>> obj = C()\n" +">>> print obj.template\n" +"None\n" +">>> obj.template = 'Test'\n" +">>> print obj.template\n" +"Test\n" +">>> obj.newattr = None\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"\", línea 1, en ?\n" +"AttributeError: el objeto 'C' no tiene el atributo 'newattr'" #: ../Doc/whatsnew/2.2.rst:386 msgid "" @@ -841,18 +908,17 @@ msgstr "" "deberías ir para obtener una imagen más completa?" #: ../Doc/whatsnew/2.2.rst:399 -#, fuzzy msgid "" "The :ref:`descriptorhowto` is a lengthy tutorial introduction to the " "descriptor features, written by Guido van Rossum. If my description has " "whetted your appetite, go read this tutorial next, because it goes into much " "more detail about the new features while still remaining quite easy to read." msgstr "" -"https://docs.python.org/dev/howto/descriptor.html es un extenso tutorial de " -"introducción a las características del descriptor, escrito por Guido van " -"Rossum. Si mi descripción te despertó el apetito, lee este tutorial a " -"continuación, porque entra en mucho más detalle sobre las nuevas " -"características sin dejar de ser bastante fácil de leer." +":ref:`descriptorhowto` es una introducción extensa y tutorial a las " +"características del descriptor, escrita por Guido van Rossum. Si mi " +"descripción le ha abierto el apetito, lea este tutorial a continuación, " +"porque brinda mucho más detalle sobre las nuevas características y sigue " +"siendo bastante fácil de leer." #: ../Doc/whatsnew/2.2.rst:404 msgid "" @@ -903,24 +969,24 @@ msgstr "" "ser iterados por quienes los llaman." #: ../Doc/whatsnew/2.2.rst:427 -#, fuzzy msgid "" "In Python versions up to 2.1, the usual way to make ``for item in obj`` work " "is to define a :meth:`~object.__getitem__` method that looks something like " "this::" msgstr "" "En las versiones de Python hasta la 2.1, la forma habitual de hacer que " -"funcione ``for item in obj`` es definir un método :meth:`__getitem__` que se " -"parezca a esto::" +"funcione ``for item in obj`` es definir un método :meth:`~object." +"__getitem__` que se parezca a esto::" #: ../Doc/whatsnew/2.2.rst:430 msgid "" "def __getitem__(self, index):\n" " return " msgstr "" +"def __getitem__(self, index):\n" +"return " #: ../Doc/whatsnew/2.2.rst:433 -#, fuzzy msgid "" ":meth:`~object.__getitem__` is more properly used to define an indexing " "operation on an object so that you can write ``obj[5]`` to retrieve the " @@ -933,19 +999,19 @@ msgid "" "using ``file[5]`` to randomly access the sixth element will work, though it " "really should." msgstr "" -":meth:`__getitem__` se utiliza más adecuadamente para definir una operación " -"de indexación en un objeto, de modo que se puede escribir ``obj[5]`` para " -"recuperar el sexto elemento. Es un poco engañoso cuando se utiliza esto " -"sólo para soportar bucles :keyword:`for`. Considere algún objeto tipo " -"archivo que quiera ser revisado en bucle; el parámetro *index* no tiene " -"sentido, ya que la clase probablemente asume que se hará una serie de " -"llamadas a :meth:`__getitem__` con *index* incrementándose en uno cada vez. " -"En otras palabras, la presencia del método :meth:`__getitem__` no significa " -"que el uso de ``file[5]`` para acceder al azar al sexto elemento vaya a " -"funcionar, aunque realmente debería hacerlo." +":meth:`~object.__getitem__` se utiliza de forma más adecuada para definir " +"una operación de indexación en un objeto, de modo que pueda escribir " +"``obj[5]`` para recuperar el sexto elemento. Es un poco engañoso cuando se " +"utiliza esto solo para admitir bucles :keyword:`for`. Considere un objeto " +"similar a un archivo que desea ser recorrido en bucle; el parámetro *index* " +"esencialmente no tiene sentido, ya que la clase probablemente asume que se " +"realizará una serie de llamadas :meth:`~object.__getitem__` con *index* " +"incrementándose en uno cada vez. En otras palabras, la presencia del método :" +"meth:`~object.__getitem__` no significa que el uso de ``file[5]`` para " +"acceder aleatoriamente al sexto elemento funcionará, aunque realmente " +"debería funcionar." #: ../Doc/whatsnew/2.2.rst:443 -#, fuzzy msgid "" "In Python 2.2, iteration can be implemented separately, and :meth:`~object." "__getitem__` methods can be limited to classes that really do support random " @@ -955,17 +1021,16 @@ msgid "" "sentinel)`` returns an iterator that will invoke the callable object *C* " "until it returns *sentinel* to signal that the iterator is done." msgstr "" -"En Python 2.2, la iteración puede implementarse por separado, y los métodos :" -"meth:`__getitem__` pueden limitarse a las clases que realmente soportan el " -"acceso aleatorio. La idea básica de los iteradores es simple. Una nueva " -"función incorporada, ``iter(obj)`` o ``iter(C, sentinel)``, se utiliza para " -"obtener un iterador. ``iter(obj)`` retorna un iterador para el objeto *obj*, " -"mientras que ``iter(C, sentinel)`` retorna un iterador que invocará al " -"objeto invocable *C* hasta que retorne *sentinel* para señalar que el " -"iterador ha terminado." +"En Python 2.2, la iteración se puede implementar por separado y los métodos :" +"meth:`~object.__getitem__` se pueden limitar a las clases que realmente " +"admiten el acceso aleatorio. La idea básica de los iteradores es simple. Se " +"utiliza una nueva función incorporada, ``iter(obj)`` o ``iter(C, " +"sentinel)``, para obtener un iterador. ``iter(obj)`` devuelve un iterador " +"para el objeto *obj*, mientras que ``iter(C, sentinel)`` devuelve un " +"iterador que invocará el objeto invocable *C* hasta que devuelva *sentinel* " +"para indicar que el iterador ha finalizado." #: ../Doc/whatsnew/2.2.rst:451 -#, fuzzy msgid "" "Python classes can define an :meth:`!__iter__` method, which should create " "and return a new iterator for the object; if the object is its own iterator, " @@ -975,13 +1040,13 @@ msgid "" "extension types that want to behave as iterators can define a :c:member:" "`~PyTypeObject.tp_iternext` function." msgstr "" -"Las clases de Python pueden definir un método :meth:`__iter__`, que debe " -"crear y retornar un nuevo iterador para el objeto; si el objeto es su propio " -"iterador, este método puede simplemente retornar ``self``. En particular, " -"los iteradores suelen ser sus propios iteradores. Los tipos de extensión " -"implementados en C pueden implementar una función :c:member:`~PyTypeObject." -"tp_iter` para retornar un iterador, y los tipos de extensión que quieran " -"comportarse como iteradores pueden definir una función :c:member:" +"Las clases de Python pueden definir un método :meth:`!__iter__`, que debe " +"crear y devolver un nuevo iterador para el objeto; si el objeto es su propio " +"iterador, este método puede devolver simplemente ``self``. En particular, " +"los iteradores normalmente serán sus propios iteradores. Los tipos de " +"extensión implementados en C pueden implementar una función :c:member:" +"`~PyTypeObject.tp_iter` para devolver un iterador, y los tipos de extensión " +"que quieran comportarse como iteradores pueden definir una función :c:member:" "`~PyTypeObject.tp_iternext`." #: ../Doc/whatsnew/2.2.rst:458 @@ -1014,9 +1079,23 @@ msgid "" "StopIteration\n" ">>>" msgstr "" +">>> L = [1,2,3]\n" +">>> i = iter(L)\n" +">>> print i\n" +"\n" +">>> i.next()\n" +"1\n" +">>> i.next()\n" +"2\n" +">>> i.next()\n" +"3\n" +">>> i.next()\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"\", línea 1, en ?\n" +"StopIteration\n" +">>>" #: ../Doc/whatsnew/2.2.rst:479 -#, fuzzy msgid "" "In 2.2, Python's :keyword:`for` statement no longer expects a sequence; it " "expects something for which :func:`iter` will return an iterator. For " @@ -1027,14 +1106,14 @@ msgid "" "changed to use the iterator protocol. This means you can do things like " "this::" msgstr "" -"En 2.2, la sentencia :keyword:`for` de Python ya no espera una secuencia; " -"espera algo para lo que :func:`iter` retornará un iterador. Por " -"compatibilidad y comodidad, se construye automáticamente un iterador para " -"las secuencias que no implementan :meth:`__iter__` o una ranura :c:member:" -"`~PyTypeObject.tp_iter`, por lo que ``for i in [1,2,3]`` seguirá " -"funcionando. Dondequiera que el intérprete de Python haga un bucle sobre " -"una secuencia, se ha cambiado para utilizar el protocolo de los iteradores. " -"Esto significa que puedes hacer cosas como esta::" +"En la versión 2.2, la declaración :keyword:`for` de Python ya no espera una " +"secuencia, sino algo para lo que :func:`iter` devolverá un iterador. Para " +"mayor comodidad y compatibilidad con versiones anteriores, se construye " +"automáticamente un iterador para las secuencias que no implementan :meth:`!" +"__iter__` o una ranura :c:member:`~PyTypeObject.tp_iter`, por lo que ``for i " +"in [1,2,3]`` seguirá funcionando. Siempre que el intérprete de Python " +"recorra una secuencia, se ha modificado para utilizar el protocolo de " +"iterador. Esto significa que puede hacer cosas como esta:" #: ../Doc/whatsnew/2.2.rst:487 msgid "" @@ -1044,6 +1123,11 @@ msgid "" ">>> a,b,c\n" "(1, 2, 3)" msgstr "" +">>> L = [1,2,3]\n" +">>> i = iter(L)\n" +">>> a,b,c = i\n" +">>> a,b,c\n" +"(1, 2, 3)" #: ../Doc/whatsnew/2.2.rst:493 msgid "" @@ -1074,9 +1158,24 @@ msgid "" "Dec 12\n" "Oct 10" msgstr "" +">>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\n" +"... 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}\n" +">>> for key in m: print key, m[key]\n" +"...\n" +"Mar 3\n" +"Feb 2\n" +"Aug 8\n" +"Sep 9\n" +"May 5\n" +"Jun 6\n" +"Jul 7\n" +"Jan 1\n" +"Apr 4\n" +"Nov 11\n" +"Dec 12\n" +"Oct 10" #: ../Doc/whatsnew/2.2.rst:513 -#, fuzzy msgid "" "That's just the default behaviour. If you want to iterate over keys, " "values, or key/value pairs, you can explicitly call the :meth:`!iterkeys`, :" @@ -1084,12 +1183,12 @@ msgid "" "iterator. In a minor related change, the :keyword:`in` operator now works on " "dictionaries, so ``key in dict`` is now equivalent to ``dict.has_key(key)``." msgstr "" -"Este es el comportamiento por defecto. Si quieres iterar sobre claves, " -"valores o pares clave/valor, puedes llamar explícitamente a los métodos :" -"meth:`iterkeys`, :meth:`itervalues` o :meth:`iteritems` para obtener un " -"iterador apropiado. En un cambio menor relacionado, el operador :keyword:" -"`in` ahora funciona en los diccionarios, por lo que ``key in dict`` es ahora " -"equivalente a ``dict.has_key(key)``." +"Ese es simplemente el comportamiento predeterminado. Si desea iterar sobre " +"claves, valores o pares clave/valor, puede llamar explícitamente a los " +"métodos :meth:`!iterkeys`, :meth:`!itervalues` o :meth:`!iteritems` para " +"obtener un iterador adecuado. En un cambio menor relacionado, el operador :" +"keyword:`in` ahora funciona en diccionarios, por lo que ``key in dict`` " +"ahora es equivalente a ``dict.has_key(key)``." #: ../Doc/whatsnew/2.2.rst:519 msgid "" @@ -1107,6 +1206,9 @@ msgid "" " # do something for each line\n" " ..." msgstr "" +"for line in file:\n" +" # do something for each line\n" +" ..." #: ../Doc/whatsnew/2.2.rst:527 msgid "" @@ -1177,6 +1279,9 @@ msgid "" " for i in range(N):\n" " yield i" msgstr "" +"def generate_ints(N):\n" +" for i in range(N):\n" +" yield i" #: ../Doc/whatsnew/2.2.rst:563 msgid "" @@ -1228,9 +1333,8 @@ msgstr "" "de la interacción entre :keyword:`!yield` y las excepciones)" #: ../Doc/whatsnew/2.2.rst:584 -#, fuzzy msgid "Here's a sample usage of the :func:`!generate_ints` generator::" -msgstr "Este es un ejemplo de uso del generador :func:`generate_ints`::" +msgstr "Este es un ejemplo de uso del generador :func:`!generate_ints`::" #: ../Doc/whatsnew/2.2.rst:586 msgid "" @@ -1249,6 +1353,20 @@ msgid "" " File \"\", line 2, in generate_ints\n" "StopIteration" msgstr "" +">>> gen = generate_ints(3)\n" +">>> gen\n" +"\n" +">>> gen.next()\n" +"0\n" +">>> gen.next()\n" +"1\n" +">>> gen.next()\n" +"2\n" +">>> gen.next()\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"\", línea 1, en ?\n" +"Archivo \"\", línea 2, en generate_ints\n" +"StopIteration" #: ../Doc/whatsnew/2.2.rst:601 msgid "" @@ -1309,6 +1427,14 @@ msgid "" " for x in inorder(t.right):\n" " yield x" msgstr "" +"# Un generador recursivo que genera hojas de árboles en orden.\n" +"def inorder(t):\n" +"if t:\n" +"for x in inorder(t.left):\n" +"yield x\n" +"yield t.label\n" +"for x in inorder(t.right):\n" +"yield x" #: ../Doc/whatsnew/2.2.rst:630 msgid "" @@ -1325,7 +1451,6 @@ msgstr "" "un tablero de ajedrez $NxN$ sin visitar ninguna casilla dos veces)." #: ../Doc/whatsnew/2.2.rst:635 -#, fuzzy msgid "" "The idea of generators comes from other programming languages, especially " "Icon (https://www2.cs.arizona.edu/icon/), where the idea of generators is " @@ -1335,20 +1460,21 @@ msgid "" "of what this looks like::" msgstr "" "La idea de los generadores proviene de otros lenguajes de programación, " -"especialmente de Icon (https://www.cs.arizona.edu/icon/), donde la idea de " -"los generadores es fundamental. En Icon, cada expresión y llamada a una " -"función se comporta como un generador. Un ejemplo de \"*An Overview of the " -"Icon Programming Language*\" en https://www.cs.arizona.edu/icon/docs/ipd266." -"htm da una idea de cómo es esto::" +"especialmente Icon (https://www2.cs.arizona.edu/icon/), donde la idea de los " +"generadores es central. En Icon, cada expresión y llamada a función se " +"comporta como un generador. Un ejemplo de \"An Overview of the Icon " +"Programming Language\" en https://www2.cs.arizona.edu/icon/docs/ipd266.htm " +"da una idea de cómo se ve esto:" #: ../Doc/whatsnew/2.2.rst:642 msgid "" "sentence := \"Store it in the neighboring harbor\"\n" "if (i := find(\"or\", sentence)) > 5 then write(i)" msgstr "" +"sentence := \"Store it in the neighboring harbor\"\n" +"if (i := find(\"or\", sentence)) > 5 then write(i)" #: ../Doc/whatsnew/2.2.rst:645 -#, fuzzy msgid "" "In Icon the :func:`!find` function returns the indexes at which the " "substring \"or\" is found: 3, 23, 33. In the :keyword:`if` statement, ``i`` " @@ -1357,11 +1483,11 @@ msgid "" "5, so the comparison now succeeds, and the code prints the value 23 to the " "screen." msgstr "" -"En Icon la función :func:`find` retorna los índices en los que se encuentra " -"la subcadena \"o\": 3, 23, 33. En la sentencia :keyword:`if`, a ``i`` se le " -"asigna primero un valor de 3, pero 3 es menor que 5, por lo que la " -"comparación falla, e Icon la reintenta con el segundo valor de 23. 23 es " -"mayor que 5, por lo que la comparación ahora tiene éxito, y el código " +"En Icon, la función :func:`!find` devuelve los índices en los que se " +"encuentra la subcadena \"o\": 3, 23, 33. En la declaración :keyword:`if`, a " +"``i`` primero se le asigna un valor de 3, pero 3 es menor que 5, por lo que " +"la comparación falla y Icon la vuelve a intentar con el segundo valor de 23. " +"23 es mayor que 5, por lo que la comparación ahora tiene éxito y el código " "imprime el valor 23 en la pantalla." #: ../Doc/whatsnew/2.2.rst:651 @@ -1402,7 +1528,6 @@ msgid "PEP 237: Unifying Long Integers and Integers" msgstr "PEP 237: Unificación de enteros largos y enteros" #: ../Doc/whatsnew/2.2.rst:672 -#, fuzzy msgid "" "In recent versions, the distinction between regular integers, which are 32-" "bit values on most machines, and long integers, which can be of arbitrary " @@ -1414,16 +1539,17 @@ msgid "" "be used as a slice index, and ``'abc'[1L:]`` would raise a :exc:`TypeError` " "exception with the message 'slice index must be int'." msgstr "" -"En versiones recientes, la distinción entre enteros regulares, que son " -"valores de 32 bits en la mayoría de las máquinas, y enteros largos, que " -"pueden tener un tamaño arbitrario, se estaba convirtiendo en una molestia. " -"Por ejemplo, en las plataformas que soportan archivos de más de ``2**32`` " -"bytes, el método :meth:`tell` de los objetos archivo tiene que retornar un " -"entero largo. Sin embargo, había varias partes de Python que esperaban " -"números enteros simples y que daban un error si se proporcionaba un número " -"entero largo en su lugar. Por ejemplo, en Python 1.5, sólo podían usarse " -"enteros normales como índice de corte, y ``'abc'[1L:]`` lanzaba una " -"excepción :exc:`TypeError` con el mensaje 'slice index must be int'." +"En versiones recientes, la distinción entre números enteros regulares, que " +"son valores de 32 bits en la mayoría de las máquinas, y números enteros " +"largos, que pueden ser de tamaño arbitrario, se estaba volviendo una " +"molestia. Por ejemplo, en plataformas que admiten archivos de más de bytes " +"que ``2**32``, el método :meth:`!tell` de objetos de archivo tiene que " +"devolver un número entero largo. Sin embargo, había varias partes de Python " +"que esperaban números enteros simples y generarían un error si se " +"proporcionaba un número entero largo en su lugar. Por ejemplo, en Python " +"1.5, solo se podían usar números enteros regulares como índice de segmento, " +"y ``'abc'[1L:]`` generaría una excepción :exc:`TypeError` con el mensaje 'el " +"índice de segmento debe ser int'." #: ../Doc/whatsnew/2.2.rst:682 msgid "" @@ -1450,6 +1576,10 @@ msgid "" ">>> 2 ** 64\n" "18446744073709551616L" msgstr "" +">>> 1234567890123\n" +"1234567890123L\n" +">>> 2 ** 64\n" +"18446744073709551616L" #: ../Doc/whatsnew/2.2.rst:695 msgid "" @@ -1587,17 +1717,17 @@ msgstr "" "`` no cambiará hasta Python 3.0." #: ../Doc/whatsnew/2.2.rst:756 -#, fuzzy msgid "" "Classes can define methods called :meth:`~object.__truediv__` and :meth:" "`~object.__floordiv__` to overload the two division operators. At the C " "level, there are also slots in the :c:type:`PyNumberMethods` structure so " "extension types can define the two operators." msgstr "" -"Las clases pueden definir métodos llamados :meth:`__truediv__` y :meth:" -"`__floordiv__` para sobrecargar los dos operadores de división. En el nivel " -"C, también hay ranuras en la estructura :c:type:`PyNumberMethods` para que " -"los tipos de extensión puedan definir los dos operadores." +"Las clases pueden definir métodos denominados :meth:`~object.__truediv__` y :" +"meth:`~object.__floordiv__` para sobrecargar los dos operadores de división. " +"En el nivel C, también hay espacios en la estructura :c:type:" +"`PyNumberMethods` para que los tipos de extensión puedan definir los dos " +"operadores." #: ../Doc/whatsnew/2.2.rst:761 msgid "" @@ -1650,7 +1780,6 @@ msgstr "" "completamente el soporte de Unicode)" #: ../Doc/whatsnew/2.2.rst:787 -#, fuzzy msgid "" "When built to use UCS-4 (a \"wide Python\"), the interpreter can natively " "handle Unicode characters from U+000000 to U+110000, so the range of legal " @@ -1660,17 +1789,16 @@ msgid "" "exception. This is all described in :pep:`261`, \"Support for 'wide' Unicode " "characters\"; consult it for further details." msgstr "" -"Cuando se compila para usar UCS-4 (un \"Python amplio\"), el intérprete " +"Cuando se crea para utilizar UCS-4 (un \"Python ancho\"), el intérprete " "puede manejar de forma nativa caracteres Unicode desde U+000000 hasta " -"U+110000, por lo que el rango de valores legales para la función :func:" -"`unichr` se expande en consecuencia. Utilizando un intérprete compilado " -"para usar UCS-2 (un \"Python estrecho\"), los valores mayores de 65535 " -"seguirán provocando que :func:`unichr` lance una excepción :exc:" -"`ValueError`. Todo esto se describe en :pep:`261`, \"Soporte para caracteres " -"Unicode 'anchos'\"; consúltelo para más detalles." +"U+110000, por lo que el rango de valores legales para la función :func:`!" +"unichr` se amplía en consecuencia. Si se utiliza un intérprete compilado " +"para utilizar UCS-2 (un \"Python estrecho\"), los valores mayores que 65535 " +"seguirán haciendo que :func:`!unichr` genere una excepción :exc:" +"`ValueError`. Todo esto se describe en :pep:`261`, \"Compatibilidad con " +"caracteres Unicode 'anchos'\"; consúltelo para obtener más detalles." #: ../Doc/whatsnew/2.2.rst:795 -#, fuzzy msgid "" "Another change is simpler to explain. Since their introduction, Unicode " "strings have supported an :meth:`!encode` method to convert the string to a " @@ -1681,12 +1809,12 @@ msgid "" "codec." msgstr "" "Otro cambio es más sencillo de explicar. Desde su introducción, las cadenas " -"Unicode han soportado un método :meth:`encode` para convertir la cadena a " -"una codificación seleccionada como UTF-8 o Latin-1. Un método simétrico " -"``decode([*encoding*])`` ha sido añadido a las cadenas de 8 bits (aunque no " -"a las cadenas Unicode) en 2.2. :meth:`decode` asume que la cadena está en la " -"codificación especificada y la decodifica, retornando lo que sea retornado " -"por el códec." +"Unicode admiten un método :meth:`!encode` para convertir la cadena a una " +"codificación seleccionada, como UTF-8 o Latin-1. En la versión 2.2 se ha " +"añadido un método ``decode([*encoding*])`` simétrico a las cadenas de 8 bits " +"(aunque no a las cadenas Unicode). :meth:`!decode` supone que la cadena está " +"en la codificación especificada y la decodifica, devolviendo lo que devuelva " +"el códec." #: ../Doc/whatsnew/2.2.rst:802 msgid "" @@ -1719,26 +1847,42 @@ msgid "" ">>> \"sheesh\".encode('rot-13')\n" "'furrfu'" msgstr "" +">>> s = \"\"\"Aquí hay un largo fragmento de texto redundante, excesivamente " +"verboso,\n" +"... y repetitivo.\n" +"... \"\"\"\n" +">>> data = s.encode('zlib')\n" +">>> data\n" +"'x\\x9c\\r\\xc9\\xc1\\r\\x80 \\x10\\x04\\xc0?Ul...'\n" +">>> data.decode('zlib')\n" +"'Aquí hay un largo fragmento de texto redundante, excesivamente verboso,\\ny " +"repetitivo.\\n'\n" +">>> print s.encode('uu')\n" +"begin 666 \n" +"M2&5R92!I=F5R8F]S92P*86YD(')E<&5T:71I=F4@=&5X=\"X*\n" +"\n" +"fin\n" +">>> \"caramba\".encode('rot-13')\n" +"'furrfu'" #: ../Doc/whatsnew/2.2.rst:823 -#, fuzzy msgid "" "To convert a class instance to Unicode, a :meth:`!__unicode__` method can be " "defined by a class, analogous to :meth:`!__str__`." msgstr "" "Para convertir una instancia de clase a Unicode, se puede definir un método :" -"meth:`__unicode__` por clase, análogo a :meth:`__str__`." +"meth:`!__unicode__` mediante una clase, análogo a :meth:`!__str__`." #: ../Doc/whatsnew/2.2.rst:826 -#, fuzzy msgid "" ":meth:`!encode`, :meth:`!decode`, and :meth:`!__unicode__` were implemented " "by Marc-André Lemburg. The changes to support using UCS-4 internally were " "implemented by Fredrik Lundh and Martin von Löwis." msgstr "" -":meth:`encode`, :meth:`decode`, y :meth:`__unicode__` fueron implementados " -"por Marc-André Lemburg. Los cambios para soportar el uso de UCS-4 " -"internamente fueron implementados por Fredrik Lundh y Martin von Löwis." +"Marc-André Lemburg implementó :meth:`!encode`, :meth:`!decode` y :meth:`!" +"__unicode__`. Fredrik Lundh y Martin von Löwis implementaron los cambios " +"para admitir el uso interno de UCS-4." #: ../Doc/whatsnew/2.2.rst:833 msgid ":pep:`261` - Support for 'wide' Unicode characters" @@ -1794,9 +1938,14 @@ msgid "" " return g(value-1) + 1\n" " ..." msgstr "" +"def f():\n" +"...\n" +"def g(valor):\n" +"...\n" +"return g(valor-1) + 1\n" +"..." #: ../Doc/whatsnew/2.2.rst:863 -#, fuzzy msgid "" "The function :func:`!g` will always raise a :exc:`NameError` exception, " "because the binding of the name ``g`` isn't in either its local namespace or " @@ -1807,14 +1956,15 @@ msgid "" "find local variables being copied by passing them as the default values of " "arguments. ::" msgstr "" -"La función :func:`g` siempre lanzará una excepción :exc:`NameError`, porque " -"el enlace del nombre ``g`` no está ni en su espacio de nombres local ni en " -"el espacio de nombres a nivel de módulo. Esto no es un gran problema en la " -"práctica (¿con qué frecuencia se definen recursivamente funciones interiores " -"como ésta?), pero esto también hacía más torpe el uso de la expresión :" -"keyword:`lambda`, y esto era un problema en la práctica. En el código que " -"utiliza :keyword:`!lambda` a menudo se pueden encontrar variables locales " -"que se copian al pasarlas como valores por defecto de los argumentos. ::" +"La función :func:`!g` siempre generará una excepción :exc:`NameError`, " +"porque la vinculación del nombre ``g`` no está en su espacio de nombres " +"local ni en el espacio de nombres a nivel de módulo. Esto no es un gran " +"problema en la práctica (¿con qué frecuencia se definen recursivamente " +"funciones internas como esta?), pero esto también hizo que el uso de la " +"expresión :keyword:`lambda` fuera más complicado, y esto fue un problema en " +"la práctica. En el código que usa :keyword:`!lambda`, a menudo se pueden " +"encontrar variables locales que se copian al pasarlas como valores " +"predeterminados de los argumentos. ::" #: ../Doc/whatsnew/2.2.rst:871 msgid "" @@ -1824,6 +1974,11 @@ msgid "" " self.list_attribute)\n" " return L" msgstr "" +"def find(self, name):\n" +"\"Devuelve una lista de todas las entradas iguales a 'name'\"\n" +"L = filter(lambda x, name=name: x == name,\n" +"self.list_attribute)\n" +"return L" #: ../Doc/whatsnew/2.2.rst:877 msgid "" @@ -1912,17 +2067,22 @@ msgid "" " def g():\n" " return x" msgstr "" +"x = 1\n" +"def f():\n" +"# La siguiente línea es un error de sintaxis\n" +"exec 'x=2'\n" +"def g():\n" +"return x" #: ../Doc/whatsnew/2.2.rst:917 -#, fuzzy msgid "" "Line 4 containing the ``exec`` statement is a syntax error, since ``exec`` " "would define a new local variable named ``x`` whose value should be accessed " "by :func:`!g`." msgstr "" -"La línea 4 que contiene la sentencia ``exec`` es un error de sintaxis, ya " -"que ``exec`` definiría una nueva variable local llamada ``x`` cuyo valor " -"debería ser accedido por :func:`g`." +"La línea 4 que contiene la declaración ``exec`` es un error de sintaxis, ya " +"que ``exec`` definiría una nueva variable local denominada ``x`` a cuyo " +"valor debería acceder :func:`!g`." #: ../Doc/whatsnew/2.2.rst:921 msgid "" @@ -1947,7 +2107,6 @@ msgid "New and Improved Modules" msgstr "Módulos nuevos y mejorados" #: ../Doc/whatsnew/2.2.rst:937 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module was contributed to the standard " "library by Fredrik Lundh, providing support for writing XML-RPC clients. " @@ -1956,12 +2115,12 @@ msgid "" "from the O'Reilly Network, and then lists the recent headlines for one " "channel::" msgstr "" -"El módulo :mod:`xmlrpclib` fue aportado a la biblioteca estándar por Fredrik " -"Lundh, proporcionando soporte para escribir clientes XML-RPC. XML-RPC es un " -"sencillo protocolo de llamada a procedimientos remotos construido sobre HTTP " -"y XML. Por ejemplo, el siguiente fragmento recupera una lista de canales RSS " -"de la red O'Reilly y, a continuación, muestra los titulares recientes de un " -"canal::" +"El módulo :mod:`xmlrpclib ` fue aportado a la biblioteca " +"estándar por Fredrik Lundh, que proporciona soporte para escribir clientes " +"XML-RPC. XML-RPC es un protocolo simple de llamada a procedimiento remoto " +"creado sobre HTTP y XML. Por ejemplo, el siguiente fragmento recupera una " +"lista de canales RSS de la red O'Reilly y, a continuación, enumera los " +"titulares recientes de un canal:" #: ../Doc/whatsnew/2.2.rst:943 msgid "" @@ -1982,17 +2141,32 @@ msgid "" "# 'description': 'A utility which converts HTML to XSL FO.',\n" "# 'title': 'html2fo 0.3 (Default)'}, ... ]" msgstr "" +"import xmlrpclib\n" +"s = xmlrpclib.Server(\n" +"'http://www.oreillynet.com/meerkat/xml-rpc/server.php')\n" +"channels = s.meerkat.getChannels()\n" +"# channels es una lista de diccionarios, como esta:\n" +"# [{'id': 4, 'title': 'Freshmeat Daily News'}\n" +"# {'id': 190, 'title': '32Bits Online'},\n" +"# {'id': 4549, 'title': '3DGamers'}, ... ]\n" +"\n" +"# Obtener los elementos de un canal\n" +"items = s.meerkat.getItems( {'channel': 4} )\n" +"\n" +"# 'items' es otra lista de diccionarios, como esta:\n" +"# [{'link': 'http://freshmeat.net/releases/52719/',\n" +"# 'description': 'Una utilidad que convierte HTML a XSL FO.',\n" +"# 'title': 'html2fo 0.3 (Predeterminado)'}, ... ]" #: ../Doc/whatsnew/2.2.rst:960 -#, fuzzy msgid "" "The :mod:`SimpleXMLRPCServer ` module makes it easy to create " "straightforward XML-RPC servers. See http://xmlrpc.scripting.com/ for more " "information about XML-RPC." msgstr "" -"El módulo :mod:`SimpleXMLRPCServer` facilita la creación de servidores XML-" -"RPC sencillos. Consulte http://xmlrpc.scripting.com/ para obtener más " -"información sobre XML-RPC." +"El módulo :mod:`SimpleXMLRPCServer ` facilita la creación de " +"servidores XML-RPC sencillos. Consulte http://xmlrpc.scripting.com/ para " +"obtener más información sobre XML-RPC." #: ../Doc/whatsnew/2.2.rst:963 msgid "" @@ -2003,7 +2177,6 @@ msgstr "" "`2104`. (Contribución de Gerhard Häring)" #: ../Doc/whatsnew/2.2.rst:966 -#, fuzzy msgid "" "Several functions that originally returned lengthy tuples now return pseudo-" "sequences that still behave like tuples but also have mnemonic attributes " @@ -2013,12 +2186,13 @@ msgid "" "localtime`, :func:`~time.gmtime`, and :func:`~time.strptime` in the :mod:" "`time` module." msgstr "" -"Varias funciones que originalmente retornaban tuplas largas ahora retornan " -"pseudo-secuencias que siguen comportándose como tuplas pero que también " -"tienen atributos mnemónicos como memberst_mtime o :attr:`tm_year`. Las " -"funciones mejoradas incluyen :func:`stat`, :func:`fstat`, :func:`statvfs` y :" -"func:`fstatvfs` en el módulo :mod:`os`, y :func:`localtime`, :func:`gmtime` " -"y :func:`strptime` en el módulo :mod:`time`." +"Varias funciones que originalmente devolvían tuplas extensas ahora devuelven " +"pseudosecuencias que aún se comportan como tuplas pero que también tienen " +"atributos mnemotécnicos como :attr:`!memberst_mtime` o :attr:`~time." +"struct_time.tm_year`. Las funciones mejoradas incluyen :func:`~os.stat`, :" +"func:`~os.fstat`, :func:`~os.statvfs` y :func:`~os.fstatvfs` en el módulo :" +"mod:`os`, y :func:`~time.localtime`, :func:`~time.gmtime` y :func:`~time." +"strptime` en el módulo :mod:`time`." #: ../Doc/whatsnew/2.2.rst:973 msgid "" @@ -2087,7 +2261,6 @@ msgstr "" "por Guido van Rossum, usando el módulo :mod:`pydoc` de Ka-Ping Yee)" #: ../Doc/whatsnew/2.2.rst:999 -#, fuzzy msgid "" "Various bugfixes and performance improvements have been made to the SRE " "engine underlying the :mod:`re` module. For example, the :func:`re.sub` " @@ -2098,13 +2271,12 @@ msgid "" "Fredrik Lundh. The BIGCHARSET patch was contributed by Martin von Löwis.)" msgstr "" "Se han realizado varias correcciones de errores y mejoras de rendimiento en " -"el motor SRE subyacente al módulo :mod:`re`. Por ejemplo, las funciones :" -"func:`re.sub` y :func:`re.split` han sido reescritas en C. Otro parche " -"contribuido acelera ciertos rangos de caracteres Unicode por un factor de " -"dos, y un nuevo método :meth:`finditer` que retorna un iterador sobre todas " -"las coincidencias no superpuestas en una cadena dada. (El mantenimiento de " -"SRE corre a cargo de Fredrik Lundh. El parche BIGCHARSET fue aportado por " -"Martin von Löwis)" +"el motor SRE subyacente al módulo :mod:`re`. Por ejemplo, las funciones :" +"func:`re.sub` y :func:`re.split` se han reescrito en C. Otro parche aportado " +"acelera ciertos rangos de caracteres Unicode por un factor de dos, y un " +"nuevo método :meth:`~re.finditer` que devuelve un iterador sobre todas las " +"coincidencias no superpuestas en una cadena dada. (SRE es mantenido por " +"Fredrik Lundh. El parche BIGCHARSET fue aportado por Martin von Löwis)." #: ../Doc/whatsnew/2.2.rst:1007 msgid "" @@ -2131,7 +2303,6 @@ msgstr "" "SORT, GETACL y SETACL. (Contribución de Anthony Baxter y Michel Pelletier)" #: ../Doc/whatsnew/2.2.rst:1016 -#, fuzzy msgid "" "The :mod:`!rfc822` module's parsing of email addresses is now compliant " "with :rfc:`2822`, an update to :rfc:`822`. (The module's name is *not* " @@ -2139,15 +2310,14 @@ msgid "" "been added for parsing and generating e-mail messages. (Contributed by " "Barry Warsaw, and arising out of his work on Mailman.)" msgstr "" -"El módulo :mod:`rfc822` que analiza las direcciones de correo electrónico " -"cumple ahora con :rfc:`2822`, una actualización de :rfc:`822`. (El nombre " -"del módulo *no* se va a cambiar a ``rfc2822``.) También se ha añadido un " -"nuevo paquete, :mod:`email`, para analizar y generar mensajes de correo " -"electrónico. (Contribuido por Barry Warsaw, y surgido de su trabajo en " -"Mailman)" +"El análisis de direcciones de correo electrónico del módulo :mod:`!rfc822` " +"ahora es compatible con :rfc:`2822`, una actualización de :rfc:`822`. (El " +"nombre del módulo, *not*, se cambiará a ``rfc2822``). También se ha añadido " +"un nuevo paquete, :mod:`email`, para analizar y generar mensajes de correo " +"electrónico. (Contribuido por Barry Warsaw y derivado de su trabajo en " +"Mailman)." #: ../Doc/whatsnew/2.2.rst:1022 -#, fuzzy msgid "" "The :mod:`difflib` module now contains a new :class:`!Differ` class for " "producing human-readable lists of changes (a \"delta\") between two " @@ -2157,16 +2327,15 @@ msgid "" "contributed by David Goodger, from ndiff.py code by Tim Peters who then did " "the generatorization.)" msgstr "" -"El módulo :mod:`difflib` contiene ahora una nueva clase :class:`Differ` para " -"producir listas legibles por humanos de cambios (un \"delta\") entre dos " -"secuencias de líneas de texto. También hay dos funciones generadoras, :func:" -"`ndiff` y :func:`restore`, que retornan respectivamente un delta de dos " -"secuencias, o una de las secuencias originales de un delta. (Trabajo de " -"gruñido contribuido por David Goodger, a partir del código ndiff.py de Tim " -"Peters que luego hizo la generización)" +"El módulo :mod:`difflib` ahora contiene una nueva clase :class:`!Differ` " +"para producir listas legibles por humanos de cambios (un \"delta\") entre " +"dos secuencias de líneas de texto. También hay dos funciones generadoras, :" +"func:`!ndiff` y :func:`!restore`, que devuelven respectivamente un delta de " +"dos secuencias, o una de las secuencias originales de un delta. (Trabajo " +"básico aportado por David Goodger, a partir del código ndiff.py de Tim " +"Peters, quien luego realizó la generación)." #: ../Doc/whatsnew/2.2.rst:1029 -#, fuzzy msgid "" "New constants :const:`!ascii_letters`, :const:`!ascii_lowercase`, and :const:" "`!ascii_uppercase` were added to the :mod:`string` module. There were " @@ -2177,38 +2346,36 @@ msgid "" "been fixed to use :const:`!ascii_letters` instead. (Reported by an unknown " "person; fixed by Fred L. Drake, Jr.)" msgstr "" -"Se han añadido las nuevas constantes :const:`ascii_letters`, :const:" -"`ascii_lowercase` y :const:`ascii_uppercase` al módulo :mod:`string`. Había " -"varios módulos en la biblioteca estándar que utilizaban :const:`string." -"letters` para referirse a los rangos A-Za-z, pero esa suposición es " -"incorrecta cuando se utilizan locales, porque :const:`string.letters` varía " -"dependiendo del conjunto de caracteres legales definidos por el local " -"actual. Los módulos con errores se han corregido para que utilicen :const:" -"`ascii_letters` en su lugar. (Informado por una persona desconocida; " -"corregido por Fred L. Drake, Jr.)" +"Se agregaron las nuevas constantes :const:`!ascii_letters`, :const:`!" +"ascii_lowercase` y :const:`!ascii_uppercase` al módulo :mod:`string`. Había " +"varios módulos en la biblioteca estándar que usaban :const:`!string.letters` " +"para referirse a los rangos A-Za-z, pero esa suposición es incorrecta cuando " +"se usan las configuraciones regionales, porque :const:`!string.letters` " +"varía según el conjunto de caracteres legales definidos por la configuración " +"regional actual. Todos los módulos con errores se han corregido para que " +"usen :const:`!ascii_letters` en su lugar. (Informado por una persona " +"desconocida; corregido por Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.2.rst:1038 -#, fuzzy msgid "" "The :mod:`mimetypes` module now makes it easier to use alternative MIME-type " "databases by the addition of a :class:`~mimetypes.MimeTypes` class, which " "takes a list of filenames to be parsed. (Contributed by Fred L. Drake, Jr.)" msgstr "" -"El módulo :mod:`mimetypes` facilita ahora el uso de bases de datos de tipos " -"MIME alternativos mediante la adición de una clase :class:`MimeTypes`, que " -"toma una lista de nombres de archivo para ser analizados. (Contribución de " -"Fred L. Drake, Jr.)" +"El módulo :mod:`mimetypes` ahora facilita el uso de bases de datos de tipo " +"MIME alternativas mediante la incorporación de una clase :class:`~mimetypes." +"MimeTypes`, que toma una lista de nombres de archivos para analizar. " +"(Contribuido por Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.2.rst:1042 -#, fuzzy msgid "" "A :class:`~threading.Timer` class was added to the :mod:`threading` module " "that allows scheduling an activity to happen at some future time. " "(Contributed by Itamar Shtull-Trauring.)" msgstr "" -"Se ha añadido una clase :class:`Timer` al módulo :mod:`threading` que " -"permite programar una actividad para que ocurra en algún momento futuro. " -"(Contribución de Itamar Shtull-Trauring)" +"Se agregó una clase :class:`~threading.Timer` al módulo :mod:`threading` que " +"permite programar una actividad para que se realice en un momento futuro. " +"(Contribución de Itamar Shtull-Trauring)." #: ../Doc/whatsnew/2.2.rst:1050 msgid "Interpreter Changes and Fixes" @@ -2250,7 +2417,6 @@ msgstr "" "(Contribución de Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.2.rst:1066 -#, fuzzy msgid "" "Another low-level API, primarily of interest to implementers of Python " "debuggers and development tools, was added. :c:func:" @@ -2260,13 +2426,13 @@ msgid "" "looping over all the thread states for a given interpreter. (Contributed by " "David Beazley.)" msgstr "" -"Se ha añadido otra API de bajo nivel, principalmente de interés para los " +"Se agregó otra API de bajo nivel, principalmente de interés para los " "implementadores de depuradores y herramientas de desarrollo de Python. :c:" "func:`PyInterpreterState_Head` y :c:func:`PyInterpreterState_Next` permiten " -"al usuario recorrer todos los objetos intérpretes existentes; :c:func:" +"que un llamador recorra todos los objetos de intérprete existentes; :c:func:" "`PyInterpreterState_ThreadHead` y :c:func:`PyThreadState_Next` permiten " -"recorrer todos los estados de los hilos de un intérprete dado. " -"(Contribución de David Beazley)" +"recorrer todos los estados de subprocesos para un intérprete determinado. " +"(Contribución de David Beazley)." #: ../Doc/whatsnew/2.2.rst:1073 msgid "" @@ -2294,10 +2460,9 @@ msgstr "" "siguientes pasos:" #: ../Doc/whatsnew/2.2.rst:1082 -#, fuzzy msgid "Rename :c:macro:`!Py_TPFLAGS_GC` to :c:macro:`Py_TPFLAGS_HAVE_GC`." msgstr "" -"Cambia el nombre de :c:func:`Py_TPFLAGS_GC` a :c:func:`PyTPFLAGS_HAVE_GC`." +"Cambia el nombre de :c:func:`!Py_TPFLAGS_GC` a :c:func:`PyTPFLAGS_HAVE_GC`." #: ../Doc/whatsnew/2.2.rst:1085 msgid "" @@ -2310,27 +2475,24 @@ msgid "objects, and :c:func:`PyObject_GC_Del` to deallocate them." msgstr "objetos, y :c:func:`PyObject_GC_Del` para desocuparlos." #: ../Doc/whatsnew/2.2.rst:1087 -#, fuzzy msgid "" "Rename :c:func:`!PyObject_GC_Init` to :c:func:`PyObject_GC_Track` and :c:" "func:`!PyObject_GC_Fini` to :c:func:`PyObject_GC_UnTrack`." msgstr "" -"Cambiar el nombre de :c:func:`PyObject_GC_Init` a :c:func:" -"`PyObject_GC_Track` y" +"Cambie el nombre de :c:func:`!PyObject_GC_Init` a :c:func:" +"`PyObject_GC_Track` y de :c:func:`!PyObject_GC_Fini` a :c:func:" +"`PyObject_GC_UnTrack`." #: ../Doc/whatsnew/2.2.rst:1090 -#, fuzzy msgid "Remove :c:macro:`!PyGC_HEAD_SIZE` from object size calculations." msgstr "" -"Eliminar :c:func:`PyGC_HEAD_SIZE` del cálculo del tamaño de los objetos." +"Eliminar :c:macro:`!PyGC_HEAD_SIZE` de los cálculos de tamaño de objeto." #: ../Doc/whatsnew/2.2.rst:1092 -#, fuzzy msgid "" "Remove calls to :c:func:`!PyObject_AS_GC` and :c:func:`!PyObject_FROM_GC`." msgstr "" -"Eliminar las llamadas a :c:func:`PyObject_AS_GC` y :c:func:" -"`PyObject_FROM_GC`." +"Eliminar llamadas a :c:func:`!PyObject_AS_GC` y :c:func:`!PyObject_FROM_GC`." #: ../Doc/whatsnew/2.2.rst:1094 msgid "" @@ -2369,7 +2531,6 @@ msgstr "" "valores de los argumentos." #: ../Doc/whatsnew/2.2.rst:1109 -#, fuzzy msgid "" "Two new flags :c:macro:`METH_NOARGS` and :c:macro:`METH_O` are available in " "method definition tables to simplify implementation of methods with no " @@ -2378,16 +2539,15 @@ msgid "" "`METH_VARARGS`. Also, the old :c:macro:`!METH_OLDARGS` style of writing C " "methods is now officially deprecated." msgstr "" -"Dos nuevos indicadores :const:`METH_NOARGS` y :const:`METH_O` están " +"Hay dos nuevos indicadores :c:macro:`METH_NOARGS` y :c:macro:`METH_O` " "disponibles en las tablas de definición de métodos para simplificar la " -"implementación de métodos sin argumentos o con un único argumento no tipado. " +"implementación de métodos sin argumentos o con un único argumento sin tipo. " "Llamar a estos métodos es más eficiente que llamar a un método " -"correspondiente que utilice :const:`METH_VARARGS`. Además, el antiguo " -"estilo :const:`METH_OLDARGS` de escribir métodos en C está oficialmente en " -"desuso." +"correspondiente que utilice :c:macro:`METH_VARARGS`. Además, el antiguo " +"estilo :c:macro:`!METH_OLDARGS` de escribir métodos en C ahora está " +"oficialmente obsoleto." #: ../Doc/whatsnew/2.2.rst:1115 -#, fuzzy msgid "" "Two new wrapper functions, :c:func:`PyOS_snprintf` and :c:func:" "`PyOS_vsnprintf` were added to provide cross-platform implementations for " @@ -2396,13 +2556,13 @@ msgid "" "functions, the Python versions check the bounds of the buffer used to " "protect against buffer overruns. (Contributed by M.-A. Lemburg.)" msgstr "" -"Se han añadido dos nuevas funciones de envoltura, :c:func:`PyOS_snprintf` y :" -"c:func:`PyOS_vsnprintf` para proporcionar implementaciones multiplataforma " -"para las relativamente nuevas APIs de la biblioteca C :c:func:`snprintf` y :" -"c:func:`vsnprintf`. A diferencia de las funciones estándar :c:func:`sprintf` " -"y :c:func:`vsprintf`, las versiones de Python comprueban los límites del " -"búfer utilizado para protegerse de los desbordamientos del mismo. " -"(Contribución de M.-A. Lemburg.)" +"Se agregaron dos nuevas funciones de contenedor, :c:func:`PyOS_snprintf` y :" +"c:func:`PyOS_vsnprintf`, para proporcionar implementaciones multiplataforma " +"para las relativamente nuevas API de bibliotecas C :c:func:`snprintf` y :c:" +"func:`vsnprintf`. A diferencia de las funciones estándar :c:func:`sprintf` " +"y :c:func:`!vsprintf`, las versiones de Python verifican los límites del " +"búfer utilizado para protegerse contra desbordamientos del búfer. " +"(Contribuido por M.-A. Lemburg)." #: ../Doc/whatsnew/2.2.rst:1122 msgid "" @@ -2586,7 +2746,6 @@ msgstr "" "`.netrc`, si tiene uno. (Contribución de Mike Romberg)" #: ../Doc/whatsnew/2.2.rst:1216 -#, fuzzy msgid "" "Some features of the object returned by the :func:`!xrange` function are now " "deprecated, and trigger warnings when they're accessed; they'll disappear in " @@ -2598,15 +2757,15 @@ msgid "" "fourth argument to the :c:func:`!PyRange_New` function, ``repeat``, has also " "been deprecated." msgstr "" -"Algunas características del objeto retornado por la función :func:`xrange` " -"están ahora obsoletas, y provocan advertencias cuando se accede a ellas; " -"desaparecerán en Python 2.3. Los objetos :class:`xrange` intentaban fingir " -"que eran tipos de secuencia completos soportando el troceado, la " +"Algunas características del objeto devuelto por la función :func:`!xrange` " +"ahora están obsoletas y activan advertencias cuando se accede a ellas; " +"desaparecerán en Python 2.3. Los objetos :class:`!xrange` intentaron simular " +"que eran tipos de secuencia completa al admitir la segmentación, la " "multiplicación de secuencias y el operador :keyword:`in`, pero estas " -"características se utilizaban raramente y, por lo tanto, tenían errores. El " -"método :meth:`tolist` y los atributos :attr:`start`, :attr:`stop` y :attr:" -"`step` también han quedado obsoletos. A nivel de C, el cuarto argumento de " -"la función :c:func:`PyRange_New`, ``repeat``, también ha quedado obsoleto." +"características se usaban rara vez y, por lo tanto, presentaban errores. El " +"método :meth:`!tolist` y los atributos :attr:`!start`, :attr:`!stop` y :attr:" +"`!step` también están en desuso. En el nivel C, el cuarto argumento de la " +"función :c:func:`!PyRange_New`, ``repeat``, también ha quedado en desuso." #: ../Doc/whatsnew/2.2.rst:1225 msgid "" @@ -2675,7 +2834,6 @@ msgstr "" "getdlopenflags` y :func:`sys.setdlopenflags`. (Contribución de Bram Stolk.)" #: ../Doc/whatsnew/2.2.rst:1251 -#, fuzzy msgid "" "The :func:`pow` built-in function no longer supports 3 arguments when " "floating-point numbers are supplied. ``pow(x, y, z)`` returns ``(x**y) % " @@ -2684,10 +2842,10 @@ msgid "" "``pow(2.0, 8.0, 7.0)`` will now raise a :exc:`TypeError` exception." msgstr "" "La función incorporada :func:`pow` ya no admite 3 argumentos cuando se " -"suministran números de punto flotante. ``pow(x, y, z)`` retorna ``(x**y) % " -"z``, pero esto nunca es útil para números de punto flotante, y el resultado " -"final varía de forma impredecible dependiendo de la plataforma. Una llamada " -"como ``pow(2.0, 8.0, 7.0)`` lanzará ahora una excepción :exc:`TypeError`." +"suministran números de punto flotante. ``pow(x, y, z)`` devuelve ``(x**y) % " +"z``, pero esto nunca es útil para números de punto flotante y el resultado " +"final varía de manera impredecible según la plataforma. Una llamada como " +"``pow(2.0, 8.0, 7.0)`` ahora generará una excepción :exc:`TypeError`." #: ../Doc/whatsnew/2.2.rst:1261 msgid "Acknowledgements" diff --git a/whatsnew/2.3.po b/whatsnew/2.3.po index cd9563133b..b25f19c660 100644 --- a/whatsnew/2.3.po +++ b/whatsnew/2.3.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-09-25 10:30+0100\n" "Last-Translator: Claudia Millan \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.3.rst:3 @@ -102,7 +102,6 @@ msgid "PEP 218: A Standard Set Datatype" msgstr "PEP 218: Un tipo de datos de conjunto estándar" #: ../Doc/whatsnew/2.3.rst:43 -#, fuzzy msgid "" "The new :mod:`!sets` module contains an implementation of a set datatype. " "The :class:`Set` class is for mutable sets, sets that can have members added " @@ -111,13 +110,13 @@ msgid "" "dictionary keys. Sets are built on top of dictionaries, so the elements " "within a set must be hashable." msgstr "" -"El nuevo módulo :mod:`sets` contiene una implementación de un tipo de datos " -"de conjuntos. La clase :class:`Set` es para conjuntos mutables, conjuntos a " -"los que se les pueden añadir y eliminar miembros. La clase :class:" -"`ImmutableSet` es para los conjuntos que no pueden ser modificados, y las " -"instancias de :class:`ImmutableSet` pueden por lo tanto ser utilizadas como " -"claves de diccionario. Los conjuntos se construyen sobre diccionarios, por " -"lo que los elementos de un conjunto deben ser hashables." +"El nuevo módulo :mod:`!sets` contiene una implementación de un tipo de datos " +"de conjunto. La clase :class:`Set` es para conjuntos mutables, conjuntos a " +"los que se les pueden agregar y quitar miembros. La clase :class:`!" +"ImmutableSet` es para conjuntos que no se pueden modificar y, por lo tanto, " +"las instancias de :class:`!ImmutableSet` se pueden usar como claves de " +"diccionario. Los conjuntos se construyen sobre diccionarios, por lo que los " +"elementos dentro de un conjunto deben ser codificables." #: ../Doc/whatsnew/2.3.rst:50 msgid "Here's a simple example::" @@ -139,9 +138,21 @@ msgid "" "Set([1, 2, 5])\n" ">>>" msgstr "" +">>> importar conjuntos\n" +">>> S = conjuntos.Set([1,2,3])\n" +">>> S\n" +"Set([1, 2, 3])\n" +">>> 1 en S\n" +"Verdadero\n" +">>> 0 en S\n" +"Falso\n" +">>> S.add(5)\n" +">>> S.remove(3)\n" +">>> S\n" +"Set([1, 2, 5])\n" +">>>" #: ../Doc/whatsnew/2.3.rst:66 -#, fuzzy msgid "" "The union and intersection of sets can be computed with the :meth:" "`~frozenset.union` and :meth:`~frozenset.intersection` methods; an " @@ -149,11 +160,11 @@ msgid "" "sets also have in-place versions of these methods, :meth:`!union_update` " "and :meth:`~frozenset.intersection_update`. ::" msgstr "" -"La unión y la intersección de los conjuntos pueden calcularse con los " -"métodos :meth:`union` y :meth:`intersection`; una notación alternativa " -"utiliza los operadores bitácora ``&`` y ``|``. Los conjuntos mutables " -"también tienen versiones in situ de estos métodos, :meth:`union_update` y :" -"meth:`intersection_update`. ::" +"La unión e intersección de conjuntos se puede calcular con los métodos :meth:" +"`~frozenset.union` y :meth:`~frozenset.intersection`; una notación " +"alternativa utiliza los operadores bit a bit ``&`` y ``|``. Los conjuntos " +"mutables también tienen versiones de estos métodos, :meth:`!union_update` y :" +"meth:`~frozenset.intersection_update`. ::" #: ../Doc/whatsnew/2.3.rst:71 msgid "" @@ -172,9 +183,22 @@ msgid "" "Set([1, 2, 3, 4, 5, 6])\n" ">>>" msgstr "" +">>> S1 = conjuntos.Set([1,2,3])\n" +">>> S2 = conjuntos.Set([4,5,6])\n" +">>> S1.union(S2)\n" +"Set([1, 2, 3, 4, 5, 6])\n" +">>> S1 | S2 # Notación alternativa\n" +"Set([1, 2, 3, 4, 5, 6])\n" +">>> S1.intersection(S2)\n" +"Set([])\n" +">>> S1 y S2 # Notación alternativa\n" +"Set([])\n" +">>> S1.union_update(S2)\n" +">>> S1\n" +"Set([1, 2, 3, 4, 5, 6])\n" +">>>" #: ../Doc/whatsnew/2.3.rst:86 -#, fuzzy msgid "" "It's also possible to take the symmetric difference of two sets. This is " "the set of all elements in the union that aren't in the intersection. " @@ -183,12 +207,12 @@ msgid "" "notation (``^``), and an in-place version with the ungainly name :meth:" "`~frozenset.symmetric_difference_update`. ::" msgstr "" -"También es posible tomar la diferencia simétrica de dos conjuntos. Este es " -"el conjunto de todos los elementos de la unión que no están en la " -"intersección. Otra forma de decirlo es que la diferencia simétrica contiene " -"todos los elementos que están exactamente en un conjunto. De nuevo, existe " -"una notación alternativa (``^``), y una versión in-place con el poco " -"agraciado nombre :meth:`symmetric_difference_update`. ::" +"También es posible tomar la diferencia simétrica de dos conjuntos. Este es " +"el conjunto de todos los elementos en la unión que no están en la " +"intersección. Otra forma de decirlo es que la diferencia simétrica contiene " +"todos los elementos que están exactamente en un conjunto. Nuevamente, existe " +"una notación alternativa (``^``) y una versión en el lugar con el extraño " +"nombre :meth:`~frozenset.symmetric_difference_update`. ::" #: ../Doc/whatsnew/2.3.rst:92 msgid "" @@ -200,15 +224,21 @@ msgid "" "Set([1, 2, 5, 6])\n" ">>>" msgstr "" +">>> S1 = conjuntos.Conjunto([1,2,3,4])\n" +">>> S2 = conjuntos.Conjunto([3,4,5,6])\n" +">>> S1.diferencia_simétrica(S2)\n" +"Conjunto([1, 2, 5, 6])\n" +">>> S1 ^ S2\n" +"Conjunto([1, 2, 5, 6])\n" +">>>" #: ../Doc/whatsnew/2.3.rst:100 -#, fuzzy msgid "" "There are also :meth:`!issubset` and :meth:`!issuperset` methods for " "checking whether one set is a subset or superset of another::" msgstr "" -"También hay métodos :meth:`issubset` y :meth:`issuperset` para comprobar si " -"un conjunto es subconjunto o superconjunto de otro::" +"También existen los métodos :meth:`!issubset` y :meth:`!issuperset` para " +"comprobar si un conjunto es un subconjunto o superconjunto de otro:" #: ../Doc/whatsnew/2.3.rst:103 msgid "" @@ -222,6 +252,15 @@ msgid "" "True\n" ">>>" msgstr "" +">>> S1 = conjuntos.Set([1,2,3])\n" +">>> S2 = conjuntos.Set([2,3])\n" +">>> S2.issubset(S1)\n" +"Verdadero\n" +">>> S1.issubset(S2)\n" +"Falso\n" +">>> S1.issuperset(S2)\n" +"Verdadero\n" +">>>" #: ../Doc/whatsnew/2.3.rst:117 msgid ":pep:`218` - Adding a Built-In Set Object Type" @@ -291,6 +330,9 @@ msgid "" " for i in range(N):\n" " yield i" msgstr "" +"def generate_ints(N):\n" +"para i en rango(N):\n" +"rendimiento i" #: ../Doc/whatsnew/2.3.rst:151 msgid "" @@ -334,9 +376,8 @@ msgstr "" "entre :keyword:`!yield` y las excepciones)" #: ../Doc/whatsnew/2.3.rst:169 -#, fuzzy msgid "Here's a sample usage of the :func:`!generate_ints` generator::" -msgstr "Este es un ejemplo de uso del generador :func:`generate_ints`::" +msgstr "Este es un ejemplo de uso del generador :func:`!generate_ints`::" #: ../Doc/whatsnew/2.3.rst:171 msgid "" @@ -355,6 +396,20 @@ msgid "" " File \"stdin\", line 2, in generate_ints\n" "StopIteration" msgstr "" +">>> gen = generate_ints(3)\n" +">>> gen\n" +"\n" +">>> gen.next()\n" +"0\n" +">>> gen.next()\n" +"1\n" +">>> gen.next()\n" +"2\n" +">>> gen.next()\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"stdin\", línea 1, en ?\n" +"Archivo \"stdin\", línea 2, en generate_ints\n" +"StopIteration" #: ../Doc/whatsnew/2.3.rst:186 msgid "" @@ -415,6 +470,14 @@ msgid "" " for x in inorder(t.right):\n" " yield x" msgstr "" +"# Un generador recursivo que genera hojas de árboles en orden.\n" +"def inorder(t):\n" +"if t:\n" +"for x in inorder(t.left):\n" +"yield x\n" +"yield t.label\n" +"for x in inorder(t.right):\n" +"yield x" #: ../Doc/whatsnew/2.3.rst:215 msgid "" @@ -451,9 +514,10 @@ msgid "" "sentence := \"Store it in the neighboring harbor\"\n" "if (i := find(\"or\", sentence)) > 5 then write(i)" msgstr "" +"oración := \"Guardarlo en el puerto vecino\"\n" +"si (i := find(\"o\", oración)) > 5 entonces write(i)" #: ../Doc/whatsnew/2.3.rst:230 -#, fuzzy msgid "" "In Icon the :func:`!find` function returns the indexes at which the " "substring \"or\" is found: 3, 23, 33. In the :keyword:`if` statement, ``i`` " @@ -462,11 +526,11 @@ msgid "" "5, so the comparison now succeeds, and the code prints the value 23 to the " "screen." msgstr "" -"En Icon la función :func:`find` retorna los índices en los que se encuentra " -"la subcadena \"o\": 3, 23, 33. En la expresión :keyword:`if`, a ``i`` se le " -"asigna primero un valor de 3, pero 3 es menor que 5, por lo que la " -"comparación falla, e Icon la reintenta con el segundo valor de 23. 23 es " -"mayor que 5, por lo que la comparación ahora tiene éxito, y el código " +"En Icon, la función :func:`!find` devuelve los índices en los que se " +"encuentra la subcadena \"o\": 3, 23, 33. En la declaración :keyword:`if`, a " +"``i`` primero se le asigna un valor de 3, pero 3 es menor que 5, por lo que " +"la comparación falla y Icon la vuelve a intentar con el segundo valor de 23. " +"23 es mayor que 5, por lo que la comparación ahora tiene éxito y el código " "imprime el valor 23 en la pantalla." #: ../Doc/whatsnew/2.3.rst:236 @@ -522,6 +586,8 @@ msgid "" "#!/usr/bin/env python\n" "# -*- coding: UTF-8 -*-" msgstr "" +"#!/usr/bin/env python\n" +"# -*- coding: UTF-8 -*-" #: ../Doc/whatsnew/2.3.rst:267 msgid "" @@ -598,6 +664,22 @@ msgid "" "'/tmp/example.zip/jwzthreading.py'\n" ">>>" msgstr "" +"amk@nyman:~/src/python$ unzip -l /tmp/example.zip\n" +"Archivo: /tmp/example.zip\n" +"Longitud Fecha Hora Nombre\n" +"-------- ---- ---- ----\n" +"8467 11-26-02 22:30 jwzthreading.py\n" +"-------- -------\n" +"8467 1 archivo\n" +"amk@nyman:~/src/python$ ./python\n" +"Python 2.3 (#1, 1 de agosto de 2003, 19:54:32)\n" +">>> import sys\n" +">>> sys.path.insert(0, '/tmp/example.zip') # Agregar archivo .zip al " +"principio de la ruta\n" +">>> import jwzthreading\n" +">>> jwzthreading.__file__\n" +"'/tmp/ejemplo.zip/jwzthreading.py'\n" +">>>" #: ../Doc/whatsnew/2.3.rst:314 msgid "" @@ -660,7 +742,6 @@ msgstr "" "nombres de archivo sean inaccesibles." #: ../Doc/whatsnew/2.3.rst:344 -#, fuzzy msgid "" "Python now allows using arbitrary Unicode strings (within the limitations of " "the file system) for all functions that expect file names, most notably the :" @@ -668,12 +749,12 @@ msgid "" "listdir`, Python now returns a list of Unicode strings. A new function, :" "func:`!os.getcwdu`, returns the current directory as a Unicode string." msgstr "" -"Python permite ahora utilizar cadenas Unicode arbitrarias (dentro de las " +"Python ahora permite el uso de cadenas Unicode arbitrarias (dentro de las " "limitaciones del sistema de archivos) para todas las funciones que esperan " -"nombres de archivos, sobre todo la función incorporada :func:`open`. Si se " -"pasa una cadena Unicode a :func:`os.listdir`, Python retorna ahora una lista " -"de cadenas Unicode. Una nueva función, :func:`os.getcwdu`, retorna el " -"directorio actual como una cadena Unicode." +"nombres de archivos, en particular la función incorporada :func:`open`. Si " +"se pasa una cadena Unicode a :func:`os.listdir`, Python ahora devuelve una " +"lista de cadenas Unicode. Una nueva función, :func:`!os.getcwdu`, devuelve " +"el directorio actual como una cadena Unicode." #: ../Doc/whatsnew/2.3.rst:350 msgid "" @@ -738,7 +819,6 @@ msgstr "" "carro más una nueva línea." #: ../Doc/whatsnew/2.3.rst:384 -#, fuzzy msgid "" "Python's file objects can now support end of line conventions other than the " "one followed by the platform on which Python is running. Opening a file with " @@ -747,26 +827,24 @@ msgid "" "translated to a ``'\\n'`` in the strings returned by the various file " "methods such as :meth:`!read` and :meth:`!readline`." msgstr "" -"Los objetos de archivo de Python pueden ahora soportar convenciones de fin " -"de línea distintas de la que sigue la plataforma en la que se ejecuta " -"Python. Al abrir un archivo con el modo ``'U`` o ``'rU`` se abrirá un " -"archivo para su lectura en modo :term:`universal newlines`. Las tres " -"convenciones de final de línea se traducirán a un ``'\\n'`` en las cadenas " -"retornadas por los distintos métodos de archivo como :meth:`read` y :meth:" -"`readline`." +"Los objetos de archivo de Python ahora pueden admitir convenciones de fin de " +"línea distintas a la que sigue la plataforma en la que se ejecuta Python. Al " +"abrir un archivo con el modo ``'U'`` o ``'rU'``, se abrirá un archivo para " +"leer en modo :term:`universal newlines`. Las tres convenciones de fin de " +"línea se traducirán a ``'\\n'`` en las cadenas devueltas por los distintos " +"métodos de archivo, como :meth:`!read` y :meth:`!readline`." #: ../Doc/whatsnew/2.3.rst:391 -#, fuzzy msgid "" "Universal newline support is also used when importing modules and when " "executing a file with the :func:`!execfile` function. This means that " "Python modules can be shared between all three operating systems without " "needing to convert the line-endings." msgstr "" -"El soporte universal de nuevas líneas también se utiliza al importar módulos " -"y al ejecutar un archivo con la función :func:`execfile`. Esto significa " -"que los módulos de Python pueden ser compartidos entre los tres sistemas " -"operativos sin necesidad de convertir los finales de línea." +"También se utiliza la compatibilidad universal con saltos de línea al " +"importar módulos y al ejecutar un archivo con la función :func:`!execfile`. " +"Esto significa que los módulos de Python se pueden compartir entre los tres " +"sistemas operativos sin necesidad de convertir los finales de línea." #: ../Doc/whatsnew/2.3.rst:396 msgid "" @@ -815,6 +893,10 @@ msgid "" " # ... compute some result based on item ...\n" " L[i] = result" msgstr "" +"para i en rango(len(L)):\n" +"item = L[i]\n" +"# ... calcular algún resultado basado en el elemento ...\n" +"L[i] = resultado" #: ../Doc/whatsnew/2.3.rst:426 msgid "This can be rewritten using :func:`enumerate` as::" @@ -826,6 +908,9 @@ msgid "" " # ... compute some result based on item ...\n" " L[i] = result" msgstr "" +"para i, elemento en enumerate(L):\n" +"# ... calcular algún resultado basado en el elemento ...\n" +"L[i] = resultado" #: ../Doc/whatsnew/2.3.rst:435 msgid ":pep:`279` - The enumerate() built-in function" @@ -861,7 +946,6 @@ msgstr "" "también es posible escribir tus propias clases de manejadores." #: ../Doc/whatsnew/2.3.rst:453 -#, fuzzy msgid "" "The :class:`~logging.Logger` class is the primary class. Most application " "code will deal with one or more :class:`~logging.Logger` objects, each one " @@ -875,18 +959,19 @@ msgid "" "records logged to ``server.auth`` and ``server.network``. There's also a " "root :class:`~logging.Logger` that's the parent of all other loggers." msgstr "" -"La clase :class:`Logger` es la clase principal. La mayoría del código de la " -"aplicación tratará con uno o más objetos :class:`Logger`, cada uno utilizado " -"por un subsistema particular de la aplicación. Cada :class:`Logger` se " -"identifica con un nombre, y los nombres se organizan en una jerarquía " -"utilizando ``.`` como separador de componentes. Por ejemplo, puedes tener " -"instancias de :class:`Logger` llamadas ``servidor``, ``servidor.auth`` y " -"``servidor.network``. Estas dos últimas instancias están por debajo de " -"``servidor`` en la jerarquía. Esto significa que si aumentas la verbosidad " -"de ``servidor`` o diriges los mensajes de ``servidor`` a un gestor " -"diferente, los cambios también se aplicarán a los registros de ``servidor." -"auth`` y ``servidor.network``. También hay un :class:`Logger` raíz que es el " -"padre de todos los demás loggers." +"La clase :class:`~logging.Logger` es la clase principal. La mayoría del " +"código de la aplicación se ocupará de uno o más objetos :class:`~logging." +"Logger`, cada uno de ellos utilizado por un subsistema particular de la " +"aplicación. Cada :class:`~logging.Logger` se identifica con un nombre, y los " +"nombres se organizan en una jerarquía utilizando ``.`` como separador de " +"componentes. Por ejemplo, puede tener instancias :class:`~logging.Logger` " +"denominadas ``server``, ``server.auth`` y ``server.network``. Las dos " +"últimas instancias están por debajo de ``server`` en la jerarquía. Esto " +"significa que si aumenta el nivel de detalle de ``server`` o dirige los " +"mensajes ``server`` a un controlador diferente, los cambios también se " +"aplicarán a los registros registrados en ``server.auth`` y ``server." +"network``. También hay un :class:`~logging.Logger` raíz que es el padre de " +"todos los demás registradores." #: ../Doc/whatsnew/2.3.rst:464 msgid "" @@ -907,6 +992,14 @@ msgid "" "logging.error('Error occurred')\n" "logging.critical('Critical error -- shutting down')" msgstr "" +"import logging\n" +"\n" +"logging.debug('Información de depuración')\n" +"logging.info('Mensaje informativo')\n" +"logging.warning('Advertencia: no se encontró el archivo de configuración " +"%s', 'server.conf')\n" +"logging.error('Se produjo un error')\n" +"logging.critical('Error crítico: apagando el sistema')" #: ../Doc/whatsnew/2.3.rst:475 ../Doc/whatsnew/2.3.rst:500 msgid "This produces the following output::" @@ -918,44 +1011,45 @@ msgid "" "ERROR:root:Error occurred\n" "CRITICAL:root:Critical error -- shutting down" msgstr "" +"ADVERTENCIA:root:Advertencia:no se encontró el archivo de configuración " +"server.conf\n" +"ERROR:root:Se produjo un error\n" +"CRÍTICO:root:Error crítico: se está apagando" #: ../Doc/whatsnew/2.3.rst:481 -#, fuzzy msgid "" "In the default configuration, informational and debugging messages are " "suppressed and the output is sent to standard error. You can enable the " "display of informational and debugging messages by calling the :meth:" "`~logging.Logger.setLevel` method on the root logger." msgstr "" -"En la configuración por defecto, los mensajes informativos y de depuración " -"se suprimen y la salida se envía al error estándar. Puede habilitar la " +"En la configuración predeterminada, se suprimen los mensajes informativos y " +"de depuración y la salida se envía al error estándar. Puede habilitar la " "visualización de mensajes informativos y de depuración llamando al método :" -"meth:`setLevel` del registrador raíz." +"meth:`~logging.Logger.setLevel` en el registrador raíz." #: ../Doc/whatsnew/2.3.rst:486 -#, fuzzy msgid "" "Notice the :func:`~logging.warning` call's use of string formatting " "operators; all of the functions for logging messages take the arguments " "``(msg, arg1, arg2, ...)`` and log the string resulting from ``msg % (arg1, " "arg2, ...)``." msgstr "" -"Observe que la llamada :func:`warning` utiliza operadores de formato de " -"cadena; todas las funciones para el registro de mensajes toman los " +"Observe el uso de operadores de formato de cadena en la llamada :func:" +"`~logging.warning`; todas las funciones para registrar mensajes toman los " "argumentos ``(msg, arg1, arg2, ...)`` y registran la cadena resultante de " "``msg % (arg1, arg2, ...)``." #: ../Doc/whatsnew/2.3.rst:490 -#, fuzzy msgid "" "There's also an :func:`~logging.exception` function that records the most " "recent traceback. Any of the other functions will also record the traceback " "if you specify a true value for the keyword argument *exc_info*. ::" msgstr "" -"También hay una función :func:`exception` que registra el rastro más " -"reciente. Cualquiera de las otras funciones también registrará el rastro si " -"se especifica un valor verdadero para el argumento de la palabra clave " -"*exc_info*. ::" +"También hay una función :func:`~logging.exception` que registra el " +"seguimiento más reciente. Cualquiera de las otras funciones también " +"registrará el seguimiento si especifica un valor verdadero para el argumento " +"de palabra clave *exc_info*. ::" #: ../Doc/whatsnew/2.3.rst:494 msgid "" @@ -965,6 +1059,11 @@ msgid "" "\n" "f()" msgstr "" +"def f():\n" +"try: 1/0\n" +"except: logging.exception('Problema registrado')\n" +"\n" +"f()" #: ../Doc/whatsnew/2.3.rst:502 msgid "" @@ -974,6 +1073,11 @@ msgid "" " 1/0\n" "ZeroDivisionError: integer division or modulo by zero" msgstr "" +"ERROR:root:Problema registrado\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"t.py\", línea 6, en f\n" +"1/0\n" +"ZeroDivisionError: división entera o módulo por cero" #: ../Doc/whatsnew/2.3.rst:508 msgid "" @@ -997,22 +1101,26 @@ msgid "" "log.critical('Disk full')\n" " ..." msgstr "" +"log = logging.getLogger('servidor')\n" +"...\n" +"log.info('Escuchando en el puerto %i', puerto)\n" +"...\n" +"log.critical('Disco lleno')\n" +"..." #: ../Doc/whatsnew/2.3.rst:519 -#, fuzzy msgid "" "Log records are usually propagated up the hierarchy, so a message logged to " "``server.auth`` is also seen by ``server`` and ``root``, but a :class:" "`~logging.Logger` can prevent this by setting its :attr:`~logging.Logger." "propagate` attribute to :const:`False`." msgstr "" -"Los registros se suelen propagar hacia arriba en la jerarquía, por lo que un " -"mensaje registrado en ``servidor.auth`` también es visto por ``servidor`` y " -"``root``, pero un :class:`Logger` puede evitar esto estableciendo su " -"atributo :attr:`propagate` a :const:`False`." +"Los registros normalmente se propagan hacia arriba en la jerarquía, por lo " +"que un mensaje registrado en ``server.auth`` también es visto por ``server`` " +"y ``root``, pero un :class:`~logging.Logger` puede evitar esto configurando " +"su atributo :attr:`~logging.Logger.propagate` en :const:`False`." #: ../Doc/whatsnew/2.3.rst:523 -#, fuzzy msgid "" "There are more classes provided by the :mod:`logging` package that can be " "customized. When a :class:`~logging.Logger` instance is told to log a " @@ -1025,16 +1133,16 @@ msgid "" "class. All of these classes can be replaced by your own specially written " "classes." msgstr "" -"Hay más clases proporcionadas por el paquete :mod:`logging` que se pueden " -"personalizar. Cuando se le indica a una instancia :class:`Logger` que " -"registre un mensaje, crea una instancia :class:`LogRecord` que se envía a " -"cualquier cantidad de instancias :class:`Handler` diferentes. Los " -"registradores y los controladores también pueden tener una lista adjunta de " -"filtros, y cada filtro puede hacer que se ignore el :class:`LogRecord` o " -"puede modificar el registro antes de pasarlo. Cuando finalmente se emiten, " -"las instancias :class:`LogRecord` se convierten en texto mediante una clase :" -"class:`Formatter`. Todas estas clases pueden ser reemplazadas por sus " -"propias clases especialmente escritas." +"El paquete :mod:`logging` proporciona más clases que se pueden personalizar. " +"Cuando se le indica a una instancia :class:`~logging.Logger` que registre un " +"mensaje, crea una instancia :class:`~logging.LogRecord` que se envía a " +"cualquier cantidad de instancias :class:`~logging.Handler` diferentes. Los " +"registradores y controladores también pueden tener una lista adjunta de " +"filtros, y cada filtro puede hacer que se ignore el :class:`~logging." +"LogRecord` o puede modificar el registro antes de pasarlo. Cuando finalmente " +"se generan, las instancias :class:`~logging.LogRecord` se convierten en " +"texto mediante una clase :class:`~logging.Formatter`. Todas estas clases se " +"pueden reemplazar por sus propias clases especialmente escritas." #: ../Doc/whatsnew/2.3.rst:533 msgid "" @@ -1063,7 +1171,6 @@ msgid "PEP 285: A Boolean Type" msgstr "PEP 285: Un tipo booleano" #: ../Doc/whatsnew/2.3.rst:552 -#, fuzzy msgid "" "A Boolean type was added to Python 2.3. Two new constants were added to " "the :mod:`!__builtin__` module, :const:`True` and :const:`False`. (:const:" @@ -1071,11 +1178,11 @@ msgid "" "2.2.1, but the 2.2.1 versions are simply set to integer values of 1 and 0 " "and aren't a different type.)" msgstr "" -"Se ha añadido un tipo booleano a Python 2.3. Se añadieron dos nuevas " -"constantes al módulo :mod:`__builtin__`, :const:`True` y :const:`False`. " -"(Las constantes :const:`True` y :const:`False` se añadieron a los módulos " -"incorporados en Python 2.2.1, pero las versiones de 2.2.1 se ajustan " -"simplemente a valores enteros de 1 y 0 y no son un tipo diferente)" +"Se agregó un tipo booleano a Python 2.3. Se agregaron dos nuevas constantes " +"al módulo :mod:`!__builtin__`, :const:`True` y :const:`False`. (Las " +"constantes :const:`True` y :const:`False` se agregaron a las funciones " +"integradas en Python 2.2.1, pero las versiones 2.2.1 simplemente se " +"configuran en valores enteros de 1 y 0 y no son de un tipo diferente)." #: ../Doc/whatsnew/2.3.rst:558 msgid "" @@ -1098,6 +1205,14 @@ msgid "" ">>> bool( (1,) )\n" "True" msgstr "" +">>> bool(1)\n" +"Verdadero\n" +">>> bool(0)\n" +"Falso\n" +">>> bool([])\n" +"Falso\n" +">>> bool( (1,) )\n" +"Verdadero" #: ../Doc/whatsnew/2.3.rst:570 msgid "" @@ -1117,6 +1232,13 @@ msgid "" ">>> isinstance(obj, tuple)\n" "False" msgstr "" +">>> obj = []\n" +">>> hasattr(obj, 'append')\n" +"Verdadero\n" +">>> isinstance(obj, lista)\n" +"Verdadero\n" +">>> isinstance(obj, tupla)\n" +"Falso" #: ../Doc/whatsnew/2.3.rst:581 msgid "" @@ -1167,6 +1289,14 @@ msgid "" ">>> True * 75\n" "75" msgstr "" +">>> Verdadero + 1\n" +"2\n" +">>> Falso + 1\n" +"1\n" +">>> Falso * 75\n" +"0\n" +">>> True * 75\n" +"75" #: ../Doc/whatsnew/2.3.rst:605 msgid "" @@ -1279,17 +1409,16 @@ msgstr "" "está disponible en https://pypi.org." #: ../Doc/whatsnew/2.3.rst:664 -#, fuzzy msgid "" "To make the catalog a bit more useful, a new optional *classifiers* keyword " "argument has been added to the Distutils :func:`!setup` function. A list of " "`Trove `_-style strings can be supplied to help " "classify the software." msgstr "" -"Para hacer el catálogo un poco más útil, se ha añadido un nuevo argumento " -"opcional de palabra clave *clasificadores* a la función Distutils :func:" -"`setup`. Se puede suministrar una lista de cadenas de estilo `Trove `_ para ayudar a clasificar el software." +"Para que el catálogo sea un poco más útil, se ha añadido un nuevo argumento " +"de palabra clave opcional *classifiers* a la función :func:`!setup` de " +"Distutils. Se puede proporcionar una lista de cadenas de estilo `Trove " +"`_ para ayudar a clasificar el software." #: ../Doc/whatsnew/2.3.rst:669 msgid "" @@ -1317,6 +1446,21 @@ msgid "" "\n" "core.setup(**kw)" msgstr "" +"from distutils import core\n" +"kw = {'name': \"Quixote\",\n" +" 'version': \"0.5.1\",\n" +" 'description': \"A highly Pythonic Web application framework\",\n" +" # ...\n" +" }\n" +"\n" +"if (hasattr(core, 'setup_keywords') and\n" +" 'classifiers' in core.setup_keywords):\n" +" kw['classifiers'] = \\\n" +" ['Topic :: Internet :: WWW/HTTP :: Dynamic Content',\n" +" 'Environment :: No Input/Output (Daemon)',\n" +" 'Intended Audience :: Developers'],\n" +"\n" +"core.setup(**kw)" #: ../Doc/whatsnew/2.3.rst:688 msgid "" @@ -1339,7 +1483,6 @@ msgid "PEP 302: New Import Hooks" msgstr "PEP 302: Nuevos ganchos de importación" #: ../Doc/whatsnew/2.3.rst:705 -#, fuzzy msgid "" "While it's been possible to write custom import hooks ever since the :mod:`!" "ihooks` module was introduced in Python 1.3, no one has ever been really " @@ -1348,23 +1491,22 @@ msgid "" "and :mod:`!iu` modules, but none of them has ever gained much acceptance, " "and none of them were easily usable from C code." msgstr "" -"Aunque ha sido posible escribir ganchos de importación personalizados desde " -"que se introdujo el módulo :mod:`ihooks` en Python 1.3, nadie ha estado " -"nunca realmente contento con él porque escribir nuevos ganchos de " -"importación es difícil y complicado. Se han propuesto varias alternativas, " -"como los módulos :mod:`imputil` y :mod:`iu`, pero ninguno de ellos ha tenido " -"mucha aceptación, y ninguno era fácilmente utilizable desde el código C." +"Si bien ha sido posible escribir ganchos de importación personalizados desde " +"que se introdujo el módulo :mod:`!ihooks` en Python 1.3, nadie ha estado " +"realmente satisfecho con ello porque escribir nuevos ganchos de importación " +"es difícil y complicado. Se han propuesto varias alternativas, como los " +"módulos :mod:`!imputil` y :mod:`!iu`, pero ninguna de ellas ha tenido mucha " +"aceptación y ninguna de ellas se podía usar fácilmente desde el código C." #: ../Doc/whatsnew/2.3.rst:712 -#, fuzzy msgid "" ":pep:`302` borrows ideas from its predecessors, especially from Gordon " "McMillan's :mod:`!iu` module. Three new items are added to the :mod:`sys` " "module:" msgstr "" ":pep:`302` toma prestadas ideas de sus predecesores, especialmente del " -"módulo :mod:`iu` de Gordon McMillan. Se añaden tres nuevos elementos al " -"módulo :mod:`sys`:" +"módulo :mod:`!iu` de Gordon McMillan. Se han añadido tres elementos nuevos " +"al módulo :mod:`sys`:" #: ../Doc/whatsnew/2.3.rst:716 msgid "" @@ -1445,6 +1587,24 @@ msgid "" "# Not found!\n" "raise ImportError" msgstr "" +"para mp en sys.meta_path:\n" +"loader = mp(fullname)\n" +"si loader no es None:\n" +" = loader.load_module(fullname)\n" +"\n" +"para path en sys.path:\n" +"para hook en sys.path_hooks:\n" +"try:\n" +"importer = hook(path)\n" +"except ImportError:\n" +"# ImportError, así que prueba los otros ganchos de path\n" +"pass\n" +"de lo contrario:\n" +"loader = importer.find_module(fullname)\n" +" = loader.load_module(fullname)\n" +"\n" +"# ¡No encontrado!\n" +"raise ImportError" #: ../Doc/whatsnew/2.3.rst:760 msgid ":pep:`302` - New Import Hooks" @@ -1477,7 +1637,7 @@ msgstr "" #: ../Doc/whatsnew/2.3.rst:776 msgid "Costs,150,200,3.95" -msgstr "" +msgstr "Costos,150,200,3.95" #: ../Doc/whatsnew/2.3.rst:778 msgid "" @@ -1491,6 +1651,7 @@ msgstr "" #: ../Doc/whatsnew/2.3.rst:781 msgid "\"Costs\",150,200,3.95,\"Includes taxes, shipping, and sundry items\"" msgstr "" +"\"Costos\",150,200,3.95,\"Incluye impuestos, envío y artículos varios\"" #: ../Doc/whatsnew/2.3.rst:783 msgid "" @@ -1509,17 +1670,22 @@ msgid "" "for line in reader:\n" " print line" msgstr "" +"importar csv\n" +"\n" +"entrada = open('archivo_datos', 'rb')\n" +"lector = csv.reader(entrada)\n" +"para línea en lector:\n" +"imprimir línea" #: ../Doc/whatsnew/2.3.rst:793 -#, fuzzy msgid "" "The :func:`~csv.reader` function takes a number of different options. The " "field separator isn't limited to the comma and can be changed to any " "character, and so can the quoting and line-ending characters." msgstr "" -"La función :func:`reader` admite varias opciones. El separador de campos no " -"se limita a la coma y puede cambiarse por cualquier carácter, al igual que " -"las comillas y el final de línea." +"La función :func:`~csv.reader` acepta varias opciones diferentes. El " +"separador de campo no se limita a la coma y se puede cambiar por cualquier " +"carácter, al igual que los caracteres de comillas y de fin de línea." #: ../Doc/whatsnew/2.3.rst:797 msgid "" @@ -1551,7 +1717,6 @@ msgid "PEP 307: Pickle Enhancements" msgstr "PEP 307: Mejoras en Pickle" #: ../Doc/whatsnew/2.3.rst:817 -#, fuzzy msgid "" "The :mod:`pickle` and :mod:`!cPickle` modules received some attention during " "the 2.3 development cycle. In 2.2, new-style classes could be pickled " @@ -1559,12 +1724,12 @@ msgid "" "quotes a trivial example where a new-style class results in a pickled string " "three times longer than that for a classic class." msgstr "" -"Los módulos :mod:`pickle` y :mod:`cPickle` recibieron cierta atención " -"durante el ciclo de desarrollo de la 2.3. En 2.2, las clases de estilo " -"nuevo podían ser desempaquetadas sin dificultad, pero no se desempaquetaba " -"de forma muy compacta; :pep:`307` cita un ejemplo trivial en el que una " -"clase de estilo nuevo da lugar a una cadena desempaquetada tres veces más " -"larga que la de una clase clásica." +"Los módulos :mod:`pickle` y :mod:`!cPickle` recibieron cierta atención " +"durante el ciclo de desarrollo 2.3. En 2.2, las clases de nuevo estilo " +"podían ser encurtidas sin dificultad, pero no de forma muy compacta; :pep:" +"`307` cita un ejemplo trivial en el que una clase de nuevo estilo da como " +"resultado una cadena encurtida tres veces más larga que la de una clase " +"clásica." #: ../Doc/whatsnew/2.3.rst:823 msgid "" @@ -1584,7 +1749,6 @@ msgstr "" "seleccionar el protocolo más elegante disponible." #: ../Doc/whatsnew/2.3.rst:830 -#, fuzzy msgid "" "Unpickling is no longer considered a safe operation. 2.2's :mod:`pickle` " "provided hooks for trying to prevent unsafe classes from being unpickled " @@ -1592,15 +1756,14 @@ msgid "" "this code was ever audited and therefore it's all been ripped out in 2.3. " "You should not unpickle untrusted data in any version of Python." msgstr "" -"El unpickling ya no se considera una operación segura. El :mod:`pickle` de " -"la versión 2.2 proporcionaba ganchos para tratar de evitar que las clases no " -"seguras fueran deserializadas (específicamente, un atributo :attr:" -"`__safe_for_unpickling__`), pero nada de este código fue nunca auditado y " -"por lo tanto todo ha sido eliminado en la versión 2.3. No se debe " -"deserializar datos no confiables en ninguna versión de Python." +"El desempaquetado ya no se considera una operación segura. :mod:`pickle` de " +"la versión 2.2 proporcionaba ganchos para intentar evitar que se " +"desempaquetaran clases no seguras (específicamente, un atributo :attr:`!" +"__safe_for_unpickling__`), pero ninguno de este código fue auditado y, por " +"lo tanto, todo se eliminó en la versión 2.3. No debe desempaquetar datos no " +"confiables en ninguna versión de Python." #: ../Doc/whatsnew/2.3.rst:836 -#, fuzzy msgid "" "To reduce the pickling overhead for new-style classes, a new interface for " "customizing pickling was added using three special methods: :meth:`~object." @@ -1608,11 +1771,11 @@ msgid "" "__getnewargs__`. Consult :pep:`307` for the full semantics of these " "methods." msgstr "" -"Para reducir la sobrecarga de pickling de las clases de estilo nuevo, se ha " -"añadido una nueva interfaz para personalizar el pickling mediante tres " -"métodos especiales: :meth:`__getstate__`, :meth:`__setstate__`, y :meth:" -"`__getnewargs__`. Consulte :pep:`307` para conocer la semántica completa de " -"estos métodos." +"Para reducir la sobrecarga de decapado para las clases de estilo nuevo, se " +"agregó una nueva interfaz para personalizar el decapado mediante tres " +"métodos especiales: :meth:`~object.__getstate__`, :meth:`~object." +"__setstate__` y :meth:`~object.__getnewargs__`. Consulte :pep:`307` para " +"conocer la semántica completa de estos métodos." #: ../Doc/whatsnew/2.3.rst:841 msgid "" @@ -1672,6 +1835,9 @@ msgid "" ">>> L[::2]\n" "[0, 2, 4, 6, 8]" msgstr "" +">>> L = rango(10)\n" +">>> L[::2]\n" +"[0, 2, 4, 6, 8]" #: ../Doc/whatsnew/2.3.rst:875 msgid "" @@ -1685,6 +1851,8 @@ msgid "" ">>> L[::-1]\n" "[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]" msgstr "" +">>> L[::-1]\n" +"[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]" #: ../Doc/whatsnew/2.3.rst:880 msgid "This also works for tuples, arrays, and strings::" @@ -1698,6 +1866,11 @@ msgid "" ">>> s[::-1]\n" "'dcba'" msgstr "" +">>> s='abcd'\n" +">>> s[::2]\n" +"'ac'\n" +">>> s[::-1]\n" +"'dcba'" #: ../Doc/whatsnew/2.3.rst:888 msgid "" @@ -1720,6 +1893,12 @@ msgid "" ">>> a\n" "[0, 4, 5, 6]" msgstr "" +">>> a = rango(3)\n" +">>> a\n" +"[0, 1, 2]\n" +">>> a[1:3] = [4, 5, 6]\n" +">>> a\n" +"[0, 4, 5, 6]" #: ../Doc/whatsnew/2.3.rst:900 msgid "" @@ -1746,6 +1925,19 @@ msgid "" " File \"\", line 1, in ?\n" "ValueError: attempt to assign sequence of size 3 to extended slice of size 2" msgstr "" +">>> a = range(4)\n" +">>> a\n" +"[0, 1, 2, 3]\n" +">>> a[::2]\n" +"[0, 2]\n" +">>> a[::2] = [0, -1]\n" +">>> a\n" +"[0, 1, -1, 3]\n" +">>> a[::2] = [0,1,2]\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"\", línea 1, en ?\n" +"ValueError: intento de asignar una secuencia de tamaño 3 a una porción " +"extendida de tamaño 2" #: ../Doc/whatsnew/2.3.rst:917 msgid "Deletion is more straightforward::" @@ -1762,21 +1954,30 @@ msgid "" ">>> a\n" "[1, 3]" msgstr "" +">>> a = rango(4)\n" +">>> a\n" +"[0, 1, 2, 3]\n" +">>> a[::2]\n" +"[0, 2]\n" +">>> del a[::2]\n" +">>> a\n" +"[1, 3]" #: ../Doc/whatsnew/2.3.rst:928 -#, fuzzy msgid "" "One can also now pass slice objects to the :meth:`~object.__getitem__` " "methods of the built-in sequences::" msgstr "" -"Ahora también se pueden pasar objetos slice a los métodos :meth:" -"`__getitem__` de las secuencias incorporadas::" +"Ahora también se pueden pasar objetos de corte a los métodos :meth:`~object." +"__getitem__` de las secuencias integradas:" #: ../Doc/whatsnew/2.3.rst:931 msgid "" ">>> range(10).__getitem__(slice(0, 5, 2))\n" "[0, 2, 4]" msgstr "" +">>> rango(10).__getitem__(sección(0, 5, 2))\n" +"[0, 2, 4]" #: ../Doc/whatsnew/2.3.rst:934 msgid "Or use slice objects directly in subscripts::" @@ -1787,9 +1988,10 @@ msgid "" ">>> range(10)[slice(0, 5, 2)]\n" "[0, 2, 4]" msgstr "" +">>> rango(10)[segmento(0, 5, 2)]\n" +"[0, 2, 4]" #: ../Doc/whatsnew/2.3.rst:939 -#, fuzzy msgid "" "To simplify implementing sequences that support extended slicing, slice " "objects now have a method ``indices(length)`` which, given the length of a " @@ -1799,13 +2001,13 @@ msgid "" "innocuous phrase hides a welter of confusing details!). The method is " "intended to be used like this::" msgstr "" -"Para simplificar la implementación de secuencias que soportan el corte " -"extendido, los objetos slice tienen ahora un método ``indices(length)`` que, " -"dada la longitud de una secuencia, retorna una tupla ``(start, stop, step)`` " -"que puede pasarse directamente a :func:`range`. :meth:`indices` maneja los " -"índices omitidos y los que están fuera de los límites de una manera " -"consistente con los slices regulares (¡y esta frase inocua esconde un montón " -"de detalles confusos!). El método está pensado para ser utilizado así::" +"Para simplificar la implementación de secuencias que admiten cortes " +"extendidos, los objetos de corte ahora tienen un método ``indices(length)`` " +"que, dada la longitud de una secuencia, devuelve una tupla ``(start, stop, " +"step)`` que se puede pasar directamente a :func:`range`. :meth:`!indices` " +"maneja los índices omitidos y fuera de límites de una manera consistente con " +"los cortes regulares (¡y esta frase inocua esconde una maraña de detalles " +"confusos!). El método está pensado para usarse de esta manera:" #: ../Doc/whatsnew/2.3.rst:946 msgid "" @@ -1820,6 +2022,16 @@ msgid "" " else:\n" " return self.calc_item(i)" msgstr "" +"class FakeSeq:\n" +" ...\n" +" def calc_item(self, i):\n" +" ...\n" +" def __getitem__(self, item):\n" +" if isinstance(item, slice):\n" +" indices = item.indices(len(self))\n" +" return FakeSeq([self.calc_item(i) for i in range(*indices)])\n" +" else:\n" +" return self.calc_item(i)" #: ../Doc/whatsnew/2.3.rst:957 msgid "" @@ -1959,6 +2171,22 @@ msgid "" "{}\n" ">>>" msgstr "" +">>> d = {1:2}\n" +">>> d\n" +"{1: 2}\n" +">>> d.pop(4)\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"stdin\", línea 1, en ?\n" +"KeyError: 4\n" +">>> d.pop(1)\n" +"2\n" +">>> d.pop(1)\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"stdin\", línea 1, en ?\n" +"KeyError: 'pop(): el diccionario está vacío'\n" +">>> d\n" +"{}\n" +">>>" #: ../Doc/whatsnew/2.3.rst:1025 msgid "" @@ -1988,6 +2216,8 @@ msgid "" ">>> dict(red=1, blue=2, green=3, black=4)\n" "{'blue': 2, 'black': 4, 'green': 3, 'red': 1}" msgstr "" +">>> dict(rojo=1, azul=2, verde=3, negro=4)\n" +"{'azul': 2, 'negro': 4, 'verde': 3, 'rojo': 1}" #: ../Doc/whatsnew/2.3.rst:1037 msgid "(Contributed by Just van Rossum.)" @@ -2006,7 +2236,6 @@ msgstr "" "ejecute ninguna aserción." #: ../Doc/whatsnew/2.3.rst:1044 -#, fuzzy msgid "" "Most type objects are now callable, so you can use them to create new " "objects such as functions, classes, and modules. (This means that the :mod:" @@ -2014,12 +2243,12 @@ msgid "" "now use the type objects available in the :mod:`types` module.) For example, " "you can create a new module object with the following code:" msgstr "" -"La mayoría de los objetos de tipo son ahora invocables, por lo que puedes " -"usarlos para crear nuevos objetos como funciones, clases y módulos. (Esto " -"significa que el módulo :mod:`new` puede quedar obsoleto en una futura " -"versión de Python, porque ahora puedes utilizar los objetos de tipo " -"disponibles en el módulo :mod:`types`) Por ejemplo, puede crear un nuevo " -"objeto de módulo con el siguiente código:" +"La mayoría de los objetos de tipo ahora se pueden llamar, por lo que puede " +"usarlos para crear nuevos objetos, como funciones, clases y módulos. (Esto " +"significa que el módulo :mod:`!new` puede quedar obsoleto en una versión " +"futura de Python, porque ahora puede usar los objetos de tipo disponibles en " +"el módulo :mod:`types`). Por ejemplo, puede crear un nuevo objeto de módulo " +"con el siguiente código:" #: ../Doc/whatsnew/2.3.rst:1052 msgid "" @@ -2030,6 +2259,12 @@ msgid "" ">>> m.__doc__\n" "'docstring'" msgstr "" +">>> tipos de importación\n" +">>> m = tipos.ModuleType('abc','docstring')\n" +">>> m\n" +"\n" +">>> m.__doc__\n" +"'docstring'" #: ../Doc/whatsnew/2.3.rst:1059 msgid "" @@ -2068,7 +2303,6 @@ msgstr "" "podría convertirse en una palabra clave." #: ../Doc/whatsnew/2.3.rst:1072 -#, fuzzy msgid "" "The :meth:`!xreadlines` method of file objects, introduced in Python 2.1, is " "no longer necessary because files now behave as their own iterator. :meth:`!" @@ -2078,18 +2312,17 @@ msgid "" "encoding used by the file; Unicode strings written to the file will be " "automatically converted to bytes using the given encoding." msgstr "" -"El método :meth:`xreadlines` de los objetos archivo, introducido en Python " -"2.1, ya no es necesario porque los archivos se comportan ahora como su " -"propio iterador. :meth:`xreadlines` se introdujo originalmente como una " -"forma más rápida de recorrer todas las líneas de un archivo, pero ahora se " -"puede escribir simplemente ``for line in file_obj``. Los objetos archivo " -"también tienen un nuevo atributo :attr:`encoding` de sólo lectura que " +"El método :meth:`!xreadlines` de los objetos de archivo, introducido en " +"Python 2.1, ya no es necesario porque los archivos ahora se comportan como " +"su propio iterador. :meth:`!xreadlines` se introdujo originalmente como una " +"forma más rápida de recorrer todas las líneas de un archivo, pero ahora " +"puedes escribir simplemente ``for line in file_obj``. Los objetos de archivo " +"también tienen un nuevo atributo :attr:`!encoding` de solo lectura que " "proporciona la codificación utilizada por el archivo; las cadenas Unicode " "escritas en el archivo se convertirán automáticamente a bytes utilizando la " "codificación dada." #: ../Doc/whatsnew/2.3.rst:1080 -#, fuzzy msgid "" "The method resolution order used by new-style classes has changed, though " "you'll only notice the difference if you have a really complicated " @@ -2103,22 +2336,20 @@ msgid "" "pipermail/python-dev/2002-October/029035.html. Samuele Pedroni first pointed " "out the problem and also implemented the fix by coding the C3 algorithm." msgstr "" -"El orden de resolución de métodos utilizado por las clases de estilo nuevo " -"ha cambiado, aunque solo notará la diferencia si tiene una jerarquía de " +"El orden de resolución de métodos utilizado por las clases de nuevo estilo " +"ha cambiado, aunque solo notarás la diferencia si tienes una jerarquía de " "herencia realmente complicada. Las clases clásicas no se ven afectadas por " -"este cambio. Python 2.2 originalmente usó un tipo topológico de los " -"ancestros de una clase, pero 2.3 ahora usa el algoritmo C3 como se describe " -"en el documento `\"A Monotonic Superclass Linearization for Dylan\" `_. Para comprender " -"la motivación de este cambio, lea el artículo `\"Python 2.3 Method " -"Resolution Order\" `_ de " -"Michele Simionato, o lea el hilo en python-dev que comienza con el mensaje " -"en https://mail.python.org/pipermail/python-dev/2002-October/029035.html . " -"Samuele Pedroni fue el primero en señalar el problema y también implementó " -"la solución codificando el algoritmo C3." +"este cambio. Python 2.2 originalmente usaba una clasificación topológica de " +"los ancestros de una clase, pero 2.3 ahora usa el algoritmo C3 como se " +"describe en el artículo `\"A Monotonic Superclass Linearization for Dylan\" " +"`_. Para " +"entender la motivación de este cambio, lee el artículo :ref:`python_2.3_mro` " +"de Michele Simionato, o lee el hilo en python-dev que comienza con el " +"mensaje en https://mail.python.org/pipermail/python-dev/2002-October/029035." +"html. Samuele Pedroni fue el primero en señalar el problema y también " +"implementó la solución codificando el algoritmo C3." #: ../Doc/whatsnew/2.3.rst:1093 -#, fuzzy msgid "" "Python runs multithreaded programs by switching between threads after " "executing N bytecodes. The default value for N has been increased from 10 " @@ -2128,16 +2359,16 @@ msgid "" "number using ``sys.setcheckinterval(N)``. The limit can be retrieved with " "the new :func:`!sys.getcheckinterval` function." msgstr "" -"Python ejecuta programas multihilo cambiando entre hilos después de ejecutar " -"N bytecodes. El valor por defecto de N se ha incrementado de 10 a 100 " -"bytecodes, acelerando las aplicaciones de un solo hilo al reducir la " -"sobrecarga de cambio. Algunas aplicaciones multihilo pueden sufrir un " -"tiempo de respuesta más lento, pero eso se arregla fácilmente estableciendo " -"el límite a un número menor usando ``sys.setcheckinterval(N)``. El límite " -"puede recuperarse con la nueva función :func:`sys.getcheckinterval`." +"Python ejecuta programas multiproceso alternando entre subprocesos después " +"de ejecutar N bytecodes. El valor predeterminado de N se ha incrementado de " +"10 a 100 bytecodes, lo que acelera las aplicaciones de un solo subproceso al " +"reducir la sobrecarga de conmutación. Algunas aplicaciones multiproceso " +"pueden sufrir un tiempo de respuesta más lento, pero eso se soluciona " +"fácilmente estableciendo el límite en un número menor utilizando ``sys." +"setcheckinterval(N)``. El límite se puede recuperar con la nueva función :" +"func:`!sys.getcheckinterval`." #: ../Doc/whatsnew/2.3.rst:1101 -#, fuzzy msgid "" "One minor but far-reaching change is that the names of extension types " "defined by the modules included with Python now contain the module and a " @@ -2146,9 +2377,8 @@ msgid "" msgstr "" "Un cambio menor pero de gran alcance es que los nombres de los tipos de " "extensión definidos por los módulos incluidos con Python ahora contienen el " -"módulo y un ``.'`` delante del nombre del tipo. Por ejemplo, en Python 2.2, " -"si creabas un socket e imprimías su :attr:`__class__`, obtendrías esta " -"salida::" +"módulo y un ``'.'`` delante del nombre del tipo. Por ejemplo, en Python 2.2, " +"si creaba un socket e imprimía su :attr:`!__class__`, obtenía este resultado:" #: ../Doc/whatsnew/2.3.rst:1106 msgid "" @@ -2156,6 +2386,9 @@ msgid "" ">>> s.__class__\n" "" msgstr "" +">>> s = socket.socket()\n" +">>> s.__class__\n" +"" #: ../Doc/whatsnew/2.3.rst:1110 msgid "In 2.3, you get this::" @@ -2166,9 +2399,10 @@ msgid "" ">>> s.__class__\n" "" msgstr "" +">>> s.__class__\n" +"" #: ../Doc/whatsnew/2.3.rst:1115 -#, fuzzy msgid "" "One of the noted incompatibilities between old- and new-style classes has " "been removed: you can now assign to the :attr:`~type.__name__` and :attr:" @@ -2177,12 +2411,12 @@ msgid "" "of those relating to assigning to an instance's :attr:`~object.__class__` " "attribute." msgstr "" -"Se ha eliminado una de las incompatibilidades señaladas entre las clases de " -"estilo antiguo y las de estilo nuevo: ahora se pueden asignar a los " -"atributos :attr:`~definición.__name__` y :attr:`~clase.__bases__` de las " -"clases de estilo nuevo. Hay algunas restricciones sobre lo que se puede " -"asignar a :attr:`~class.__bases__` en la línea de las relacionadas con la " -"asignación al atributo :attr:`~instance.__class__` de una instancia." +"Se ha eliminado una de las incompatibilidades observadas entre las clases de " +"estilo antiguo y nuevo: ahora se pueden asignar atributos :attr:`~type." +"__name__` y :attr:`~type.__bases__` a las clases de estilo nuevo. Existen " +"algunas restricciones sobre lo que se puede asignar a :attr:`!__bases__` " +"similares a las relacionadas con la asignación al atributo :attr:`~object." +"__class__` de una instancia." #: ../Doc/whatsnew/2.3.rst:1125 msgid "String Changes" @@ -2212,27 +2446,31 @@ msgid "" ">>> '' in 'abcd'\n" "True" msgstr "" +">>> 'ab' en 'abcd'\n" +"Verdadero\n" +">>> 'ad' en 'abcd'\n" +"Falso\n" +">>> '' en 'abcd'\n" +"Verdadero" #: ../Doc/whatsnew/2.3.rst:1140 -#, fuzzy msgid "" "Note that this doesn't tell you where the substring starts; if you need that " "information, use the :meth:`~str.find` string method." msgstr "" "Tenga en cuenta que esto no le dice dónde empieza la subcadena; si necesita " -"esa información, utilice el método :meth:`find` string." +"esa información, utilice el método :meth:`~str.find` string." #: ../Doc/whatsnew/2.3.rst:1143 -#, fuzzy msgid "" "The :meth:`~str.strip`, :meth:`~str.lstrip`, and :meth:`~str.rstrip` string " "methods now have an optional argument for specifying the characters to " "strip. The default is still to remove all whitespace characters::" msgstr "" -"Los métodos de cadena :meth:`strip`, :meth:`lstrip` y :meth:`rstrip` tienen " -"ahora un argumento opcional para especificar los caracteres a eliminar. El " -"valor por defecto sigue siendo eliminar todos los caracteres de espacio en " -"blanco::" +"Los métodos de cadena :meth:`~str.strip`, :meth:`~str.lstrip` y :meth:`~str." +"rstrip` ahora tienen un argumento opcional para especificar los caracteres " +"que se eliminarán. El valor predeterminado sigue siendo eliminar todos los " +"caracteres de espacio en blanco:" #: ../Doc/whatsnew/2.3.rst:1147 msgid "" @@ -2246,32 +2484,40 @@ msgid "" "u'\\u4001abc'\n" ">>>" msgstr "" +">>> ' abc '.strip()\n" +"'abc'\n" +">>> '><><><>'.strip('<>')\n" +"'abc'\n" +">>> '><><><>\\n'.strip('<>')\n" +"'abc<><><>\\n'\n" +">>> u'\\u4000\\u4001abc\\u4000'.strip(u'\\u4000')\n" +"u'\\u4001abc'\n" +">>>" #: ../Doc/whatsnew/2.3.rst:1157 msgid "(Suggested by Simon Brunning and implemented by Walter Dörwald.)" msgstr "(Sugerido por Simon Brunning y aplicado por Walter Dörwald)" #: ../Doc/whatsnew/2.3.rst:1159 -#, fuzzy msgid "" "The :meth:`~str.startswith` and :meth:`~str.endswith` string methods now " "accept negative numbers for the *start* and *end* parameters." msgstr "" -"Los métodos de cadena :meth:`startswith` y :meth:`endswith` ahora aceptan " -"números negativos para los parámetros *start* y *end*." +"Los métodos de cadena :meth:`~str.startswith` y :meth:`~str.endswith` ahora " +"aceptan números negativos para los parámetros *start* y *end*." #: ../Doc/whatsnew/2.3.rst:1162 -#, fuzzy msgid "" "Another new string method is :meth:`~str.zfill`, originally a function in " "the :mod:`string` module. :meth:`~str.zfill` pads a numeric string with " "zeros on the left until it's the specified width. Note that the ``%`` " "operator is still more flexible and powerful than :meth:`~str.zfill`. ::" msgstr "" -"Otro nuevo método de cadena es :meth:`zfill`, originalmente una función del " -"módulo :mod:`string`. :meth:`zfill` rellena una cadena numérica con ceros a " -"la izquierda hasta que tenga el ancho especificado. Tenga en cuenta que el " -"operador ``%`` sigue siendo más flexible y potente que :meth:`zfill`. ::" +"Otro nuevo método de cadena es :meth:`~str.zfill`, originalmente una función " +"del módulo :mod:`string`. :meth:`~str.zfill` rellena una cadena numérica con " +"ceros a la izquierda hasta que alcanza el ancho especificado. Tenga en " +"cuenta que el operador ``%`` sigue siendo más flexible y potente que :meth:" +"`~str.zfill`. ::" #: ../Doc/whatsnew/2.3.rst:1167 msgid "" @@ -2282,24 +2528,29 @@ msgid "" ">>> 'goofy'.zfill(6)\n" "'0goofy'" msgstr "" +">>> '45'.zfill(4)\n" +"'0045'\n" +">>> '12345'.zfill(4)\n" +"'12345'\n" +">>> 'tonto'.zfill(6)\n" +"'0tonto'" #: ../Doc/whatsnew/2.3.rst:1174 msgid "(Contributed by Walter Dörwald.)" msgstr "(Contribución de Walter Dörwald.)" #: ../Doc/whatsnew/2.3.rst:1176 -#, fuzzy msgid "" "A new type object, :class:`!basestring`, has been added. Both 8-bit strings " "and Unicode strings inherit from this type, so ``isinstance(obj, " "basestring)`` will return :const:`True` for either kind of string. It's a " "completely abstract type, so you can't create :class:`!basestring` instances." msgstr "" -"Se ha añadido un nuevo tipo de objeto, :class:`basestring`. Tanto las " +"Se ha añadido un nuevo tipo de objeto, :class:`!basestring`. Tanto las " "cadenas de 8 bits como las cadenas Unicode heredan de este tipo, por lo que " -"``isinstance(obj, basestring)`` retornará :const:`True` para cualquier tipo " -"de cadena. Es un tipo completamente abstracto, por lo que no se pueden " -"crear instancias de :class:`basestring`." +"``isinstance(obj, basestring)`` devolverá :const:`True` para cualquier tipo " +"de cadena. Es un tipo completamente abstracto, por lo que no se pueden crear " +"instancias de :class:`!basestring`." #: ../Doc/whatsnew/2.3.rst:1181 msgid "" @@ -2324,17 +2575,15 @@ msgstr "" "rápida; ¡ahora son más rápidas que las clases clásicas!" #: ../Doc/whatsnew/2.3.rst:1194 -#, fuzzy msgid "" "The :meth:`~list.sort` method of list objects has been extensively rewritten " "by Tim Peters, and the implementation is significantly faster." msgstr "" -"El método :meth:`sort` de los objetos de la lista ha sido ampliamente " -"reescrito por Tim Peters, y la implementación es significativamente más " +"El método :meth:`~list.sort` de objetos de lista ha sido reescrito " +"ampliamente por Tim Peters, y la implementación es significativamente más " "rápida." #: ../Doc/whatsnew/2.3.rst:1197 -#, fuzzy msgid "" "Multiplication of large long integers is now much faster thanks to an " "implementation of Karatsuba multiplication, an algorithm that scales better " @@ -2342,11 +2591,11 @@ msgid "" "algorithm. (Original patch by Christopher A. Craig, and significantly " "reworked by Tim Peters.)" msgstr "" -"La multiplicación de enteros largos es ahora mucho más rápida gracias a una " -"implementación de la multiplicación Karatsuba, un algoritmo que escala mejor " -"que el O(n\\*n) requerido para el algoritmo de multiplicación de la escuela " -"primaria. (Parche original de Christopher A. Craig, y reelaborado " -"significativamente por Tim Peters)" +"La multiplicación de números enteros grandes es ahora mucho más rápida " +"gracias a una implementación de la multiplicación Karatsuba, un algoritmo " +"que escala mejor que el *O*\\ (*n*\\ :sup:`2`) requerido para el algoritmo " +"de multiplicación de nivel primario. (Parche original de Christopher A. " +"Craig y reelaborado significativamente por Tim Peters)." #: ../Doc/whatsnew/2.3.rst:1202 msgid "" @@ -2360,15 +2609,14 @@ msgstr "" "larga. (Eliminado por Michael Hudson)" #: ../Doc/whatsnew/2.3.rst:1206 -#, fuzzy msgid "" ":func:`!xrange` objects now have their own iterator, making ``for i in " "xrange(n)`` slightly faster than ``for i in range(n)``. (Patch by Raymond " "Hettinger.)" msgstr "" -"Los objetos :func:`xrange` tienen ahora su propio iterador, haciendo que " -"``for i in xrange(n)`` sea ligeramente más rápido que ``for i in " -"range(n)``. (Parche de Raymond Hettinger)" +"Los objetos :func:`!xrange` ahora tienen su propio iterador, lo que hace que " +"``for i in xrange(n)`` sea ligeramente más rápido que ``for i in range(n)``. " +"(Parche de Raymond Hettinger)." #: ../Doc/whatsnew/2.3.rst:1210 msgid "" @@ -2424,19 +2672,17 @@ msgstr "" "(Contribución de Jason Orendorff)" #: ../Doc/whatsnew/2.3.rst:1233 -#, fuzzy msgid "" "The :mod:`!bsddb` module has been replaced by version 4.1.6 of the `PyBSDDB " "`_ package, providing a more complete " "interface to the transactional features of the BerkeleyDB library." msgstr "" -"El módulo :mod:`bsddb` ha sido reemplazado por la versión 4.1.6 del paquete " -"`PyBSDDB `_, lo que proporciona una " -"interfaz más completa para las funciones transaccionales de la biblioteca " +"El módulo :mod:`!bsddb` ha sido reemplazado por la versión 4.1.6 del paquete " +"`PyBSDDB `_, proporcionando una interfaz " +"más completa para las características transaccionales de la biblioteca " "BerkeleyDB." #: ../Doc/whatsnew/2.3.rst:1237 -#, fuzzy msgid "" "The old version of the module has been renamed to :mod:`!bsddb185` and is " "no longer built automatically; you'll have to edit :file:`Modules/Setup` to " @@ -2451,19 +2697,19 @@ msgid "" "importing it as :mod:`!bsddb3`, you will have to change your ``import`` " "statements to import it as :mod:`!bsddb`." msgstr "" -"La antigua versión del módulo ha sido renombrada como :mod:`bsddb185` y ya " -"no se construye automáticamente; tendrás que editar :file:`Modules/Setup` " -"para activarlo. Ten en cuenta que el nuevo paquete :mod:`bsddb` está " -"pensado para ser compatible con el módulo antiguo, así que asegúrate de " -"enviar errores si descubres alguna incompatibilidad. Al actualizar a Python " -"2.3, si el nuevo intérprete se compila con una nueva versión de la " -"biblioteca BerkeleyDB subyacente, es casi seguro que tendrá que convertir " -"sus archivos de base de datos a la nueva versión. Puede hacerlo fácilmente " +"La versión anterior del módulo ha cambiado de nombre a :mod:`!bsddb185` y ya " +"no se compila automáticamente; deberá editar :file:`Modules/Setup` para " +"habilitarlo. Tenga en cuenta que el nuevo paquete :mod:`!bsddb` está pensado " +"para ser compatible con el módulo anterior, así que asegúrese de informar de " +"los errores si descubre alguna incompatibilidad. Al actualizar a Python 2.3, " +"si el nuevo intérprete se compila con una nueva versión de la biblioteca " +"BerkeleyDB subyacente, es casi seguro que tendrá que convertir los archivos " +"de su base de datos a la nueva versión. Puede hacerlo con bastante facilidad " "con los nuevos scripts :file:`db2pickle.py` y :file:`pickle2db.py` que " -"encontrará en el directorio :file:`Tools/scripts` de la distribución. Si ya " -"ha estado utilizando el paquete PyBSDDB e importándolo como :mod:`bsddb3`, " -"tendrá que cambiar sus sentencias ``import`` para importarlo como :mod:" -"`bsddb`." +"encontrará en el directorio :file:`Tools/scripts` de la distribución. Si ya " +"ha estado usando el paquete PyBSDDB y lo ha importado como :mod:`!bsddb3`, " +"tendrá que cambiar sus declaraciones ``import`` para importarlo como :mod:`!" +"bsddb`." #: ../Doc/whatsnew/2.3.rst:1249 msgid "" @@ -2486,7 +2732,6 @@ msgstr "" "detalles." #: ../Doc/whatsnew/2.3.rst:1256 -#, fuzzy msgid "" "The Distutils :class:`!Extension` class now supports an extra constructor " "argument named *depends* for listing additional source files that an " @@ -2495,12 +2740,13 @@ msgid "" "includes the header file :file:`sample.h`, you would create the :class:`!" "Extension` object like this::" msgstr "" -"La clase Distutils :class:`Extension` soporta ahora un argumento constructor " -"extra llamado *depends* para listar archivos fuente adicionales de los que " -"depende una extensión. Esto permite a Distutils recompilar el módulo si se " -"modifica alguno de los archivos de dependencia. Por ejemplo, si :file:" -"`sampmodule.c` incluye el fichero de cabecera :file:`sample.h`, se crearía " -"el objeto :class:`Extension` así::" +"La clase :class:`!Extension` de Distutils ahora admite un argumento de " +"constructor adicional llamado *depends* para enumerar archivos de origen " +"adicionales de los que depende una extensión. Esto permite que Distutils " +"vuelva a compilar el módulo si se modifica alguno de los archivos de " +"dependencia. Por ejemplo, si :file:`sampmodule.c` incluye el archivo de " +"encabezado :file:`sample.h`, crearía el objeto :class:`!Extension` de la " +"siguiente manera:" #: ../Doc/whatsnew/2.3.rst:1263 msgid "" @@ -2508,6 +2754,9 @@ msgid "" " sources=[\"sampmodule.c\"],\n" " depends=[\"sample.h\"])" msgstr "" +"ext = Extensión(\"samp\",\n" +"fuentes=[\"sampmodule.c\"],\n" +"depende=[\"sample.h\"])" #: ../Doc/whatsnew/2.3.rst:1267 msgid "" @@ -2518,30 +2767,29 @@ msgstr "" "(Contribución de Jeremy Hylton)" #: ../Doc/whatsnew/2.3.rst:1270 -#, fuzzy msgid "" "Other minor changes to Distutils: it now checks for the :envvar:`CC`, :" "envvar:`CFLAGS`, :envvar:`!CPP`, :envvar:`LDFLAGS`, and :envvar:`CPPFLAGS` " "environment variables, using them to override the settings in Python's " "configuration (contributed by Robert Weber)." msgstr "" -"Otros cambios menores en Distutils: ahora comprueba las variables de " -"entorno :envvar:`CC`, :envvar:`CFLAGS`, :envvar:`CPP`, :envvar:`LDFLAGS` y :" -"envvar:`CPPFLAGS`, utilizándolas para anular los ajustes de la configuración " -"de Python (contribución de Robert Weber)." +"Otros cambios menores en Distutils: ahora verifica las variables de entorno :" +"envvar:`CC`, :envvar:`CFLAGS`, :envvar:`!CPP`, :envvar:`LDFLAGS` y :envvar:" +"`CPPFLAGS`, usándolas para anular las configuraciones en la configuración de " +"Python (contribuido por Robert Weber)." #: ../Doc/whatsnew/2.3.rst:1275 -#, fuzzy msgid "" "Previously the :mod:`doctest` module would only search the docstrings of " "public methods and functions for test cases, but it now also examines " "private ones as well. The :func:`~doctest.DocTestSuite` function creates a :" "class:`unittest.TestSuite` object from a set of :mod:`doctest` tests." msgstr "" -"Anteriormente el módulo :mod:`doctest` sólo buscaba casos de prueba en los " -"docstrings de los métodos y funciones públicos, pero ahora también examina " -"los privados. La función :func:`DocTestSuite` crea un objeto :class:" -"`unittest.TestSuite` a partir de un conjunto de pruebas :mod:`doctest`." +"Anteriormente, el módulo :mod:`doctest` solo buscaba casos de prueba en las " +"cadenas de documentación de métodos y funciones públicos, pero ahora también " +"examina los casos de prueba privados. La función :func:`~doctest." +"DocTestSuite` crea un objeto :class:`unittest.TestSuite` a partir de un " +"conjunto de pruebas :mod:`doctest`." #: ../Doc/whatsnew/2.3.rst:1280 msgid "" @@ -2552,7 +2800,6 @@ msgstr "" "objetos referenciados por *object*." #: ../Doc/whatsnew/2.3.rst:1283 -#, fuzzy msgid "" "The :mod:`getopt` module gained a new function, :func:`~getopt.gnu_getopt`, " "that supports the same arguments as the existing :func:`~getopt.getopt` " @@ -2561,13 +2808,13 @@ msgid "" "encountered, but in GNU-style mode processing continues, meaning that " "options and arguments can be mixed. For example::" msgstr "" -"El módulo :mod:`getopt` ha ganado una nueva función, :func:`gnu_getopt`, que " -"admite los mismos argumentos que la función :func:`getopt` existente, pero " -"utiliza el modo de exploración al estilo GNU. La función :func:`getopt` " -"existente deja de procesar las opciones tan pronto como se encuentra un " -"argumento que no es una opción, pero en el modo GNU el procesamiento " -"continúa, lo que significa que las opciones y los argumentos pueden " -"mezclarse. Por ejemplo::" +"El módulo :mod:`getopt` obtuvo una nueva función, :func:`~getopt." +"gnu_getopt`, que admite los mismos argumentos que la función :func:`~getopt." +"getopt` existente, pero utiliza el modo de escaneo de estilo GNU. El módulo :" +"func:`~getopt.getopt` existente deja de procesar opciones tan pronto como se " +"encuentra un argumento que no es una opción, pero en el modo de estilo GNU " +"el procesamiento continúa, lo que significa que se pueden mezclar opciones y " +"argumentos. Por ejemplo:" #: ../Doc/whatsnew/2.3.rst:1289 msgid "" @@ -2576,6 +2823,10 @@ msgid "" ">>> getopt.gnu_getopt(['-f', 'filename', 'output', '-v'], 'f:v')\n" "([('-f', 'filename'), ('-v', '')], ['output'])" msgstr "" +">>> getopt.getopt(['-f', 'nombrearchivo', 'salida', '-v'], 'f:v')\n" +"([('-f', 'nombrearchivo')], ['salida', '-v'])\n" +">>> getopt.gnu_getopt(['-f', 'nombrearchivo', 'salida', '-v'], 'f:v')\n" +"([('-f', 'nombrearchivo'), ('-v', '')], ['salida'])" #: ../Doc/whatsnew/2.3.rst:1294 msgid "(Contributed by Peter Åstrand.)" @@ -2596,13 +2847,16 @@ msgid "" ">>> g.gr_name, g.gr_gid\n" "('amk', 500)" msgstr "" +">>> importar grp\n" +">>> g = grp.getgrnam('amk')\n" +">>> g.gr_name, g.gr_gid\n" +"('amk', 500)" #: ../Doc/whatsnew/2.3.rst:1304 msgid "The :mod:`gzip` module can now handle files exceeding 2 GiB." msgstr "El módulo :mod:`gzip` ahora puede manejar archivos de más de 2 GiB." #: ../Doc/whatsnew/2.3.rst:1306 -#, fuzzy msgid "" "The new :mod:`heapq` module contains an implementation of a heap queue " "algorithm. A heap is an array-like data structure that keeps items in a " @@ -2614,26 +2868,26 @@ msgid "" "structure.)" msgstr "" "El nuevo módulo :mod:`heapq` contiene una implementación de un algoritmo de " -"colas de montón. Un montón es una estructura de datos similar a un array " -"que mantiene los elementos en un orden parcialmente ordenado de forma que, " +"cola de montón. Un montón es una estructura de datos similar a una matriz " +"que mantiene los elementos en un orden parcialmente ordenado de modo que, " "para cada índice *k*, ``heap[k] <= heap[2*k+1]`` y ``heap[k] <= " -"heap[2*k+2]``. Esto hace que sea rápido eliminar el elemento más pequeño, y " -"la inserción de un nuevo elemento manteniendo la propiedad del montón es " -"*O(lg n)*. (Véase https://xlinux.nist.gov/dads//HTML/priorityque.html para " -"más información sobre la estructura de datos de la cola de prioridad)" +"heap[2*k+2]``, se elimina rápidamente el elemento más pequeño y se inserta " +"un elemento nuevo mientras se mantiene la propiedad de montón *O*\\ (log " +"*n*). (Consulte https://xlinux.nist.gov/dads//HTML/priorityque.html para " +"obtener más información sobre la estructura de datos de la cola de " +"prioridad)." #: ../Doc/whatsnew/2.3.rst:1314 -#, fuzzy msgid "" "The :mod:`heapq` module provides :func:`~heapq.heappush` and :func:`~heapq." "heappop` functions for adding and removing items while maintaining the heap " "property on top of some other mutable Python sequence type. Here's an " "example that uses a Python list::" msgstr "" -"El módulo :mod:`heapq` proporciona las funciones :func:`heappush` y :func:" -"`heappop` para añadir y eliminar elementos manteniendo la propiedad del " -"montón sobre algún otro tipo de secuencia mutable de Python. Aquí hay un " -"ejemplo que utiliza una lista de Python::" +"El módulo :mod:`heapq` proporciona las funciones :func:`~heapq.heappush` y :" +"func:`~heapq.heappop` para agregar y eliminar elementos mientras se mantiene " +"la propiedad de montón sobre algún otro tipo de secuencia mutable de Python. " +"Aquí hay un ejemplo que utiliza una lista de Python:" #: ../Doc/whatsnew/2.3.rst:1318 msgid "" @@ -2651,6 +2905,19 @@ msgid "" ">>> heap\n" "[5, 7, 11]" msgstr "" +">>> import heapq\n" +">>> montón = []\n" +">>> para el elemento en [3, 7, 5, 11, 1]:\n" +"... heapq.heappush(montón, elemento)\n" +"...\n" +">>> montón\n" +"[1, 3, 5, 11, 7]\n" +">>> heapq.heappop(montón)\n" +"1\n" +">>> heapq.heappop(montón)\n" +"3\n" +">>> montón\n" +"[5, 7, 11]" #: ../Doc/whatsnew/2.3.rst:1332 msgid "(Contributed by Kevin O'Connor.)" @@ -2681,7 +2948,6 @@ msgstr "" "Lauder y Tino Lange.)" #: ../Doc/whatsnew/2.3.rst:1343 -#, fuzzy msgid "" "The :mod:`itertools` contains a number of useful functions for use with " "iterators, inspired by various functions provided by the ML and Haskell " @@ -2692,14 +2958,14 @@ msgid "" "package's reference documentation for details. (Contributed by Raymond " "Hettinger.)" msgstr "" -"El :mod:`itertools` contiene una serie de funciones útiles para usar con " -"iteradores, inspiradas en varias funciones proporcionadas por los lenguajes " -"ML y Haskell. Por ejemplo, ``itertools.ifilter(predicate, iterator)`` " -"devuelve todos los elementos del iterador para los que la función :func:" -"`predicate` devuelve :const:`True` y ``itertools.repeat(obj, N)`` devuelve " -"``obj`` *N* veces. Hay una serie de otras funciones en el módulo; consulte " -"la documentación de referencia del paquete para obtener más detalles. " -"(Contribuido por Raymond Hettinger.)" +":mod:`itertools` contiene varias funciones útiles para usar con iteradores, " +"inspiradas en varias funciones proporcionadas por los lenguajes ML y " +"Haskell. Por ejemplo, ``itertools.ifilter(predicate, iterator)`` devuelve " +"todos los elementos del iterador para los que la función :func:`!predicate` " +"devuelve :const:`True`, y ``itertools.repeat(obj, N)`` devuelve ``obj`` *N* " +"veces. Hay varias otras funciones en el módulo; consulte la documentación de " +"referencia del paquete para obtener más detalles. (Contribuido por Raymond " +"Hettinger)." #: ../Doc/whatsnew/2.3.rst:1352 msgid "" @@ -2720,7 +2986,6 @@ msgstr "" "Hettinger.)" #: ../Doc/whatsnew/2.3.rst:1359 -#, fuzzy msgid "" "Several new POSIX functions (:func:`!getpgid`, :func:`!killpg`, :func:`!" "lchown`, :func:`!loadavg`, :func:`!major`, :func:`!makedev`, :func:`!minor`, " @@ -2728,26 +2993,24 @@ msgid "" "the :mod:`os` module. (Contributed by Gustavo Niemeyer, Geert Jansen, and " "Denis S. Otkidach.)" msgstr "" -"Se agregaron varias funciones POSIX nuevas (:func:`getpgid`, :func:" -"`killpg`, :func:`lchown`, :func:`loadavg`, :func:`major`, :func:`makedev`, :" -"func:`minor` y :func:`mknod`) al módulo :mod:`posix` que subyace al módulo :" -"mod:`os`. (Contribuido por Gustavo Niemeyer, Geert Jansen y Denis S. " -"Otkidach.)" +"Se agregaron varias funciones POSIX nuevas (:func:`!getpgid`, :func:`!" +"killpg`, :func:`!lchown`, :func:`!loadavg`, :func:`!major`, :func:`!" +"makedev`, :func:`!minor` y :func:`!mknod`) al módulo :mod:`posix` que sirve " +"de base al módulo :mod:`os`. (Contribución de Gustavo Niemeyer, Geert Jansen " +"y Denis S. Otkidach)." #: ../Doc/whatsnew/2.3.rst:1365 -#, fuzzy msgid "" "In the :mod:`os` module, the :func:`!\\*stat` family of functions can now " "report fractions of a second in a timestamp. Such time stamps are " "represented as floats, similar to the value returned by :func:`time.time`." msgstr "" -"En el módulo :mod:`os`, la familia de funciones :func:`\\*stat` ahora puede " -"informar fracciones de segundo en una marca de tiempo. Estas marcas de " -"tiempo se representan como flotantes, similar al valor devuelto por :func:" -"`time.time`." +"En el módulo :mod:`os`, la familia de funciones :func:`!\\*stat` ahora puede " +"informar fracciones de segundo en una marca de tiempo. Dichas marcas de " +"tiempo se representan como números flotantes, similares al valor devuelto " +"por :func:`time.time`." #: ../Doc/whatsnew/2.3.rst:1369 -#, fuzzy msgid "" "During testing, it was found that some applications will break if time " "stamps are floats. For compatibility, when using the tuple interface of " @@ -2756,14 +3019,14 @@ msgid "" "stamps are still represented as integers, unless :func:`!os." "stat_float_times` is invoked to enable float return values::" msgstr "" -"Durante las pruebas, se descubrió que algunas aplicaciones se romperán si " -"las marcas de tiempo son flotantes. Por compatibilidad, cuando se utiliza la " -"interfaz de tupla de las marcas de tiempo :class:`stat_result` se " -"representarán como números enteros. Cuando se utilizan campos con nombre " -"(una característica introducida por primera vez en Python 2.2), las marcas " -"de tiempo todavía se representan como números enteros, a menos que se " -"invoque :func:`os.stat_float_times` para habilitar los valores de retorno " -"flotantes:" +"Durante las pruebas, se descubrió que algunas aplicaciones fallan si las " +"marcas de tiempo son números de punto flotante. Por cuestiones de " +"compatibilidad, al usar la interfaz de tupla de :class:`~os.stat_result`, " +"las marcas de tiempo se representarán como números enteros. Al usar campos " +"con nombre (una característica introducida por primera vez en Python 2.2), " +"las marcas de tiempo aún se representan como números enteros, a menos que se " +"invoque :func:`!os.stat_float_times` para habilitar los valores de retorno " +"de punto flotante:" #: ../Doc/whatsnew/2.3.rst:1376 msgid "" @@ -2773,6 +3036,11 @@ msgid "" ">>> os.stat(\"/tmp\").st_mtime\n" "1034791200.6335014" msgstr "" +">>> os.stat(\"/tmp\").st_mtime\n" +"1034791200\n" +">>> os.stat_float_times(Verdadero)\n" +">>> os.stat(\"/tmp\").st_mtime\n" +"1034791200.6335014" #: ../Doc/whatsnew/2.3.rst:1382 msgid "In Python 2.4, the default will change to always returning floats." @@ -2781,18 +3049,17 @@ msgstr "" "flotantes." #: ../Doc/whatsnew/2.3.rst:1384 -#, fuzzy msgid "" "Application developers should enable this feature only if all their " "libraries work properly when confronted with floating-point time stamps, or " "if they use the tuple API. If used, the feature should be activated on an " "application level instead of trying to enable it on a per-use basis." msgstr "" -"Los desarrolladores de aplicaciones deben habilitar esta función solo si " +"Los desarrolladores de aplicaciones deberían habilitar esta función solo si " "todas sus bibliotecas funcionan correctamente cuando se enfrentan a marcas " -"de tiempo de punto flotante o si utilizan la API de tuplas. Si se usa, la " -"función debe activarse a nivel de aplicación en lugar de intentar " -"habilitarla por uso." +"de tiempo de punto flotante o si utilizan la API de tuplas. Si se utiliza, " +"la función debería activarse a nivel de aplicación en lugar de intentar " +"habilitarla según el uso." #: ../Doc/whatsnew/2.3.rst:1389 msgid "" @@ -2807,7 +3074,6 @@ msgstr "" "siguiente sección para obtener más detalles." #: ../Doc/whatsnew/2.3.rst:1394 -#, fuzzy msgid "" "The old and never-documented :mod:`!linuxaudiodev` module has been " "deprecated, and a new version named :mod:`!ossaudiodev` has been added. The " @@ -2815,12 +3081,12 @@ msgid "" "other than Linux, and the interface has also been tidied and brought up to " "date in various ways. (Contributed by Greg Ward and Nicholas FitzRoy-Dale.)" msgstr "" -"El módulo :mod:`linuxaudiodev` antiguo y nunca documentado ha quedado " -"obsoleto y se ha agregado una nueva versión denominada :mod:`ossaudiodev`. " -"Se cambió el nombre del módulo porque los controladores de sonido OSS se " -"pueden usar en plataformas distintas de Linux, y la interfaz también se ha " -"arreglado y actualizado de varias maneras. (Contribuido por Greg Ward y " -"Nicholas FitzRoy-Dale.)" +"El antiguo módulo :mod:`!linuxaudiodev`, que nunca se documentó, ha quedado " +"obsoleto y se ha añadido una nueva versión denominada :mod:`!ossaudiodev`. " +"El módulo ha cambiado de nombre porque los controladores de sonido OSS se " +"pueden utilizar en plataformas distintas a Linux y la interfaz también se ha " +"ordenado y actualizado de varias maneras. (Contribución de Greg Ward y " +"Nicholas FitzRoy-Dale)." #: ../Doc/whatsnew/2.3.rst:1400 msgid "" @@ -2836,7 +3102,6 @@ msgstr "" "(Contribución de Marc-André Lemburg.)" #: ../Doc/whatsnew/2.3.rst:1405 -#, fuzzy msgid "" "The parser objects provided by the :mod:`pyexpat ` module " "can now optionally buffer character data, resulting in fewer calls to your " @@ -2844,15 +3109,14 @@ msgid "" "object's :attr:`~xml.parsers.expat.xmlparser.buffer_text` attribute to :" "const:`True` will enable buffering." msgstr "" -"Los objetos del analizador proporcionados por el módulo :mod:`pyexpat` ahora " -"pueden almacenar opcionalmente datos de caracteres, lo que resulta en menos " -"llamadas al controlador de datos de caracteres y, por lo tanto, un " -"rendimiento más rápido. La configuración del atributo :attr:`buffer_text` " -"del objeto del analizador en :const:`True` habilitará el almacenamiento en " -"búfer." +"Los objetos del analizador proporcionados por el módulo :mod:`pyexpat ` ahora pueden almacenar en búfer datos de caracteres de " +"manera opcional, lo que genera menos llamadas al controlador de datos de " +"caracteres y, por lo tanto, un rendimiento más rápido. Si se configura el " +"atributo :attr:`~xml.parsers.expat.xmlparser.buffer_text` del objeto del " +"analizador en :const:`True`, se habilitará el almacenamiento en búfer." #: ../Doc/whatsnew/2.3.rst:1410 -#, fuzzy msgid "" "The ``sample(population, k)`` function was added to the :mod:`random` " "module. *population* is a sequence or :class:`!xrange` object containing " @@ -2860,11 +3124,11 @@ msgid "" "elements from the population without replacing chosen elements. *k* can be " "any value up to ``len(population)``. For example::" msgstr "" -"La función ``sample(population, k)`` se agregó al módulo :mod:`random`. " -"*population* es una secuencia o un objeto :class:`xrange` que contiene los " -"elementos de la población, and :func:`sample` elije *k* elementos de la " -"población sin reemplazar los elementos escogidos. *k* puede tener cualquier " -"valor hasta ``len(population)``. Por ejemplo::" +"Se agregó la función ``sample(population, k)`` al módulo :mod:`random`. " +"*population* es una secuencia o un objeto :class:`!xrange` que contiene los " +"elementos de una población y :func:`~random.sample` elige elementos *k* de " +"la población sin reemplazar los elementos elegidos. *k* puede ser cualquier " +"valor hasta ``len(population)``. Por ejemplo:" #: ../Doc/whatsnew/2.3.rst:1416 msgid "" @@ -2885,6 +3149,22 @@ msgid "" "10000\n" "[3407, 3805, 1505, 7023, 2401, 2267, 9733, 3151, 8083, 9195]" msgstr "" +">>> days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'St', 'Sn']\n" +">>> random.sample(days, 3) # Elige 3 elementos\n" +"['St', 'Sn', 'Th']\n" +">>> random.sample(days, 7) # Elige 7 elementos\n" +"['Tu', 'Th', 'Mo', 'We', 'St', 'Fr', 'Sn']\n" +">>> random.sample(days, 7) # Elige 7 nuevamente\n" +"['We', 'Mo', 'Sn', 'Fr', 'Tu', 'St', 'Th']\n" +">>> random.sample(days, 8) # No se pueden elegir ocho\n" +"Traceback (última llamada más reciente):\n" +"Archivo \"\", línea 1, en ?\n" +"Archivo \"random.py\", línea 414, en ejemplo\n" +"genera ValueError, \"muestra mayor que la población\"\n" +"ValueError: muestra mayor que la población\n" +">>> random.sample(xrange(1,10000,2), 10) # Elige diez números impares " +"menores a 10000\n" +"[3407, 3805, 1505, 7023, 2401, 2267, 9733, 3151, 8083, 9195]" #: ../Doc/whatsnew/2.3.rst:1432 msgid "" @@ -2900,17 +3180,16 @@ msgid "(All changes contributed by Raymond Hettinger.)" msgstr "(Parches aportados por Raymond Hettinger)" #: ../Doc/whatsnew/2.3.rst:1438 -#, fuzzy msgid "" "The :mod:`readline` module also gained a number of new functions: :func:" "`~readline.get_history_item`, :func:`~readline.get_current_history_length`, " "and :func:`~readline.redisplay`." msgstr "" -"El módulo :mod:`readline` también obtuvo varias funciones nuevas: :func:" -"`get_history_item`, :func:`get_current_history_length` y :func:`redisplay`." +"El módulo :mod:`readline` también obtuvo una serie de nuevas funciones: :" +"func:`~readline.get_history_item`, :func:`~readline." +"get_current_history_length` y :func:`~readline.redisplay`." #: ../Doc/whatsnew/2.3.rst:1442 -#, fuzzy msgid "" "The :mod:`!rexec` and :mod:`!Bastion` modules have been declared dead, and " "attempts to import them will fail with a :exc:`RuntimeError`. New-style " @@ -2919,34 +3198,33 @@ msgid "" "them or time to do so. If you have applications using :mod:`!rexec`, " "rewrite them to use something else." msgstr "" -"Los módulos :mod:`rexec` y :mod:`Bastion` se han declarado muertos y los " +"Los módulos :mod:`!rexec` y :mod:`!Bastion` se han declarado inactivos y los " "intentos de importarlos fallarán con un :exc:`RuntimeError`. Las clases de " -"nuevo estilo brindan nuevas formas de salir del entorno de ejecución " -"restringido proporcionado por :mod:`rexec`, y nadie tiene interés en " -"arreglarlas o el tiempo para hacerlo. Si tiene aplicaciones que usan :mod:" -"`rexec`, vuelva a escribirlas para usar otra cosa." +"nuevo estilo proporcionan nuevas formas de salir del entorno de ejecución " +"restringido que ofrece :mod:`!rexec` y nadie tiene interés en arreglarlas ni " +"tiempo para hacerlo. Si tiene aplicaciones que utilizan :mod:`!rexec`, " +"reescríbalas para utilizar algo diferente." #: ../Doc/whatsnew/2.3.rst:1448 -#, fuzzy msgid "" "(Sticking with Python 2.2 or 2.1 will not make your applications any safer " "because there are known bugs in the :mod:`!rexec` module in those versions. " "To repeat: if you're using :mod:`!rexec`, stop using it immediately.)" msgstr "" -"(Seguir con Python 2.2 o 2.1 no hará que sus aplicaciones sean más seguras " -"porque hay errores conocidos en el módulo :mod:`rexec` en esas versiones. " -"Para repetir: si está usando :mod:`rexec`, deje de usarlo inmediatamente)." +"(Seguir usando Python 2.2 o 2.1 no hará que sus aplicaciones sean más " +"seguras porque hay errores conocidos en el módulo :mod:`!rexec` en esas " +"versiones. Para repetir: si está usando :mod:`!rexec`, deje de usarlo " +"inmediatamente)." #: ../Doc/whatsnew/2.3.rst:1452 -#, fuzzy msgid "" "The :mod:`!rotor` module has been deprecated because the algorithm it uses " "for encryption is not believed to be secure. If you need encryption, use " "one of the several AES Python modules that are available separately." msgstr "" -"El módulo :mod:`rotor` ha quedado obsoleto porque no se cree que el " -"algoritmo que utiliza para el cifrado sea seguro. Si necesita cifrado, use " -"uno de los varios módulos AES Python que están disponibles por separado." +"El módulo :mod:`!rotor` ha quedado obsoleto porque se cree que el algoritmo " +"que utiliza para el cifrado no es seguro. Si necesita cifrado, utilice uno " +"de los diversos módulos AES de Python que están disponibles por separado." #: ../Doc/whatsnew/2.3.rst:1456 msgid "" @@ -3002,15 +3280,14 @@ msgstr "" "Secure Sockets Layer (SSL)." #: ../Doc/whatsnew/2.3.rst:1477 -#, fuzzy msgid "" "The value of the C :c:macro:`!PYTHON_API_VERSION` macro is now exposed at " "the Python level as ``sys.api_version``. The current exception can be " "cleared by calling the new :func:`!sys.exc_clear` function." msgstr "" -"El valor de la macro C :c:macro:`PYTHON_API_VERSION` ahora se expone en el " +"El valor de la macro C :c:macro:`!PYTHON_API_VERSION` ahora se expone en el " "nivel de Python como ``sys.api_version``. La excepción actual se puede " -"borrar llamando a la nueva función :func:`sys.exc_clear`." +"eliminar llamando a la nueva función :func:`!sys.exc_clear`." #: ../Doc/whatsnew/2.3.rst:1481 msgid "" @@ -3021,7 +3298,6 @@ msgstr "" "\\ -format archivos de almacenamiento. (Contribución de Lars Gustäbel.)" #: ../Doc/whatsnew/2.3.rst:1484 -#, fuzzy msgid "" "The new :mod:`textwrap` module contains functions for wrapping strings " "containing paragraphs of text. The ``wrap(text, width)`` function takes a " @@ -3031,13 +3307,13 @@ msgid "" "you can guess, :func:`~textwrap.fill` is built on top of :func:`~textwrap." "wrap`. For example::" msgstr "" -"El nuevo módulo :mod:`textwrap` contiene funciones para envolver cadenas que " -"contienen párrafos de texto. La función ``wrap(text, width)`` toma una " -"cadena y devuelve una lista que contiene el texto dividido en líneas de no " -"más del ancho elegido. La función ``fill(text, width)`` devuelve una sola " -"cadena, reformateada para que quepa en líneas que no superen el ancho " -"elegido. (Como puede adivinar, :func:`fill` está construido sobre :func:" -"`wrap`. Por ejemplo:" +"El nuevo módulo :mod:`textwrap` contiene funciones para encapsular cadenas " +"que contienen párrafos de texto. La función ``wrap(text, width)`` toma una " +"cadena y devuelve una lista que contiene el texto dividido en líneas de un " +"ancho no mayor que el elegido. La función ``fill(text, width)`` devuelve una " +"sola cadena, reformateada para que quepa en líneas de un ancho no mayor que " +"el elegido. (Como puede adivinar, :func:`~textwrap.fill` está construido " +"sobre :func:`~textwrap.wrap`. Por ejemplo:" #: ../Doc/whatsnew/2.3.rst:1491 msgid "" @@ -3056,9 +3332,21 @@ msgid "" "it will come: the readiness is all.\n" ">>>" msgstr "" +">>> import textwrap\n" +">>> párrafo = \"Ni un ápice, desafiamos el augurio: ... más texto ...\"\n" +">>> textwrap.wrap(párrafo, 60)\n" +"[\"Ni un ápice, desafiamos el augurio: hay una providencia especial en\",\n" +"\"la caída de un gorrión. Si es ahora, no está por venir; si\",\n" +"...]\n" +">>> print textwrap.fill(párrafo, 35)\n" +"Ni un ápice, desafiamos el augurio: hay\n" +"una providencia especial en la caída de\n" +"un gorrión. Si es ahora, no está por venir; si no está por venir,\n" +"será ahora; si no es ahora, aún\n" +"vendrá: la preparación lo es todo.\n" +">>>" #: ../Doc/whatsnew/2.3.rst:1506 -#, fuzzy msgid "" "The module also contains a :class:`~textwrap.TextWrapper` class that " "actually implements the text wrapping strategy. Both the :class:`~textwrap." @@ -3067,15 +3355,14 @@ msgid "" "the formatting; consult the module's documentation for details. (Contributed " "by Greg Ward.)" msgstr "" -"El módulo también contiene una clase :class:`TextWrapper` que realmente " -"implementa la estrategia de envoltura de texto. Tanto la clase :class:" -"`TextWrapper` como las funciones :func:`wrap` y :func:`fill` admiten varios " -"argumentos de palabras clave adicionales para ajustar el formato; consulte " -"la documentación del módulo para obtener más detalles. (Contribuido por Greg " -"Ward.)" +"El módulo también contiene una clase :class:`~textwrap.TextWrapper` que " +"implementa la estrategia de ajuste de texto. Tanto la clase :class:" +"`~textwrap.TextWrapper` como las funciones :func:`~textwrap.wrap` y :func:" +"`~textwrap.fill` admiten una serie de argumentos de palabras clave " +"adicionales para ajustar el formato; consulte la documentación del módulo " +"para obtener más detalles. (Contribuido por Greg Ward)." #: ../Doc/whatsnew/2.3.rst:1512 -#, fuzzy msgid "" "The :mod:`!thread` and :mod:`threading` modules now have companion modules, :" "mod:`!dummy_thread` and :mod:`!dummy_threading`, that provide a do-nothing " @@ -3084,13 +3371,13 @@ msgid "" "modules (ones that *don't* rely on threads to run) by putting the following " "code at the top::" msgstr "" -"Los módulos :mod:`thread` y :mod:`threading` ahora tienen módulos " -"complementarios, :mod:`dummy_thread` y :mod:`dummy_threading`, que " -"proporcionan una implementación sin acción de la interfaz del módulo :mod:" -"`thread` para plataformas donde no se admiten subprocesos. La intención es " -"simplificar los módulos compatibles con subprocesos (aquellos en los que " -"*don't* depende de los subprocesos para ejecutarse) colocando el siguiente " -"código en la parte superior:" +"Los módulos :mod:`!thread` y :mod:`threading` ahora tienen módulos " +"complementarios, :mod:`!dummy_thread` y :mod:`!dummy_threading`, que " +"proporcionan una implementación sin hacer nada de la interfaz del módulo :" +"mod:`!thread` para plataformas donde no se admiten subprocesos. La intención " +"es simplificar los módulos que admiten subprocesos (aquellos que dependen de " +"subprocesos para ejecutarse) colocando el siguiente código en la parte " +"superior:" #: ../Doc/whatsnew/2.3.rst:1519 msgid "" @@ -3099,9 +3386,12 @@ msgid "" "except ImportError:\n" " import dummy_threading as _threading" msgstr "" +"Intente:\n" +"importar subprocesos como _threading\n" +"excepto ImportError:\n" +"importar dummy_threading como _threading" #: ../Doc/whatsnew/2.3.rst:1524 -#, fuzzy msgid "" "In this example, :mod:`!_threading` is used as the module name to make it " "clear that the module being used is not necessarily the actual :mod:" @@ -3111,17 +3401,16 @@ msgid "" "magically make multithreaded code run without threads; code that waits for " "another thread to return or to do something will simply hang forever." msgstr "" -"En este ejemplo, :mod:`_threading` se usa como el nombre del módulo para " -"dejar en claro que el módulo que se está usando no es necesariamente el " -"módulo :mod:`threading`. El código puede llamar funciones y usar clases en :" -"mod:`_threading`, ya sea que se admitan subprocesos o no, evitando una " -"declaración :keyword:`if` y haciendo que el código sea un poco más claro. " -"Este módulo no hará mágicamente que el código multiproceso se ejecute sin " -"subprocesos; el código que espera a que vuelva otro hilo o que haga algo " -"simplemente se colgará para siempre." +"En este ejemplo, se utiliza :mod:`!_threading` como nombre del módulo para " +"dejar claro que el módulo que se utiliza no es necesariamente el módulo :mod:" +"`threading` real. El código puede llamar a funciones y usar clases en :mod:`!" +"_threading` independientemente de si se admiten subprocesos o no, lo que " +"evita una declaración :keyword:`if` y hace que el código sea un poco más " +"claro. Este módulo no hará que el código multiproceso se ejecute mágicamente " +"sin subprocesos; el código que espera a que otro subproceso regrese o haga " +"algo simplemente se bloqueará para siempre." #: ../Doc/whatsnew/2.3.rst:1532 -#, fuzzy msgid "" "The :mod:`time` module's :func:`~time.strptime` function has long been an " "annoyance because it uses the platform C library's :func:`~time.strptime` " @@ -3129,15 +3418,14 @@ msgid "" "Cannon contributed a portable implementation that's written in pure Python " "and should behave identically on all platforms." msgstr "" -"La función :func:`strptime` del módulo :mod:`time` ha sido durante mucho " -"tiempo una molestia porque utiliza la implementación :func:`strptime` de la " -"biblioteca de la plataforma C, y las diferentes plataformas a veces tienen " -"errores extraños. Brett Cannon contribuyó con una implementación portátil " -"que está escrita en Python puro y debería comportarse de manera idéntica en " -"todas las plataformas." +"La función :func:`~time.strptime` del módulo :mod:`time` ha sido una " +"molestia durante mucho tiempo porque utiliza la implementación :func:`~time." +"strptime` de la biblioteca de la plataforma C, y a veces las diferentes " +"plataformas tienen errores extraños. Brett Cannon contribuyó con una " +"implementación portátil que está escrita en Python puro y debería " +"comportarse de manera idéntica en todas las plataformas." #: ../Doc/whatsnew/2.3.rst:1538 -#, fuzzy msgid "" "The new :mod:`timeit` module helps measure how long snippets of Python code " "take to execute. The :file:`timeit.py` file can be run directly from the " @@ -3146,12 +3434,13 @@ msgid "" "faster to convert an 8-bit string to Unicode by appending an empty Unicode " "string to it or by using the :func:`!unicode` function::" msgstr "" -"El nuevo módulo :mod:`timeit` ayuda a medir cuánto tardan en ejecutarse los " +"El nuevo módulo :mod:`timeit` ayuda a medir cuánto tardan en ejecutarse " "fragmentos de código Python. El archivo :file:`timeit.py` se puede ejecutar " -"directamente desde la línea de comando, o la clase :class:`Timer` del módulo " -"se puede importar y usar directamente. Aquí hay un breve ejemplo que " -"determina si es más rápido convertir una cadena de 8 bits a Unicode " -"agregando una cadena Unicode vacía o usando la función :func:`unicode`:" +"directamente desde la línea de comandos, o se puede importar y utilizar " +"directamente la clase :class:`~timeit.Timer` del módulo. A continuación, se " +"incluye un breve ejemplo que determina si es más rápido convertir una cadena " +"de 8 bits a Unicode añadiéndole una cadena Unicode vacía o utilizando la " +"función :func:`!unicode`:" #: ../Doc/whatsnew/2.3.rst:1545 msgid "" @@ -3168,18 +3457,28 @@ msgid "" "# [0.36831796169281006, 0.37441694736480713, 0.35304892063140869]\n" "# [0.17574405670166016, 0.18193507194519043, 0.17565798759460449]" msgstr "" +"import timeit\n" +"\n" +"timer1 = timeit.Timer('unicode(\"abc\")')\n" +"timer2 = timeit.Timer('\"abc\" + u\"\"')\n" +"\n" +"# Ejecutar tres pruebas\n" +"print timer1.repeat(repeat=3, number=100000)\n" +"print timer2.repeat(repeat=3, number=100000)\n" +"\n" +"# En mi computadora portátil, esto genera:\n" +"# [0.36831796169281006, 0.37441694736480713, 0.35304892063140869]\n" +"# [0.17574405670166016, 0.18193507194519043, 0.17565798759460449]" #: ../Doc/whatsnew/2.3.rst:1558 -#, fuzzy msgid "" "The :mod:`!Tix` module has received various bug fixes and updates for the " "current version of the Tix package." msgstr "" -"El módulo :mod:`Tix` ha recibido varias correcciones de errores y " +"El módulo :mod:`!Tix` ha recibido varias correcciones de errores y " "actualizaciones para la versión actual del paquete Tix." #: ../Doc/whatsnew/2.3.rst:1561 -#, fuzzy msgid "" "The :mod:`!Tkinter` module now works with a thread-enabled version of Tcl. " "Tcl's threading model requires that widgets only be accessed from the thread " @@ -3193,21 +3492,20 @@ msgid "" "December/031107.html for a more detailed explanation of this change. " "(Implemented by Martin von Löwis.)" msgstr "" -"El módulo :mod:`Tkinter` ahora funciona con una versión de Tcl habilitada " +"El módulo :mod:`!Tkinter` ahora funciona con una versión de Tcl habilitada " "para subprocesos. El modelo de subprocesos de Tcl requiere que solo se " "acceda a los widgets desde el subproceso en el que se crearon; los accesos " -"desde otro hilo pueden hacer que Tcl entre en pánico. Para ciertas " -"interfaces Tcl, :mod:`Tkinter` ahora evitará esto automáticamente cuando se " -"acceda a un widget desde un subproceso diferente al ordenar un comando, " -"pasarlo al subproceso correcto y esperar los resultados. Otras interfaces no " -"se pueden manejar automáticamente, pero :mod:`Tkinter` ahora lanzará una " -"excepción en dicho acceso para que al menos pueda averiguar sobre el " -"problema. Consulte https://mail.python.org/pipermail/python-dev/2002-" -"December/031107.html para obtener una explicación más detallada de este " -"cambio. (Implementado por Martin von Löwis.)" +"desde otro subproceso pueden hacer que Tcl entre en pánico. Para ciertas " +"interfaces de Tcl, :mod:`!Tkinter` ahora evitará esto automáticamente cuando " +"se acceda a un widget desde un subproceso diferente mediante la ordenación " +"de un comando, pasándolo al subproceso correcto y esperando los resultados. " +"Otras interfaces no se pueden manejar automáticamente, pero :mod:`!Tkinter` " +"ahora generará una excepción en dicho acceso para que al menos pueda " +"averiguar sobre el problema. Consulte https://mail.python.org/pipermail/" +"python-dev/2002-December/031107.html para obtener una explicación más " +"detallada de este cambio. (Implementado por Martin von Löwis)." #: ../Doc/whatsnew/2.3.rst:1572 -#, fuzzy msgid "" "Calling Tcl methods through :mod:`!_tkinter` no longer returns only " "strings. Instead, if Tcl returns other objects those objects are converted " @@ -3216,43 +3514,43 @@ msgid "" "be controlled through the :meth:`!wantobjects` method of :class:`!tkapp` " "objects." msgstr "" -"Llamar a métodos Tcl a través del objeto :mod:`_tkinter` ya no retorna solo " -"cadena de caracteres.En vez, si Tcl retorna otros objetos esos objetos son " -"convertidos a su equivalente en Python,si uno existe, o envueltos en una " -"clase :class:`_tkinter. Tcl_Obj` si no existe un equivalente de Python. Este " -"comportamiento se puede controlar mediante el método :meth:`wantobjects` de " -"objetos :class:`tkapp`." +"La llamada a métodos Tcl a través de :mod:`!_tkinter` ya no devuelve solo " +"cadenas. En cambio, si Tcl devuelve otros objetos, esos objetos se " +"convierten en su equivalente de Python, si existe uno, o se encapsulan con " +"un objeto :class:`!_tkinter.Tcl_Obj` si no existe un equivalente de Python. " +"Este comportamiento se puede controlar a través del método :meth:`!" +"wantobjects` de los objetos :class:`!tkapp`." #: ../Doc/whatsnew/2.3.rst:1578 -#, fuzzy msgid "" "When using :mod:`!_tkinter` through the :mod:`!Tkinter` module (as most " "Tkinter applications will), this feature is always activated. It should not " "cause compatibility problems, since Tkinter would always convert string " "results to Python types where possible." msgstr "" -"Cuando se usa :mod:`_tkinter` a través del módulo :mod:`Tkinter` (como lo " -"harán la mayoría de las aplicaciones de Tkinter), esta función siempre está " +"Al utilizar :mod:`!_tkinter` a través del módulo :mod:`!Tkinter` (como lo " +"hacen la mayoría de las aplicaciones de Tkinter), esta función siempre está " "activada. No debería causar problemas de compatibilidad, ya que Tkinter " "siempre convertiría los resultados de cadenas a tipos de Python cuando fuera " "posible." #: ../Doc/whatsnew/2.3.rst:1583 -#, fuzzy msgid "" "If any incompatibilities are found, the old behavior can be restored by " "setting the :attr:`!wantobjects` variable in the :mod:`!Tkinter` module to " "false before creating the first :class:`!tkapp` object. ::" msgstr "" "Si se encuentran incompatibilidades, se puede restaurar el comportamiento " -"anterior estableciendo la variable :attr:`wantobjects` en el módulo :mod:" -"`Tkinter` en falso antes de crear el primer objeto :class:`tkapp`. ::" +"anterior configurando la variable :attr:`!wantobjects` en el módulo :mod:`!" +"Tkinter` como falsa antes de crear el primer objeto :class:`!tkapp`. ::" #: ../Doc/whatsnew/2.3.rst:1587 msgid "" "import Tkinter\n" "Tkinter.wantobjects = 0" msgstr "" +"importar Tkinter\n" +"Tkinter.wantobjects = 0" #: ../Doc/whatsnew/2.3.rst:1590 msgid "Any breakage caused by this change should be reported as a bug." @@ -3260,7 +3558,6 @@ msgstr "" "Cualquier rotura causada por este cambio debe notificarse como un error." #: ../Doc/whatsnew/2.3.rst:1592 -#, fuzzy msgid "" "The :mod:`!UserDict` module has a new :class:`!DictMixin` class which " "defines all dictionary methods for classes that already have a minimum " @@ -3268,22 +3565,22 @@ msgid "" "substitutable for dictionaries, such as the classes in the :mod:`shelve` " "module." msgstr "" -"El módulo :mod:`UserDict` tiene una nueva clase :class:`DictMixin` que " +"El módulo :mod:`!UserDict` tiene una nueva clase :class:`!DictMixin` que " "define todos los métodos de diccionario para las clases que ya tienen una " -"interfaz de mapeo mínima. Esto simplifica enormemente las clases de " -"escritura que deben ser sustituibles por diccionarios, como las clases del " -"módulo :mod:`shelve`." +"interfaz de mapeo mínima. Esto simplifica enormemente la escritura de clases " +"que deben ser sustituibles por diccionarios, como las clases del módulo :mod:" +"`shelve`." #: ../Doc/whatsnew/2.3.rst:1598 -#, fuzzy msgid "" "Adding the mix-in as a superclass provides the full dictionary interface " "whenever the class defines :meth:`~object.__getitem__`, :meth:`~object." "__setitem__`, :meth:`~object.__delitem__`, and :meth:`!keys`. For example::" msgstr "" -"Agregar la combinación como una superclase proporciona la interfaz de " -"diccionario completa siempre que la clase define :meth:`__getitem__`, :meth:" -"`__setitem__`, :meth:`__delitem__` y :meth:`keys`. Por ejemplo::" +"Al agregar la combinación como superclase, se obtiene la interfaz de " +"diccionario completa siempre que la clase defina :meth:`~object." +"__getitem__`, :meth:`~object.__setitem__`, :meth:`~object.__delitem__` y :" +"meth:`!keys`. Por ejemplo:" #: ../Doc/whatsnew/2.3.rst:1602 msgid "" @@ -3324,26 +3621,60 @@ msgid "" " 'iterkeys', 'itervalues', 'keylist', 'keys', 'pop', 'popitem',\n" " 'setdefault', 'update', 'valuelist', 'values']" msgstr "" +">>> import UserDict\n" +">>> class SeqDict(UserDict.DictMixin):\n" +"... \"\"\"Similar a un diccionario implementado con listas.\"\"\"\n" +"... def __init__(self):\n" +"... self.keylist = []\n" +"... self.valuelist = []\n" +"... def __getitem__(self, key):\n" +"... try:\n" +"... i = self.keylist.index(key)\n" +"... except ValueError:\n" +"... raise KeyError\n" +"... return self.valuelist[i]\n" +"... def __setitem__(self, key, value):\n" +"... try:\n" +"... i = self.keylist.index(key)\n" +"... self.valuelist[i] = value\n" +"... except ValueError:\n" +"... self.keylist.append(key)\n" +"... self.valuelist.append(value)\n" +"... def __delitem__(self, key):\n" +"... try:\n" +"... i = self.keylist.index(key)\n" +"... except ValueError:\n" +"... raise KeyError\n" +"... self.keylist.pop(i)\n" +"... self.valuelist.pop(i)\n" +"... def keys(self):\n" +"... return list(self.keylist)\n" +"...\n" +">>> s = SeqDict()\n" +">>> dir(s) # Verificar que se implementen otros métodos de diccionario\n" +"['__cmp__', '__contains__', '__delitem__', '__doc__', '__getitem__',\n" +"'__init__', '__iter__', '__len__', '__module__', '__repr__',\n" +"'__setitem__', 'clear', 'get', 'has_key', 'items', 'iteritems',\n" +"'iterkeys', 'itervalues', 'keylist', 'keys', 'pop', 'popitem',\n" +"'setdefault', 'update', 'valuelist', 'valores']" #: ../Doc/whatsnew/2.3.rst:1639 msgid "(Contributed by Raymond Hettinger.)" msgstr "(Parches aportados por Raymond Hettinger)" #: ../Doc/whatsnew/2.3.rst:1641 -#, fuzzy msgid "" "The DOM implementation in :mod:`xml.dom.minidom` can now generate XML output " "in a particular encoding by providing an optional encoding argument to the :" "meth:`~xml.dom.minidom.Node.toxml` and :meth:`~xml.dom.minidom.Node." "toprettyxml` methods of DOM nodes." msgstr "" -"La implementación DOM en :mod:`xml.dom.minidom` ahora puede generar salida " -"XML en una codificación particular proporcionando un argumento de " -"codificación opcional a los métodos :meth:`toxml` y :meth:`toprettyxml` de " -"los nodos DOM." +"La implementación de DOM en :mod:`xml.dom.minidom` ahora puede generar " +"salida XML en una codificación particular al proporcionar un argumento de " +"codificación opcional a los métodos :meth:`~xml.dom.minidom.Node.toxml` y :" +"meth:`~xml.dom.minidom.Node.toprettyxml` de los nodos DOM." #: ../Doc/whatsnew/2.3.rst:1645 -#, fuzzy msgid "" "The :mod:`!xmlrpclib` module now supports an XML-RPC extension for handling " "nil data values such as Python's ``None``. Nil values are always supported " @@ -3351,14 +3682,13 @@ msgid "" "``None``, you must supply a true value for the *allow_none* parameter when " "creating a :class:`!Marshaller` instance." msgstr "" -"El módulo :mod:`xmlrpclib` ahora admite una extensión XML-RPC para manejar " -"valores de datos nulos como ``None`` de Python. Los valores nulos siempre se " -"admiten al desagrupar una respuesta XML-RPC. Para generar solicitudes que " +"El módulo :mod:`!xmlrpclib` ahora admite una extensión XML-RPC para manejar " +"valores de datos nulos, como ``None`` de Python. Los valores nulos siempre " +"se admiten al desagrupar una respuesta XML-RPC. Para generar solicitudes que " "contengan ``None``, debe proporcionar un valor verdadero para el parámetro " -"*allow_none* al crear una instancia :class:`Marshaller`." +"*allow_none* al crear una instancia :class:`!Marshaller`." #: ../Doc/whatsnew/2.3.rst:1651 -#, fuzzy msgid "" "The new :mod:`!DocXMLRPCServer` module allows writing self-documenting XML-" "RPC servers. Run it in demo mode (as a program) to see it in action. " @@ -3366,11 +3696,11 @@ msgid "" "documentation; pointing xmlrpclib to the server allows invoking the actual " "methods. (Contributed by Brian Quinlan.)" msgstr "" -"El nuevo módulo :mod:`DocXMLRPCServer` permite escribir servidores XML-RPC " -"autodocumentados. Ejecútelo en modo de demostración (como un programa) para " -"verlo en acción. Al apuntar el navegador web al servidor RPC se produce una " -"documentación de estilo pydoc; apuntar xmlrpclib al servidor permite invocar " -"los métodos reales. (Contribuido por Brian Quinlan.)" +"El nuevo módulo :mod:`!DocXMLRPCServer` permite escribir servidores XML-RPC " +"autodocumentados. Ejecútelo en modo de demostración (como programa) para " +"verlo en acción. Al apuntar el navegador web al servidor RPC se genera " +"documentación de estilo pydoc; al apuntar xmlrpclib al servidor se pueden " +"invocar los métodos reales. (Contribuido por Brian Quinlan.)" #: ../Doc/whatsnew/2.3.rst:1657 msgid "" @@ -3388,9 +3718,10 @@ msgid "" ">{}>{}> u\"www.Alliancefrançaise.nu\".encode(\"idna\")\n" "'www.xn--alliancefranaise-npb.nu'" msgstr "" +">{}>{}> u\"www.Alliancefrançaise.nu\".encode(\"idna\")\n" +"'www.xn--alliancefranaise-npb.nu'" #: ../Doc/whatsnew/2.3.rst:1664 -#, fuzzy msgid "" "The :mod:`socket` module has also been extended to transparently convert " "Unicode hostnames to the ACE version before passing them to the C library. " @@ -3402,11 +3733,12 @@ msgid "" msgstr "" "El módulo :mod:`socket` también se ha ampliado para convertir de forma " "transparente los nombres de host Unicode a la versión ACE antes de pasarlos " -"a la biblioteca C. Los módulos que tratan con nombres de host como :mod:" -"`httplib` y :mod:`ftplib`) también admiten nombres de host Unicode; :mod:" -"`httplib` también envía encabezados HTTP ``Host`` utilizando la versión ACE " -"del nombre de dominio. :mod:`urllib` admite URL Unicode con nombres de host " -"que no sean ASCII siempre que la parte ``path`` de la URL sea solo ASCII." +"a la biblioteca C. Los módulos que se ocupan de los nombres de host, como :" +"mod:`!httplib` y :mod:`ftplib`, también admiten nombres de host Unicode; :" +"mod:`!httplib` también envía encabezados HTTP ``Host`` utilizando la versión " +"ACE del nombre de dominio. :mod:`urllib` admite URL Unicode con nombres de " +"host que no sean ASCII siempre que la parte ``path`` de la URL sea solo " +"ASCII." #: ../Doc/whatsnew/2.3.rst:1672 msgid "" @@ -3432,7 +3764,6 @@ msgstr "" "representación del tiempo." #: ../Doc/whatsnew/2.3.rst:1685 -#, fuzzy msgid "" "The three primary types are: :class:`~datetime.date`, representing a day, " "month, and year; :class:`~datetime.time`, consisting of hour, minute, and " @@ -3442,16 +3773,15 @@ msgid "" "points in time, and time zone logic is implemented by classes inheriting " "from the abstract :class:`~datetime.tzinfo` class." msgstr "" -"Los tres tipos principales son: :class:`date`, que representa un día, mes y " -"año; :class:`~datetime.time`, que consta de hora, minuto y segundo; y :class:" -"`~datetime.datetime`, que contiene todos los atributos de :class:`date` y :" -"class:`~datetime.time`. También hay una clase :class:`timedelta` que " -"representa las diferencias entre dos puntos en el tiempo, y la lógica de la " -"zona horaria se implementa mediante clases que heredan de la clase :class:" -"`tzinfo` abstracta." +"Los tres tipos principales son: :class:`~datetime.date`, que representa un " +"día, un mes y un año; :class:`~datetime.time`, que consta de horas, minutos " +"y segundos; y :class:`~datetime.datetime`, que contiene todos los atributos " +"de :class:`~datetime.date` y :class:`~datetime.time`. También existe una " +"clase :class:`~datetime.timedelta` que representa las diferencias entre dos " +"puntos en el tiempo, y la lógica de la zona horaria se implementa mediante " +"clases que heredan de la clase abstracta :class:`~datetime.tzinfo`." #: ../Doc/whatsnew/2.3.rst:1692 -#, fuzzy msgid "" "You can create instances of :class:`~datetime.date` and :class:`~datetime." "time` by either supplying keyword arguments to the appropriate constructor, " @@ -3459,11 +3789,11 @@ msgid "" "number of class methods. For example, the :meth:`~datetime.date.today` " "class method returns the current local date." msgstr "" -"Puede crear instancias de :class:`date` y :class:`~datetime.time` " -"proporcionando argumentos de palabras clave al constructor apropiado, p. Ej. " -"``datetime.date(year=1972, month=10, day=15)``, o utilizando uno de varios " -"métodos de clase. Por ejemplo, el método de clase :meth:`date.today` " -"devuelve la fecha local actual." +"Puede crear instancias de :class:`~datetime.date` y :class:`~datetime.time` " +"proporcionando argumentos de palabras clave al constructor adecuado, por " +"ejemplo, ``datetime.date(year=1972, month=10, day=15)``, o utilizando uno de " +"los diversos métodos de clase. Por ejemplo, el método de clase :meth:" +"`~datetime.date.today` devuelve la fecha local actual." #: ../Doc/whatsnew/2.3.rst:1698 msgid "" @@ -3486,17 +3816,24 @@ msgid "" ">>> now.strftime('%Y %d %b')\n" "'2002 30 Dec'" msgstr "" +">>> import datetime\n" +">>> now = datetime.datetime.now()\n" +">>> now.isoformat()\n" +"'2002-12-30T21:27:03.994956'\n" +">>> now.ctime() # Solo disponible en fecha, datetime\n" +"'Mon Dec 30 21:27:03 2002'\n" +">>> now.strftime('%Y %d %b')\n" +"'2002 30 Dec'" #: ../Doc/whatsnew/2.3.rst:1710 -#, fuzzy msgid "" "The :meth:`~datetime.datetime.replace` method allows modifying one or more " "fields of a :class:`~datetime.date` or :class:`~datetime.datetime` " "instance, returning a new instance::" msgstr "" -"El método :meth:`replace` permite modificar uno o más campos de una " -"instancia :class:`date` o :class:`~datetime.datetime`, devolviendo una nueva " -"instancia:" +"El método :meth:`~datetime.datetime.replace` permite modificar uno o más " +"campos de una instancia :class:`~datetime.date` o :class:`~datetime." +"datetime`, devolviendo una nueva instancia::" #: ../Doc/whatsnew/2.3.rst:1713 msgid "" @@ -3507,9 +3844,14 @@ msgid "" "datetime.datetime(2001, 12, 30, 12, 15, 38, 827738)\n" ">>>" msgstr "" +">>> d = datetime.datetime.now()\n" +">>> d\n" +"datetime.datetime(2002, 12, 30, 22, 15, 38, 827738)\n" +">>> d.replace(año=2001, hora = 12)\n" +"datetime.datetime(2001, 12, 30, 12, 15, 38, 827738)\n" +">>>" #: ../Doc/whatsnew/2.3.rst:1720 -#, fuzzy msgid "" "Instances can be compared, hashed, and converted to strings (the result is " "the same as that of :meth:`~datetime.datetime.isoformat`). :class:" @@ -3519,12 +3861,13 @@ msgid "" "parsing strings and getting back a :class:`~datetime.date` or :class:" "`~datetime.datetime`." msgstr "" -"Las instancias se pueden comparar, aplicar hash y convertir en cadenas (el " -"resultado es el mismo que el de :meth:`isoformat`). Las instancias de :class:" -"`date` y :class:`~datetime.datetime` se pueden restar entre sí y agregarse a " -"las instancias de :class:`timedelta`. La mayor característica que falta es " -"que no hay soporte de biblioteca estándar para analizar cadenas y recuperar " -"un :class:`date` o :class:`~datetime.datetime`." +"Las instancias se pueden comparar, codificar y convertir en cadenas (el " +"resultado es el mismo que el de :meth:`~datetime.datetime.isoformat`). Las " +"instancias :class:`~datetime.date` y :class:`~datetime.datetime` se pueden " +"restar entre sí y agregar a las instancias :class:`~datetime.timedelta`. La " +"característica que falta más es que no hay compatibilidad con la biblioteca " +"estándar para analizar cadenas y obtener un :class:`~datetime.date` o :class:" +"`~datetime.datetime`." #: ../Doc/whatsnew/2.3.rst:1727 msgid "" @@ -3554,13 +3897,12 @@ msgstr "" "opciones." #: ../Doc/whatsnew/2.3.rst:1742 -#, fuzzy msgid "" "You start by creating an instance of :class:`~optparse.OptionParser` and " "telling it what your program's options are. ::" msgstr "" -"Empiece creando una instancia de :class:`OptionParser` y diciéndole cuáles " -"son las opciones de su programa. ::" +"Comienza creando una instancia de :class:`~optparse.OptionParser` y " +"diciéndole cuáles son las opciones de tu programa. ::" #: ../Doc/whatsnew/2.3.rst:1745 msgid "" @@ -3575,15 +3917,24 @@ msgid "" " action='store', type='int', dest='length',\n" " help='set maximum length of output')" msgstr "" +"import sys\n" +"from optparse import OptionParser\n" +"\n" +"op = OptionParser()\n" +"op.add_option('-i', '--input',\n" +"action='store', type='string', dest='input',\n" +"help='establecer nombre de archivo de entrada')\n" +"op.add_option('-l', '--length',\n" +"action='store', type='int', dest='length',\n" +"help='establecer longitud máxima de salida')" #: ../Doc/whatsnew/2.3.rst:1756 -#, fuzzy msgid "" "Parsing a command line is then done by calling the :meth:`~optparse." "OptionParser.parse_args` method. ::" msgstr "" "Luego, el análisis de una línea de comando se realiza llamando al método :" -"meth:`parse_args`. ::" +"meth:`~optparse.OptionParser.parse_args`. ::" #: ../Doc/whatsnew/2.3.rst:1758 msgid "" @@ -3591,6 +3942,9 @@ msgid "" "print options\n" "print args" msgstr "" +"opciones, args = op.parse_args(sys.argv[1:])\n" +"imprimir opciones\n" +"imprimir argumentos" #: ../Doc/whatsnew/2.3.rst:1762 msgid "" @@ -3619,6 +3973,13 @@ msgid "" "[]\n" "$" msgstr "" +"$ ./python opt.py -i data arg1\n" +"\n" +"['arg1']\n" +"$ ./python opt.py --input=data --length=4\n" +"\n" +"[]\n" +"$" #: ../Doc/whatsnew/2.3.rst:1778 msgid "The help message is automatically generated for you:" @@ -3637,6 +3998,16 @@ msgid "" " set maximum length of output\n" "$" msgstr "" +"$ ./python opt.py --help\n" +"uso: opt.py [opciones]\n" +"\n" +"opciones:\n" +"-h, --help muestra este mensaje de ayuda y sale\n" +"-iINPUT, --input=INPUT\n" +"establece el nombre del archivo de entrada\n" +"-lLENGTH, --length=LENGTH\n" +"establece la longitud máxima de salida\n" +"$" #: ../Doc/whatsnew/2.3.rst:1793 msgid "See the module's documentation for more details." @@ -3948,7 +4319,6 @@ msgstr "" "instalación local de Expat." #: ../Doc/whatsnew/2.3.rst:1927 -#, fuzzy msgid "" "If you dynamically allocate type objects in your extension, you should be " "aware of a change in the rules relating to the :attr:`~type.__module__` and :" @@ -3958,20 +4328,19 @@ msgid "" "the desired effect. For more detail, read the API reference documentation " "or the source." msgstr "" -"Si asigna dinámicamente objetos de tipo en su extensión, debe tener en " -"cuenta un cambio en las reglas relacionadas con los atributos :attr:" -"`__module__` y :attr:`~definition.__name__`. En resumen, querrá asegurarse " -"de que el diccionario del tipo contenga una clave ``'__module__'``; hacer " -"que el nombre del módulo sea la parte del nombre del tipo que conduce al " -"período final ya no tendrá el efecto deseado. Para obtener más detalles, lea " -"la documentación de referencia de la API o la fuente." +"Si asigna objetos de tipo de forma dinámica en su extensión, debe tener en " +"cuenta un cambio en las reglas relacionadas con los atributos :attr:`~type." +"__module__` y :attr:`~type.__name__`. En resumen, deberá asegurarse de que " +"el diccionario del tipo contenga una clave ``'__module__'``; hacer que el " +"nombre del módulo sea la parte del nombre del tipo que precede al punto " +"final ya no tendrá el efecto deseado. Para obtener más detalles, lea la " +"documentación de referencia de la API o el código fuente." #: ../Doc/whatsnew/2.3.rst:1938 msgid "Port-Specific Changes" msgstr "Cambios específicos del puerto" #: ../Doc/whatsnew/2.3.rst:1940 -#, fuzzy msgid "" "Support for a port to IBM's OS/2 using the EMX runtime environment was " "merged into the main Python source tree. EMX is a POSIX emulation layer " @@ -3983,16 +4352,17 @@ msgid "" "part of the integration of the EMX port into CVS. (Contributed by Andrew " "MacIntyre.)" msgstr "" -"El soporte para un puerto para OS / 2 de IBM utilizando el entorno de " -"ejecución EMX se fusionó en el árbol de fuentes principal de Python. EMX es " -"una capa de emulación POSIX sobre las API del sistema OS / 2. El puerto de " -"Python para EMX intenta admitir toda la capacidad similar a POSIX expuesta " -"por el tiempo de ejecución de EMX y, en su mayoría, tiene éxito; :func:" -"`fork` y :func:`fcntl` están restringidos por las limitaciones de la capa de " -"emulación subyacente. El puerto estándar OS / 2, que utiliza el compilador " -"Visual Age de IBM, también obtuvo soporte para la semántica de importación " -"que distingue entre mayúsculas y minúsculas como parte de la integración del " -"puerto EMX en CVS. (Contribuido por Andrew MacIntyre.)" +"El soporte para un puerto para el sistema operativo IBM OS/2 que utiliza el " +"entorno de ejecución EMX se fusionó con el árbol de código fuente principal " +"de Python. EMX es una capa de emulación POSIX sobre las API del sistema " +"OS/2. El puerto de Python para EMX intenta soportar toda la capacidad " +"similar a POSIX expuesta por el entorno de ejecución EMX y, en su mayoría, " +"lo logra; :func:`!fork` y :func:`fcntl` están restringidos por las " +"limitaciones de la capa de emulación subyacente. El puerto estándar para " +"OS/2, que utiliza el compilador Visual Age de IBM, también obtuvo soporte " +"para semánticas de importación que distinguen entre mayúsculas y minúsculas " +"como parte de la integración del puerto EMX en CVS. (Contribuido por Andrew " +"MacIntyre.)" #: ../Doc/whatsnew/2.3.rst:1949 msgid "" @@ -4112,31 +4482,29 @@ msgstr "" "aparte de una ligera aceleración cuando Python se ejecuta sin :option:`-O`." #: ../Doc/whatsnew/2.3.rst:2001 -#, fuzzy msgid "" "C extensions that access the :attr:`~frame.f_lineno` field of frame objects " "should instead call ``PyCode_Addr2Line(f->f_code, f->f_lasti)``. This will " "have the added effect of making the code work as desired under \"python -O\" " "in earlier versions of Python." msgstr "" -"Las extensiones C que acceden al campo :attr:`f_lineno` de objetos de marco " -"deben llamar a ``PyCode_Addr2Line(f->f_code, f->f_lasti)``. Esto tendrá el " -"efecto adicional de hacer que el código funcione como se desea en \"python -" -"O\" en versiones anteriores de Python." +"Las extensiones de C que acceden al campo :attr:`~frame.f_lineno` de los " +"objetos de marco deberían llamar a ``PyCode_Addr2Line(f->f_code, f-" +">f_lasti)``. Esto tendrá el efecto adicional de hacer que el código funcione " +"como se desea con \"python -O\" en versiones anteriores de Python." #: ../Doc/whatsnew/2.3.rst:2006 -#, fuzzy msgid "" "A nifty new feature is that trace functions can now assign to the :attr:" "`~frame.f_lineno` attribute of frame objects, changing the line that will be " "executed next. A ``jump`` command has been added to the :mod:`pdb` debugger " "taking advantage of this new feature. (Implemented by Richie Hindle.)" msgstr "" -"Una característica nueva e ingeniosa es que las funciones de seguimiento " -"ahora se pueden asignar al atributo :attr:`f_lineno` de los objetos de " -"marco, cambiando la línea que se ejecutará a continuación. Se ha agregado un " -"comando ``jump`` al depurador :mod:`pdb` aprovechando esta nueva " -"característica. (Implementado por Richie Hindle.)" +"Una característica nueva y elegante es que las funciones de seguimiento " +"ahora pueden asignarse al atributo :attr:`~frame.f_lineno` de los objetos de " +"marco, lo que cambia la línea que se ejecutará a continuación. Se ha " +"agregado un comando ``jump`` al depurador :mod:`pdb` que aprovecha esta " +"nueva característica. (Implementado por Richie Hindle)." #: ../Doc/whatsnew/2.3.rst:2015 msgid "Porting to Python 2.3" @@ -4189,17 +4557,16 @@ msgstr "" "`section-encodings` para obtener más información." #: ../Doc/whatsnew/2.3.rst:2034 -#, fuzzy msgid "" "Calling Tcl methods through :mod:`!_tkinter` no longer returns only " "strings. Instead, if Tcl returns other objects those objects are converted " "to their Python equivalent, if one exists, or wrapped with a :class:`!" "_tkinter.Tcl_Obj` object if no Python equivalent exists." msgstr "" -"Llamar a métodos Tcl a través del objeto :mod:`_tkinter` ya no retornan solo " -"cadenas de caracteres.En vez, si Tcl retorna otros objetos esos objetos son " -"convertidos a su equivalente en Python, si uno existe, o está envuelto con " -"un :class:`_tkinter.Tcl_Obj` si no existe un equivalente de Python." +"La llamada a métodos Tcl a través de :mod:`!_tkinter` ya no devuelve solo " +"cadenas. En cambio, si Tcl devuelve otros objetos, esos objetos se " +"convierten en su equivalente de Python, si existe uno, o se encapsulan con " +"un objeto :class:`!_tkinter.Tcl_Obj` si no existe un equivalente de Python." #: ../Doc/whatsnew/2.3.rst:2039 msgid "" @@ -4234,7 +4601,6 @@ msgid "You can no longer disable assertions by assigning to ``__debug__``." msgstr "Ya no puede deshabilitar las aserciones asignando a ``__debug__``." #: ../Doc/whatsnew/2.3.rst:2052 -#, fuzzy msgid "" "The Distutils :func:`!setup` function has gained various new keyword " "arguments such as *depends*. Old versions of the Distutils will abort if " @@ -4242,12 +4608,12 @@ msgid "" "new :func:`!get_distutil_options` function in your :file:`setup.py` and only " "uses the new keywords with a version of the Distutils that supports them::" msgstr "" -"La función Distutils :func:`setup` ha ganado varios argumentos de palabras " -"clave nuevas, como *depends*. Las versiones antiguas de Distutils se " -"abortarán si se pasan palabras clave desconocidas. Una solución es verificar " -"la presencia de la nueva función :func:`get_distutil_options` en su :file:" -"`setup.py` y solo usa las nuevas palabras clave con una versión de Distutils " -"que las admita:" +"La función :func:`!setup` de Distutils ha obtenido varios argumentos de " +"palabras clave nuevos, como *depends*. Las versiones anteriores de Distutils " +"se interrumpirán si se les pasan palabras clave desconocidas. Una solución " +"es comprobar la presencia de la nueva función :func:`!get_distutil_options` " +"en su :file:`setup.py` y utilizar las nuevas palabras clave solo con una " +"versión de Distutils que las admita:" #: ../Doc/whatsnew/2.3.rst:2058 msgid "" @@ -4258,6 +4624,12 @@ msgid "" " kw['depends'] = ['foo.h']\n" "ext = Extension(**kw)" msgstr "" +"from distutils import core\n" +"\n" +"kw = {'sources': 'foo.c', ...}\n" +"if hasattr(core, 'get_distutil_options'):\n" +" kw['depends'] = ['foo.h']\n" +"ext = Extension(**kw)" #: ../Doc/whatsnew/2.3.rst:2065 msgid "" diff --git a/whatsnew/2.4.po b/whatsnew/2.4.po index 8f95782136..b6a770a343 100644 --- a/whatsnew/2.4.po +++ b/whatsnew/2.4.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-10-28 11:57+0200\n" "Last-Translator: \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.4.rst:3 @@ -130,6 +130,31 @@ msgid "" ">>> a\n" "set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'z'])" msgstr "" +">>> a = set('abracadabra') # formar un conjunto a partir de una cadena\n" +">>> 'z' en a # prueba rápida de pertenencia\n" +"Falso\n" +">>> a # letras únicas en a\n" +"set(['a', 'r', 'b', 'c', 'd'])\n" +">>> ''.join(a) # convertir de nuevo a una cadena\n" +"'arbcd'\n" +"\n" +">>> b = set('alacazam') # formar un segundo conjunto\n" +">>> a - b # letras en a pero no en b\n" +"set(['r', 'd', 'b'])\n" +">>> a | b # letras en a o b\n" +"set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])\n" +">>> a & b # letras en a y b\n" +"set(['a', 'c'])\n" +">>> a ^ b # letras en a o b pero no en ambos\n" +"set(['r', 'd', 'b', 'm', 'z', 'l'])\n" +"\n" +">>> a.add('z') # agrega un nuevo elemento\n" +">>> a.update('wxy') # agrega varios elementos nuevos\n" +">>> a\n" +"set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'x', 'z'])\n" +">>> a.remove('x') # saca un elemento\n" +">>> a\n" +"set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'z'])" #: ../Doc/whatsnew/2.4.rst:71 msgid "" @@ -239,6 +264,9 @@ msgid "" "for link in links:\n" " ..." msgstr "" +"links = [enlace para enlace en get_all_links() si no es link.followed]\n" +"para enlace en enlaces:\n" +"..." #: ../Doc/whatsnew/2.4.rst:129 msgid "instead of ::" @@ -251,6 +279,10 @@ msgid "" " continue\n" " ..." msgstr "" +"para el enlace en get_all_links():\n" +"si link.followed:\n" +"continúa\n" +"..." #: ../Doc/whatsnew/2.4.rst:136 msgid "" @@ -280,6 +312,9 @@ msgid "" "for link in links:\n" " ..." msgstr "" +"links = (enlace para enlace en get_all_links() si no se sigue el enlace)\n" +"para enlace en enlaces:\n" +"..." #: ../Doc/whatsnew/2.4.rst:148 msgid "" @@ -296,7 +331,7 @@ msgstr "" #: ../Doc/whatsnew/2.4.rst:153 msgid "print sum(obj.count for obj in list_all_objects())" -msgstr "" +msgstr "imprimir suma(obj.count para obj en list_all_objects())" #: ../Doc/whatsnew/2.4.rst:155 msgid "" @@ -354,6 +389,8 @@ msgid "" ">>> '%(page)i: %(title)s' % {'page':2, 'title': 'The Best of Times'}\n" "'2: The Best of Times'" msgstr "" +">>> '%(page)i: %(title)s' % {'page':2, 'title': 'Lo mejor de los tiempos'}\n" +"'2: Lo mejor de los tiempos'" #: ../Doc/whatsnew/2.4.rst:183 msgid "" @@ -393,6 +430,10 @@ msgid "" ">>> t.substitute({'page':2, 'title': 'The Best of Times'})\n" "'2: The Best of Times'" msgstr "" +">>> import string\n" +">>> t = string.Template('$page: $title')\n" +">>> t.substitute({'page':2, 'title': 'Lo mejor de los tiempos'})\n" +"'2: Lo mejor de los tiempos'" #: ../Doc/whatsnew/2.4.rst:200 msgid "" @@ -410,6 +451,9 @@ msgid "" ">>> t.safe_substitute({'page':3})\n" "'3: $title'" msgstr "" +">>> t = string.Template('$página: $título')\n" +">>> t.safe_substitute({'página':3})\n" +"'3: $título'" #: ../Doc/whatsnew/2.4.rst:211 msgid ":pep:`292` - Simpler String Substitutions" @@ -448,6 +492,12 @@ msgid "" "\n" " meth = classmethod(meth) # Rebind name to wrapped-up class method" msgstr "" +"clase C:\n" +"def meth (cls):\n" +"...\n" +"\n" +"meth = classmethod(meth) # Volver a vincular el nombre al método de clase " +"encapsulado" #: ../Doc/whatsnew/2.4.rst:233 msgid "" @@ -501,6 +551,11 @@ msgid "" " def meth (cls):\n" " ..." msgstr "" +"clase C:\n" +"\n" +"@classmethod\n" +"def meth (cls):\n" +"..." #: ../Doc/whatsnew/2.4.rst:256 msgid "" @@ -518,6 +573,11 @@ msgid "" "def f ():\n" " ..." msgstr "" +"@A\n" +"@B\n" +"@C\n" +"def f():\n" +"..." #: ../Doc/whatsnew/2.4.rst:265 msgid "It's equivalent to the following pre-decorator code::" @@ -528,6 +588,8 @@ msgid "" "def f(): ...\n" "f = A(B(C(f)))" msgstr "" +"definición f(): ...\n" +"f = A(B(C(f)))" #: ../Doc/whatsnew/2.4.rst:270 msgid "" @@ -575,6 +637,18 @@ msgid "" "'decorated'\n" ">>>" msgstr "" +">>> def deco(func):\n" +"... func.attr = 'decorado'\n" +"... return func\n" +"...\n" +">>> @deco\n" +"... def f(): pass\n" +"...\n" +">>> f\n" +"\n" +">>> f.attr\n" +"'decorado'\n" +">>>" #: ../Doc/whatsnew/2.4.rst:295 msgid "" @@ -601,6 +675,20 @@ msgid "" "def p2(arg):\n" " print arg*2" msgstr "" +"def require_int (función):\n" +"def contenedor (arg):\n" +"assert isinstance(arg, int)\n" +"return func(arg)\n" +"\n" +"return contenedor\n" +"\n" +"@require_int\n" +"def p1 (arg):\n" +"print arg\n" +"\n" +"@require_int\n" +"def p2(arg):\n" +"print arg*2" #: ../Doc/whatsnew/2.4.rst:313 msgid "" @@ -631,6 +719,9 @@ msgid "" "_deco = C(args)\n" "f = A(B(_deco(f)))" msgstr "" +"def f(): ...\n" +"_deco = C(argumentos)\n" +"f = A(B(_deco(f)))" #: ../Doc/whatsnew/2.4.rst:325 msgid "" @@ -640,17 +731,17 @@ msgstr "" "muy dificultoso." #: ../Doc/whatsnew/2.4.rst:327 -#, fuzzy msgid "" "A small related change makes the :attr:`func_name ` " "attribute of functions writable. This attribute is used to display function " "names in tracebacks, so decorators should change the name of any new " "function that's constructed and returned." msgstr "" -"Un pequeño cambio relacionado hace el atributo :attr:`func_name` de la " -"función modificable. Este atributo es usado para desplegar nombres de " -"funciones en el rastreo, entonces los decoradores cambia el nombre de " -"cualquier nueva función que es construida y retornada." +"Un pequeño cambio relacionado hace que el atributo :attr:`func_name " +"` de las funciones sea escribible. Este atributo se " +"utiliza para mostrar los nombres de las funciones en los seguimientos, por " +"lo que los decoradores deben cambiar el nombre de cualquier función nueva " +"que se construya y devuelva." #: ../Doc/whatsnew/2.4.rst:339 msgid ":pep:`318` - Decorators for Functions, Methods and Classes" @@ -696,6 +787,12 @@ msgid "" "2\n" "1" msgstr "" +">>> para i en reversed(xrange(1,4)):\n" +"... imprimir i\n" +"...\n" +"3\n" +"2\n" +"1" #: ../Doc/whatsnew/2.4.rst:360 msgid "" @@ -725,6 +822,12 @@ msgid "" "root:*:0:0:System Administrator:/var/root:/bin/tcsh\n" " ..." msgstr "" +">>> input = open('/etc/passwd', 'r')\n" +">>> for line in reversed(list(input)):\n" +"... print line\n" +"...\n" +"root:*:0:0:Administrador del sistema:/var/root:/bin/tcsh\n" +"..." #: ../Doc/whatsnew/2.4.rst:377 msgid ":pep:`322` - Reverse Iteration" @@ -739,7 +842,6 @@ msgid "PEP 324: New subprocess Module" msgstr "PEP 324: Nuevo módulo de subproceso" #: ../Doc/whatsnew/2.4.rst:386 -#, fuzzy msgid "" "The standard library provides a number of ways to execute a subprocess, " "offering different features and different levels of complexity. ``os." @@ -750,26 +852,25 @@ msgid "" "naming is confusing. The :mod:`subprocess` module cleans this up, " "providing a unified interface that offers all the features you might need." msgstr "" -"La librería estándar provee un cierto número de formas de ejecutar un " -"subproceso, ofreciendo diferentes funcionalidades y diferentes niveles de " -"complejidad. ``os.system(command)`` es fácil de usar pero lento (esto corre " -"un proceso a nivel de interprete de comandos)y peligroso (se tiene que ser " -"cuidadoso con no considerar los metacaracteres usados en el intérprete)\n" -"El módulo :mod:`popen2` ofrece clases que pueden capturar la salida estándar " -"y el error estándar del subproceso, pero el nombre puede ser confuso.\n" -"El módulo :mod:`subprocess` deja esto mas claro proveyendo una interface " -"unificada que ofrece todas las funcionalidades que usted necesita." +"La biblioteca estándar proporciona varias formas de ejecutar un subproceso, " +"ofreciendo distintas funciones y distintos niveles de complejidad. ``os." +"system(command)`` es fácil de usar, pero lento (ejecuta un proceso de shell " +"que ejecuta el comando) y peligroso (hay que tener cuidado con el escape de " +"los metacaracteres del shell). El módulo :mod:`!popen2` ofrece clases que " +"pueden capturar la salida estándar y el error estándar del subproceso, pero " +"la nomenclatura es confusa. El módulo :mod:`subprocess` soluciona este " +"problema, proporcionando una interfaz unificada que ofrece todas las " +"funciones que se pueden necesitar." #: ../Doc/whatsnew/2.4.rst:395 -#, fuzzy msgid "" "Instead of :mod:`!popen2`'s collection of classes, :mod:`subprocess` " "contains a single class called :class:`subprocess.Popen` whose constructor " "supports a number of different keyword arguments. ::" msgstr "" -"En vez de :mod:`popen2` que es una colección de clases el :mod:`subprocess` " -"contiene una sola clase llamada :class:`Popen` cuyo constructor soporta un " -"número de diferentes argumentos de palabra clave:" +"En vez de :mod:`!popen2` que es una colección de clases el :mod:`subprocess` " +"contiene una sola clase llamada :class:`subprocess.Popen` cuyo constructor " +"soporta un número de diferentes argumentos de palabra clave:" #: ../Doc/whatsnew/2.4.rst:399 msgid "" @@ -779,6 +880,11 @@ msgid "" " cwd=None, env=None, universal_newlines=False,\n" " startupinfo=None, creationflags=0):" msgstr "" +"clase Popen(args, bufsize=0, ejecutable=Ninguno,\n" +"stdin=Ninguno, stdout=Ninguno, stderr=Ninguno,\n" +"preexec_fn=Ninguno, close_fds=False, shell=False,\n" +"cwd=Ninguno, env=Ninguno, universal_newlines=False,\n" +"startupinfo=Ninguno, creationflags=0):" #: ../Doc/whatsnew/2.4.rst:405 msgid "" @@ -884,6 +990,13 @@ msgid "" " # dpkg returned an error\n" " ..." msgstr "" +"sts = subprocess.call(['dpkg', '-i', '/tmp/new-package.deb'])\n" +"if sts == 0:\n" +"# Éxito\n" +"...\n" +"else:\n" +"# dpkg devolvió un error\n" +"..." #: ../Doc/whatsnew/2.4.rst:452 msgid "" @@ -897,7 +1010,7 @@ msgstr "" #: ../Doc/whatsnew/2.4.rst:456 msgid "sts = subprocess.call('dpkg -i /tmp/new-package.deb', shell=True)" -msgstr "" +msgstr "sts = subproceso.call('dpkg -i /tmp/nuevo-paquete.deb', shell=True)" #: ../Doc/whatsnew/2.4.rst:458 msgid "" @@ -1030,6 +1143,8 @@ msgid "" ">>> 1.1\n" "1.1000000000000001" msgstr "" +">>> 1.1\n" +"1.1000000000000001" #: ../Doc/whatsnew/2.4.rst:521 msgid "" @@ -1106,6 +1221,11 @@ msgid "" ">>> decimal.Decimal(\"1.1\")\n" "Decimal(\"1.1\")" msgstr "" +">>> importar decimal\n" +">>> decimal.Decimal(1972)\n" +"Decimal(\"1972\")\n" +">>> decimal.Decimal(\"1.1\")\n" +"Decimal(\"1.1\")" #: ../Doc/whatsnew/2.4.rst:556 msgid "" @@ -1120,6 +1240,8 @@ msgid "" ">>> decimal.Decimal((1, (1, 4, 7, 5), -2))\n" "Decimal(\"-14.75\")" msgstr "" +">>> decimal.Decimal((1, (1, 4, 7, 5), -2))\n" +"Decimal(\"-14,75\")" #: ../Doc/whatsnew/2.4.rst:562 msgid "" @@ -1154,6 +1276,11 @@ msgid "" ">>> decimal.Decimal('%.12f' % f)\n" "Decimal(\"1.100000000000\")" msgstr "" +">>> f = 1,1\n" +">>> decimal.Decimal(str(f))\n" +"Decimal(\"1,1\")\n" +">>> decimal.Decimal('%.12f' % f)\n" +"Decimal(\"1,100000000000\")" #: ../Doc/whatsnew/2.4.rst:578 msgid "" @@ -1184,6 +1311,20 @@ msgid "" " ...\n" "decimal.InvalidOperation: x ** (non-integer)" msgstr "" +">>> a = decimal.Decimal('35,72')\n" +">>> b = decimal.Decimal('1,73')\n" +">>> a+b\n" +"Decimal(\"37,45\")\n" +">>> a-b\n" +"Decimal(\"33,99\")\n" +">>> a*b\n" +"Decimal(\"61.7956\")\n" +">>> a/b\n" +"Decimal(\"20.64739884393063583815028902\")\n" +">>> a XASDF00b\n" +"Traceback (most recent call last):\n" +" ...\n" +"decimal.InvalidOperation: x ** (no entero)" #: ../Doc/whatsnew/2.4.rst:599 msgid "" @@ -1204,6 +1345,14 @@ msgid "" "types.\n" ">>>" msgstr "" +">>> a + 4\n" +"Decimal(\"39.72\")\n" +">>> a + 4.5\n" +"Traceback (última llamada más reciente):\n" +"...\n" +"TypeError: Solo puede interactuar con Decimal con tipos de datos int, long o " +"Decimal.\n" +">>>" #: ../Doc/whatsnew/2.4.rst:610 msgid "" @@ -1228,6 +1377,12 @@ msgid "" ">>> cmath.sqrt(-d)\n" "351364.18288201344j" msgstr "" +">>> importar matemáticas, cmath\n" +">>> d = decimal.Decimal('123456789012.345')\n" +">>> matemáticas.sqrt(d)\n" +"351364.18288201344\n" +">>> cmath.sqrt(-d)\n" +"351364.18288201344j" #: ../Doc/whatsnew/2.4.rst:623 msgid "" @@ -1244,6 +1399,8 @@ msgid "" ">>> d.sqrt()\n" "Decimal(\"351364.1828820134592177245001\")" msgstr "" +">>> d.sqrt()\n" +"Decimal(\"351364.1828820134592177245001\")" #: ../Doc/whatsnew/2.4.rst:632 msgid "The :class:`Context` type" @@ -1306,6 +1463,13 @@ msgid "" ">>> decimal.Decimal(1) / decimal.Decimal(7)\n" "Decimal(\"0.142857143\")" msgstr "" +">>> decimal.getcontext().prec\n" +"28\n" +">>> decimal.Decimal(1) / decimal.Decimal(7)\n" +"Decimal(\"0,1428571428571428571428571429\")\n" +">>> decimal.getcontext().prec = 9\n" +">>> decimal.Decimal(1) / decimal.Decimal(7)\n" +"Decimal(\"0,142857143\")" #: ../Doc/whatsnew/2.4.rst:661 msgid "" @@ -1328,6 +1492,14 @@ msgid "" "Decimal(\"Infinity\")\n" ">>>" msgstr "" +">>> decimal.Decimal(1) / decimal.Decimal(0)\n" +"Traceback (última llamada más reciente):\n" +"...\n" +"decimal.DivisionByZero: x / 0\n" +">>> decimal.getcontext().traps[decimal.DivisionByZero] = False\n" +">>> decimal.Decimal(1) / decimal.Decimal(0)\n" +"Decimal(\"Infinito\")\n" +">>>" #: ../Doc/whatsnew/2.4.rst:674 msgid "" @@ -1362,6 +1534,8 @@ msgid "" "`http://www.lahey.com/float.htm `__" msgstr "" +"`http://www.lahey.com/float.htm `__" #: ../Doc/whatsnew/2.4.rst:688 msgid "" @@ -1372,9 +1546,8 @@ msgstr "" "inexactitud de los puntos flotantes pueden causar." #: ../Doc/whatsnew/2.4.rst:693 -#, fuzzy msgid "https://speleotrove.com/decimal/" -msgstr "http://speleotrove.com/decimal/" +msgstr "https://speleotrove.com/decimal/" #: ../Doc/whatsnew/2.4.rst:692 msgid "" @@ -1415,6 +1588,10 @@ msgid "" " CGIXMLRPCRequestHandler,\\\n" " resolve_dotted_attribute" msgstr "" +"de SimpleXMLRPCServer importar SimpleXMLRPCServer,\\\n" +"SimpleXMLRPCRequestHandler,\\\n" +"CGIXMLRPCRequestHandler,\\\n" +"resolve_dotted_attribute" #: ../Doc/whatsnew/2.4.rst:713 msgid "" @@ -1434,6 +1611,10 @@ msgid "" " CGIXMLRPCRequestHandler,\n" " resolve_dotted_attribute)" msgstr "" +"from SimpleXMLRPCServer import (SimpleXMLRPCServer,\n" +" SimpleXMLRPCRequestHandler,\n" +" CGIXMLRPCRequestHandler,\n" +" resolve_dotted_attribute)" #: ../Doc/whatsnew/2.4.rst:722 msgid "" @@ -1518,7 +1699,6 @@ msgstr "" "`double` en una cadena ASCII." #: ../Doc/whatsnew/2.4.rst:759 -#, fuzzy msgid "" "The code for these functions came from the GLib library (`https://developer-" "old.gnome.org/glib/2.26/ `__), cuyos " +"desarrolladores amablemente renovaron la licencia de las funciones " +"relevantes y las donaron a la Python Software Foundation. El módulo :mod:" +"`locale` ahora puede cambiar la configuración regional numérica, lo que " +"permite que extensiones como GTK+ produzcan los resultados correctos." #: ../Doc/whatsnew/2.4.rst:768 msgid ":pep:`331` - Locale-Independent Float/String Conversions" @@ -1626,6 +1807,10 @@ msgid "" "'www.python.org'.rsplit('.', 1)\n" "['www.python', 'org']" msgstr "" +">>> 'www.python.org'.split('.', 1)\n" +"['www', 'python.org']\n" +"'www.python.org'.rsplit('.', 1)\n" +"['www.python', 'org']" #: ../Doc/whatsnew/2.4.rst:809 msgid "" @@ -1677,6 +1862,18 @@ msgid "" ">>> L\n" "['A', 'b', 'c', 'D']" msgstr "" +">>> L = ['A', 'b', 'c', 'D']\n" +">>> L.sort() # Ordenación que distingue entre mayúsculas y minúsculas\n" +">>> L\n" +"['A', 'D', 'b', 'c']\n" +">>> # Uso del parámetro 'key' para ordenar la lista\n" +">>> L.sort(key=lambda x: x.lower())\n" +">>> L\n" +"['A', 'b', 'c', 'D']\n" +">>> # Método tradicional\n" +">>> L.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()))\n" +">>> L\n" +"['A', 'b', 'c', 'D']" #: ../Doc/whatsnew/2.4.rst:835 msgid "" @@ -1710,6 +1907,9 @@ msgid "" ">>> L\n" "['A', 'b', 'c', 'D']" msgstr "" +">>> L.sort(key=str.lower)\n" +">>> L\n" +"['A', 'b', 'c', 'D']" #: ../Doc/whatsnew/2.4.rst:849 msgid "" @@ -1785,6 +1985,24 @@ msgid "" "red 1\n" "yellow 5" msgstr "" +">>> L = [9,7,8,3,2,4,1,6,5]\n" +">>> [10+i for i in sorted(L)] # utilizable en una comprensión de lista\n" +"[11, 12, 13, 14, 15, 16, 17, 18, 19]\n" +">>> L # el original no se modifica\n" +"[9,7,8,3,2,4,1,6,5]\n" +">>> sorted('Monty Python') # cualquier iterable puede ser una entrada\n" +"[' ', 'M', 'P', 'h', 'n', 'n', 'o', 'o', 't', 't', 'y', 'y']\n" +"\n" +">>> # Lista el contenido de un diccionario ordenado por valores clave\n" +">>> colormap = dict(red=1, blue=2, green=3, black=4, yellow=5)\n" +">>> for k, v en sorted(colormap.iteritems()):\n" +"... imprimir k, v\n" +"...\n" +"negro 4\n" +"azul 2\n" +"verde 3\n" +"rojo 1\n" +"amarillo 5" #: ../Doc/whatsnew/2.4.rst:892 ../Doc/whatsnew/2.4.rst:920 #: ../Doc/whatsnew/2.4.rst:1213 @@ -1846,6 +2064,13 @@ msgid "" ">>> transpose([])\n" "[]" msgstr "" +">>> def transpose(matriz):\n" +"... return zip(*matriz)\n" +"...\n" +">>> transpose([(1,2,3), (4,5,6)])\n" +"[(1, 4), (2, 5), (3, 6)]\n" +">>> transpose([])\n" +"[]" #: ../Doc/whatsnew/2.4.rst:922 msgid "" @@ -2004,15 +2229,15 @@ msgstr "" "obtener todos los detalles." #: ../Doc/whatsnew/2.4.rst:998 -#, fuzzy msgid "" "The :mod:`!asyncore` module's :func:`!loop` function now has a *count* " "parameter that lets you perform a limited number of passes through the " "polling loop. The default is still to loop forever." msgstr "" -"El módulo :mod:`asyncore` y la función :func:`loop` ahora tiene un parámetro " -"*count* que permite ejecutar un limitado número de pases mediante el bucle. " -"El valor predeterminado sigue siendo el bucle para siempre." +"La función :func:`!loop` del módulo :mod:`!asyncore` ahora tiene un " +"parámetro *count* que le permite realizar una cantidad limitada de pasadas a " +"través del bucle de sondeo. El valor predeterminado sigue siendo el bucle " +"indefinidamente." #: ../Doc/whatsnew/2.4.rst:1002 msgid "" @@ -2117,6 +2342,20 @@ msgid "" ">>> 'h' in d # search the deque\n" "True" msgstr "" +">>> from collections import deque\n" +">>> d = deque('ghi') # crea un nuevo deque con tres elementos\n" +">>> d.append('j') # agrega una nueva entrada al lado derecho\n" +">>> d.appendleft('f') # agrega una nueva entrada al lado izquierdo\n" +">>> d # muestra la representación del deque\n" +"deque(['f', 'g', 'h', 'i', 'j'])\n" +">>> d.pop() # devuelve y elimina el elemento más a la derecha\n" +"'j'\n" +">>> d.popleft() # devuelve y elimina el elemento más a la izquierda\n" +"'f'\n" +">>> list(d) # lista el contenido del deque\n" +"['g', 'h', 'i']\n" +">>> 'h' in d # busca el deque\n" +"True" #: ../Doc/whatsnew/2.4.rst:1051 msgid "" @@ -2129,7 +2368,6 @@ msgstr "" "(Contribuido por Raymond Hettinger.)" #: ../Doc/whatsnew/2.4.rst:1055 -#, fuzzy msgid "" "The :mod:`ConfigParser ` classes have been enhanced slightly. " "The :meth:`~configparser.ConfigParser.read` method now returns a list of the " @@ -2138,11 +2376,12 @@ msgid "" "argument that isn't a string. (Contributed by John Belmonte and David " "Goodger.)" msgstr "" -"Las clases de :mod:`ConfigParser` se han mejorado ligeramente. El método :" -"meth:`read` ahora devuelve una lista de los archivos que se analizaron " -"correctamente y el método :meth:`set` lanza :exc:`TypeError` si se pasa un " -"argumento *value* que no es una cadena. (Contribuido por John Belmonte y " -"David Goodger.)" +"Las clases :mod:`ConfigParser ` se han mejorado ligeramente. " +"El método :meth:`~configparser.ConfigParser.read` ahora devuelve una lista " +"de los archivos que se analizaron correctamente y el método :meth:" +"`~configparser.ConfigParser.set` genera :exc:`TypeError` si se le pasa un " +"argumento *value* que no sea una cadena. (Contribuido por John Belmonte y " +"David Goodger)." #: ../Doc/whatsnew/2.4.rst:1060 msgid "" @@ -2202,7 +2441,6 @@ msgstr "" "una clasificación completa. (Contribuido por Raymond Hettinger.)" #: ../Doc/whatsnew/2.4.rst:1084 -#, fuzzy msgid "" "The :mod:`httplib ` module now contains constants for HTTP status " "codes defined in various HTTP-related RFC documents. Constants have names " @@ -2210,11 +2448,11 @@ msgid "" "`MOVED_PERMANENTLY`; use pydoc to get a full list. (Contributed by Andrew " "Eland.)" msgstr "" -"El módulo :mod:`httplib` ahora contiene constantes para códigos de estado " -"HTTP definidos en varios documentos RFC relacionados con HTTP. Las " +"El módulo :mod:`httplib ` ahora contiene constantes para los códigos " +"de estado HTTP definidos en varios documentos RFC relacionados con HTTP. Las " "constantes tienen nombres como :const:`OK`, :const:`CREATED`, :const:" -"`CONTINUE`, y :const:`MOVED_PERMANENTLY`; use pydoc para obtener una lista " -"completa. (Contribuido por Andrew Eland.)" +"`CONTINUE` y :const:`MOVED_PERMANENTLY`; utilice pydoc para obtener una " +"lista completa. (Contribuido por Andrew Eland)." #: ../Doc/whatsnew/2.4.rst:1090 msgid "" @@ -2268,6 +2506,17 @@ msgid "" "0 [12, 14]\n" ">>>" msgstr "" +">>> importar itertools\n" +">>> L = [2, 4, 6, 7, 8, 9, 11, 12, 14]\n" +">>> para key_val, it en itertools.groupby(L, lambda x: x % 2):\n" +"... imprimir key_val, list(it)\n" +"...\n" +"0 [2, 4, 6]\n" +"1 [7]\n" +"0 [8]\n" +"1 [9, 11]\n" +"0 [12, 14]\n" +">>>" #: ../Doc/whatsnew/2.4.rst:1118 msgid "" @@ -2300,6 +2549,25 @@ msgid "" ">>> [(k, len(list(g))) for k, g in groupby(letters)]\n" "[('a', 5), ('b', 2), ('c', 1), ('d', 1), ('r', 2)]" msgstr "" +">>> palabra = 'abracadabra'\n" +">>> letras = sorted(palabra) # Convierte una cadena en una lista ordenada de " +"letras\n" +">>> letras\n" +"['a', 'a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'r', 'r']\n" +">>> for k, g in itertools.groupby(letters):\n" +"... print k, list(g)\n" +"...\n" +"a ['a', 'a', 'a', 'a', 'a']\n" +"b ['b', 'b']\n" +"c ['c']\n" +"d ['d']\n" +"r ['r', 'r']\n" +">>> # Lista de letras únicas\n" +">>> [k for k, g in groupby(letters)]\n" +"['a', 'b', 'c', 'd', 'r']\n" +">>> # Cuenta las ocurrencias de las letras\n" +">>> [(k, len(lista(g))) para k, g en groupby(letras)]\n" +"[('a', 5), ('b', 2), ('c', 1), ('d', 1), ('r', 2)]" #: ../Doc/whatsnew/2.4.rst:1141 msgid "(Contributed by Hye-Shik Chang.)" @@ -2327,6 +2595,15 @@ msgid "" ">>> list(i2) # Run the second iterator to exhaustion\n" "[1, 2, 3]" msgstr "" +">>> L = [1,2,3]\n" +">>> i1, i2 = itertools.tee(L)\n" +">>> i1,i2\n" +"(, )\n" +">>> list(i1) # Ejecuta el primer iterador hasta el agotamiento\n" +"[1, 2, 3]\n" +">>> list(i2) # Ejecuta el segundo iterador hasta el agotamiento\n" +"[1, 2, 3]" #: ../Doc/whatsnew/2.4.rst:1156 msgid "" @@ -2350,7 +2627,6 @@ msgstr "" "Hettinger.)" #: ../Doc/whatsnew/2.4.rst:1165 -#, fuzzy msgid "" "A number of functions were added to the :mod:`locale` module, such as :func:" "`bind_textdomain_codeset` to specify a particular encoding and a family of :" @@ -2359,8 +2635,8 @@ msgid "" msgstr "" "Se agregaron varias funciones al módulo :mod:`locale`, como :func:" "`bind_textdomain_codeset` para especificar una codificación particular y una " -"familia de funciones :func:`l\\*gettext` que devuelven mensajes en la " -"codificación elegida. (Contribución de Gustavo Niemeyer.)" +"familia de funciones :func:`!l\\*gettext` que devuelven mensajes en la " +"codificación elegida. (Contribuido por Gustavo Niemeyer.)" #: ../Doc/whatsnew/2.4.rst:1170 msgid "" @@ -2384,6 +2660,10 @@ msgid "" " level=0, # Log all messages\n" " format='%(levelname):%(process):%(thread):%(message)')" msgstr "" +"importar registro\n" +"logging.basicConfig(filename='/var/log/application.log',\n" +"level=0, # Registrar todos los mensajes\n" +"format='%(levelname):%(process):%(thread):%(message)')" #: ../Doc/whatsnew/2.4.rst:1181 msgid "" @@ -2419,16 +2699,15 @@ msgstr "" "significativamente más pequeños. (Contribución de Martin von Löwis.)" #: ../Doc/whatsnew/2.4.rst:1195 -#, fuzzy msgid "" "The :mod:`!nntplib` module's :class:`NNTP` class gained :meth:`description` " "and :meth:`descriptions` methods to retrieve newsgroup descriptions for a " "single group or for a range of groups. (Contributed by Jürgen A. Erhard.)" msgstr "" -"La clase :class:`NNTP` del módulo :mod:`nntplib` obtuvo los métodos :meth:" +"La clase :class:`NNTP` del módulo :mod:`!nntplib` obtuvo los métodos :meth:" "`description` y :meth:`descriptions` para recuperar descripciones de grupos " "de noticias para un solo grupo o para un rango de grupos. (Contribución de " -"Jürgen A. Erhard.)" +"Jürgen A. Erhard)." #: ../Doc/whatsnew/2.4.rst:1199 msgid "" @@ -2454,6 +2733,14 @@ msgid "" ">>> sorted(L, key=operator.itemgetter(1)) # Sort list by second tuple item\n" "[('d', 1), ('c', 2), ('b', 3), ('a', 4)]" msgstr "" +">>> L = [('c', 2), ('d', 1), ('a', 4), ('b', 3)]\n" +">>> map(operator.itemgetter(0), L)\n" +"['c', 'd', 'a', 'b']\n" +">>> map(operator.itemgetter(1), L)\n" +"[2, 1, 4, 3]\n" +">>> sorted(L, key=operator.itemgetter(1)) # Ordenar la lista por el segundo " +"elemento de la tupla\n" +"[('d', 1), ('c', 2), ('b', 3), ('a', 4)]" #: ../Doc/whatsnew/2.4.rst:1215 #, python-format @@ -2472,7 +2759,6 @@ msgstr "" "Greg Ward.)" #: ../Doc/whatsnew/2.4.rst:1221 -#, fuzzy msgid "" "The long-term plan is to deprecate the :mod:`!rfc822` module in some future " "Python release in favor of the :mod:`email` package. To this end, the :func:" @@ -2481,12 +2767,13 @@ msgid "" "want to write new e-mail processing code with this in mind. (Change " "implemented by Anthony Baxter.)" msgstr "" -"El plan a largo plazo es desaprobar el módulo :mod:`rfc822` en alguna " -"versión futura de Python a favor del paquete :mod:`email`. Con este fin, la " -"función :func:`email.Utils.formatdate` se ha modificado para que pueda " -"utilizarse como reemplazo de :func:`rfc822.formatdate`. Es posible que desee " -"escribir un nuevo código de procesamiento de correo electrónico con esto en " -"mente. (Cambio implementado por Anthony Baxter)." +"El plan a largo plazo es dejar obsoleto el módulo :mod:`!rfc822` en alguna " +"versión futura de Python a favor del paquete :mod:`email`. Con este fin, se " +"ha modificado la función :func:`email.Utils.formatdate ` para que pueda utilizarse como reemplazo de :func:`!rfc822." +"formatdate`. Es posible que desee escribir un nuevo código de procesamiento " +"de correo electrónico teniendo esto en cuenta. (Cambio implementado por " +"Anthony Baxter)." #: ../Doc/whatsnew/2.4.rst:1227 msgid "" @@ -2660,6 +2947,11 @@ msgid "" "data.number = 42\n" "data.url = ('www.python.org', 80)" msgstr "" +"importar subprocesos\n" +"\n" +"datos = threading.local()\n" +"datos.number = 42\n" +"datos.url = ('www.python.org', 80)" #: ../Doc/whatsnew/2.4.rst:1298 msgid "" @@ -2696,15 +2988,14 @@ msgstr "" "regular. (Contribuido por Raymond Hettinger.)" #: ../Doc/whatsnew/2.4.rst:1311 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module now supports a multi-call " "extension for transmitting multiple XML-RPC calls in a single HTTP " "operation. (Contributed by Brian Quinlan.)" msgstr "" -"El módulo :mod:`xmlrpclib` ahora admite una extensión de múltiples llamadas " -"para transmitir múltiples llamadas XML-RPC en una sola operación HTTP. " -"(Contribuido por Brian Quinlan.)" +"El módulo :mod:`xmlrpclib ` ahora admite una extensión de " +"múltiples llamadas para transmitir múltiples llamadas XML-RPC en una sola " +"operación HTTP. (Contribuido por Brian Quinlan)." #: ../Doc/whatsnew/2.4.rst:1315 msgid "" @@ -2718,7 +3009,6 @@ msgid "cookielib" msgstr "cookielib" #: ../Doc/whatsnew/2.4.rst:1326 -#, fuzzy msgid "" "The :mod:`cookielib ` library supports client-side handling " "for HTTP cookies, mirroring the :mod:`Cookie ` module's server-" @@ -2727,13 +3017,14 @@ msgid "" "and fetches the cookie from the jar when connecting to the server. As in web " "browsers, policy objects control whether cookies are accepted or not." msgstr "" -"La biblioteca :mod:`cookielib` admite el manejo del lado del cliente para " -"las cookies HTTP, reflejando el soporte de cookies del lado del servidor del " -"módulo :mod:`Cookie`. Las cookies se almacenan en frascos de galletas; la " -"biblioteca almacena de forma transparente las cookies ofrecidas por el " -"servidor web en el tarro de cookies y recupera la cookie del tarro cuando se " -"conecta al servidor. Al igual que en los navegadores web, los objetos de " -"política controlan si las cookies se aceptan o no." +"La biblioteca :mod:`cookielib ` admite el manejo de cookies " +"HTTP por parte del cliente, lo que refleja la compatibilidad con cookies del " +"lado del servidor del módulo :mod:`Cookie `. Las cookies se " +"almacenan en contenedores de cookies; la biblioteca almacena de forma " +"transparente las cookies ofrecidas por el servidor web en el contenedor de " +"cookies y recupera la cookie del contenedor cuando se conecta al servidor. " +"Al igual que en los navegadores web, los objetos de política controlan si se " +"aceptan o no las cookies." #: ../Doc/whatsnew/2.4.rst:1333 msgid "" @@ -2749,15 +3040,14 @@ msgstr "" "Perl." #: ../Doc/whatsnew/2.4.rst:1338 -#, fuzzy msgid "" ":mod:`urllib2 ` has been changed to interact with :mod:" "`cookielib `: :class:`HTTPCookieProcessor` manages a cookie " "jar that is used when accessing URLs." msgstr "" -":mod:`urllib2` se ha cambiado para interactuar con :mod:`cookielib`: :class:" -"`HTTPCookieProcessor` administra un tarro de cookies que se utiliza al " -"acceder a las URL." +"Se ha modificado :mod:`urllib2 ` para interactuar con :mod:" +"`cookielib `: :class:`HTTPCookieProcessor` administra un " +"contenedor de cookies que se utiliza al acceder a las URL." #: ../Doc/whatsnew/2.4.rst:1342 msgid "This module was contributed by John J. Lee." @@ -2802,6 +3092,18 @@ msgid "" "# Get list of DocTest instances\n" "tests = finder.find(f)" msgstr "" +"def f (x, y):\n" +"\"\"\">>> f(2,2)\n" +"4\n" +">>> f(3,2)\n" +"6\n" +"\"\"\"\n" +"return x*y\n" +"\n" +"finder = doctest.DocTestFinder()\n" +"\n" +"# Obtener la lista de instancias de DocTest\n" +"tests = finder.find(f)" #: ../Doc/whatsnew/2.4.rst:1371 msgid "" @@ -2819,6 +3121,11 @@ msgid "" "\n" "runner.summarize(verbose=1)" msgstr "" +"runner = doctest.DocTestRunner()\n" +"para t en pruebas:\n" +"intentado, fallido = runner.run(t)\n" +"\n" +"runner.summarize(verbose=1)" #: ../Doc/whatsnew/2.4.rst:1380 msgid "The above example produces the following output::" @@ -2832,6 +3139,11 @@ msgid "" "2 passed and 0 failed.\n" "Test passed." msgstr "" +"1 ítems pasaron todas las pruebas:\n" +"2 pruebas en f\n" +"2 pruebas en 1 ítem.\n" +"2 pasaron y 0 reprobaron.\n" +"Prueba aprobada." #: ../Doc/whatsnew/2.4.rst:1388 msgid "" @@ -2867,6 +3179,11 @@ msgid "" ">>>\n" "\"\"\"" msgstr "" +"def o (n):\n" +" \"\"\">>> o(1)\n" +"<__main__.C instance at 0x...>\n" +">>>\n" +"\"\"\"" #: ../Doc/whatsnew/2.4.rst:1404 msgid "Another special string, ````, matches a blank line::" @@ -2881,6 +3198,11 @@ msgid "" ">>>\n" "\"\"\"" msgstr "" +"def p (n):\n" +" \"\"\">>> p(1)\n" +"\n" +">>>\n" +"\"\"\"" #: ../Doc/whatsnew/2.4.rst:1412 msgid "" @@ -2908,6 +3230,16 @@ msgid "" " for word in L[:n]:\n" " print word" msgstr "" +"def g (n):\n" +" \"\"\">>> g(4)\n" +"here\n" +"is\n" +"a\n" +"lengthy\n" +">>>\"\"\"\n" +" L = 'here is a rather lengthy list of words'.split()\n" +" for word in L[:n]:\n" +" print word" #: ../Doc/whatsnew/2.4.rst:1428 msgid "" @@ -2931,6 +3263,17 @@ msgid "" " +rather\n" "**********************************************************************" msgstr "" +"**********************************************************************\n" +"File \"t.py\", line 15, in g\n" +"Failed example:\n" +" g(4)\n" +"Differences (unified diff with -expected +actual):\n" +" @@ -2,3 +2,3 @@\n" +" is\n" +" a\n" +" -lengthy\n" +" +rather\n" +"**********************************************************************" #: ../Doc/whatsnew/2.4.rst:1449 msgid "Build and C API Changes" @@ -3111,12 +3454,11 @@ msgstr "" "relativas (``<``, ``>``) lanzarán un :exc:`TypeError`." #: ../Doc/whatsnew/2.4.rst:1532 -#, fuzzy msgid "" ":func:`!dircache.listdir` now passes exceptions to the caller instead of " "returning empty lists." msgstr "" -":func:`dircache.listdir` ahora pasa excepciones a la persona que llama en " +":func:`!dircache.listdir` ahora pasa excepciones a la persona que llama en " "lugar de devolver listas vacías." #: ../Doc/whatsnew/2.4.rst:1535 diff --git a/whatsnew/2.5.po b/whatsnew/2.5.po index a6a5db1ada..2e2165471e 100644 --- a/whatsnew/2.5.po +++ b/whatsnew/2.5.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2022-11-24 11:54+0100\n" "Last-Translator: Claudia Millan \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.5.rst:3 @@ -150,6 +150,10 @@ msgid "" "else:\n" " x = false_value" msgstr "" +"Si la condición es:\n" +"x = valor_verdadero\n" +"De lo contrario:\n" +"x = valor_falso" #: ../Doc/whatsnew/2.5.rst:66 msgid "" @@ -172,7 +176,7 @@ msgstr "Guido van Rossum eligió finalmente una sintaxis sorprendente::" #: ../Doc/whatsnew/2.5.rst:74 msgid "x = true_value if condition else false_value" -msgstr "" +msgstr "x = valor_verdadero si condición de lo contrario valor_falso" #: ../Doc/whatsnew/2.5.rst:76 msgid "" @@ -210,7 +214,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:90 msgid "contents = ((doc + '\\n') if doc else '')" -msgstr "" +msgstr "contenido = ((doc + '\\n') si doc si no '')" #: ../Doc/whatsnew/2.5.rst:92 msgid "" @@ -245,6 +249,11 @@ msgid "" "# Second version -- with parens\n" "level = (1 if logging else 0)" msgstr "" +"# Primera versión: sin paréntesis\n" +"nivel = 1 si se registra, de lo contrario, 0\n" +"\n" +"# Segunda versión: con paréntesis\n" +"nivel = (1 si se registra, de lo contrario, 0)" #: ../Doc/whatsnew/2.5.rst:108 msgid "" @@ -339,6 +348,15 @@ msgid "" "server_log = functools.partial(log, subsystem='server')\n" "server_log('Unable to open socket')" msgstr "" +"import functools\n" +"\n" +"def log (message, subsystem):\n" +"\"Escribe el contenido de 'message' en el subsistema especificado\".\n" +"print '%s: %s' % (subsystem, message)\n" +"...\n" +"\n" +"server_log = functools.partial(log, subsystem='server')\n" +"server_log('No se puede abrir el socket')" #: ../Doc/whatsnew/2.5.rst:160 msgid "" @@ -363,6 +381,13 @@ msgid "" " open_func = functools.partial(self.open_item, item_path)\n" " popup_menu.append( (\"Open\", open_func, 1) )" msgstr "" +"...\n" +"class Application:\n" +" def open_item(self, path):\n" +" ...\n" +" def init (self):\n" +" open_func = functools.partial(self.open_item, item_path)\n" +" popup_menu.append( (\"Open\", open_func, 1) )" #: ../Doc/whatsnew/2.5.rst:173 msgid "" @@ -388,6 +413,12 @@ msgid "" " functools.update_wrapper(wrapper, f)\n" " return wrapper" msgstr "" +"def my_decorator(f):\n" +" def wrapper(*args, **kwds):\n" +" print 'Calling decorated function'\n" +" return f(*args, **kwds)\n" +" functools.update_wrapper(wrapper, f)\n" +" return wrapper" #: ../Doc/whatsnew/2.5.rst:186 msgid "" @@ -408,6 +439,12 @@ msgid "" " return f(*args, **kwds)\n" " return wrapper" msgstr "" +"def my_decorator(f):\n" +" @functools.wraps(f)\n" +" def wrapper(*args, **kwds):\n" +" print 'Calling decorated function'\n" +" return f(*args, **kwds)\n" +" return wrapper" #: ../Doc/whatsnew/2.5.rst:201 msgid ":pep:`309` - Partial Function Application" @@ -463,6 +500,14 @@ msgid "" " % VERSION),\n" " )" msgstr "" +"VERSION = '1.0'\n" +"setup(name='PyPackage',\n" +" version=VERSION,\n" +" requires=['numarray', 'zlib (>=1.1.4)'],\n" +" obsoletes=['OldPackage']\n" +" download_url=('http://www.example.com/pypackage/dist/pkg-%s.tar.gz'\n" +" % VERSION),\n" +" )" #: ../Doc/whatsnew/2.5.rst:231 msgid "" @@ -545,6 +590,10 @@ msgid "" "pkg/main.py\n" "pkg/string.py" msgstr "" +"pkg/\n" +"pkg/__init__.py\n" +"pkg/main.py\n" +"pkg/string.py" #: ../Doc/whatsnew/2.5.rst:274 msgid "" @@ -641,6 +690,10 @@ msgid "" "# Import pkg.string\n" "from . import string" msgstr "" +"# Import names from pkg.string\n" +"from .string import name1, name2\n" +"# Import pkg.string\n" +"from . import string" #: ../Doc/whatsnew/2.5.rst:315 msgid "" @@ -662,6 +715,9 @@ msgid "" "from .. import E # Imports A.E\n" "from ..F import G # Imports A.F.G" msgstr "" +"from . import D # Imports A.B.D\n" +"from .. import E # Imports A.E\n" +"from ..F import G # Imports A.F.G" #: ../Doc/whatsnew/2.5.rst:324 msgid "" @@ -776,6 +832,16 @@ msgid "" "finally:\n" " final-block" msgstr "" +"try:\n" +" block-1 ...\n" +"except Exception1:\n" +" handler-1 ...\n" +"except Exception2:\n" +" handler-2 ...\n" +"else:\n" +" else-block\n" +"finally:\n" +" final-block" #: ../Doc/whatsnew/2.5.rst:393 msgid "" @@ -850,6 +916,11 @@ msgid "" " yield i\n" " i += 1" msgstr "" +"def counter (maximum):\n" +" i = 0\n" +" while i < maximum:\n" +" yield i\n" +" i += 1" #: ../Doc/whatsnew/2.5.rst:434 msgid "" @@ -880,7 +951,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:444 msgid "val = (yield i)" -msgstr "" +msgstr "val = (rendimiento i)" #: ../Doc/whatsnew/2.5.rst:446 msgid "" @@ -940,6 +1011,15 @@ msgid "" " else:\n" " i += 1" msgstr "" +"def counter (maximum):\n" +" i = 0\n" +" while i < maximum:\n" +" val = (yield i)\n" +" # If value provided, change counter\n" +" if val is not None:\n" +" i = val\n" +" else:\n" +" i += 1" #: ../Doc/whatsnew/2.5.rst:476 msgid "And here's an example of changing the counter::" @@ -962,6 +1042,20 @@ msgid "" " print it.next()\n" "StopIteration" msgstr "" +">>> it = counter(10)\n" +">>> print it.next()\n" +"0\n" +">>> print it.next()\n" +"1\n" +">>> print it.send(8)\n" +"8\n" +">>> print it.next()\n" +"9\n" +">>> print it.next()\n" +"Traceback (most recent call last):\n" +" File \"t.py\", line 15, in ?\n" +" print it.next()\n" +"StopIteration" #: ../Doc/whatsnew/2.5.rst:493 msgid "" @@ -1161,42 +1255,41 @@ msgid "" "with expression [as variable]:\n" " with-block" msgstr "" +"with expression [as variable]:\n" +" with-block" #: ../Doc/whatsnew/2.5.rst:577 -#, fuzzy msgid "" "The expression is evaluated, and it should result in an object that supports " "the context management protocol (that is, has :meth:`~object.__enter__` and :" "meth:`~object.__exit__` methods." msgstr "" -"La expresión se evalúa y debe dar como resultado un objeto que soporte el " -"protocolo de gestión de contextos (es decir, que tenga los métodos :meth:" -"`__enter__` y :meth:`__exit__`)." +"Se evalúa la expresión y debería dar como resultado un objeto que admita el " +"protocolo de gestión de contexto (es decir, que tenga los métodos :meth:" +"`~object.__enter__` y :meth:`~object.__exit__`)." #: ../Doc/whatsnew/2.5.rst:581 -#, fuzzy msgid "" "The object's :meth:`~object.__enter__` is called before *with-block* is " "executed and therefore can run set-up code. It also may return a value that " "is bound to the name *variable*, if given. (Note carefully that *variable* " "is *not* assigned the result of *expression*.)" msgstr "" -"El :meth:`__enter__` del objeto es llamado antes de que se ejecute *with-" -"block* y por lo tanto puede ejecutar código de configuración. También puede " -"devolver un valor ligado al nombre *variable*, si se da. (Observe " -"cuidadosamente que a *variable* no se le asigna el resultado de la " -"*expresión*)" +"El objeto :meth:`~object.__enter__` se llama antes de que se ejecute *with-" +"block* y, por lo tanto, puede ejecutar el código de configuración. También " +"puede devolver un valor vinculado al nombre *variable*, si se proporciona. " +"(Tenga en cuenta que *variable* es *not* al que se le asigna el resultado de " +"*expression*)." #: ../Doc/whatsnew/2.5.rst:586 -#, fuzzy msgid "" "After execution of the *with-block* is finished, the object's :meth:`~object." "__exit__` method is called, even if the block raised an exception, and can " "therefore run clean-up code." msgstr "" -"Una vez finalizada la ejecución del *with-block*, se llama al método :meth:" -"`__exit__` del objeto, incluso si el bloque lanzó una excepción, y por lo " -"tanto puede ejecutar código de limpieza." +"Una vez finalizada la ejecución de *with-block*, se llama al método :meth:" +"`~object.__exit__` del objeto, incluso si el bloque generó una excepción y, " +"por lo tanto, puede ejecutar código de limpieza." #: ../Doc/whatsnew/2.5.rst:590 msgid "" @@ -1208,7 +1301,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:593 msgid "from __future__ import with_statement" -msgstr "" +msgstr "desde __future__ importar con_declaración" #: ../Doc/whatsnew/2.5.rst:595 msgid "The statement will always be enabled in Python 2.6." @@ -1231,6 +1324,10 @@ msgid "" " print line\n" " ... more processing code ..." msgstr "" +"with open('/etc/passwd', 'r') as f:\n" +" for line in f:\n" +" print line\n" +" ... more processing code ..." #: ../Doc/whatsnew/2.5.rst:605 msgid "" @@ -1243,13 +1340,12 @@ msgstr "" "excepción a mitad del bloque." #: ../Doc/whatsnew/2.5.rst:611 -#, fuzzy msgid "" "In this case, *f* is the same object created by :func:`open`, because :meth:" "`~object.__enter__` returns *self*." msgstr "" "En este caso, *f* es el mismo objeto creado por :func:`open`, porque :meth:" -"`file.__enter__` devuelve *self*." +"`~object.__enter__` devuelve *self*." #: ../Doc/whatsnew/2.5.rst:614 msgid "" @@ -1266,6 +1362,10 @@ msgid "" " # Critical section of code\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"with lock:\n" +" # Critical section of code\n" +" ..." #: ../Doc/whatsnew/2.5.rst:622 msgid "" @@ -1298,6 +1398,16 @@ msgid "" " # The original context is restored on exiting the block.\n" " print v.sqrt()" msgstr "" +"from decimal import Decimal, Context, localcontext\n" +"\n" +"# Displays with default precision of 28 digits\n" +"v = Decimal('578')\n" +"print v.sqrt()\n" +"\n" +"with localcontext(Context(prec=16)):\n" +" # All code in this block uses a precision of 16 digits.\n" +" # The original context is restored on exiting the block.\n" +" print v.sqrt()" #: ../Doc/whatsnew/2.5.rst:644 msgid "Writing Context Managers" @@ -1324,26 +1434,24 @@ msgstr "" "Una explicación de alto nivel del protocolo de gestión del contexto es:" #: ../Doc/whatsnew/2.5.rst:654 -#, fuzzy msgid "" "The expression is evaluated and should result in an object called a " "\"context manager\". The context manager must have :meth:`~object." "__enter__` and :meth:`~object.__exit__` methods." msgstr "" -"La expresión se evalúa y debe dar como resultado un objeto llamado \"gestor " -"de contexto\". El gestor de contexto debe tener métodos :meth:`__enter__` " -"y :meth:`__exit__`." +"La expresión se evalúa y debería generar un objeto denominado " +"\"administrador de contexto\". El administrador de contexto debe tener los " +"métodos :meth:`~object.__enter__` y :meth:`~object.__exit__`." #: ../Doc/whatsnew/2.5.rst:658 -#, fuzzy msgid "" "The context manager's :meth:`~object.__enter__` method is called. The value " "returned is assigned to *VAR*. If no ``'as VAR'`` clause is present, the " "value is simply discarded." msgstr "" -"Se llama al método :meth:`__enter__` del gestor de contexto. El valor " -"devuelto se asigna a *VAR*. Si no está presente la cláusula ``'as VAR'``, " -"el valor simplemente se descarta." +"Se llama al método :meth:`~object.__enter__` del administrador de contexto. " +"El valor devuelto se asigna a *VAR*. Si no hay ninguna cláusula ``'as " +"VAR'``, el valor simplemente se descarta." #: ../Doc/whatsnew/2.5.rst:662 msgid "The code in *BLOCK* is executed." @@ -1369,13 +1477,12 @@ msgstr "" "ha ido mal." #: ../Doc/whatsnew/2.5.rst:672 -#, fuzzy msgid "" "If *BLOCK* didn't raise an exception, the :meth:`~object.__exit__` method " "is still called, but *type*, *value*, and *traceback* are all ``None``." msgstr "" -"Si *BLOCK* no lanzó una excepción, el método :meth:`__exit__` sigue siendo " -"llamado, pero *type*, *value*, y *traceback* son todos ``None``." +"Si *BLOCK* no generó una excepción, aún se llama al método :meth:`~object." +"__exit__`, pero *type*, *value* y *traceback* son todos ``None``." #: ../Doc/whatsnew/2.5.rst:675 msgid "" @@ -1418,6 +1525,11 @@ msgid "" " cursor.execute('delete from ...')\n" " # ... more operations ..." msgstr "" +"db_connection = DatabaseConnection()\n" +"with db_connection as cursor:\n" +" cursor.execute('insert into ...')\n" +" cursor.execute('delete from ...')\n" +" # ... more operations ..." #: ../Doc/whatsnew/2.5.rst:693 msgid "" @@ -1440,9 +1552,16 @@ msgid "" " def rollback (self):\n" " \"Rolls back current transaction\"" msgstr "" +"class DatabaseConnection:\n" +" # Database interface\n" +" def cursor (self):\n" +" \"Returns a cursor object and starts a new transaction\"\n" +" def commit (self):\n" +" \"Commits current transaction\"\n" +" def rollback (self):\n" +" \"Rolls back current transaction\"" #: ../Doc/whatsnew/2.5.rst:706 -#, fuzzy msgid "" "The :meth:`~object.__enter__` method is pretty easy, having only to start a " "new transaction. For this application the resulting cursor object would be " @@ -1450,11 +1569,11 @@ msgid "" "cursor`` to their ':keyword:`with`' statement to bind the cursor to a " "variable name. ::" msgstr "" -"El método :meth:`__enter__` es bastante sencillo, ya que sólo hay que " -"iniciar una nueva transacción. Para esta aplicación el objeto cursor " -"resultante sería un resultado útil, por lo que el método lo devolverá. El " -"usuario puede entonces añadir ``as cursor`` a su sentencia ':keyword:`with`' " -"para ligar el cursor a un nombre de variable. ::" +"El método :meth:`~object.__enter__` es bastante sencillo, ya que solo hay " +"que iniciar una nueva transacción. Para esta aplicación, el objeto cursor " +"resultante sería un resultado útil, por lo que el método lo devolverá. El " +"usuario puede entonces añadir ``as cursor`` a su declaración ':keyword:" +"`with`' para vincular el cursor a un nombre de variable. ::" #: ../Doc/whatsnew/2.5.rst:711 msgid "" @@ -1465,19 +1584,24 @@ msgid "" " cursor = self.cursor()\n" " return cursor" msgstr "" +"class DatabaseConnection:\n" +" ...\n" +" def __enter__ (self):\n" +" # Code to start a new transaction\n" +" cursor = self.cursor()\n" +" return cursor" #: ../Doc/whatsnew/2.5.rst:718 -#, fuzzy msgid "" "The :meth:`~object.__exit__` method is the most complicated because it's " "where most of the work has to be done. The method has to check if an " "exception occurred. If there was no exception, the transaction is " "committed. The transaction is rolled back if there was an exception." msgstr "" -"El método :meth:`__exit__` es el más complicado porque es donde hay que " -"hacer la mayor parte del trabajo. El método tiene que comprobar si se " -"produjo una excepción. Si no hubo ninguna excepción, la transacción es " -"confirmada. La transacción es revertida si hubo una excepción." +"El método :meth:`~object.__exit__` es el más complicado porque es donde se " +"debe realizar la mayor parte del trabajo. El método debe verificar si se " +"produjo una excepción. Si no hubo excepción, se confirma la transacción. Si " +"hubo una excepción, se revierte la transacción." #: ../Doc/whatsnew/2.5.rst:723 msgid "" @@ -1505,6 +1629,16 @@ msgid "" " self.rollback()\n" " # return False" msgstr "" +"class DatabaseConnection:\n" +" ...\n" +" def __exit__ (self, type, value, tb):\n" +" if tb is None:\n" +" # No exception, so commit\n" +" self.commit()\n" +" else:\n" +" # Exception occurred, so rollback.\n" +" self.rollback()\n" +" # return False" #: ../Doc/whatsnew/2.5.rst:743 msgid "The contextlib module" @@ -1521,7 +1655,6 @@ msgstr "" "keyword:`with`'." #: ../Doc/whatsnew/2.5.rst:748 -#, fuzzy msgid "" "The decorator is called :func:`contextmanager`, and lets you write a single " "generator function instead of defining a new class. The generator should " @@ -1533,15 +1666,15 @@ msgid "" "method. Any exception raised in the block will be raised by the :keyword:`!" "yield` statement." msgstr "" -"El decorador se llama :func:`contextmanager`, y permite escribir una única " -"función generadora en lugar de definir una nueva clase. El generador debe " -"producir exactamente un valor. El código hasta la palabra clave :keyword:" -"`yield` se ejecutará como el método :meth:`__enter__`, y el valor producido " -"será el valor de retorno del método que se vinculará a la variable en la " -"cláusula :keyword:`with` de la sentencia :keyword:`!as`, si existe. El " -"código después de :keyword:`yield` se ejecutará en el método :meth:" -"`__exit__`. Cualquier excepción lanzada en el bloque será lanzada por la " -"sentencia :keyword:`!yield`." +"El decorador se llama :func:`contextmanager` y le permite escribir una única " +"función generadora en lugar de definir una nueva clase. El generador debería " +"generar exactamente un valor. El código hasta :keyword:`yield` se ejecutará " +"como el método :meth:`~object.__enter__` y el valor generado será el valor " +"de retorno del método que se vinculará a la variable en la cláusula :keyword:" +"`!as` de la declaración ':keyword:`with`', si la hay. El código después de :" +"keyword:`yield` se ejecutará en el método :meth:`~object.__exit__`. " +"Cualquier excepción generada en el bloque será generada por la declaración :" +"keyword:`!yield`." #: ../Doc/whatsnew/2.5.rst:757 msgid "" @@ -1570,6 +1703,22 @@ msgid "" "with db_transaction(db) as cursor:\n" " ..." msgstr "" +"from contextlib import contextmanager\n" +"\n" +"@contextmanager\n" +"def db_transaction (connection):\n" +" cursor = connection.cursor()\n" +" try:\n" +" yield cursor\n" +" except:\n" +" connection.rollback()\n" +" raise\n" +" else:\n" +" connection.commit()\n" +"\n" +"db = DatabaseConnection()\n" +"with db_transaction(db) as cursor:\n" +" ..." #: ../Doc/whatsnew/2.5.rst:777 msgid "" @@ -1591,6 +1740,9 @@ msgid "" "with nested (db_transaction(db), lock) as (cursor, locked):\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"con anidado (db_transaction(db), lock) como (cursor, bloqueado):\n" +"..." #: ../Doc/whatsnew/2.5.rst:786 msgid "" @@ -1610,6 +1762,12 @@ msgid "" " for line in f:\n" " sys.stdout.write(line)" msgstr "" +"import urllib, sys\n" +"from contextlib import closing\n" +"\n" +"with closing(urllib.urlopen('http://www.yahoo.com')) as f:\n" +" for line in f:\n" +" sys.stdout.write(line)" #: ../Doc/whatsnew/2.5.rst:803 msgid ":pep:`343` - The \"with\" statement" @@ -1663,6 +1821,11 @@ msgid "" "|- Exception\n" " |- (all other current built-in exceptions)" msgstr "" +"BaseException # New in Python 2.5\n" +"|- KeyboardInterrupt\n" +"|- SystemExit\n" +"|- Exception\n" +" |- (all other current built-in exceptions)" #: ../Doc/whatsnew/2.5.rst:828 msgid "" @@ -1693,6 +1856,13 @@ msgid "" " # Log error...\n" " # Continue running program..." msgstr "" +"try:\n" +" ...\n" +"except (KeyboardInterrupt, SystemExit):\n" +" raise\n" +"except:\n" +" # Log error...\n" +" # Continue running program..." #: ../Doc/whatsnew/2.5.rst:843 msgid "" @@ -1922,6 +2092,9 @@ msgid "" " def __index__ (self):\n" " return self.value" msgstr "" +"class C:\n" +" def __index__ (self):\n" +" return self.value" #: ../Doc/whatsnew/2.5.rst:953 msgid "" @@ -1993,6 +2166,13 @@ msgid "" "print d[1], d[2] # Prints 1, 2\n" "print d[3], d[4] # Prints 0, 0" msgstr "" +"class zerodict (dict):\n" +" def __missing__ (self, key):\n" +" return 0\n" +"\n" +"d = zerodict({1:1, 2:2})\n" +"print d[1], d[2] # Prints 1, 2\n" +"print d[3], d[4] # Prints 0, 0" #: ../Doc/whatsnew/2.5.rst:993 msgid "" @@ -2042,6 +2222,16 @@ msgid "" ">>> 'www.python.org'.rpartition(':')\n" "('', '', 'www.python.org')" msgstr "" +">>> ('http://www.python.org').partition('://')\n" +"('http', '://', 'www.python.org')\n" +">>> ('file:/usr/share/doc/index.html').partition('://')\n" +"('file:/usr/share/doc/index.html', '', '')\n" +">>> (u'Subject: a quick question').partition(':')\n" +"(u'Subject', u':', u' a quick question')\n" +">>> 'www.python.org'.rpartition('.')\n" +"('www.python', '.', 'org')\n" +">>> 'www.python.org'.rpartition(':')\n" +"('', '', 'www.python.org')" #: ../Doc/whatsnew/2.5.rst:1018 msgid "" @@ -2062,6 +2252,8 @@ msgid "" "def is_image_file (filename):\n" " return filename.endswith(('.gif', '.jpg', '.tiff'))" msgstr "" +"def is_image_file (nombre_archivo):\n" +"return nombre_archivo.endswith(('.gif', '.jpg', '.tiff'))" #: ../Doc/whatsnew/2.5.rst:1026 msgid "(Implemented by Georg Brandl following a suggestion by Tom Lynn.)" @@ -2091,6 +2283,11 @@ msgid "" "# Prints 'short', because lexicographically 'short' has the largest value\n" "print max(L)" msgstr "" +"L = ['medium', 'longest', 'short']\n" +"# Prints 'longest'\n" +"print max(L, key=len)\n" +"# Prints 'short', because lexicographically 'short' has the largest value\n" +"print max(L)" #: ../Doc/whatsnew/2.5.rst:1043 msgid "(Contributed by Steven Bethard and Raymond Hettinger.)" @@ -2146,7 +2343,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:1067 msgid "# -*- coding: latin1 -*-" -msgstr "" +msgstr "#-*- coding: latin1 -*-" #: ../Doc/whatsnew/2.5.rst:1069 msgid "" @@ -2170,6 +2367,13 @@ msgid "" ">>> chr(127) == unichr(127) # chr(127) can be converted\n" "True" msgstr "" +">>> chr(128) == unichr(128) # Can't convert chr(128) to Unicode\n" +"__main__:1: UnicodeWarning: Unicode equal comparison failed\n" +" to convert both arguments to Unicode - interpreting them\n" +" as being unequal\n" +"False\n" +">>> chr(127) == unichr(127) # chr(127) can be converted\n" +"True" #: ../Doc/whatsnew/2.5.rst:1081 msgid "" @@ -2238,6 +2442,8 @@ msgid "" "class C():\n" " pass" msgstr "" +"clase C():\n" +" pass" #: ../Doc/whatsnew/2.5.rst:1108 msgid "(Implemented by Brett Cannon.)" @@ -2262,6 +2468,8 @@ msgid "" ">>> quit\n" "'Use Ctrl-D (i.e. EOF) to exit.'" msgstr "" +">>> salir\n" +"'Utilice Ctrl-D (es decir, EOF) para salir.'" #: ../Doc/whatsnew/2.5.rst:1124 msgid "" @@ -2346,7 +2554,6 @@ msgstr "" "rápida. (Aportado por Alan McIntyre y comprometido en el sprint NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:1168 -#, fuzzy msgid "" "It's now illegal to mix iterating over a file with ``for line in file`` and " "calling the file object's :meth:`read`/:meth:`readline`/:meth:`readlines` " @@ -2356,13 +2563,14 @@ msgid "" "iteration and these methods will now trigger a :exc:`ValueError` from the :" "meth:`!read\\*` method. (Implemented by Thomas Wouters.)" msgstr "" -"Ahora es ilegal mezclar la iteración sobre un fichero con ``for line in " +"Ahora es ilegal mezclar la iteración sobre un archivo con ``for line in " "file`` y llamar a los métodos :meth:`read`/:meth:`readline`/:meth:" -"`readlines` del objeto fichero. La iteración utiliza un buffer interno y " -"los métodos :meth:`read\\*` no utilizan ese buffer. En su lugar, " -"devolverán los datos que siguen al buffer, haciendo que los datos aparezcan " -"desordenados. Mezclar la iteración y estos métodos provocará ahora un :exc:" -"`ValueError` del método :meth:`read\\*`. (Implementado por Thomas Wouters)" +"`readlines` del objeto de archivo. La iteración utiliza un búfer interno y " +"los métodos :meth:`!read\\*` no utilizan ese búfer. En su lugar, devolverían " +"los datos después del búfer, lo que haría que los datos aparecieran " +"desordenados. Mezclar la iteración y estos métodos ahora activará un :exc:" +"`ValueError` desde el método :meth:`!read\\*`. (Implementado por Thomas " +"Wouters)." #: ../Doc/whatsnew/2.5.rst:1178 #, python-format @@ -2464,14 +2672,13 @@ msgstr "" "detalles." #: ../Doc/whatsnew/2.5.rst:1225 -#, fuzzy msgid "" "The :mod:`!audioop` module now supports the a-LAW encoding, and the code for " "u-LAW encoding has been improved. (Contributed by Lars Immisch.)" msgstr "" -"El módulo :mod:`audioop` soporta ahora la codificación a-LAW, y se ha " -"mejorado el código para la codificación u-LAW. (Contribución de Lars " -"Immisch)" +"El módulo :mod:`!audioop` ahora admite la codificación a-LAW y se ha " +"mejorado el código para la codificación u-LAW. (Contribución de Lars " +"Immisch)." #: ../Doc/whatsnew/2.5.rst:1228 msgid "" @@ -2538,6 +2745,15 @@ msgid "" " init_letter = w[0]\n" " index[init_letter].append(w)" msgstr "" +"palabras = \"\"\"Nel mezzo del cammin di nuestra vita\n" +"mi ritrovai per una selva oscura\n" +"che la diritta via era smarrita\"\"\".lower().split()\n" +"\n" +"índice = dictamen predeterminado (lista)\n" +"\n" +"para w en palabras:\n" +" letra_inicial = w[0]\n" +" índice[letra_inicio].append(w)" #: ../Doc/whatsnew/2.5.rst:1261 msgid "Printing ``index`` results in the following output::" @@ -2551,6 +2767,11 @@ msgid "" " 'p': ['per'], 's': ['selva', 'smarrita'],\n" " 'r': ['ritrovai'], 'u': ['una'], 'v': ['vita', 'via']}" msgstr "" +"defaultdict(, {'c': ['cammin', 'che'], 'e': ['era'],\n" +" 'd': ['del', 'di', 'diritta'], 'm': ['mezzo', 'mi'],\n" +" 'l': ['la'], 'o': ['oscura'], 'n': ['nel', 'nostra'],\n" +" 'p': ['per'], 's': ['selva', 'smarrita'],\n" +" 'r': ['ritrovai'], 'u': ['una'], 'v': ['vita', 'via']}" #: ../Doc/whatsnew/2.5.rst:1269 msgid "(Contributed by Guido van Rossum.)" @@ -2674,6 +2895,10 @@ msgid "" "ts = datetime.strptime('10:13:15 2006-03-07',\n" " '%H:%M:%S %Y-%m-%d')" msgstr "" +"from datetime import datetime\n" +"\n" +"ts = datetime.strptime('10:13:15 2006-03-07',\n" +" '%H:%M:%S %Y-%m-%d')" #: ../Doc/whatsnew/2.5.rst:1321 msgid "" @@ -2720,7 +2945,6 @@ msgstr "" "de Barry Warsaw.)" #: ../Doc/whatsnew/2.5.rst:1345 -#, fuzzy msgid "" "The :mod:`fileinput` module was made more flexible. Unicode filenames are " "now supported, and a *mode* parameter that defaults to ``\"r\"`` was added " @@ -2731,15 +2955,15 @@ msgid "" "`~fileinput.fileno` returns the file descriptor for the currently opened " "file. (Contributed by Georg Brandl.)" msgstr "" -"El módulo :mod:`fileinput` se ha hecho más flexible. Ahora se soportan los " -"nombres de archivo Unicode, y se ha añadido un parámetro *mode* que por " -"defecto es ``\"r\"`` a la función :func:`input` para permitir la apertura de " -"archivos en modo binario o :term:`universal newlines`. Otro nuevo " -"parámetro, *openhook*, permite utilizar una función distinta de :func:`open` " -"para abrir los ficheros de entrada. Una vez que se itera sobre el conjunto " -"de archivos, el nuevo :meth:`fileno` del objeto :class:`FileInput` devuelve " -"el descriptor de archivo del archivo actualmente abierto. (Contribuido por " -"Georg Brandl.)" +"El módulo :mod:`fileinput` se hizo más flexible. Ahora se admiten los " +"nombres de archivo Unicode y se agregó un parámetro *mode* que tiene como " +"valor predeterminado ``\"r\"`` a la función :func:`input` para permitir la " +"apertura de archivos en modo binario o :term:`universal newlines`. Otro " +"parámetro nuevo, *openhook*, le permite usar una función distinta de :func:" +"`open` para abrir los archivos de entrada. Una vez que esté iterando sobre " +"el conjunto de archivos, el nuevo :meth:`~fileinput.fileno` del objeto :" +"class:`FileInput` devuelve el descriptor de archivo para el archivo abierto " +"actualmente. (Contribuido por Georg Brandl.)" #: ../Doc/whatsnew/2.5.rst:1354 msgid "" @@ -2780,6 +3004,12 @@ msgid "" ">>> heapq.nsmallest(2, L, key=len) # Return two shortest elements\n" "['short', 'medium']" msgstr "" +">>> import heapq\n" +">>> L = [\"short\", 'medium', 'longest', 'longer still']\n" +">>> heapq.nsmallest(2, L) # Return two lowest elements, lexicographically\n" +"['longer still', 'longest']\n" +">>> heapq.nsmallest(2, L, key=len) # Return two shortest elements\n" +"['short', 'medium']" #: ../Doc/whatsnew/2.5.rst:1373 ../Doc/whatsnew/2.5.rst:1382 msgid "(Contributed by Raymond Hettinger.)" @@ -2800,6 +3030,8 @@ msgid "" "s = slice(5) # Create slice object\n" "itertools.islice(iterable, s.start, s.stop, s.step)" msgstr "" +"s = slice(5) # Crear objeto slice\n" +"itertools.islice(iterable, s.start, s.stop, s.step)" #: ../Doc/whatsnew/2.5.rst:1384 msgid "" @@ -2879,6 +3111,15 @@ msgid "" "for msg in src:\n" " dest.add(msg)" msgstr "" +"importar buzón\n" +"\n" +"# 'factory=None' utiliza email.Message.Message como la clase que representa\n" +"# los mensajes individuales.\n" +"src = mailbox.Maildir('maildir', factory=None)\n" +"dest = mailbox.mbox('/tmp/mbox')\n" +"\n" +"para msg en src:\n" +"dest.add(msg)" #: ../Doc/whatsnew/2.5.rst:1422 msgid "" @@ -2889,26 +3130,26 @@ msgstr "" "el Summer of Code 2005 de Google)" #: ../Doc/whatsnew/2.5.rst:1425 -#, fuzzy msgid "" "New module: the :mod:`!msilib` module allows creating Microsoft Installer :" "file:`.msi` files and CAB files. Some support for reading the :file:`.msi` " "database is also included. (Contributed by Martin von Löwis.)" msgstr "" -"Nuevo módulo: el módulo :mod:`msilib` permite crear archivos :file:`.msi` de " -"Microsoft Installer y archivos CAB. También se incluye soporte para la " -"lectura de la base de datos :file:`.msi`. (Contribución de Martin von Löwis)" +"Nuevo módulo: el módulo :mod:`!msilib` permite crear archivos :file:`.msi` y " +"archivos CAB de Microsoft Installer. También se incluye cierta " +"compatibilidad para leer la base de datos :file:`.msi`. (Contribución de " +"Martin von Löwis)." #: ../Doc/whatsnew/2.5.rst:1429 -#, fuzzy msgid "" "The :mod:`!nis` module now supports accessing domains other than the system " "default domain by supplying a *domain* argument to the :func:`!nis.match` " "and :func:`!nis.maps` functions. (Contributed by Ben Bell.)" msgstr "" -"El módulo :mod:`nis` soporta ahora el acceso a dominios distintos del " -"dominio por defecto del sistema proporcionando un argumento *dominio* a las " -"funciones :func:`nis.match` y :func:`nis.maps`. (Contribución de Ben Bell)" +"El módulo :mod:`!nis` ahora permite acceder a dominios distintos del dominio " +"predeterminado del sistema mediante el suministro de un argumento *domain* a " +"las funciones :func:`!nis.match` y :func:`!nis.maps`. (Contribuido por Ben " +"Bell)." #: ../Doc/whatsnew/2.5.rst:1433 msgid "" @@ -3018,17 +3259,17 @@ msgstr "" "(Contribución de Grégoire Dooms.)" #: ../Doc/whatsnew/2.5.rst:1481 -#, fuzzy msgid "" "The :mod:`pickle` and :mod:`!cPickle` modules no longer accept a return " "value of ``None`` from the :meth:`~object.__reduce__` method; the method " "must return a tuple of arguments instead. The ability to return ``None`` " "was deprecated in Python 2.4, so this completes the removal of the feature." msgstr "" -"Los módulos :mod:`pickle` y :mod:`cPickle` ya no aceptan un valor de retorno " -"de ``None`` del método :meth:`__reduce__`; el método debe devolver una tupla " -"de argumentos. La capacidad de devolver ``None`` fue obsoleta en Python " -"2.4, así que esto completa la eliminación de la función." +"Los módulos :mod:`pickle` y :mod:`!cPickle` ya no aceptan un valor de " +"retorno de ``None`` del método :meth:`~object.__reduce__`; en su lugar, el " +"método debe devolver una tupla de argumentos. La capacidad de devolver " +"``None`` quedó obsoleta en Python 2.4, por lo que esto completa la " +"eliminación de la función." #: ../Doc/whatsnew/2.5.rst:1486 msgid "" @@ -3119,7 +3360,6 @@ msgstr "" "de Robert Kiendl.)" #: ../Doc/whatsnew/2.5.rst:1522 -#, fuzzy msgid "" "The :mod:`SimpleXMLRPCServer ` and :mod:`DocXMLRPCServer " "` classes now have a :attr:`rpc_paths` attribute that " @@ -3127,11 +3367,12 @@ msgid "" "to allow only ``'/'`` and ``'/RPC2'``. Setting :attr:`rpc_paths` to " "``None`` or an empty tuple disables this path checking." msgstr "" -"Las clases :mod:`SimpleXMLRPCServer` y :mod:`DocXMLRPCServer` tienen ahora " -"un atributo :attr:`rpc_paths` que restringe las operaciones XML-RPC a un " -"conjunto limitado de rutas URL; por defecto sólo se permiten ``'/'`` y ``'/" -"RPC2'``. Establecer :attr:`rpc_paths` como ``None`` o una tupla vacía " -"desactiva esta comprobación de rutas." +"Las clases :mod:`SimpleXMLRPCServer ` y :mod:`DocXMLRPCServer " +"` ahora tienen un atributo :attr:`rpc_paths` que restringe " +"las operaciones XML-RPC a un conjunto limitado de rutas URL; el valor " +"predeterminado es permitir solo ``'/'`` y ``'/RPC2'``. Si se configura :attr:" +"`rpc_paths` en ``None`` o en una tupla vacía, se deshabilita esta " +"verificación de ruta." #: ../Doc/whatsnew/2.5.rst:1529 msgid "" @@ -3175,14 +3416,13 @@ msgstr "" "tipo y protocolo del socket." #: ../Doc/whatsnew/2.5.rst:1545 -#, fuzzy msgid "" "New module: the :mod:`!spwd` module provides functions for accessing the " "shadow password database on systems that support shadow passwords." msgstr "" -"Nuevo módulo: el módulo :mod:`spwd` proporciona funciones para acceder a la " -"base de datos de contraseñas en la sombra en sistemas que soportan " -"contraseñas en la sombra." +"Nuevo módulo: el módulo :mod:`!spwd` proporciona funciones para acceder a la " +"base de datos de contraseñas ocultas en sistemas que admiten contraseñas " +"ocultas." #: ../Doc/whatsnew/2.5.rst:1548 msgid "" @@ -3208,6 +3448,10 @@ msgid "" "data = s.pack(1972, 187, 'abc')\n" "year, number, name = s.unpack(data)" msgstr "" +"s = struct.Struct('ih3s')\n" +"\n" +"data = s.pack(1972, 187, 'abc')\n" +"year, number, name = s.unpack(data)" #: ../Doc/whatsnew/2.5.rst:1560 msgid "" @@ -3359,6 +3603,22 @@ msgid "" ">>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')\n" "UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')" msgstr "" +">>> import uuid\n" +">>> # make a UUID based on the host ID and current time\n" +">>> uuid.uuid1()\n" +"UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')\n" +"\n" +">>> # make a UUID using an MD5 hash of a namespace UUID and a name\n" +">>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')\n" +"UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')\n" +"\n" +">>> # make a random UUID\n" +">>> uuid.uuid4()\n" +"UUID('16fd2706-8baf-433b-82eb-8c7fada847da')\n" +"\n" +">>> # make a UUID using a SHA-1 hash of a namespace UUID and a name\n" +">>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')\n" +"UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')" #: ../Doc/whatsnew/2.5.rst:1632 msgid "(Contributed by Ka-Ping Yee.)" @@ -3406,7 +3666,6 @@ msgstr "" "Broytmann y Georg Brandl)" #: ../Doc/whatsnew/2.5.rst:1653 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module now supports returning :class:" "`~datetime.datetime` objects for the XML-RPC date type. Supply " @@ -3414,11 +3673,11 @@ msgid "" "class:`!Unmarshaller` class to enable this feature. (Contributed by Skip " "Montanaro.)" msgstr "" -"El módulo :mod:`xmlrpclib` ahora soporta la devolución de objetos :class:" -"`~datetime.datetime` para el tipo de fecha XML-RPC. Proporcione " -"``use_datetime=True`` a la función :func:`loads` o a la clase :class:" -"`Unmarshaller` para activar esta característica. (Contribución de Skip " -"Montanaro)" +"El módulo :mod:`xmlrpclib ` ahora admite la devolución de " +"objetos :class:`~datetime.datetime` para el tipo de fecha XML-RPC. " +"Proporcione ``use_datetime=True`` a la función :func:`~xmlrpc.client.loads` " +"o a la clase :class:`!Unmarshaller` para habilitar esta función. " +"(Contribuido por Skip Montanaro)." #: ../Doc/whatsnew/2.5.rst:1660 msgid "" @@ -3448,7 +3707,6 @@ msgid "The ctypes package" msgstr "El paquete ctypes" #: ../Doc/whatsnew/2.5.rst:1681 -#, fuzzy msgid "" "The :mod:`ctypes` package, written by Thomas Heller, has been added to the " "standard library. :mod:`ctypes` lets you call arbitrary functions in " @@ -3458,10 +3716,10 @@ msgid "" msgstr "" "El paquete :mod:`ctypes`, escrito por Thomas Heller, se ha añadido a la " "biblioteca estándar. :mod:`ctypes` permite llamar a funciones arbitrarias en " -"bibliotecas compartidas o DLL. Los usuarios veteranos recordarán el módulo :" -"mod:`dl`, que proporciona funciones para cargar bibliotecas compartidas y " -"llamar a las funciones que contienen. El paquete :mod:`ctypes` es mucho más " -"sofisticado." +"bibliotecas compartidas o DLL. Los usuarios habituales pueden recordar el " +"módulo :mod:`!dl`, que proporciona funciones para cargar bibliotecas " +"compartidas y llamar a funciones en ellas. El paquete :mod:`ctypes` es mucho " +"más sofisticado." #: ../Doc/whatsnew/2.5.rst:1687 msgid "" @@ -3482,6 +3740,10 @@ msgid "" "libc = ctypes.CDLL('libc.so.6')\n" "result = libc.printf(\"Line of output\\n\")" msgstr "" +"import ctypes\n" +"\n" +"libc = ctypes.CDLL('libc.so.6')\n" +"result = libc.printf(\"Line of output\\n\")" #: ../Doc/whatsnew/2.5.rst:1697 msgid "" @@ -3523,6 +3785,9 @@ msgid "" "buf = ctypes.create_string_buffer(s)\n" "libc.strfry(buf)" msgstr "" +"s = \"this is a string\"\n" +"buf = ctypes.create_string_buffer(s)\n" +"libc.strfry(buf)" #: ../Doc/whatsnew/2.5.rst:1715 msgid "" @@ -3541,9 +3806,13 @@ msgid "" ">>> libc.atof('2.71828')\n" "2.71828" msgstr "" +">>> libc.atof('2.71828')\n" +"-1783957616\n" +">>> libc.atof.restype = ctypes.c_double\n" +">>> libc.atof('2.71828')\n" +"2.71828" #: ../Doc/whatsnew/2.5.rst:1724 -#, fuzzy msgid "" ":mod:`ctypes` also provides a wrapper for Python's C API as the ``ctypes." "pythonapi`` object. This object does *not* release the global interpreter " @@ -3553,10 +3822,10 @@ msgid "" "usage::" msgstr "" ":mod:`ctypes` también proporciona un contenedor para la API C de Python como " -"objeto ``ctypes.pythonapi``. Este objeto *not* libera el bloqueo del " -"intérprete global antes de llamar a una función, porque el bloqueo debe " -"mantenerse cuando se llama al código del intérprete. Hay un constructor de " -"tipo :class:`py_object()` que creará un puntero :c:expr:`PyObject *`. Un uso " +"el objeto ``ctypes.pythonapi``. Este objeto libera el bloqueo global del " +"intérprete antes de llamar a una función, porque el bloqueo debe mantenerse " +"al llamar al código del intérprete. Hay un constructor de tipo :class:" +"`~ctypes.py_object` que creará un puntero :c:expr:`PyObject *`. Un uso " "simple::" #: ../Doc/whatsnew/2.5.rst:1730 @@ -3568,15 +3837,20 @@ msgid "" " ctypes.py_object(\"abc\"), ctypes.py_object(1))\n" "# d is now {'abc', 1}." msgstr "" +"import ctypes\n" +"\n" +"d = {}\n" +"ctypes.pythonapi.PyObject_SetItem(ctypes.py_object(d),\n" +" ctypes.py_object(\"abc\"), ctypes.py_object(1))\n" +"# d is now {'abc', 1}." #: ../Doc/whatsnew/2.5.rst:1737 -#, fuzzy msgid "" "Don't forget to use :func:`~ctypes.py_object`; if it's omitted you end up " "with a segmentation fault." msgstr "" -"No olvides usar :class:`py_object()`; si se omite acabas con un fallo de " -"segmentación." +"No olvide utilizar :func:`~ctypes.py_object`; si lo omite, terminará con un " +"error de segmentación." #: ../Doc/whatsnew/2.5.rst:1740 msgid "" @@ -3674,6 +3948,13 @@ msgid "" " 'http://planet.python.org/rss10.xml')\n" "tree = ET.parse(feed)" msgstr "" +"from xml.etree import ElementTree as ET\n" +"\n" +"tree = ET.parse('ex-1.xml')\n" +"\n" +"feed = urllib.urlopen(\n" +" 'http://planet.python.org/rss10.xml')\n" +"tree = ET.parse(feed)" #: ../Doc/whatsnew/2.5.rst:1790 msgid "" @@ -3702,6 +3983,10 @@ msgid "" "svg.set('height', '320px')\n" "svg.append(elem1)" msgstr "" +"svg = ET.XML(\"\"\"\n" +" \"\"\")\n" +"svg.set('height', '320px')\n" +"svg.append(elem1)" #: ../Doc/whatsnew/2.5.rst:1803 msgid "" @@ -3835,6 +4120,10 @@ msgid "" "elif elem.tag is ET.ProcessingInstruction:\n" " ..." msgstr "" +"if elem.tag is ET.Comment:\n" +" ...\n" +"elif elem.tag is ET.ProcessingInstruction:\n" +" ..." #: ../Doc/whatsnew/2.5.rst:1845 msgid "" @@ -3855,6 +4144,12 @@ msgid "" "f = open('output.xml', 'w')\n" "tree.write(f, encoding='utf-8')" msgstr "" +"# Encoding is US-ASCII\n" +"tree.write('output.xml')\n" +"\n" +"# Encoding is UTF-8\n" +"f = open('output.xml', 'w')\n" +"tree.write(f, encoding='utf-8')" #: ../Doc/whatsnew/2.5.rst:1855 msgid "" @@ -3899,7 +4194,6 @@ msgid "The hashlib package" msgstr "El paquete hashlib" #: ../Doc/whatsnew/2.5.rst:1879 -#, fuzzy msgid "" "A new :mod:`hashlib` module, written by Gregory P. Smith, has been added to " "replace the :mod:`!md5` and :mod:`!sha` modules. :mod:`hashlib` adds " @@ -3908,13 +4202,12 @@ msgid "" "optimized implementations of algorithms." msgstr "" "Se ha añadido un nuevo módulo :mod:`hashlib`, escrito por Gregory P. Smith, " -"para sustituir a los módulos :mod:`md5` y :mod:`sha`. :mod:`hashlib` añade " -"soporte para hashes seguros adicionales (SHA-224, SHA-256, SHA-384 y " +"para sustituir a los módulos :mod:`!md5` y :mod:`!sha`. :mod:`hashlib` añade " +"compatibilidad con hashes seguros adicionales (SHA-224, SHA-256, SHA-384 y " "SHA-512). Cuando está disponible, el módulo utiliza OpenSSL para " -"implementaciones rápidas de algoritmos optimizados para la plataforma." +"implementaciones rápidas y optimizadas de algoritmos para plataformas." #: ../Doc/whatsnew/2.5.rst:1885 -#, fuzzy msgid "" "The old :mod:`!md5` and :mod:`!sha` modules still exist as wrappers around " "hashlib to preserve backwards compatibility. The new module's interface is " @@ -3922,11 +4215,12 @@ msgid "" "significant difference is that the constructor functions for creating new " "hashing objects are named differently. ::" msgstr "" -"Los antiguos módulos :mod:`md5` y :mod:`sha` siguen existiendo como " -"envoltorios de hashlib para preservar la compatibilidad hacia atrás. La " -"interfaz del nuevo módulo es muy parecida a la de los módulos antiguos, pero " -"no es idéntica. La diferencia más significativa es que las funciones " -"constructoras para crear nuevos objetos hashing tienen un nombre diferente ::" +"Los módulos antiguos :mod:`!md5` y :mod:`!sha` todavía existen como " +"contenedores de hashlib para preservar la compatibilidad con versiones " +"anteriores. La interfaz del nuevo módulo es muy similar a la de los módulos " +"antiguos, pero no idéntica. La diferencia más significativa es que las " +"funciones constructoras para crear nuevos objetos hash tienen nombres " +"diferentes. ::" #: ../Doc/whatsnew/2.5.rst:1891 msgid "" @@ -3953,6 +4247,28 @@ msgid "" "# Alternative form\n" "h = hashlib.new('md5') # Provide algorithm as a string" msgstr "" +"# Versiones anteriores\n" +"h = md5.md5()\n" +"h = md5.new()\n" +"\n" +"# Nueva versión\n" +"h = hashlib.md5()\n" +"\n" +"# Versiones anteriores\n" +"h = sha.sha()\n" +"h = sha.new()\n" +"\n" +"# Nueva versión\n" +"h = hashlib.sha1()\n" +"\n" +"# Hash que no estaban disponibles anteriormente\n" +"h = hashlib.sha224()\n" +"h = hashlib.sha256()\n" +"h = hashlib.sha384()\n" +"h = hashlib.sha512()\n" +"\n" +"# Forma alternativa\n" +"h = hashlib.new('md5') # Proporcionar algoritmo como cadena" #: ../Doc/whatsnew/2.5.rst:1914 msgid "" @@ -4037,7 +4353,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:1956 msgid "conn = sqlite3.connect('/tmp/example')" -msgstr "" +msgstr "conn = sqlite3.connect('/tmp/ejemplo')" #: ../Doc/whatsnew/2.5.rst:1958 msgid "" @@ -4068,6 +4384,16 @@ msgid "" "c.execute(\"\"\"insert into stocks\n" " values ('2006-01-05','BUY','RHAT',100,35.14)\"\"\")" msgstr "" +"c = conn.cursor()\n" +"\n" +"# Create table\n" +"c.execute('''create table stocks\n" +"(date text, trans text, symbol text,\n" +" qty real, price real)''')\n" +"\n" +"# Insert a row of data\n" +"c.execute(\"\"\"insert into stocks\n" +" values ('2006-01-05','BUY','RHAT',100,35.14)\"\"\")" #: ../Doc/whatsnew/2.5.rst:1974 msgid "" @@ -4114,6 +4440,20 @@ msgid "" " ):\n" " c.execute('insert into stocks values (?,?,?,?,?)', t)" msgstr "" +"# Never do this -- insecure!\n" +"symbol = 'IBM'\n" +"c.execute(\"... where symbol = '%s'\" % symbol)\n" +"\n" +"# Do this instead\n" +"t = (symbol,)\n" +"c.execute('select * from stocks where symbol=?', t)\n" +"\n" +"# Larger example\n" +"for t in (('2006-03-28', 'BUY', 'IBM', 1000, 45.00),\n" +" ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),\n" +" ('2006-04-06', 'SELL', 'IBM', 500, 53.00),\n" +" ):\n" +" c.execute('insert into stocks values (?,?,?,?,?)', t)" #: ../Doc/whatsnew/2.5.rst:1998 msgid "" @@ -4144,6 +4484,16 @@ msgid "" "(u'2006-04-05', u'BUY', u'MSOFT', 1000, 72.0)\n" ">>>" msgstr "" +">>> c = conn.cursor()\n" +">>> c.execute('select * from stocks order by price')\n" +">>> for row in c:\n" +"... print row\n" +"...\n" +"(u'2006-01-05', u'BUY', u'RHAT', 100, 35.140000000000001)\n" +"(u'2006-03-28', u'BUY', u'IBM', 1000, 45.0)\n" +"(u'2006-04-06', u'SELL', u'IBM', 500, 53.0)\n" +"(u'2006-04-05', u'BUY', u'MSOFT', 1000, 72.0)\n" +">>>" #: ../Doc/whatsnew/2.5.rst:2016 msgid "" @@ -4223,6 +4573,14 @@ msgid "" "httpd = simple_server.make_server(host, port, wsgi_app)\n" "httpd.serve_forever()" msgstr "" +"from wsgiref import simple_server\n" +"\n" +"wsgi_app = ...\n" +"\n" +"host = ''\n" +"port = 8000\n" +"httpd = simple_server.make_server(host, port, wsgi_app)\n" +"httpd.serve_forever()" #: ../Doc/whatsnew/2.5.rst:2069 msgid "" @@ -4326,6 +4684,14 @@ msgid "" "assignment = ast.body[0]\n" "for_loop = ast.body[1]" msgstr "" +"from _ast import PyCF_ONLY_AST\n" +"ast = compile(\"\"\"a=0\n" +"for i in range(10):\n" +" a += i\n" +"\"\"\", \"\", 'exec', PyCF_ONLY_AST)\n" +"\n" +"assignment = ast.body[0]\n" +"for_loop = ast.body[1]" #: ../Doc/whatsnew/2.5.rst:2117 msgid "" @@ -4522,6 +4888,8 @@ msgid "" "range = PyObject_CallFunction((PyObject*) &PyRange_Type, \"lll\",\n" " start, stop, step);" msgstr "" +"range = PyObject_CallFunction((PyObject*) &PyRange_Type, \"lll\",\n" +" start, stop, step);" #: ../Doc/whatsnew/2.5.rst:2208 msgid "Port-Specific Changes" @@ -4630,20 +4998,18 @@ msgstr "" "%char sin texto alrededor." #: ../Doc/whatsnew/2.5.rst:2256 -#, fuzzy msgid "" "Library: The :mod:`pickle` and :mod:`!cPickle` modules no longer accept a " "return value of ``None`` from the :meth:`~object.__reduce__` method; the " "method must return a tuple of arguments instead. The modules also no longer " "accept the deprecated *bin* keyword parameter." msgstr "" -"Biblioteca: Los módulos :mod:`pickle` y :mod:`cPickle` ya no aceptan un " -"valor de retorno de ``None`` del método :meth:`__reduce__`; el método debe " -"devolver una tupla de argumentos. Los módulos tampoco aceptan ya el " -"parámetro obsoleto de la palabra clave *bin*." +"Biblioteca: Los módulos :mod:`pickle` y :mod:`!cPickle` ya no aceptan un " +"valor de retorno de ``None`` del método :meth:`~object.__reduce__`; en su " +"lugar, el método debe devolver una tupla de argumentos. Los módulos tampoco " +"aceptan el parámetro de palabra clave *bin*, que ya no se utiliza." #: ../Doc/whatsnew/2.5.rst:2261 -#, fuzzy msgid "" "Library: The :mod:`SimpleXMLRPCServer ` and :mod:" "`DocXMLRPCServer ` classes now have a :attr:`rpc_paths` " @@ -4651,11 +5017,12 @@ msgid "" "the default is to allow only ``'/'`` and ``'/RPC2'``. Setting :attr:" "`rpc_paths` to ``None`` or an empty tuple disables this path checking." msgstr "" -"Biblioteca: Las clases :mod:`SimpleXMLRPCServer` y :mod:`DocXMLRPCServer` " -"tienen ahora un atributo :attr:`rpc_paths` que restringe las operaciones XML-" -"RPC a un conjunto limitado de rutas URL; por defecto sólo se permiten " -"``'/'`` y ``'/RPC2'``. Establecer :attr:`rpc_paths` como ``None`` o una " -"tupla vacía desactiva esta comprobación de rutas." +"Biblioteca: Las clases :mod:`SimpleXMLRPCServer ` y :mod:" +"`DocXMLRPCServer ` ahora tienen un atributo :attr:`rpc_paths` " +"que restringe las operaciones XML-RPC a un conjunto limitado de rutas URL; " +"el valor predeterminado es permitir solo ``'/'`` y ``'/RPC2'``. Si se " +"configura :attr:`rpc_paths` en ``None`` o en una tupla vacía, se deshabilita " +"esta verificación de ruta." #: ../Doc/whatsnew/2.5.rst:2267 msgid "" diff --git a/whatsnew/2.7.po b/whatsnew/2.7.po index 56dfc3ce5b..5c80b3fb73 100644 --- a/whatsnew/2.7.po +++ b/whatsnew/2.7.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-10-19 15:09-0300\n" "Last-Translator: Claudia Millan \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.7.rst:3 @@ -392,12 +392,11 @@ msgid "Other new Python3-mode warnings include:" msgstr "Otras nuevas advertencias en modo Python3 incluyen:" #: ../Doc/whatsnew/2.7.rst:199 -#, fuzzy msgid "" ":func:`!operator.isCallable` and :func:`!operator.sequenceIncludes`, which " "are not supported in 3.x, now trigger warnings." msgstr "" -":func:`operator.isCallable` y :func:`operator.sequenceIncludes`, que no se " +":func:`!operator.isCallable` y :func:`!operator.sequenceIncludes`, que no se " "admiten en 3.x, ahora activan advertencias." #: ../Doc/whatsnew/2.7.rst:201 @@ -449,6 +448,12 @@ msgid "" ">>> d.items()\n" "[('first', 1), ('second', 2), ('third', 3)]" msgstr "" +">>> from collections import OrderedDict\n" +">>> d = OrderedDict([('first', 1),\n" +"... ('second', 2),\n" +"... ('third', 3)])\n" +">>> d.items()\n" +"[('first', 1), ('second', 2), ('third', 3)]" #: ../Doc/whatsnew/2.7.rst:233 msgid "" @@ -464,6 +469,9 @@ msgid "" ">>> d.items()\n" "[('first', 1), ('second', 4), ('third', 3)]" msgstr "" +">>> d['second'] = 4\n" +">>> d.items()\n" +"[('first', 1), ('second', 4), ('third', 3)]" #: ../Doc/whatsnew/2.7.rst:240 msgid "Deleting an entry and reinserting it will move it to the end::" @@ -477,6 +485,10 @@ msgid "" ">>> d.items()\n" "[('first', 1), ('third', 3), ('second', 5)]" msgstr "" +">>> del d['second']\n" +">>> d['second'] = 5\n" +">>> d.items()\n" +"[('first', 1), ('third', 3), ('second', 5)]" #: ../Doc/whatsnew/2.7.rst:247 msgid "" @@ -502,6 +514,15 @@ msgid "" ">>> od.popitem(last=False)\n" "(1, 0)" msgstr "" +">>> od = OrderedDict([(x,0) for x in range(20)])\n" +">>> od.popitem()\n" +"(19, 0)\n" +">>> od.popitem()\n" +"(18, 0)\n" +">>> od.popitem(last=False)\n" +"(0, 0)\n" +">>> od.popitem(last=False)\n" +"(1, 0)" #: ../Doc/whatsnew/2.7.rst:262 msgid "" @@ -526,6 +547,18 @@ msgid "" ">>> od1 == od2\n" "True" msgstr "" +">>> od1 = OrderedDict([('first', 1),\n" +"... ('second', 2),\n" +"... ('third', 3)])\n" +">>> od2 = OrderedDict([('third', 3),\n" +"... ('first', 1),\n" +"... ('second', 2)])\n" +">>> od1 == od2\n" +"False\n" +">>> # Move 'third' key to the end\n" +">>> del od2['third']; od2['third'] = 3\n" +">>> od1 == od2\n" +"True" #: ../Doc/whatsnew/2.7.rst:278 msgid "" @@ -536,7 +569,6 @@ msgstr "" "ignora el orden de inserción y simplemente compara las llaves y los valores." #: ../Doc/whatsnew/2.7.rst:281 -#, fuzzy msgid "" "How does the :class:`~collections.OrderedDict` work? It maintains a doubly " "linked list of keys, appending new keys to the list as they're inserted. A " @@ -544,11 +576,11 @@ msgid "" "doesn't have to traverse the entire linked list and therefore remains *O*\\ " "(1)." msgstr "" -"¿Cómo funciona el :class:`~collections.OrderedDict`? Mantiene una lista de " -"claves doblemente vinculada, agregando nuevas claves a la lista a medida que " -"se insertan. Un diccionario secundario asigna claves a su nodo de lista " -"correspondiente, por lo que la eliminación no tiene que atravesar toda la " -"lista vinculada y, por lo tanto, sigue siendo O(1)." +"¿Cómo funciona :class:`~collections.OrderedDict`? Mantiene una lista " +"doblemente enlazada de claves y añade nuevas claves a la lista a medida que " +"se insertan. Un diccionario secundario asigna las claves a su nodo de lista " +"correspondiente, por lo que la eliminación no tiene que recorrer toda la " +"lista enlazada y, por lo tanto, sigue siendo *O*\\ (1)." #: ../Doc/whatsnew/2.7.rst:287 msgid "" @@ -559,25 +591,23 @@ msgstr "" "varios módulos." #: ../Doc/whatsnew/2.7.rst:290 -#, fuzzy msgid "" "The :mod:`ConfigParser ` module uses them by default, meaning " "that configuration files can now be read, modified, and then written back in " "their original order." msgstr "" -"El módulo :mod:`ConfigParser` los utiliza de forma predeterminada, lo que " -"significa que los archivos de configuración ahora se pueden leer, modificar " -"y volver a escribir en su orden original." +"El módulo :mod:`ConfigParser ` los utiliza de forma " +"predeterminada, lo que significa que ahora los archivos de configuración se " +"pueden leer, modificar y luego volver a escribir en su orden original." #: ../Doc/whatsnew/2.7.rst:294 -#, fuzzy msgid "" "The :meth:`~collections.somenamedtuple._asdict` method for :func:" "`collections.namedtuple` now returns an ordered dictionary with the values " "appearing in the same order as the underlying tuple indices." msgstr "" -"El método :meth:`~collections.somenamedtuple._asdict()` para :func:" -"`collections.namedtuple` ahora retorna un diccionario ordenado con los " +"El método :meth:`~collections.somenamedtuple._asdict` para :func:" +"`collections.namedtuple` ahora devuelve un diccionario ordenado con los " "valores que aparecen en el mismo orden que los índices de tupla subyacentes." #: ../Doc/whatsnew/2.7.rst:298 @@ -649,6 +679,8 @@ msgid "" ">>> '{:20,.2f}'.format(18446744073709551616.0)\n" "'18,446,744,073,709,551,616.00'" msgstr "" +">>> '{:20,.2f}'.format(18446744073709551616.0)\n" +"'18,446,744,073,709,551,616.00'" #: ../Doc/whatsnew/2.7.rst:333 msgid "When formatting an integer, include the comma after the width:" @@ -687,7 +719,6 @@ msgstr "" "agregó como un reemplazo más potente para el módulo :mod:`optparse`." #: ../Doc/whatsnew/2.7.rst:355 -#, fuzzy msgid "" "This means Python now supports three different modules for parsing command-" "line arguments: :mod:`getopt`, :mod:`optparse`, and :mod:`argparse`. The :" @@ -700,15 +731,15 @@ msgid "" "rejected as too messy and difficult.)" msgstr "" "Esto significa que Python ahora admite tres módulos diferentes para analizar " -"argumentos de línea de comandos: :mod:`getopt`, :mod:`optparse`, y :mod:" -"`argparse`. El módulo :mod:`getopt` se parece mucho a la función :c:func:" -"`getopt` de la biblioteca C, por lo que sigue siendo útil si estás " -"escribiendo un prototipo de Python que finalmente se reescribe en C. :mod:" -"`optparse` se vuelve redundante, pero no hay planes para eliminarlo porque " -"hay muchos scripts que todavía lo usan, y no hay una manera automatizada de " -"actualizar estos scripts. (Hacer que la API :mod:`argparse` sea coherente " -"con la interfaz de :mod:`optparse` fue discutido pero rechazado como " -"demasiado desordenado y difícil.)" +"argumentos de línea de comandos: :mod:`getopt`, :mod:`optparse` y :mod:" +"`argparse`. El módulo :mod:`getopt` se parece mucho a la función :c:func:`!" +"getopt` de la biblioteca C, por lo que sigue siendo útil si está escribiendo " +"un prototipo de Python que eventualmente se reescribirá en C. :mod:" +"`optparse` se vuelve redundante, pero no hay planes de eliminarlo porque hay " +"muchos scripts que aún lo usan y no hay una forma automatizada de actualizar " +"estos scripts. (Se discutió hacer que la API :mod:`argparse` sea consistente " +"con la interfaz de :mod:`optparse`, pero se rechazó por ser demasiado " +"desordenada y difícil)." #: ../Doc/whatsnew/2.7.rst:366 msgid "" @@ -747,6 +778,26 @@ msgid "" "args = parser.parse_args()\n" "print args.__dict__" msgstr "" +"import argparse\n" +"\n" +"parser = argparse.ArgumentParser(description='Command-line example.')\n" +"\n" +"# Add optional switches\n" +"parser.add_argument('-v', action='store_true', dest='is_verbose',\n" +" help='produce verbose output')\n" +"parser.add_argument('-o', action='store', dest='output',\n" +" metavar='FILE',\n" +" help='direct output to FILE instead of stdout')\n" +"parser.add_argument('-C', action='store', type=int, dest='context',\n" +" metavar='NUM', default=0,\n" +" help='display NUM lines of added context')\n" +"\n" +"# Allow any number of additional arguments.\n" +"parser.add_argument(nargs='*', action='store', dest='inputs',\n" +" help='input filenames (default is stdin)')\n" +"\n" +"args = parser.parse_args()\n" +"print args.__dict__" #: ../Doc/whatsnew/2.7.rst:393 msgid "" @@ -773,6 +824,20 @@ msgid "" " -o FILE direct output to FILE instead of stdout\n" " -C NUM display NUM lines of added context" msgstr "" +"-> ./python.exe argparse-example.py --help\n" +"usage: argparse-example.py [-h] [-v] [-o FILE] [-C NUM] [inputs " +"[inputs ...]]\n" +"\n" +"Command-line example.\n" +"\n" +"positional arguments:\n" +" inputs input filenames (default is stdin)\n" +"\n" +"optional arguments:\n" +" -h, --help show this help message and exit\n" +" -v produce verbose output\n" +" -o FILE direct output to FILE instead of stdout\n" +" -C NUM display NUM lines of added context" #: ../Doc/whatsnew/2.7.rst:410 msgid "" @@ -797,6 +862,17 @@ msgid "" " 'context': 4,\n" " 'inputs': ['file1', 'file2']}" msgstr "" +"-> ./python.exe argparse-example.py -v\n" +"{'output': None,\n" +" 'is_verbose': True,\n" +" 'context': 0,\n" +" 'inputs': []}\n" +"\n" +"-> ./python.exe argparse-example.py -v -o /tmp/output -C 4 file1 file2\n" +"{'output': '/tmp/output',\n" +" 'is_verbose': True,\n" +" 'context': 4,\n" +" 'inputs': ['file1', 'file2']}" #: ../Doc/whatsnew/2.7.rst:425 msgid "" @@ -864,7 +940,6 @@ msgstr "" "a un número variable de controladores." #: ../Doc/whatsnew/2.7.rst:455 -#, fuzzy msgid "" "All this flexibility can require a lot of configuration. You can write " "Python statements to create objects and set their properties, but a complex " @@ -873,15 +948,14 @@ msgid "" "format doesn't support configuring filters, and it's messier to generate " "programmatically." msgstr "" -"Toda esta flexibilidad puede requerir mucha configuración. Puede escribir " +"Toda esta flexibilidad puede requerir mucha configuración. Puedes escribir " "instrucciones Python para crear objetos y establecer sus propiedades, pero " -"una configuración compleja requiere código detallado pero aburrido. :mod:" -"`logging` también es compatible con una función :func:`~logging.fileConfig` " -"que analiza un archivo, pero el formato de archivo no admite la " -"configuración de filtros, y es más complicado generar mediante programación." +"una configuración compleja requiere un código extenso pero aburrido. :mod:" +"`logging` también admite una función :func:`~logging.config.fileConfig` que " +"analiza un archivo, pero el formato de archivo no admite la configuración de " +"filtros y es más complicado generarlo mediante programación." #: ../Doc/whatsnew/2.7.rst:462 -#, fuzzy msgid "" "Python 2.7 adds a :func:`~logging.config.dictConfig` function that uses a " "dictionary to configure logging. There are many ways to produce a " @@ -889,12 +963,12 @@ msgid "" "containing JSON; or use a YAML parsing library if one is installed. For " "more information see :ref:`logging-config-api`." msgstr "" -"Python 2.7 agrega una función :func:`~logging.dictConfig` que utiliza un " -"diccionario para configurar el registro. Hay muchas maneras de producir un " -"diccionario de diferentes fuentes: construir uno con código; analizar un " -"archivo que contenga JSON; o utilice una biblioteca de análisis YAML si hay " -"una instalada. Para obtener más información, consulte :ref:`logging-config-" -"api`." +"Python 2.7 agrega una función :func:`~logging.config.dictConfig` que utiliza " +"un diccionario para configurar el registro. Hay muchas maneras de producir " +"un diccionario a partir de diferentes fuentes: construir uno con código; " +"analizar un archivo que contenga JSON; o utilizar una biblioteca de análisis " +"de YAML si hay una instalada. Para obtener más información, consulte :ref:" +"`logging-config-api`." #: ../Doc/whatsnew/2.7.rst:468 msgid "" @@ -956,6 +1030,47 @@ msgid "" "netlogger = logging.getLogger('network')\n" "netlogger.error('Connection failed')" msgstr "" +"import logging\n" +"import logging.config\n" +"\n" +"configdict = {\n" +" 'version': 1, # Configuration schema in use; must be 1 for now\n" +" 'formatters': {\n" +" 'standard': {\n" +" 'format': ('%(asctime)s %(name)-15s '\n" +" '%(levelname)-8s %(message)s')}},\n" +"\n" +" 'handlers': {'netlog': {'backupCount': 10,\n" +" 'class': 'logging.handlers.RotatingFileHandler',\n" +" 'filename': '/logs/network.log',\n" +" 'formatter': 'standard',\n" +" 'level': 'INFO',\n" +" 'maxBytes': 1000000},\n" +" 'syslog': {'class': 'logging.handlers.SysLogHandler',\n" +" 'formatter': 'standard',\n" +" 'level': 'ERROR'}},\n" +"\n" +" # Specify all the subordinate loggers\n" +" 'loggers': {\n" +" 'network': {\n" +" 'handlers': ['netlog']\n" +" }\n" +" },\n" +" # Specify properties of the root logger\n" +" 'root': {\n" +" 'handlers': ['syslog']\n" +" },\n" +"}\n" +"\n" +"# Set up configuration\n" +"logging.config.dictConfig(configdict)\n" +"\n" +"# As an example, log two error messages\n" +"logger = logging.getLogger('/')\n" +"logger.error('Database not found')\n" +"\n" +"netlogger = logging.getLogger('network')\n" +"netlogger.error('Connection failed')" #: ../Doc/whatsnew/2.7.rst:518 msgid "" @@ -993,15 +1108,14 @@ msgstr "" "listen')`` es equivalente a ``getLogger('app.network.listen')``." #: ../Doc/whatsnew/2.7.rst:535 -#, fuzzy msgid "" "The :class:`~logging.LoggerAdapter` class gained an :meth:`~logging.Logger." "isEnabledFor` method that takes a *level* and returns whether the underlying " "logger would process a message of that level of importance." msgstr "" -"La clase :class:`~logging.LoggerAdapter` gano un método :meth:`~logging." -"LoggerAdapter.isEnabledFor` que toma un *nivel* y retorna si el registrador " -"subyacente procesará un mensaje de ese nivel de importancia." +"La clase :class:`~logging.LoggerAdapter` obtuvo un método :meth:`~logging." +"Logger.isEnabledFor` que toma un *level* y devuelve si el registrador " +"subyacente procesaría un mensaje de ese nivel de importancia." #: ../Doc/whatsnew/2.7.rst:544 msgid ":pep:`391` - Dictionary-Based Configuration For Logging" @@ -1026,18 +1140,16 @@ msgstr "" "llamado :dfn:`view` en lugar de una lista completamente materializada." #: ../Doc/whatsnew/2.7.rst:554 -#, fuzzy msgid "" "It's not possible to change the return values of :meth:`~dict.keys`, :meth:" "`~dict.values`, and :meth:`~dict.items` in Python 2.7 because too much code " "would break. Instead the 3.x versions were added under the new names :meth:" "`!viewkeys`, :meth:`!viewvalues`, and :meth:`!viewitems`." msgstr "" -"No es posible cambiar el retorno de valores de los métodos :meth:`~dict." -"keys`, :meth:`~dict.values` y :meth:`~dict.items` en Python 2.7 porque se " -"rompería demasiado código. En su lugar en las versiones 3.x se fueron " -"agregando bajo los nuevos nombres :meth:`~dict.viewkeys`, :meth:`~dict." -"viewvalues` y :meth:`~dict.viewitems`." +"No es posible cambiar los valores de retorno de :meth:`~dict.keys`, :meth:" +"`~dict.values` y :meth:`~dict.items` en Python 2.7 porque demasiado código " +"podría fallar. En su lugar, se agregaron las versiones 3.x con los nuevos " +"nombres :meth:`!viewkeys`, :meth:`!viewvalues` y :meth:`!viewitems`." #: ../Doc/whatsnew/2.7.rst:562 msgid "" @@ -1047,6 +1159,11 @@ msgid "" ">>> d.viewkeys()\n" "dict_keys([0, 130, 10, 140, 20, 150, 30, ..., 250])" msgstr "" +">>> d = dict((i*10, chr(65+i)) para i en rango(26))\n" +">>> d\n" +"{0: 'A', 130: 'N', 10: 'B', 140: 'O', 20: ..., 250: 'Z'}\n" +">>> d.viewkeys()\n" +"dict_keys([0, 130, 10, 140, 20, 150, 30, ..., 250])" #: ../Doc/whatsnew/2.7.rst:568 msgid "" @@ -1066,6 +1183,12 @@ msgid "" ">>> d1.viewkeys() | range(0, 30)\n" "set([0, 1, 130, 3, 4, 5, 6, ..., 120, 250])" msgstr "" +">>> d1 = dict((i*10, chr(65+i)) for i in range(26))\n" +">>> d2 = dict((i**.5, i) for i in range(1000))\n" +">>> d1.viewkeys() & d2.viewkeys()\n" +"set([0.0, 10.0, 20.0, 30.0])\n" +">>> d1.viewkeys() | range(0, 30)\n" +"set([0, 1, 130, 3, 4, 5, 6, ..., 120, 250])" #: ../Doc/whatsnew/2.7.rst:579 msgid "" @@ -1084,6 +1207,12 @@ msgid "" ">>> vk\n" "dict_keys([0, 130, 260, 10, ..., 250])" msgstr "" +">>> vk = d.viewkeys()\n" +">>> vk\n" +"dict_keys([0, 130, 10, ..., 250])\n" +">>> d[260] = '&'\n" +">>> vk\n" +"dict_keys([0, 130, 260, 10, ..., 250])" #: ../Doc/whatsnew/2.7.rst:589 msgid "" @@ -1102,6 +1231,12 @@ msgid "" " File \"\", line 1, in \n" "RuntimeError: dictionary changed size during iteration" msgstr "" +">>> for k in vk:\n" +"... d[k*2] = k\n" +"...\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"RuntimeError: dictionary changed size during iteration" #: ../Doc/whatsnew/2.7.rst:599 msgid "" @@ -1151,6 +1286,17 @@ msgid "" ">>> m2\n" "" msgstr "" +">>> import string\n" +">>> m = memoryview(string.letters)\n" +">>> m\n" +"\n" +">>> len(m) # Returns length of underlying object\n" +"52\n" +">>> m[0], m[25], m[26] # Indexing returns one byte\n" +"('a', 'z', 'A')\n" +">>> m2 = m[0:26] # Slicing returns another memoryview\n" +">>> m2\n" +"" #: ../Doc/whatsnew/2.7.rst:631 msgid "" @@ -1168,6 +1314,11 @@ msgid "" "[97, 98, 99, 100, 101, 102, 103, ... 121, 122]\n" ">>>" msgstr "" +">>> m2.tobytes()\n" +"'abcdefghijklmnopqrstuvwxyz'\n" +">>> m2.tolist()\n" +"[97, 98, 99, 100, 101, 102, 103, ... 121, 122]\n" +">>>" #: ../Doc/whatsnew/2.7.rst:643 msgid "" @@ -1192,6 +1343,18 @@ msgid "" "bytearray(b'*bcde')\n" ">>>" msgstr "" +">>> m2[0] = 75\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: cannot modify read-only memory\n" +">>> b = bytearray(string.letters) # Creating a mutable object\n" +">>> b\n" +"bytearray(b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')\n" +">>> mb = memoryview(b)\n" +">>> mb[0] = '*' # Assign to view, changing the bytearray.\n" +">>> b[0:5] # The bytearray has been changed.\n" +"bytearray(b'*bcde')\n" +">>>" #: ../Doc/whatsnew/2.7.rst:666 msgid ":pep:`3137` - Immutable Bytes and Mutable Buffer" @@ -1238,6 +1401,12 @@ msgid "" ">>> {} # empty dict\n" "{}" msgstr "" +">>> {1, 2, 3, 4, 5}\n" +"set([1, 2, 3, 4, 5])\n" +">>> set() # empty set\n" +"set([])\n" +">>> {} # empty dict\n" +"{}" #: ../Doc/whatsnew/2.7.rst:693 msgid "Backported by Alexandre Vassalotti; :issue:`2335`." @@ -1260,6 +1429,10 @@ msgid "" ">>> {('a'*x) for x in range(6)}\n" "set(['', 'a', 'aa', 'aaa', 'aaaa', 'aaaaa'])" msgstr "" +">>> {x: x*x for x in range(6)}\n" +"{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}\n" +">>> {('a'*x) for x in range(6)}\n" +"set(['', 'a', 'aa', 'aaa', 'aaaa', 'aaaaa'])" #: ../Doc/whatsnew/2.7.rst:707 msgid "Backported by Alexandre Vassalotti; :issue:`2333`." @@ -1281,6 +1454,8 @@ msgid "" "with A() as a, B() as b:\n" " ... suite of statements ..." msgstr "" +"with A() as a, B() as b:\n" +" ... suite of statements ..." #: ../Doc/whatsnew/2.7.rst:717 msgid "is equivalent to::" @@ -1292,15 +1467,17 @@ msgid "" " with B() as b:\n" " ... suite of statements ..." msgstr "" +"with A() as a:\n" +" with B() as b:\n" +" ... suite of statements ..." #: ../Doc/whatsnew/2.7.rst:723 -#, fuzzy msgid "" "The :func:`!contextlib.nested` function provides a very similar function, so " "it's no longer necessary and has been deprecated." msgstr "" -"La función :func:`contextlib.nested` provee una función muy similar, por lo " -"que ya no es necesario y ha quedado obsoleto." +"La función :func:`!contextlib.nested` proporciona una función muy similar, " +"por lo que ya no es necesaria y ha quedado obsoleta." #: ../Doc/whatsnew/2.7.rst:726 msgid "" @@ -1391,6 +1568,11 @@ msgid "" ">>> n - long(float(n))\n" "65535L" msgstr "" +">>> n = 295147905179352891391\n" +">>> float(n)\n" +"2.9514790517935283e+20\n" +">>> n - long(float(n))\n" +"65535L" #: ../Doc/whatsnew/2.7.rst:773 msgid "" @@ -1408,6 +1590,11 @@ msgid "" ">>> n - long(float(n))\n" "-1L" msgstr "" +">>> n = 295147905179352891391\n" +">>> float(n)\n" +"2.9514790517935289e+20\n" +">>> n - long(float(n))\n" +"-1L" #: ../Doc/whatsnew/2.7.rst:782 msgid "(Implemented by Mark Dickinson; :issue:`3166`.)" @@ -1422,16 +1609,14 @@ msgstr "" "redondeo. (También implementado por Mark Dickinson; :issue:`1811`.)" #: ../Doc/whatsnew/2.7.rst:787 -#, fuzzy msgid "" "Implicit coercion for complex numbers has been removed; the interpreter will " "no longer ever attempt to call a :meth:`!__coerce__` method on complex " "objects. (Removed by Meador Inge and Mark Dickinson; :issue:`5211`.)" msgstr "" -"Se ha eliminado la coerción implícita para los números complejos; el " -"intérprete ya no intentará nunca llamar a un método :meth:`__coerce__` en " -"objetos complejos. (Eliminado por Meador Inge y Mark Dickinson; :issue:" -"`5211`.)" +"Se ha eliminado la coerción implícita para números complejos; el intérprete " +"ya no intentará llamar a un método :meth:`!__coerce__` en objetos complejos. " +"(Eliminado por Meador Inge y Mark Dickinson; :issue:`5211`)." #: ../Doc/whatsnew/2.7.rst:791 #, python-format @@ -1451,6 +1636,10 @@ msgid "" ">>> '{}:{}:{day}'.format(2009, 4, day='Sunday')\n" "'2009:4:Sunday'" msgstr "" +">>> '{}:{}:{}'.format(2009, 04, 'Sunday')\n" +"'2009:4:Sunday'\n" +">>> '{}:{}:{day}'.format(2009, 4, day='Sunday')\n" +"'2009:4:Sunday'" #: ../Doc/whatsnew/2.7.rst:800 msgid "" @@ -1495,7 +1684,6 @@ msgstr "" "(Contribución de Eric Smith; :issue:`3382`.)" #: ../Doc/whatsnew/2.7.rst:818 -#, fuzzy msgid "" "A low-level change: the :meth:`object.__format__` method now triggers a :exc:" "`PendingDeprecationWarning` if it's passed a format string, because the :" @@ -1506,25 +1694,24 @@ msgid "" "an alignment or precision, presumably you're expecting the formatting to be " "applied in some object-specific way. (Fixed by Eric Smith; :issue:`7994`.)" msgstr "" -"Un cambio de bajo nivel: el método :meth:`object.__format__` ahora " -"desencadena un :exc:`PendingDeprecationWarning` si se pasa una cadena de " -"formato, porque el método :meth:`__format__` para :class:`object` convierte " -"el objeto en una representación de cadena y da formato a eso. " -"Anteriormente, el método aplicaba silenciosamente la cadena de formato a la " -"representación de cadena, pero eso podía ocultar errores en el código de " -"Python. Si proporciona información de formato, como una alineación o una " -"precisión, presumiblemente espera que el formato se aplique de alguna manera " -"específica del objeto. (Arreglado por Eric Smith; :issue:`7994`.)" +"Un cambio de bajo nivel: el método :meth:`object.__format__` ahora activa " +"un :exc:`PendingDeprecationWarning` si se le pasa una cadena de formato, " +"porque el método :meth:`!__format__` para :class:`object` convierte el " +"objeto en una representación de cadena y la formatea. Anteriormente, el " +"método aplicaba silenciosamente la cadena de formato a la representación de " +"cadena, pero eso podía ocultar errores en el código Python. Si estás " +"proporcionando información de formato, como una alineación o precisión, " +"presumiblemente estás esperando que el formato se aplique de alguna manera " +"específica del objeto. (Corregido por Eric Smith; :issue:`7994`)." #: ../Doc/whatsnew/2.7.rst:828 -#, fuzzy msgid "" "The :func:`int` and :func:`!long` types gained a ``bit_length`` method that " "returns the number of bits necessary to represent its argument in binary::" msgstr "" -"Los tipos :func:`int` y :func:`long` ganaron un método ``bit_length`` que " -"retorna el número de bits necesarios para representar su argumento en " -"binario::" +"Los tipos :func:`int` y :func:`!long` obtuvieron un método ``bit_length`` " +"que devuelve la cantidad de bits necesarios para representar su argumento en " +"binario:" #: ../Doc/whatsnew/2.7.rst:832 msgid "" @@ -1539,6 +1726,16 @@ msgid "" ">>> (n+1).bit_length()\n" "124" msgstr "" +">>> n = 37\n" +">>> bin(n)\n" +"'0b100101'\n" +">>> n.bit_length()\n" +"6\n" +">>> n = 2**123-1\n" +">>> n.bit_length()\n" +"123\n" +">>> (n+1).bit_length()\n" +"124" #: ../Doc/whatsnew/2.7.rst:843 msgid "(Contributed by Fredrik Johansson and Victor Stinner; :issue:`3439`.)" @@ -1558,15 +1755,14 @@ msgstr "" "accidente. (Arreglado por Meador Inge; :issue:`7902`.)" #: ../Doc/whatsnew/2.7.rst:851 -#, fuzzy msgid "" "It's now possible for a subclass of the built-in :class:`!unicode` type to " "override the :meth:`!__unicode__` method. (Implemented by Victor Stinner; :" "issue:`1583863`.)" msgstr "" -"Ahora es posible que una subclase del tipo integrado :class:`unicode` " -"reemplace el método :meth:`__unicode__`. (Implementado por Victor Stinner; :" -"issue:`1583863`.)" +"Ahora es posible que una subclase del tipo :class:`!unicode` incorporado " +"anule el método :meth:`!__unicode__`. (Implementado por Victor Stinner; :" +"issue:`1583863`)." #: ../Doc/whatsnew/2.7.rst:855 msgid "" @@ -1579,7 +1775,6 @@ msgstr "" "`4759`.)" #: ../Doc/whatsnew/2.7.rst:861 -#, fuzzy msgid "" "When using :class:`@classmethod ` and :class:`@staticmethod " "` to wrap methods as class or static methods, the wrapper " @@ -1587,10 +1782,11 @@ msgid "" "attribute. (Contributed by Amaury Forgeot d'Arc, after a suggestion by " "George Sakkis; :issue:`5982`.)" msgstr "" -"Cuando se usa ``@classmethod`` y ``@staticmethod`` para envolver métodos " -"como clase o métodos estáticos, el objeto decorador ahora expone la función " -"decorada como su atributo :attr:`__func__`. (Contribuido por Amaury Forgeot " -"d'Arc, después de una sugerencia de George Sakkis; :issue:`5982`.)" +"Al utilizar :class:`@classmethod ` y :class:`@staticmethod " +"` para encapsular métodos como métodos de clase o estáticos, " +"el objeto encapsulador ahora expone la función encapsulada como su atributo :" +"attr:`~method.__func__`. (Contribuido por Amaury Forgeot d'Arc, a partir de " +"una sugerencia de George Sakkis; :issue:`5982`)." #: ../Doc/whatsnew/2.7.rst:869 ../Doc/whatsnew/2.7.rst:2466 msgid "" @@ -1617,7 +1813,6 @@ msgstr "" "en :issue:`8016`)" #: ../Doc/whatsnew/2.7.rst:879 -#, fuzzy msgid "" "The :class:`!file` object will now set the :attr:`!filename` attribute on " "the :exc:`IOError` exception when trying to open a directory on POSIX " @@ -1626,12 +1821,12 @@ msgid "" "the C library to catch and report the error (fixed by Stefan Krah; :issue:" "`5677`)." msgstr "" -"El objeto :class:`file` ahora establecerá el atributo :attr:`filename` en la " -"excepción :exc:`IOError` cuando se intente abrir un directorio en " -"plataformas POSIX (anotado por Jan Kaliszewski; :issue:`4764`), y ahora " -"comprueba explícitamente y prohíbe la escritura en objetos de archivo de " -"sólo lectura en lugar de confiar en que la biblioteca C detecte e informe " -"del error (corregido por Stefan Krah; :issue:`5677`)." +"El objeto :class:`!file` ahora establecerá el atributo :attr:`!filename` en " +"la excepción :exc:`IOError` al intentar abrir un directorio en plataformas " +"POSIX (observado por Jan Kaliszewski; :issue:`4764`), y ahora verifica " +"explícitamente y prohíbe escribir en objetos de archivos de solo lectura en " +"lugar de confiar en la biblioteca C para detectar e informar el error " +"(corregido por Stefan Krah; :issue:`5677`)." #: ../Doc/whatsnew/2.7.rst:886 msgid "" @@ -1695,21 +1890,20 @@ msgstr "" "Curtin; :issue:`7301`.)" #: ../Doc/whatsnew/2.7.rst:917 -#, fuzzy msgid "" "For example, the following setting will print warnings every time they " "occur, but turn warnings from the :mod:`Cookie ` module into " "an error. (The exact syntax for setting an environment variable varies " "across operating systems and shells.)" msgstr "" -"Por ejemplo, la siguiente configuración imprimirá las advertencias cada vez " -"que se produzcan, pero convertirá las advertencias del módulo :mod:`Cookie` " -"en un error. (La sintaxis exacta para establecer una variable de entorno " -"varía según los sistemas operativos y los shells)" +"Por ejemplo, la siguiente configuración imprimirá advertencias cada vez que " +"se produzcan, pero convertirá las advertencias del módulo :mod:`Cookie ` en un error. (La sintaxis exacta para configurar una variable de " +"entorno varía según los sistemas operativos y los shells)." #: ../Doc/whatsnew/2.7.rst:924 msgid "export PYTHONWARNINGS=all,error:::Cookie:0" -msgstr "" +msgstr "exportar PYTHONWARNINGS=all,error:::Cookie:0" #: ../Doc/whatsnew/2.7.rst:930 msgid "Optimizations" @@ -1720,15 +1914,15 @@ msgid "Several performance enhancements have been added:" msgstr "Se han añadido varias mejoras de rendimiento:" #: ../Doc/whatsnew/2.7.rst:934 -#, fuzzy msgid "" "A new opcode was added to perform the initial setup for :keyword:`with` " "statements, looking up the :meth:`~object.__enter__` and :meth:`~object." "__exit__` methods. (Contributed by Benjamin Peterson.)" msgstr "" "Se agregó un nuevo código de operación para realizar la configuración " -"inicial de las instrucciones :keyword:`with`, buscando los métodos :meth:" -"`__enter__` y :meth:`__exit__`. (Contribución de Benjamin Peterson.)" +"inicial de las instrucciones :keyword:`with` y buscar los métodos :meth:" +"`~object.__enter__` y :meth:`~object.__exit__`. (Contribuido por Benjamin " +"Peterson)." #: ../Doc/whatsnew/2.7.rst:938 #, python-format @@ -1793,7 +1987,6 @@ msgstr "" "big-digits` que puede utilizarse para anular este valor por defecto." #: ../Doc/whatsnew/2.7.rst:967 -#, fuzzy msgid "" "Apart from the performance improvements this change should be invisible to " "end users, with one exception: for testing and debugging purposes there's a " @@ -1802,10 +1995,10 @@ msgid "" "of the C type used to store each digit::" msgstr "" "Aparte de las mejoras de rendimiento, este cambio debería ser invisible para " -"los usuarios finales, con una excepción: para fines de prueba y depuración " -"hay un nuevo structseq :data:`sys.long_info` que proporciona información " +"los usuarios finales, con una excepción: para fines de prueba y depuración, " +"hay un nuevo structseq :data:`!sys.long_info` que proporciona información " "sobre el formato interno, dando el número de bits por dígito y el tamaño en " -"bytes del tipo C utilizado para almacenar cada dígito::" +"bytes del tipo C utilizado para almacenar cada dígito:" #: ../Doc/whatsnew/2.7.rst:974 msgid "" @@ -1813,6 +2006,9 @@ msgid "" ">>> sys.long_info\n" "sys.long_info(bits_per_digit=30, sizeof_digit=4)" msgstr "" +">>> importar sys\n" +">>> sys.long_info\n" +"sys.long_info(bits_por_dígito=30, tamaño_del_dígito=4)" #: ../Doc/whatsnew/2.7.rst:978 msgid "(Contributed by Mark Dickinson; :issue:`4258`.)" @@ -1882,7 +2078,6 @@ msgstr "" "Gawain Bolton; :issue:`6713`.)" #: ../Doc/whatsnew/2.7.rst:1008 -#, fuzzy msgid "" "The :meth:`!split`, :meth:`!replace`, :meth:`!rindex`, :meth:`!rpartition`, " "and :meth:`!rsplit` methods of string-like types (strings, Unicode strings, " @@ -1890,35 +2085,33 @@ msgid "" "instead of a character-by-character scan. This is sometimes faster by a " "factor of 10. (Added by Florent Xicluna; :issue:`7462` and :issue:`7622`.)" msgstr "" -"Los métodos :meth:`split`, :meth:`replace`, :meth:`rindex`, :meth:" -"`rpartition` y :meth:`rsplit` de los tipos tipo cadena (cadenas, cadenas " -"Unicode y objetos :class:`bytearray`) utilizan ahora un algoritmo rápido de " -"búsqueda inversa en lugar de un escaneo carácter por carácter. Esto es a " -"veces más rápido por un factor de 10. (Añadido por Florent Xicluna; :issue:" -"`7462` y :issue:`7622`)" +"Los métodos :meth:`!split`, :meth:`!replace`, :meth:`!rindex`, :meth:`!" +"rpartition` y :meth:`!rsplit` de tipos similares a cadenas (cadenas, cadenas " +"Unicode y objetos :class:`bytearray`) ahora utilizan un algoritmo de " +"búsqueda inversa rápida en lugar de un escaneo carácter por carácter. Esto a " +"veces es diez veces más rápido. (Agregado por Florent Xicluna; :issue:`7462` " +"y :issue:`7622`)." #: ../Doc/whatsnew/2.7.rst:1015 -#, fuzzy msgid "" "The :mod:`pickle` and :mod:`!cPickle` modules now automatically intern the " "strings used for attribute names, reducing memory usage of the objects " "resulting from unpickling. (Contributed by Jake McGuire; :issue:`5084`.)" msgstr "" -"Los módulos :mod:`pickle` y :mod:`cPickle` ahora internan automáticamente " -"las cadenas usadas para los nombres de los atributos, reduciendo el uso de " -"memoria de los objetos resultantes del desempaquetamiento. (Contribución de " -"Jake McGuire; :issue:`5084`.)" +"Los módulos :mod:`pickle` y :mod:`!cPickle` ahora almacenan automáticamente " +"en caché las cadenas utilizadas para los nombres de atributos, lo que reduce " +"el uso de memoria de los objetos resultantes de la descompresión. " +"(Contribuido por Jake McGuire; :issue:`5084`)." #: ../Doc/whatsnew/2.7.rst:1020 -#, fuzzy msgid "" "The :mod:`!cPickle` module now special-cases dictionaries, nearly halving " "the time required to pickle them. (Contributed by Collin Winter; :issue:" "`5670`.)" msgstr "" -"El módulo :mod:`cPickle` ahora hace especial hincapié en los diccionarios, " -"reduciendo casi a la mitad el tiempo necesario para hacerlos. (Contribución " -"de Collin Winter; :issue:`5670`.)" +"El módulo :mod:`!cPickle` ahora crea casos especiales para los diccionarios, " +"reduciendo casi a la mitad el tiempo necesario para procesarlos. " +"(Contribución de Collin Winter; :issue:`5670`.)" #: ../Doc/whatsnew/2.7.rst:1027 msgid "New and Improved Modules" @@ -1966,7 +2159,6 @@ msgstr "" "similares. (Tomado de la 3.x por Florent Xicluna; :issue:`7703`.)" #: ../Doc/whatsnew/2.7.rst:1047 -#, fuzzy msgid "" "Updated module: the :mod:`!bsddb` module has been updated from 4.7.2devel9 " "to version 4.8.4 of `the pybsddb package `__. La nueva versión presenta una mejor compatibilidad con " -"Python 3.x, varias correcciones de errores y agrega varios indicadores y " -"métodos nuevos de BerkeleyDB. (Actualizado por Jesús Cea Avión; :issue:" -"`8156`. El registro de cambios de pybsddb se puede leer en https://hg.jcea." -"es/pybsddb/file/tip/ChangeLog.)" +"Módulo actualizado: el módulo :mod:`!bsddb` ha sido actualizado desde " +"4.7.2devel9 a la versión 4.8.4 de `the pybsddb package `__. La nueva versión incluye una mejor " +"compatibilidad con Python 3.x, varias correcciones de errores y añade varios " +"nuevos indicadores y métodos de BerkeleyDB. (Actualizado por Jesús Cea " +"Avión; :issue:`8156`. El registro de cambios de pybsddb se puede leer en " +"https://hg.jcea.es/pybsddb/file/tip/ChangeLog.)" #: ../Doc/whatsnew/2.7.rst:1055 msgid "" @@ -2055,6 +2247,18 @@ msgid "" ">>> c['e'] # Count is now lower\n" "-1" msgstr "" +">>> c.most_common(5)\n" +"[(' ', 6), ('e', 5), ('s', 3), ('a', 2), ('i', 2)]\n" +">>> c.elements() ->\n" +" 'a', 'a', ' ', ' ', ' ', ' ', ' ', ' ',\n" +" 'e', 'e', 'e', 'e', 'e', 'g', 'f', 'i', 'i',\n" +" 'h', 'h', 'm', 'l', 'l', 'o', 'n', 'p', 's',\n" +" 's', 's', 'r', 't', 't', 'x'\n" +">>> c['e']\n" +"5\n" +">>> c.subtract('very heavy on the letter e')\n" +">>> c['e'] # Count is now lower\n" +"-1" #: ../Doc/whatsnew/2.7.rst:1104 msgid "Contributed by Raymond Hettinger; :issue:`1696199`." @@ -2104,26 +2308,25 @@ msgid "(Added by Raymond Hettinger; :issue:`1818`.)" msgstr "(Añadido por Raymond Hettinger; :issue:`1818`.)" #: ../Doc/whatsnew/2.7.rst:1132 -#, fuzzy msgid "" "Finally, the :class:`~collections.abc.Mapping` abstract base class now " "returns :data:`NotImplemented` if a mapping is compared to another type that " "isn't a :class:`Mapping`. (Fixed by Daniel Stutzbach; :issue:`8729`.)" msgstr "" -"Por último, la clase base abstracta :class:`~collections.Mapping` ahora " -"retorna :const:`NotImplemented` si un mapeo se compara con otro tipo que no " -"es un :class:`Mapping`. (Corregido por Daniel Stutzbach; :issue:`8729`.)" +"Por último, la clase base abstracta :class:`~collections.abc.Mapping` ahora " +"devuelve :data:`NotImplemented` si se compara una asignación con otro tipo " +"que no es :class:`Mapping`. (Corregido por Daniel Stutzbach; :issue:`8729`)." #: ../Doc/whatsnew/2.7.rst:1137 -#, fuzzy msgid "" "Constructors for the parsing classes in the :mod:`ConfigParser " "` module now take an *allow_no_value* parameter, defaulting to " "false; if true, options without values will be allowed. For example::" msgstr "" -"Los constructores de las clases de análisis en el módulo :mod:`ConfigParser` " -"toman ahora un parámetro *allow_no_value*, por defecto falso; si es " -"verdadero, se permitirán las opciones sin valores. Por ejemplo::" +"Los constructores de las clases de análisis del módulo :mod:`ConfigParser " +"` ahora aceptan un parámetro *allow_no_value*, cuyo valor " +"predeterminado es falso; si es verdadero, se permitirán opciones sin " +"valores. Por ejemplo:" #: ../Doc/whatsnew/2.7.rst:1141 msgid "" @@ -2145,34 +2348,49 @@ msgid "" " ...\n" "NoOptionError: No option 'unknown' in section: 'mysqld'" msgstr "" +">>> import ConfigParser, StringIO\n" +">>> sample_config = \"\"\"\n" +"... [mysqld]\n" +"... user = mysql\n" +"... pid-file = /var/run/mysqld/mysqld.pid\n" +"... skip-bdb\n" +"... \"\"\"\n" +">>> config = ConfigParser.RawConfigParser(allow_no_value=True)\n" +">>> config.readfp(StringIO.StringIO(sample_config))\n" +">>> config.get('mysqld', 'user')\n" +"'mysql'\n" +">>> print config.get('mysqld', 'skip-bdb')\n" +"None\n" +">>> print config.get('mysqld', 'unknown')\n" +"Traceback (most recent call last):\n" +" ...\n" +"NoOptionError: No option 'unknown' in section: 'mysqld'" #: ../Doc/whatsnew/2.7.rst:1159 msgid "(Contributed by Mats Kindahl; :issue:`7005`.)" msgstr "(Contribución de Mats Kindahl; :issue:`7005`.)" #: ../Doc/whatsnew/2.7.rst:1161 -#, fuzzy msgid "" "Deprecated function: :func:`!contextlib.nested`, which allows handling more " "than one context manager with a single :keyword:`with` statement, has been " "deprecated, because the :keyword:`!with` statement now supports multiple " "context managers." msgstr "" -"Función obsoleta: :func:`contextlib.nested`, que permite manejar más de un " -"gestor de contexto con una sola expresión :keyword:`with`, ha sido " -"deprecada, porque la expresión :keyword:`!with` soporta ahora múltiples " -"gestores de contexto." +"Función obsoleta: :func:`!contextlib.nested`, que permite manejar más de un " +"administrador de contexto con una sola declaración :keyword:`with`, ha " +"quedado obsoleta, porque la declaración :keyword:`!with` ahora admite " +"múltiples administradores de contexto." #: ../Doc/whatsnew/2.7.rst:1166 -#, fuzzy msgid "" "The :mod:`cookielib ` module now ignores cookies that have " "an invalid version field, one that doesn't contain an integer value. (Fixed " "by John J. Lee; :issue:`3924`.)" msgstr "" -"El módulo :mod:`cookielib` ahora ignora las cookies que tienen un campo de " -"versión no válido, uno que no contiene un valor entero. (Corregido por John " -"J. Lee; :issue:`3924`.)" +"El módulo :mod:`cookielib ` ahora ignora las cookies que " +"tienen un campo de versión no válido, es decir, que no contiene un valor " +"entero. (Corregido por John J. Lee; :issue:`3924`)." #: ../Doc/whatsnew/2.7.rst:1170 msgid "" @@ -2211,7 +2429,6 @@ msgstr "" "Quinlan; :issue:`5788`.)" #: ../Doc/whatsnew/2.7.rst:1185 -#, fuzzy msgid "" "New method: the :class:`~decimal.Decimal` class gained a :meth:`~decimal." "Decimal.from_float` class method that performs an exact conversion of a " @@ -2222,18 +2439,17 @@ msgid "" "``Decimal('0.1000000000000000055511151231257827021181583404541015625')``. " "(Implemented by Raymond Hettinger; :issue:`4796`.)" msgstr "" -"Nuevo método: la clase :class:`~decimal.Decimal` ganó un método de clase :" +"Nuevo método: la clase :class:`~decimal.Decimal` obtuvo un método de clase :" "meth:`~decimal.Decimal.from_float` que realiza una conversión exacta de un " -"número de punto flotante a un :class:`~decimal.Decimal`. Esta conversión " -"exacta busca la aproximación decimal más cercana al valor de la " -"representación de punto flotante; el valor decimal resultante incluirá, por " -"tanto, la inexactitud, si la hubiera. Por ejemplo, ``Decimal." -"from_float(0.1)`` retorna " +"número de punto flotante a un :class:`!Decimal`. Esta conversión exacta " +"busca la aproximación decimal más cercana al valor de la representación de " +"punto flotante; por lo tanto, el valor decimal resultante seguirá incluyendo " +"la inexactitud, si la hubiera. Por ejemplo, ``Decimal.from_float(0.1)`` " +"devuelve " "``Decimal('0.1000000000000000055511151231257827021181583404541015625')``. " -"(Implementado por Raymond Hettinger; :issue:`4796`.)" +"(Implementado por Raymond Hettinger; :issue:`4796`)." #: ../Doc/whatsnew/2.7.rst:1196 -#, fuzzy msgid "" "Comparing instances of :class:`~decimal.Decimal` with floating-point numbers " "now produces sensible results based on the numeric values of the operands. " @@ -2245,13 +2461,13 @@ msgid "" "Dickinson; :issue:`2531`.)" msgstr "" "La comparación de instancias de :class:`~decimal.Decimal` con números de " -"punto flotante produce ahora resultados sensibles basados en los valores " -"numéricos de los operandos. Anteriormente, estas comparaciones volvían a " -"las reglas por defecto de Python para comparar objetos, que producían " -"resultados arbitrarios basados en su tipo. Tenga en cuenta que todavía no " -"puede combinar :class:`Decimal` y punto flotante en otras operaciones como " -"la suma, ya que debe elegir explícitamente cómo convertir entre float y :" -"class:`~decimal.Decimal`. (Corregido por Mark Dickinson; :issue:`2531`.)" +"punto flotante ahora produce resultados razonables basados ​​en los valores " +"numéricos de los operandos. Anteriormente, dichas comparaciones recurrían a " +"las reglas predeterminadas de Python para comparar objetos, que producían " +"resultados arbitrarios basados ​​en su tipo. Tenga en cuenta que aún no puede " +"combinar :class:`!Decimal` y punto flotante en otras operaciones como la " +"suma, ya que debe elegir explícitamente cómo convertir entre float y :class:" +"`!Decimal`. (Corregido por Mark Dickinson; :issue:`2531`)." #: ../Doc/whatsnew/2.7.rst:1205 msgid "" @@ -2329,28 +2545,26 @@ msgstr "" "issue:`8688`.)" #: ../Doc/whatsnew/2.7.rst:1238 -#, fuzzy msgid "" "The :mod:`doctest` module's :const:`~doctest.IGNORE_EXCEPTION_DETAIL` flag " "will now ignore the name of the module containing the exception being " "tested. (Patch by Lennart Regebro; :issue:`7490`.)" msgstr "" -"La bandera :const:`IGNORE_EXCEPTION_DETAIL` del módulo :mod:`doctest` ahora " -"ignorará el nombre del módulo que contiene la excepción que se está " -"probando. (Parche de Lennart Regebro; :issue:`7490`.)" +"El indicador :const:`~doctest.IGNORE_EXCEPTION_DETAIL` del módulo :mod:" +"`doctest` ahora ignorará el nombre del módulo que contiene la excepción que " +"se está probando. (Parche de Lennart Regebro; :issue:`7490`)." #: ../Doc/whatsnew/2.7.rst:1242 -#, fuzzy msgid "" "The :mod:`email` module's :class:`~email.message.Message` class will now " "accept a Unicode-valued payload, automatically converting the payload to the " "encoding specified by :attr:`!output_charset`. (Added by R. David Murray; :" "issue:`1368247`.)" msgstr "" -"La clase :mod:`email` del módulo :class:`~email.message.Message` aceptará " -"ahora una carga útil con valor Unicode, convirtiendo automáticamente la " -"carga útil a la codificación especificada por :attr:`output_charset`. " -"(Añadido por R. David Murray; :issue:`1368247`.)" +"La clase :class:`~email.message.Message` del módulo :mod:`email` ahora " +"aceptará una carga útil con valor Unicode y convertirá automáticamente la " +"carga útil a la codificación especificada por :attr:`!output_charset`. " +"(Agregado por R. David Murray; :issue:`1368247`)." #: ../Doc/whatsnew/2.7.rst:1247 msgid "" @@ -2398,7 +2612,6 @@ msgstr "" "Mouzo; :issue:`6845`)" #: ../Doc/whatsnew/2.7.rst:1270 -#, fuzzy msgid "" "New class decorator: :func:`~functools.total_ordering` in the :mod:" "`functools` module takes a class that defines an :meth:`~object.__eq__` " @@ -2408,13 +2621,13 @@ msgid "" "in Python 3.x, this decorator makes it easier to define ordered classes. " "(Added by Raymond Hettinger; :issue:`5479`.)" msgstr "" -"Nuevo decorador de clases: :func:`~functools.total_ordering` en el módulo :" -"mod:`functools` toma una clase que define un método :meth:`__eq__` y uno de " -"los métodos :meth:`__lt__`, :meth:`__le__`, :meth:`__gt__`, o :meth:" -"`__ge__`, y genera los métodos de comparación que faltan. Dado que el " -"método :meth:`__cmp__` queda obsoleto en Python 3.x, este decorador facilita " -"la definición de clases ordenadas. (Añadido por Raymond Hettinger; :issue:" -"`5479`.)" +"Nuevo decorador de clase: :func:`~functools.total_ordering` en el módulo :" +"mod:`functools` toma una clase que define un método :meth:`~object.__eq__` y " +"uno de :meth:`~object.__lt__`, :meth:`~object.__le__`, :meth:`~object." +"__gt__` o :meth:`~object.__ge__`, y genera los métodos de comparación " +"faltantes. Dado que el método :meth:`!__cmp__` está quedando obsoleto en " +"Python 3.x, este decorador facilita la definición de clases ordenadas. " +"(Agregado por Raymond Hettinger; :issue:`5479`)." #: ../Doc/whatsnew/2.7.rst:1278 msgid "" @@ -2474,57 +2687,53 @@ msgstr "" "Tadek Pietraszek y Brian Curtin; :issue:`2846`)" #: ../Doc/whatsnew/2.7.rst:1303 -#, fuzzy msgid "" "New attribute: the :mod:`hashlib` module now has an :attr:`!algorithms` " "attribute containing a tuple naming the supported algorithms. In Python 2.7, " "``hashlib.algorithms`` contains ``('md5', 'sha1', 'sha224', 'sha256', " "'sha384', 'sha512')``. (Contributed by Carl Chenet; :issue:`7418`.)" msgstr "" -"Nuevo atributo: el módulo :mod:`hashlib` tiene ahora un atributo :attr:" -"`~hashlib.hashlib.algorithms` que contiene una tupla que nombra los " -"algoritmos soportados. En Python 2.7, ``hashlib.algorithms`` contiene " -"``('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')``. (Contribución " -"de Carl Chenet; :issue:`7418`.)" +"Nuevo atributo: el módulo :mod:`hashlib` ahora tiene un atributo :attr:`!" +"algorithms` que contiene una tupla que nombra los algoritmos admitidos. En " +"Python 2.7, ``hashlib.algorithms`` contiene ``('md5', 'sha1', 'sha224', " +"'sha256', 'sha384', 'sha512')``. (Contribuido por Carl Chenet; :issue:" +"`7418`)." #: ../Doc/whatsnew/2.7.rst:1309 -#, fuzzy msgid "" "The default :class:`~http.client.HTTPResponse` class used by the :mod:" "`httplib ` module now supports buffering, resulting in much faster " "reading of HTTP responses. (Contributed by Kristján Valur Jónsson; :issue:" "`4879`.)" msgstr "" -"La clase :class:`~httplib.HTTPResponse` por defecto utilizada por el módulo :" -"mod:`httplib` ahora soporta el almacenamiento en búfer, lo que resulta en " -"una lectura mucho más rápida de las respuestas HTTP. (Contribuido por " -"Kristján Valur Jónsson; :issue:`4879`.)" +"La clase :class:`~http.client.HTTPResponse` predeterminada que utiliza el " +"módulo :mod:`httplib ` ahora admite el almacenamiento en búfer, lo que " +"permite una lectura mucho más rápida de las respuestas HTTP. (Contribuido " +"por Kristján Valur Jónsson; :issue:`4879`)." #: ../Doc/whatsnew/2.7.rst:1313 -#, fuzzy msgid "" "The :class:`~http.client.HTTPConnection` and :class:`~http.client." "HTTPSConnection` classes now support a *source_address* parameter, a " "``(host, port)`` 2-tuple giving the source address that will be used for the " "connection. (Contributed by Eldon Ziegler; :issue:`3972`.)" msgstr "" -"Las clases :class:`~httplib.HTTPConnection` y :class:`~httplib." -"HTTPSConnection` soportan ahora un parámetro *dirección_de_origen*, una 2-" -"tupla ``(host, port)`` que da la dirección de origen que se utilizará para " -"la conexión. (Contribuido por Eldon Ziegler; :issue:`3972`.)" +"Las clases :class:`~http.client.HTTPConnection` y :class:`~http.client." +"HTTPSConnection` ahora admiten un parámetro *source_address*, una tupla de 2 " +"``(host, port)`` que proporciona la dirección de origen que se utilizará " +"para la conexión. (Contribuido por Eldon Ziegler; :issue:`3972`)." #: ../Doc/whatsnew/2.7.rst:1318 -#, fuzzy msgid "" "The :mod:`!ihooks` module now supports relative imports. Note that :mod:`!" "ihooks` is an older module for customizing imports, superseded by the :mod:`!" "imputil` module added in Python 2.0. (Relative import support added by Neil " "Schemenauer.)" msgstr "" -"El módulo :mod:`ihooks` ahora soporta importaciones relativas. Tenga en " -"cuenta que :mod:`ihooks` es un módulo más antiguo para personalizar las " -"importaciones, sustituido por el módulo :mod:`imputil` añadido en Python " -"2.0. (El soporte de importaciones relativas fue añadido por Neil Schemenauer)" +"El módulo :mod:`!ihooks` ahora admite importaciones relativas. Tenga en " +"cuenta que :mod:`!ihooks` es un módulo más antiguo para personalizar " +"importaciones, reemplazado por el módulo :mod:`!imputil` agregado en Python " +"2.0. (Neil Schemenauer agregó compatibilidad con importaciones relativas)." #: ../Doc/whatsnew/2.7.rst:1325 msgid "" @@ -2562,37 +2771,47 @@ msgid "" "...\n" "TypeError: f() takes at least 1 argument (0 given)" msgstr "" +">>> from inspect import getcallargs\n" +">>> def f(a, b=1, *pos, **named):\n" +"... pass\n" +"...\n" +">>> getcallargs(f, 1, 2, 3)\n" +"{'a': 1, 'b': 2, 'pos': (3,), 'named': {}}\n" +">>> getcallargs(f, a=2, x=4)\n" +"{'a': 2, 'b': 1, 'pos': (), 'named': {'x': 4}}\n" +">>> getcallargs(f)\n" +"Traceback (most recent call last):\n" +"...\n" +"TypeError: f() takes at least 1 argument (0 given)" #: ../Doc/whatsnew/2.7.rst:1346 msgid "Contributed by George Sakkis; :issue:`3135`." msgstr "Contribución de George Sakkis; :issue:`3135`." #: ../Doc/whatsnew/2.7.rst:1348 -#, fuzzy msgid "" "Updated module: The :mod:`io` library has been upgraded to the version " "shipped with Python 3.1. For 3.1, the I/O library was entirely rewritten in " "C and is 2 to 20 times faster depending on the task being performed. The " "original Python version was renamed to the :mod:`!_pyio` module." msgstr "" -"Módulo actualizado: La librería :mod:`io` ha sido actualizada a la versión " -"que viene con Python 3.1. Para la versión 3.1, la biblioteca de E/S fue " -"reescrita completamente en C y es de 2 a 20 veces más rápida dependiendo de " -"la tarea que se realice. La versión original de Python fue renombrada como " -"módulo :mod:`_pyio`." +"Módulo actualizado: La biblioteca :mod:`io` se ha actualizado a la versión " +"que viene con Python 3.1. Para la versión 3.1, la biblioteca de E/S se " +"reescribió completamente en C y es de 2 a 20 veces más rápida según la tarea " +"que se esté realizando. La versión original de Python se renombró como " +"módulo :mod:`!_pyio`." #: ../Doc/whatsnew/2.7.rst:1353 -#, fuzzy msgid "" "One minor resulting change: the :class:`io.TextIOBase` class now has an :" "attr:`~io.TextIOBase.errors` attribute giving the error setting used for " "encoding and decoding errors (one of ``'strict'``, ``'replace'``, " "``'ignore'``)." msgstr "" -"Un pequeño cambio resultante: la clase :class:`io.TextIOBase` tiene ahora un " -"atributo :attr:`errors` que da la configuración de error utilizada para los " -"errores de codificación y decodificación (uno de ``’strict’``, " -"``’replace’``, ``'ignore'``)." +"Un cambio resultante menor: la clase :class:`io.TextIOBase` ahora tiene un " +"atributo :attr:`~io.TextIOBase.errors` que proporciona la configuración de " +"error utilizada para codificar y decodificar errores (uno de ``'strict'``, " +"``'replace'``, ``'ignore'``)." #: ../Doc/whatsnew/2.7.rst:1358 msgid "" @@ -2623,6 +2842,8 @@ msgid "" "itertools.compress('ABCDEF', [1,0,1,0,1,1]) =>\n" " A, C, E, F" msgstr "" +"itertools.compress('ABCDEF', [1,0,1,0,1,1]) =>\n" +"A, C, E, F" #: ../Doc/whatsnew/2.7.rst:1373 msgid "" @@ -2642,6 +2863,9 @@ msgid "" " ('a', 'a'), ('a', 'b'), ('a', 'c'),\n" " ('b', 'b'), ('b', 'c'), ('c', 'c')" msgstr "" +"itertools.combinations_with_replacement('abc', 2) =>\n" +" ('a', 'a'), ('a', 'b'), ('a', 'c'),\n" +" ('b', 'b'), ('b', 'c'), ('c', 'c')" #: ../Doc/whatsnew/2.7.rst:1382 msgid "" @@ -2733,20 +2957,18 @@ msgstr "" "(Contribución de Mark Dickinson y nirinA raseliarison; :issue:`3366`.)" #: ../Doc/whatsnew/2.7.rst:1420 -#, fuzzy msgid "" "The :mod:`multiprocessing` module's :class:`!Manager*` classes can now be " "passed a callable that will be called whenever a subprocess is started, " "along with a set of arguments that will be passed to the callable. " "(Contributed by lekma; :issue:`5585`.)" msgstr "" -"A las clases :mod:`multiprocessing` del módulo :class:`Manager*` se les " -"puede pasar ahora una llamada que se realizará cada vez que se inicie un " -"subproceso, junto con un conjunto de argumentos que se pasarán a la llamada. " -"(Contribuido por lekma; :issue:`5585`.)" +"A las clases :class:`!Manager*` del módulo :mod:`multiprocessing` ahora se " +"les puede pasar un elemento invocable que se llamará cada vez que se inicie " +"un subproceso, junto con un conjunto de argumentos que se le pasarán al " +"elemento invocable. (Contribuido por lekma; :issue:`5585`)." #: ../Doc/whatsnew/2.7.rst:1426 -#, fuzzy msgid "" "The :class:`~multiprocessing.pool.Pool` class, which controls a pool of " "worker processes, now has an optional *maxtasksperchild* parameter. Worker " @@ -2755,22 +2977,21 @@ msgid "" "memory or other resources, or if some tasks will cause the worker to become " "very large. (Contributed by Charles Cazabon; :issue:`6963`.)" msgstr "" -"La clase :class:`~multiprocessing.Pool`, que controla un grupo de procesos " -"de trabajadores, tiene ahora un parámetro opcional *maxtasksperchild*. Los " -"procesos de trabajo realizarán el número especificado de tareas y luego " -"saldrán, haciendo que la clase :class:`~multiprocessing.Pool` inicie un " -"nuevo trabajador. Esto es útil si las tareas pueden perder memoria u otros " -"recursos, o si algunas tareas harán que el trabajador se vuelva muy grande. " -"(Contribuido por Charles Cazabon; :issue:`6963`.)" +"La clase :class:`~multiprocessing.pool.Pool`, que controla un grupo de " +"procesos de trabajo, ahora tiene un parámetro *maxtasksperchild* opcional. " +"Los procesos de trabajo realizarán la cantidad especificada de tareas y " +"luego saldrán, lo que hará que :class:`!Pool` inicie un nuevo proceso de " +"trabajo. Esto es útil si las tareas pueden perder memoria u otros recursos, " +"o si algunas tareas harán que el proceso de trabajo se vuelva muy grande. " +"(Contribuido por Charles Cazabon; :issue:`6963`)." #: ../Doc/whatsnew/2.7.rst:1434 -#, fuzzy msgid "" "The :mod:`!nntplib` module now supports IPv6 addresses. (Contributed by " "Derek Morr; :issue:`1664`.)" msgstr "" -"El módulo :mod:`nntplib` ahora soporta direcciones IPv6. (Contribución de " -"Derek Morr; :issue:`1664`.)" +"El módulo :mod:`!nntplib` ahora admite direcciones IPv6. (Contribución de " +"Derek Morr; :issue:`1664`)." #: ../Doc/whatsnew/2.7.rst:1437 msgid "" @@ -2902,7 +3123,6 @@ msgstr "" "Natali; :issue:`8354`.)" #: ../Doc/whatsnew/2.7.rst:1495 -#, fuzzy msgid "" "New functions: in the :mod:`site` module, three new functions return various " "site- and user-specific paths. :func:`~site.getsitepackages` returns a list " @@ -2912,14 +3132,14 @@ msgid "" "USER_BASE` environment variable, giving the path to a directory that can be " "used to store data. (Contributed by Tarek Ziadé; :issue:`6693`.)" msgstr "" -"Nuevas funciones: en el módulo :mod:`site`, tres nuevas funciones retornan " +"Nuevas funciones: en el módulo :mod:`site`, tres nuevas funciones devuelven " "varias rutas específicas del sitio y del usuario. :func:`~site." -"getsitepackages` retorna una lista que contiene todos los directorios " -"globales de paquetes del sitio, :func:`~site.getusersitepackages` retorna la " -"ruta del directorio de paquetes del sitio del usuario, y :func:`~site." -"getuserbase` retorna el valor de la variable de entorno :envvar:`USER_BASE`, " -"dando la ruta a un directorio que puede ser utilizado para almacenar datos. " -"(Contribuido por Tarek Ziadé; :issue:`6693`.)" +"getsitepackages` devuelve una lista que contiene todos los directorios de " +"paquetes del sitio globales, :func:`~site.getusersitepackages` devuelve la " +"ruta del directorio de paquetes del sitio del usuario y :func:`~site." +"getuserbase` devuelve el valor de la variable de entorno :data:`~site." +"USER_BASE`, que proporciona la ruta a un directorio que se puede utilizar " +"para almacenar datos. (Contribuido por Tarek Ziadé; :issue:`6693`.)" #: ../Doc/whatsnew/2.7.rst:1506 msgid "" @@ -2957,7 +3177,6 @@ msgstr "" "(Implementado por Antoine Pitrou; :issue:`8104`.)" #: ../Doc/whatsnew/2.7.rst:1521 -#, fuzzy msgid "" "The :mod:`SocketServer ` module's :class:`~socketserver." "TCPServer` class now supports socket timeouts and disabling the Nagle " @@ -2971,19 +3190,18 @@ msgid "" "handle_request` will return. (Contributed by Kristján Valur Jónsson; :issue:" "`6192` and :issue:`6267`.)" msgstr "" -"La clase :mod:`SocketServer` del módulo :class:`~SocketServer.TCPServer` " -"soporta ahora los tiempos de espera de los sockets y la desactivación del " -"algoritmo Nagle. El atributo de clase :attr:`~SocketServer.TCPServer." -"disable_nagle_algorithm` tiene por defecto el valor ``False``; si se anula " -"para que sea verdadero, las nuevas conexiones de solicitud tendrán la opción " -"TCP_NODELAY establecida para evitar el almacenamiento en búfer de muchos " -"envíos pequeños en un solo paquete TCP. El atributo de clase :attr:" -"`~SocketServer.BaseServer.timeout` puede contener un tiempo de espera en " -"segundos que se aplicará al socket de petición; si no se recibe ninguna " -"petición en ese tiempo, se llamará a :meth:`~SocketServer.BaseServer." -"handle_timeout` y se retornará :meth:`~SocketServer.BaseServer." -"handle_request`. (Contribución de Kristján Valur Jónsson; :issue:`6192` y :" -"issue:`6267`)" +"La clase :class:`~socketserver.TCPServer` del módulo :mod:`SocketServer " +"` ahora admite tiempos de espera de socket y la desactivación " +"del algoritmo Nagle. El atributo de clase :attr:`!disable_nagle_algorithm` " +"tiene como valor predeterminado ``False``; si se sobrescribe como verdadero, " +"las nuevas conexiones de solicitud tendrán la opción TCP_NODELAY configurada " +"para evitar el almacenamiento en búfer de muchos envíos pequeños en un solo " +"paquete TCP. El atributo de clase :attr:`~socketserver.BaseServer.timeout` " +"puede contener un tiempo de espera en segundos que se aplicará al socket de " +"solicitud; si no se recibe ninguna solicitud dentro de ese tiempo, se " +"llamará a :meth:`~socketserver.BaseServer.handle_timeout` y :meth:" +"`~socketserver.BaseServer.handle_request` regresará. (Contribuido por " +"Kristján Valur Jónsson; :issue:`6192` y :issue:`6267`)." #: ../Doc/whatsnew/2.7.rst:1533 msgid "" @@ -3005,7 +3223,6 @@ msgstr "" "Gerhard Häring.)" #: ../Doc/whatsnew/2.7.rst:1540 -#, fuzzy msgid "" "The :mod:`ssl` module's :class:`~ssl.SSLSocket` objects now support the " "buffer API, which fixed a test suite failure (fix by Antoine Pitrou; :issue:" @@ -3013,15 +3230,14 @@ msgid "" "which will prevent an error code being returned from :meth:`recv` operations " "that trigger an SSL renegotiation (fix by Antoine Pitrou; :issue:`8222`)." msgstr "" -"Los objetos :class:`~ssl.SSLSocket` del módulo :mod:`ssl` soportan ahora la " -"API del buffer, lo que soluciona un fallo del conjunto de pruebas (corregido " -"por Antoine Pitrou; :issue:`7133`) y establece automáticamente la :c:macro:" -"`SSL_MODE_AUTO_RETRY` de OpenSSL, lo que evitará que se retorne un código de " -"error de las operaciones :meth:`recv` que desencadenen una renegociación SSL " -"(corregido por Antoine Pitrou; :issue:`8222`)." +"Los objetos :class:`~ssl.SSLSocket` del módulo :mod:`ssl` ahora admiten la " +"API de búfer, que solucionó una falla del conjunto de pruebas (solución de " +"Antoine Pitrou; :issue:`7133`) y configuró automáticamente :c:macro:`!" +"SSL_MODE_AUTO_RETRY` de OpenSSL, lo que evitará que se devuelva un código de " +"error de las operaciones :meth:`recv` que activan una renegociación de SSL " +"(solución de Antoine Pitrou; :issue:`8222`)." #: ../Doc/whatsnew/2.7.rst:1547 -#, fuzzy msgid "" "The :func:`~ssl.SSLContext.wrap_socket` constructor function now takes a " "*ciphers* argument that's a string listing the encryption algorithms to be " @@ -3029,11 +3245,11 @@ msgid "" "`__. (Added by Antoine " "Pitrou; :issue:`8322`.)" msgstr "" -"La función constructora :func:`ssl.wrap_socket` ahora toma un argumento " -"*ciphers* que es una cadena que enumera los algoritmos de cifrado que se " -"permitirán; el formato de la cadena se describe `in the OpenSSL " -"documentation `__. " -"(Agregado por Antoine Pitrou; :issue:`8322`.)" +"La función constructora :func:`~ssl.SSLContext.wrap_socket` ahora acepta un " +"argumento *ciphers* que es una cadena que enumera los algoritmos de cifrado " +"que se permitirán; el formato de la cadena se describe en `in the OpenSSL " +"documentation `__. (Agregado " +"por Antoine Pitrou; :issue:`8322`)." #: ../Doc/whatsnew/2.7.rst:1554 msgid "" @@ -3049,20 +3265,18 @@ msgstr "" "issue:`8484`)" #: ../Doc/whatsnew/2.7.rst:1560 -#, fuzzy msgid "" "The version of OpenSSL being used is now available as 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). (Added by " "Antoine Pitrou; :issue:`8321`.)" msgstr "" -"La versión de OpenSSL que se está utilizando está ahora disponible como los " -"atributos del módulo :data:`ssl.OPENSSL_VERSION` (una cadena), :data:`ssl." -"OPENSSL_VERSION_INFO` (una 5-tupla), y :data:`ssl.OPENSSL_VERSION_NUMBER` " -"(un entero). (Añadido por Antoine Pitrou; :issue:`8321`.)" +"La versión de OpenSSL que se está utilizando ahora está disponible como " +"atributos de 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). (Agregado por Antoine Pitrou; :issue:`8321`)." #: ../Doc/whatsnew/2.7.rst:1566 -#, fuzzy msgid "" "The :mod:`struct` module will no longer silently ignore overflow errors when " "a value is too large for a particular integer format code (one of " @@ -3073,13 +3287,13 @@ msgid "" "reporting an error. (Changed by Mark Dickinson; :issue:`8300`.)" msgstr "" "El módulo :mod:`struct` ya no ignorará silenciosamente los errores de " -"desbordamiento cuando un valor es demasiado grande para un código de formato " -"entero particular (uno de ``bBhHiIlLqQ``); ahora siempre lanza una " -"excepción :exc:`struct.error`. (Cambiado por Mark Dickinson; :issue:" -"`1523`.) La función :func:`~struct.pack` también intentará utilizar :meth:" -"`__index__` para convertir y empaquetar los no enteros antes de intentar el " -"método :meth:`__int__` o informar de un error. (Cambiado por Mark " -"Dickinson; :issue:`8300`.)" +"desbordamiento cuando un valor sea demasiado grande para un código de " +"formato de entero en particular (uno de ``bBhHiIlLqQ``); ahora siempre " +"genera una excepción :exc:`struct.error`. (Modificado por Mark Dickinson; :" +"issue:`1523`). La función :func:`~struct.pack` también intentará usar :meth:" +"`~object.__index__` para convertir y empaquetar números que no sean enteros " +"antes de intentar el método :meth:`~object.__int__` o informar un error. " +"(Modificado por Mark Dickinson; :issue:`8300`)." #: ../Doc/whatsnew/2.7.rst:1575 msgid "" @@ -3105,21 +3319,29 @@ msgid "" "subprocess.CalledProcessError: Command '['df', '-h', '/bogus']' returned non-" "zero exit status 1" msgstr "" +">>> subprocess.check_output(['df', '-h', '.'])\n" +"'Filesystem Size Used Avail Capacity Mounted on\\n\n" +"/dev/disk0s2 52G 49G 3.0G 94% /\\n'\n" +"\n" +">>> subprocess.check_output(['df', '-h', '/bogus'])\n" +" ...\n" +"subprocess.CalledProcessError: Command '['df', '-h', '/bogus']' returned non-" +"zero exit status 1" #: ../Doc/whatsnew/2.7.rst:1590 msgid "(Contributed by Gregory P. Smith.)" msgstr "(Contribución de Gregory P. Smith.)" #: ../Doc/whatsnew/2.7.rst:1592 -#, fuzzy msgid "" "The :mod:`subprocess` module will now retry its internal system calls on " "receiving an :const:`~errno.EINTR` signal. (Reported by several people; " "final patch by Gregory P. Smith in :issue:`1068268`.)" msgstr "" -"El módulo :mod:`subprocess` ahora reintentará sus llamadas internas al " -"sistema al recibir una señal :const:`EINTR`. (Informado por varias " -"personas; parche final de Gregory P. Smith en :issue:`1068268`)" +"El módulo :mod:`subprocess` ahora volverá a intentar realizar llamadas " +"internas al sistema al recibir una señal :const:`~errno.EINTR`. (Varias " +"personas lo informaron; parche final de Gregory P. Smith en :issue:" +"`1068268`)." #: ../Doc/whatsnew/2.7.rst:1596 msgid "" @@ -3144,19 +3366,17 @@ msgstr "" "(Cambiado por Sean Reifschneider; :issue:`8451`.)" #: ../Doc/whatsnew/2.7.rst:1605 -#, fuzzy msgid "" "The :attr:`sys.version_info` value is now a named tuple, with attributes " "named :attr:`!major`, :attr:`!minor`, :attr:`!micro`, :attr:`!releaselevel`, " "and :attr:`!serial`. (Contributed by Ross Light; :issue:`4285`.)" msgstr "" -"El valor de ``sys.version_info`` es ahora una tupla con nombre, con " -"atributos llamados :attr:`major`, :attr:`minor`, :attr:`micro`, :attr:" -"`releaselevel`, y :attr:`serial`. (Contribución de Ross Light; :issue:" -"`4285`.)" +"El valor :attr:`sys.version_info` ahora es una tupla con nombre, con " +"atributos denominados :attr:`!major`, :attr:`!minor`, :attr:`!micro`, :attr:" +"`!releaselevel` y :attr:`!serial`. (Contribuido por Ross Light; :issue:" +"`4285`)." #: ../Doc/whatsnew/2.7.rst:1610 -#, fuzzy msgid "" ":func:`sys.getwindowsversion` also returns a named tuple, with attributes " "named :attr:`!major`, :attr:`!minor`, :attr:`!build`, :attr:`!platform`, :" @@ -3164,11 +3384,11 @@ msgid "" "service_pack_minor`, :attr:`!suite_mask`, and :attr:`!product_type`. " "(Contributed by Brian Curtin; :issue:`7766`.)" msgstr "" -":func:`sys.getwindowsversion` también retorna una tupla con nombre, con " -"atributos llamados :attr:`major`, :attr:`minor`, :attr:`build`, :attr:" -"`platform`, :attr:`service_pack`, :attr:`service_pack_major`, :attr:" -"`service_pack_minor`, :attr:`suite_mask`, y :attr:`product_type`. " -"(Contribución de Brian Curtin; :issue:`7766`.)" +":func:`sys.getwindowsversion` también devuelve una tupla con nombre, con " +"atributos denominados :attr:`!major`, :attr:`!minor`, :attr:`!build`, :attr:" +"`!platform`, :attr:`!service_pack`, :attr:`!service_pack_major`, :attr:`!" +"service_pack_minor`, :attr:`!suite_mask` y :attr:`!product_type`. " +"(Contribuido por Brian Curtin; :issue:`7766`)." #: ../Doc/whatsnew/2.7.rst:1616 ../Doc/whatsnew/2.7.rst:2504 msgid "" @@ -3245,7 +3465,6 @@ msgstr "" "`8024`)." #: ../Doc/whatsnew/2.7.rst:1651 ../Doc/whatsnew/2.7.rst:2512 -#, fuzzy msgid "" "The :mod:`urlparse ` module's :func:`~urllib.parse.urlsplit` " "now handles unknown URL schemes in a fashion compliant with :rfc:`3986`: if " @@ -3254,12 +3473,13 @@ msgid "" "doesn't know about. This change may break code that worked around the old " "behaviour. For example, Python 2.6.4 or 2.5 will return the following:" msgstr "" -"La :func:`~urlparse.urlsplit` del módulo :mod:`urlparse` maneja ahora los " -"esquemas de URL desconocidos de una manera que cumple con :rfc:`3986`: si la " -"URL es de la forma ``\"://...\"``, el texto que precede a ``://`` " -"se trata como el esquema, incluso si es un esquema inventado que el módulo " -"no conoce. Este cambio puede romper el código que funcionaba con el antiguo " -"comportamiento. Por ejemplo, Python 2.6.4 o 2.5 retornará lo siguiente:" +"El módulo :func:`~urllib.parse.urlsplit` del :mod:`urlparse ` " +"ahora maneja esquemas de URL desconocidos de una manera compatible con el :" +"rfc:`3986`: si la URL tiene el formato ``\"://...\"``, el texto " +"antes del ``://`` se trata como el esquema, incluso si es un esquema " +"inventado que el módulo no conoce. Este cambio puede romper el código que " +"funcionaba con el comportamiento anterior. Por ejemplo, Python 2.6.4 o 2.5 " +"devolverá lo siguiente:" #: ../Doc/whatsnew/2.7.rst:1659 ../Doc/whatsnew/2.7.rst:2520 msgid "" @@ -3267,6 +3487,9 @@ msgid "" ">>> urlparse.urlsplit('invented://host/filename?query')\n" "('invented', '', '//host/filename?query', '', '')" msgstr "" +">>> import urlparse\n" +">>> urlparse.urlsplit('invented://host/nombre_archivo?consulta')\n" +"('invented', '', '//host/nombre_archivo?consulta', '', '')" #: ../Doc/whatsnew/2.7.rst:1666 ../Doc/whatsnew/2.7.rst:2527 msgid "Python 2.7 (and Python 2.6.5) will return:" @@ -3278,6 +3501,9 @@ msgid "" ">>> urlparse.urlsplit('invented://host/filename?query')\n" "('invented', 'host', '/filename?query', '', '')" msgstr "" +">>> import urlparse\n" +">>> urlparse.urlsplit('invented://host/filename?query')\n" +"('invented', 'host', '/filename?query', '', '')" #: ../Doc/whatsnew/2.7.rst:1675 ../Doc/whatsnew/2.7.rst:2536 msgid "" @@ -3288,14 +3514,14 @@ msgstr "" "retorna una tupla con nombre en lugar de una tupla estándar)" #: ../Doc/whatsnew/2.7.rst:1678 -#, fuzzy msgid "" "The :mod:`urlparse ` module also supports IPv6 literal " "addresses as defined by :rfc:`2732` (contributed by Senthil Kumaran; :issue:" "`2987`)." msgstr "" -"El módulo :mod:`urlparse` también soporta las direcciones literales IPv6 " -"definidas por :rfc:`2732` (contribuido por Senthil Kumaran; :issue:`2987`)." +"El módulo :mod:`urlparse ` también admite direcciones " +"literales IPv6 según lo definido por :rfc:`2732` (contribuido por Senthil " +"Kumaran; :issue:`2987`)." #: ../Doc/whatsnew/2.7.rst:1681 msgid "" @@ -3303,6 +3529,9 @@ msgid "" "ParseResult(scheme='http', netloc='[1080::8:800:200C:417A]',\n" " path='/foo', params='', query='', fragment='')" msgstr "" +">>> urlparse.urlparse('http://[1080::8:800:200C:417A]/foo')\n" +"ParseResult(scheme='http', netloc='[1080::8:800:200C:417A]',\n" +"path='/foo', params='', query='', fragment='')" #: ../Doc/whatsnew/2.7.rst:1688 msgid "" @@ -3319,21 +3548,18 @@ msgstr "" "Portado a 2.7 por Michael Foord)" #: ../Doc/whatsnew/2.7.rst:1694 -#, fuzzy msgid "" "The :mod:`xml.etree.ElementTree` library, no longer escapes ampersands and " "angle brackets when outputting an XML processing instruction (which looks " "like ````) or comment (which looks like " "````). (Patch by Neil Muller; :issue:`2746`.)" msgstr "" -"La biblioteca ElementTree, :mod:`xml.etree`, ya no escapa los ampersands y " -"los paréntesis angulares cuando se emite una instrucción de procesamiento " -"XML (que tiene el aspecto de ````) o un " -"comentario (que tiene el aspecto de ````). (Parche de Neil " -"Muller; :issue:`2746`.)" +"La biblioteca :mod:`xml.etree.ElementTree` ya no omite los símbolos & ni los " +"corchetes angulares al generar una instrucción de procesamiento XML (que se " +"parece a ````) o un comentario (que se " +"parece a ````). (Parche de Neil Muller; :issue:`2746`)." #: ../Doc/whatsnew/2.7.rst:1700 -#, fuzzy msgid "" "The XML-RPC client and server, provided by the :mod:`xmlrpclib ` and :mod:`SimpleXMLRPCServer ` modules, have " @@ -3345,13 +3571,13 @@ msgid "" "Kristján Valur Jónsson; :issue:`6267`.)" msgstr "" "El cliente y el servidor XML-RPC, proporcionados por los módulos :mod:" -"`xmlrpclib` y :mod:`SimpleXMLRPCServer`, han mejorado su rendimiento al " -"soportar HTTP/1.1 keep-alive y al utilizar opcionalmente la codificación " -"gzip para comprimir el XML que se intercambia. La compresión gzip está " -"controlada por el atributo :attr:`encode_threshold` de :class:" -"`SimpleXMLRPCRestHandler`, que contiene un tamaño en bytes; las respuestas " -"más grandes que esto serán comprimidas. (Contribuido por Kristján Valur " -"Jónsson; :issue:`6267`.)" +"`xmlrpclib ` y :mod:`SimpleXMLRPCServer `, han " +"mejorado su rendimiento al admitir la función keep-alive de HTTP/1.1 y al " +"utilizar opcionalmente la codificación gzip para comprimir el XML que se " +"intercambia. La compresión gzip está controlada por el atributo :attr:`!" +"encode_threshold` de :class:`~xmlrpc.server.SimpleXMLRPCRequestHandler`, que " +"contiene un tamaño en bytes; las respuestas más grandes que este tamaño se " +"comprimirán. (Contribuido por Kristján Valur Jónsson; :issue:`6267`.)" #: ../Doc/whatsnew/2.7.rst:1709 msgid "" @@ -3364,7 +3590,6 @@ msgstr "" "ZipFile(...) como f:``. (Contribución de Brian Curtin; :issue:`5511`.)" #: ../Doc/whatsnew/2.7.rst:1713 -#, fuzzy msgid "" ":mod:`zipfile` now also supports archiving empty directories and extracts " "them correctly. (Fixed by Kuba Wieczorek; :issue:`4710`.) Reading files out " @@ -3372,11 +3597,11 @@ msgid "" "read>` and :meth:`readline() ` now works correctly. " "(Contributed by Nir Aides; :issue:`7610`.)" msgstr "" -":mod:`zipfile` ahora también soporta el archivado de directorios vacíos y " -"los extrae correctamente. (Corregido por Kuba Wieczorek; :issue:`4710`.) La " -"lectura de ficheros de un archivo es más rápida, y la intercalación de :meth:" -"`~zipfile.ZipFile.read` y :meth:`~zipfile.ZipFile.readline` ahora funciona " -"correctamente. (Contribución de Nir Aides; :issue:`7610`.)" +":mod:`zipfile` ahora también permite archivar directorios vacíos y " +"extraerlos correctamente. (Corregido por Kuba Wieczorek; :issue:`4710`.) La " +"lectura de archivos de un archivo es más rápida y la intercalación de :meth:" +"`read() ` y :meth:`readline() ` " +"ahora funciona correctamente. (Contribuido por Nir Aides; :issue:`7610`.)" #: ../Doc/whatsnew/2.7.rst:1720 msgid "" @@ -3405,7 +3630,6 @@ msgid "New module: importlib" msgstr "Nuevo módulo: importlib" #: ../Doc/whatsnew/2.7.rst:1739 -#, fuzzy msgid "" "Python 3.1 includes the :mod:`importlib` package, a re-implementation of the " "logic underlying Python's :keyword:`import` statement. :mod:`importlib` is " @@ -3416,10 +3640,10 @@ msgid "" "import_module`." msgstr "" "Python 3.1 incluye el paquete :mod:`importlib`, una reimplementación de la " -"lógica subyacente a la expresión :keyword:`import` de Python. :mod:" +"lógica subyacente a la declaración :keyword:`import` de Python. :mod:" "`importlib` es útil para los implementadores de intérpretes de Python y para " -"los usuarios que deseen escribir nuevos importadores que puedan participar " -"en el proceso de importación. Python 2.7 no contiene el paquete :mod:" +"los usuarios que desean escribir nuevos importadores que puedan participar " +"en el proceso de importación. Python 2.7 no contiene el paquete :mod:" "`importlib` completo, sino que tiene un pequeño subconjunto que contiene una " "única función, :func:`~importlib.import_module`." @@ -3457,6 +3681,14 @@ msgid "" ">>> file_util\n" "" msgstr "" +">>> from importlib import import_module\n" +">>> anydbm = import_module('anydbm') # Standard absolute import\n" +">>> anydbm\n" +"\n" +">>> # Relative import\n" +">>> file_util = import_module('..file_util', 'distutils.command')\n" +">>> file_util\n" +"" #: ../Doc/whatsnew/2.7.rst:1767 msgid "" @@ -3562,7 +3794,6 @@ msgstr "" "(por \"Tk temático\") al ser añadido a la versión 8.5 de Tcl/Tck." #: ../Doc/whatsnew/2.7.rst:1811 -#, fuzzy msgid "" "To learn more, read the :mod:`~tkinter.ttk` module documentation. You may " "also wish to read the Tcl/Tk manual page describing the Ttk theme engine, " @@ -3570,14 +3801,14 @@ msgid "" "screenshots of the Python/Ttk code in use are at https://code.google.com/" "archive/p/python-ttk/wikis/Screenshots.wiki." msgstr "" -"Para saber más, lea la documentación del módulo :mod:`ttk`. También puedes " -"leer la página del manual Tcl/Tk que describe el motor de temas Ttk, " -"disponible en https://www.tcl.tk/man/tcl8.5/TkCmd/ttk_intro.htm. Algunas " -"capturas de pantalla del código Python/Ttk en uso están en https://code." -"google.com/archive/p/python-ttk/wikis/Screenshots.wiki." +"Para obtener más información, lea la documentación del módulo :mod:`~tkinter." +"ttk`. También puede leer la página del manual de Tcl/Tk que describe el " +"motor de temas Ttk, disponible en https://www.tcl.tk/man/tcl8.5/TkCmd/" +"ttk_intro.html. Algunas capturas de pantalla del código Python/Ttk en uso se " +"encuentran en https://code.google.com/archive/p/python-ttk/wikis/Screenshots." +"wiki." #: ../Doc/whatsnew/2.7.rst:1818 -#, fuzzy msgid "" "The :mod:`tkinter.ttk` module was written by Guilherme Polo and added in :" "issue:`2983`. An alternate version called ``Tile.py``, written by Martin " @@ -3585,18 +3816,17 @@ msgid "" "issue:`2618`, but the authors argued that Guilherme Polo's work was more " "comprehensive." msgstr "" -"El módulo :mod:`ttk` fue escrito por Guilherme Polo y añadido en :issue:" -"`2983`. Una versión alternativa llamada ``Tile.py``, escrita por Martin " -"Franklin y mantenida por Kevin Walzer, fue propuesta para su inclusión en :" -"issue:`2618`, pero los autores argumentaron que el trabajo de Guilherme Polo " -"era más completo." +"El módulo :mod:`tkinter.ttk` fue escrito por Guilherme Polo y se agregó en :" +"issue:`2983`. Se propuso una versión alternativa llamada ``Tile.py``, " +"escrita por Martin Franklin y mantenida por Kevin Walzer, para su inclusión " +"en :issue:`2618`, pero los autores argumentaron que el trabajo de Guilherme " +"Polo era más completo." #: ../Doc/whatsnew/2.7.rst:1828 msgid "Updated module: unittest" msgstr "Módulo actualizado: unittest" #: ../Doc/whatsnew/2.7.rst:1830 -#, fuzzy msgid "" "The :mod:`unittest` module was greatly enhanced; many new features were " "added. Most of these features were implemented by Michael Foord, unless " @@ -3604,12 +3834,12 @@ msgid "" "separately for use with Python versions 2.4 to 2.6, packaged as the :mod:`!" "unittest2` package, from :pypi:`unittest2`." msgstr "" -"El módulo :mod:`unittest` se ha mejorado mucho; se han añadido muchas " -"funciones nuevas. La mayoría de estas características fueron implementadas " -"por Michael Foord, a menos que se indique lo contrario. La versión mejorada " -"del módulo puede descargarse por separado para su uso con las versiones 2.4 " -"a 2.6 de Python, empaquetada como paquete :mod:`unittest2`, en https://pypi." -"org/project/unittest2." +"El módulo :mod:`unittest` se ha mejorado considerablemente y se han añadido " +"muchas funciones nuevas. La mayoría de estas funciones fueron implementadas " +"por Michael Foord, a menos que se indique lo contrario. La versión mejorada " +"del módulo se puede descargar por separado para su uso con las versiones 2.4 " +"a 2.6 de Python, empaquetada como el paquete :mod:`!unittest2`, desde :pypi:" +"`unittest2`." #: ../Doc/whatsnew/2.7.rst:1836 msgid "" @@ -3629,7 +3859,7 @@ msgstr "" #: ../Doc/whatsnew/2.7.rst:1843 msgid "python -m unittest discover -s test" -msgstr "" +msgstr "python -m unittest descubre -s prueba" #: ../Doc/whatsnew/2.7.rst:1845 msgid "" @@ -3750,6 +3980,8 @@ msgid "" "with self.assertRaises(KeyError):\n" " {}['foo']" msgstr "" +"with self.assertRaises(KeyError):\n" +" {}['foo']" #: ../Doc/whatsnew/2.7.rst:1895 msgid "(Implemented by Antoine Pitrou; :issue:`4444`.)" @@ -3859,29 +4091,28 @@ msgstr "" "cadenas Unicode se comparan con :meth:`~unittest.TestCase.assertEqual`." #: ../Doc/whatsnew/2.7.rst:1941 -#, fuzzy msgid "" ":meth:`assertRegexpMatches() ` and :meth:" "`assertNotRegexpMatches() ` checks whether " "the first argument is a string matching or not matching the regular " "expression provided as the second argument (:issue:`8038`)." msgstr "" -":meth:`~unittest.TestCase.assertRegexpMatches` y :meth:`~unittest.TestCase." -"assertNotRegexpMatches` comprueba si el primer argumento es una cadena que " -"coincide o no con la expresión regular proporcionada como segundo argumento " -"(:issue:`8038`)." +":meth:`assertRegexpMatches() ` y :meth:" +"`assertNotRegexpMatches() ` verifican si " +"el primer argumento es una cadena que coincide o no con la expresión regular " +"proporcionada como segundo argumento (:issue:`8038`)." #: ../Doc/whatsnew/2.7.rst:1946 -#, fuzzy msgid "" ":meth:`assertRaisesRegexp() ` checks " "whether a particular exception is raised, and then also checks that the " "string representation of the exception matches the provided regular " "expression." msgstr "" -":meth:`~unittest.TestCase.assertRaisesRegexp` comprueba si se produce una " -"excepción en particular, y luego también comprueba que la representación de " -"la cadena de la excepción coincide con la expresión regular proporcionada." +":meth:`assertRaisesRegexp() ` verifica " +"si se genera una excepción particular y luego también verifica que la " +"representación de cadena de la excepción coincida con la expresión regular " +"proporcionada." #: ../Doc/whatsnew/2.7.rst:1951 msgid "" @@ -3892,13 +4123,12 @@ msgstr "" "comprueban si *primero* está o no está en *segundo*." #: ../Doc/whatsnew/2.7.rst:1954 -#, fuzzy msgid "" ":meth:`assertItemsEqual() ` tests " "whether two provided sequences contain the same elements." msgstr "" -":meth:`~unittest.TestCase.assertItemsEqual` comprueba si dos secuencias " -"proporcionadas contienen los mismos elementos." +":meth:`assertItemsEqual() ` prueba si " +"dos secuencias proporcionadas contienen los mismos elementos." #: ../Doc/whatsnew/2.7.rst:1957 msgid "" @@ -3929,7 +4159,6 @@ msgstr "" "tipo determinado." #: ../Doc/whatsnew/2.7.rst:1968 -#, fuzzy msgid "" ":meth:`~unittest.TestCase.assertDictEqual` compares two dictionaries and " "reports the differences; it's now used by default when you compare two " @@ -3938,10 +4167,10 @@ msgid "" "*first* are found in *second*." msgstr "" ":meth:`~unittest.TestCase.assertDictEqual` compara dos diccionarios e " -"informa de las diferencias; ahora se utiliza por defecto cuando se comparan " -"dos diccionarios utilizando :meth:`~unittest.TestCase.assertEqual`. :meth:" -"`~unittest.TestCase.assertDictContainsSubset` comprueba si todos los pares " -"clave/valor de *primero* se encuentran en *segundo*." +"informa las diferencias; ahora se utiliza de forma predeterminada cuando se " +"comparan dos diccionarios mediante :meth:`~unittest.TestCase.assertEqual`. :" +"meth:`!assertDictContainsSubset` comprueba si todos los pares clave/valor de " +"*first* se encuentran en *second*." #: ../Doc/whatsnew/2.7.rst:1973 msgid "" @@ -4068,20 +4297,21 @@ msgid "" "p = ET.XMLParser(encoding='utf-8')\n" "t = ET.XML(\"\"\"\"\"\", parser=p)" msgstr "" +"p = ET.XMLParser(codificación='utf-8')\n" +"t = ET.XML(\"\"\"\"\"\", analizador=p)" #: ../Doc/whatsnew/2.7.rst:2027 -#, fuzzy msgid "" "Errors in parsing XML now raise a :exc:`~xml.etree.ElementTree.ParseError` " "exception, whose instances have a :attr:`!position` attribute containing a " "(*line*, *column*) tuple giving the location of the problem." msgstr "" -"Los errores en el análisis de XML ahora lanzan una excepción :exc:" -"`ParseError`, cuyas instancias tienen un atributo :attr:`position` que " -"contiene una tupla (*línea*, *columna*) que da la ubicación del problema." +"Los errores al analizar XML ahora generan una excepción :exc:`~xml.etree." +"ElementTree.ParseError`, cuyas instancias tienen un atributo :attr:`!" +"position` que contiene una tupla (*line*, *column*) que indica la ubicación " +"del problema." #: ../Doc/whatsnew/2.7.rst:2031 -#, fuzzy msgid "" "ElementTree's code for converting trees to a string has been significantly " "reworked, making it roughly twice as fast in many cases. The :meth:" @@ -4095,17 +4325,18 @@ msgid "" "so you don't need to do more extensive rearrangement to remove a single " "element." msgstr "" -"El código de ElementTree para convertir árboles a una cadena ha sido " -"significativamente rediseñado, haciéndolo aproximadamente dos veces más " -"rápido en muchos casos. Los :meth:`ElementTree.write() ` y :meth:`Element.write` tienen ahora un " -"parámetro *method* que puede ser \"xml\" (el predeterminado), \"html\" o " -"\"text\". El modo HTML mostrará los elementos vacíos como ```` en lugar de ````, y el modo texto saltará los elementos y " -"sólo mostrará los trozos de texto. Si estableces el atributo :attr:`tag` de " -"un elemento como ``None`` pero dejas sus hijos en su sitio, el elemento será " -"omitido cuando el árbol sea escrito, por lo que no necesitarás hacer un " -"reordenamiento más extenso para eliminar un solo elemento." +"El código de ElementTree para convertir árboles en cadenas ha sido " +"rediseñado significativamente, lo que lo hace aproximadamente el doble de " +"rápido en muchos casos. Los métodos :meth:`ElementTree.write() ` y :meth:`Element.write` ahora tienen un " +"parámetro *method* que puede ser \"xml\" (el valor predeterminado), \"html\" " +"o \"texto\". El modo HTML mostrará los elementos vacíos como ```` en lugar de ````, y el modo de texto omitirá los elementos " +"y solo mostrará los fragmentos de texto. Si establece el atributo :attr:" +"`~xml.etree.ElementTree.Element.tag` de un elemento en ``None`` pero deja " +"sus elementos secundarios en su lugar, el elemento se omitirá cuando se " +"escriba el árbol, por lo que no necesita realizar una reorganización más " +"extensa para eliminar un solo elemento." #: ../Doc/whatsnew/2.7.rst:2044 msgid "" @@ -4149,9 +4380,18 @@ msgid "" "# Outputs 1...\n" "print ET.tostring(new)" msgstr "" +"from xml.etree import ElementTree as ET\n" +"\n" +"t = ET.XML(\"\"\"\n" +" 1 2 3\n" +"\"\"\")\n" +"new = ET.XML('')\n" +"new.extend(t)\n" +"\n" +"# Outputs 1...\n" +"print ET.tostring(new)" #: ../Doc/whatsnew/2.7.rst:2069 -#, fuzzy msgid "" "New :class:`~xml.etree.ElementTree.Element` method: :meth:`~xml.etree." "ElementTree.Element.iter` yields the children of the element as a " @@ -4160,22 +4400,22 @@ msgid "" "deprecated, as is :meth:`!getchildren` which constructs and returns a list " "of children." msgstr "" -"Nuevo método :class:`Element`: :meth:`~xml.etree.ElementTree.Element.iter` " -"retorna los hijos del elemento como generador. También es posible escribir " -"``for child in elem:`` para hacer un bucle sobre los hijos de un elemento. " -"El método existente :meth:`getiterator` ha quedado obsoleto, al igual que :" -"meth:`getchildren` que construye y retorna una lista de hijos." +"Nuevo método :class:`~xml.etree.ElementTree.Element`: :meth:`~xml.etree." +"ElementTree.Element.iter` genera los elementos secundarios del elemento como " +"generador. También es posible escribir ``for child in elem:`` para recorrer " +"los elementos secundarios de un elemento. El método existente :meth:`!" +"getiterator` ya no se utiliza, al igual que :meth:`!getchildren`, que " +"construye y devuelve una lista de elementos secundarios." #: ../Doc/whatsnew/2.7.rst:2076 -#, fuzzy msgid "" "New :class:`~xml.etree.ElementTree.Element` method: :meth:`~xml.etree." "ElementTree.Element.itertext` yields all chunks of text that are descendants " "of the element. For example::" msgstr "" -"Nuevo método :class:`Element`: :meth:`~xml.etree.ElementTree.Element." -"itertext` retorna todos los trozos de texto que son descendientes del " -"elemento. Por ejemplo::" +"Nuevo método :class:`~xml.etree.ElementTree.Element`: :meth:`~xml.etree." +"ElementTree.Element.itertext` genera todos los fragmentos de texto que son " +"descendientes del elemento. Por ejemplo:" #: ../Doc/whatsnew/2.7.rst:2080 msgid "" @@ -4186,6 +4426,12 @@ msgid "" "# Outputs ['\\n ', '1', ' ', '2', ' ', '3', '\\n']\n" "print list(t.itertext())" msgstr "" +"t = ET.XML(\"\"\"\n" +" 1 2 3\n" +"\"\"\")\n" +"\n" +"# Outputs ['\\n ', '1', ' ', '2', ' ', '3', '\\n']\n" +"print list(t.itertext())" #: ../Doc/whatsnew/2.7.rst:2087 msgid "" @@ -4228,7 +4474,6 @@ msgstr "" "incluyen:" #: ../Doc/whatsnew/2.7.rst:2109 -#, fuzzy msgid "" "The latest release of the GNU Debugger, GDB 7, can be `scripted using Python " "`__. " -"Cuando comience a depurar un programa ejecutable P, GDB buscará un archivo " -"llamado ``P-gdb.py`` y lo leerá automáticamente. Dave Malcolm contribuyó " -"con un archivo :file:`python-gdb.py` que añade una serie de comandos útiles " -"cuando se depura el propio Python. Por ejemplo, ``py-up`` y ``py-down`` " -"suben o bajan un marco de pila de Python, que normalmente corresponde a " -"varios marcos de pila de C. ``py-print`` imprime el valor de una variable " -"de Python, y ``py-bt`` imprime el seguimiento de la pila de Python. " -"(Añadido como resultado de :issue:`8032`.)" +"La última versión del depurador GNU, GDB 7, puede ser `scripted using Python " +"`__. Cuando comience a depurar un " +"programa ejecutable P, GDB buscará un archivo llamado ``P-gdb.py`` y lo " +"leerá automáticamente. Dave Malcolm contribuyó con un :file:`python-gdb.py` " +"que agrega una serie de comandos útiles para depurar Python en sí. Por " +"ejemplo, ``py-up`` y ``py-down`` suben o bajan un marco de pila de Python, " +"que generalmente corresponde a varios marcos de pila de C. ``py-print`` " +"imprime el valor de una variable de Python y ``py-bt`` imprime el " +"seguimiento de la pila de Python. (Agregado como resultado de :issue:`8032`)." #: ../Doc/whatsnew/2.7.rst:2121 msgid "" @@ -4277,7 +4522,6 @@ msgstr "" "(Contribuido por Kristján Valur Jónsson; :issue:`4293`.)" #: ../Doc/whatsnew/2.7.rst:2131 -#, fuzzy msgid "" "New function: :c:func:`PyCode_NewEmpty` creates an empty code object; only " "the filename, function name, and first line number are required. This is " @@ -4286,11 +4530,11 @@ msgid "" "PyCode_New`, which had many more arguments. (Added by Jeffrey Yasskin.)" msgstr "" "Nueva función: :c:func:`PyCode_NewEmpty` crea un objeto de código vacío; " -"sólo se requiere el nombre del archivo, el nombre de la función y el número " -"de la primera línea. Esto es útil para los módulos de extensión que intentan " -"construir una pila de rastreo más útil. Anteriormente tales extensiones " -"necesitaban llamar a :c:func:`PyCode_New`, que tenía muchos más argumentos. " -"(Añadido por Jeffrey Yasskin)" +"solo se requieren el nombre del archivo, el nombre de la función y el número " +"de la primera línea. Esto resulta útil para los módulos de extensión que " +"intentan construir una pila de seguimiento más útil. Anteriormente, dichas " +"extensiones necesitaban llamar a :c:func:`!PyCode_New`, que tenía muchos más " +"argumentos. (Agregado por Jeffrey Yasskin)." #: ../Doc/whatsnew/2.7.rst:2138 msgid "" @@ -4334,33 +4578,30 @@ msgstr "" "`7528` y :issue:`7767`.)" #: ../Doc/whatsnew/2.7.rst:2157 -#, fuzzy msgid "" "New function: stemming from the rewrite of string-to-float conversion, a " "new :c:func:`PyOS_string_to_double` function was added. The old :c:func:`!" "PyOS_ascii_strtod` and :c:func:`!PyOS_ascii_atof` functions are now " "deprecated." msgstr "" -"Nueva función: a raíz de la reescritura de la conversión de cadena a " -"flotante, se ha añadido una nueva función :c:func:`PyOS_string_to_double`. " -"Las antiguas funciones :c:func:`PyOS_ascii_strtod` y :c:func:" -"`PyOS_ascii_atof` han quedado obsoletas." +"Nueva función: a partir de la reescritura de la conversión de cadena a " +"flotante, se agregó una nueva función :c:func:`PyOS_string_to_double`. Las " +"antiguas funciones :c:func:`!PyOS_ascii_strtod` y :c:func:`!PyOS_ascii_atof` " +"ahora están obsoletas." #: ../Doc/whatsnew/2.7.rst:2162 -#, fuzzy msgid "" "New function: :c:func:`!PySys_SetArgvEx` sets the value of ``sys.argv`` and " "can optionally update ``sys.path`` to include the directory containing the " "script named by ``sys.argv[0]`` depending on the value of an *updatepath* " "parameter." msgstr "" -"Nueva función: :c:func:`PySys_SetArgvEx` establece el valor de ``sys.argv`` " -"y puede opcionalmente actualizar ``sys.path`` para incluir el directorio que " +"Nueva función: :c:func:`!PySys_SetArgvEx` establece el valor de ``sys.argv`` " +"y opcionalmente puede actualizar ``sys.path`` para incluir el directorio que " "contiene el script nombrado por ``sys.argv[0]`` dependiendo del valor de un " "parámetro *updatepath*." #: ../Doc/whatsnew/2.7.rst:2167 -#, fuzzy msgid "" "This function was added to close a security hole for applications that embed " "Python. The old function, :c:func:`!PySys_SetArgv`, would always update " @@ -4370,37 +4611,34 @@ msgid "" "(say, a file named :file:`os.py`) that your application would then import " "and run." msgstr "" -"Esta función se añadió para cerrar un agujero de seguridad para las " -"aplicaciones que incrustan Python. La antigua función, :c:func:" -"`PySys_SetArgv`, siempre actualizaba ``sys.path``, y a veces añadía el " -"directorio actual. Esto significaba que, si ejecutabas una aplicación que " -"incrustaba Python en un directorio controlado por otra persona, los " -"atacantes podían poner un módulo de caballo de Troya en el directorio " -"(digamos, un archivo llamado :file:`os.py`) que tu aplicación luego " -"importaría y ejecutaría." +"Esta función se agregó para cerrar un agujero de seguridad en las " +"aplicaciones que incorporan Python. La función anterior, :c:func:`!" +"PySys_SetArgv`, siempre actualizaba ``sys.path`` y, a veces, añadía el " +"directorio actual. Esto significaba que, si ejecutaba una aplicación que " +"incorporaba Python en un directorio controlado por otra persona, los " +"atacantes podían colocar un módulo troyano en el directorio (por ejemplo, un " +"archivo llamado :file:`os.py`) que su aplicación luego importaría y " +"ejecutaría." #: ../Doc/whatsnew/2.7.rst:2175 -#, fuzzy msgid "" "If you maintain a C/C++ application that embeds Python, check whether you're " "calling :c:func:`!PySys_SetArgv` and carefully consider whether the " "application should be using :c:func:`!PySys_SetArgvEx` with *updatepath* set " "to false." msgstr "" -"Si mantienes una aplicación C/C++ que incrusta Python, comprueba si estás " -"llamando a :c:func:`PySys_SetArgv` y considera cuidadosamente si la " -"aplicación debería estar usando :c:func:`PySys_SetArgvEx` con *updatepath* " -"establecido en false." +"Si mantiene una aplicación C/C++ que incorpora Python, verifique si está " +"llamando a :c:func:`!PySys_SetArgv` y considere cuidadosamente si la " +"aplicación debería usar :c:func:`!PySys_SetArgvEx` con *updatepath* " +"establecido en falso." #: ../Doc/whatsnew/2.7.rst:2180 -#, fuzzy msgid "" "Security issue reported as :cve:`2008-5983`; discussed in :issue:`5753`, and " "fixed by Antoine Pitrou." msgstr "" -"Problema de seguridad reportado como `CVE-2008-5983 `_; discutido en :issue:`5753`, y " -"solucionado por Antoine Pitrou." +"Problema de seguridad informado como :cve:`2008-5983`; discutido en :issue:" +"`5753` y solucionado por Antoine Pitrou." #: ../Doc/whatsnew/2.7.rst:2183 msgid "" @@ -4424,30 +4662,28 @@ msgstr "" "`5793`.)" #: ../Doc/whatsnew/2.7.rst:2201 -#, fuzzy msgid "" "Removed function: :c:func:`!PyEval_CallObject` is now only available as a " "macro. A function version was being kept around to preserve ABI linking " "compatibility, but that was in 1997; it can certainly be deleted by now. " "(Removed by Antoine Pitrou; :issue:`8276`.)" msgstr "" -"Función eliminada: :c:macro:`PyEval_CallObject` ahora sólo está disponible " -"como macro. Se mantenía una versión de la función para preservar la " -"compatibilidad con el enlace ABI, pero eso fue en 1997; seguramente se puede " -"eliminar ahora. (Eliminado por Antoine Pitrou; :issue:`8276`.)" +"Función eliminada: :c:func:`!PyEval_CallObject` ahora solo está disponible " +"como macro. Se mantuvo una versión de función para preservar la " +"compatibilidad con enlaces ABI, pero eso fue en 1997; por lo tanto, ya se " +"puede eliminar. (Eliminada por Antoine Pitrou; :issue:`8276`)." #: ../Doc/whatsnew/2.7.rst:2206 -#, fuzzy msgid "" "New format codes: the :c:func:`!PyString_FromFormat`, :c:func:`!" "PyString_FromFormatV`, and :c:func:`PyErr_Format` functions now accept " "``%lld`` and ``%llu`` format codes for displaying C's :c:expr:`long long` " "types. (Contributed by Mark Dickinson; :issue:`7228`.)" msgstr "" -"Nuevos códigos de formato: las funciones :c:func:`PyFormat_FromString`, :c:" -"func:`PyFormat_FromStringV` y :c:func:`PyErr_Format` ahora aceptan códigos " -"de formato ``%lld`` y ``%llu`` para mostrar los tipos :c:expr:`long long` de " -"C. (Aportado por Mark Dickinson; :issue:`7228`.)" +"Nuevos códigos de formato: las funciones :c:func:`!PyString_FromFormat`, :c:" +"func:`!PyString_FromFormatV` y :c:func:`PyErr_Format` ahora aceptan los " +"códigos de formato ``%lld`` y ``%llu`` para mostrar los tipos :c:expr:`long " +"long` de C. (Contribuido por Mark Dickinson; :issue:`7228`.)" #: ../Doc/whatsnew/2.7.rst:2212 msgid "" @@ -4486,26 +4722,24 @@ msgid "(Fixed by Thomas Wouters; :issue:`1590864`.)" msgstr "(Corregido por Thomas Wouters; :issue:`1590864`.)" #: ../Doc/whatsnew/2.7.rst:2230 -#, fuzzy msgid "" "The :c:func:`Py_Finalize` function now calls the internal :func:`!threading." "_shutdown` function; this prevents some exceptions from being raised when an " "interpreter shuts down. (Patch by Adam Olsen; :issue:`1722344`.)" msgstr "" -"La función :c:func:`Py_Finalize` ahora llama a la función interna :func:" -"`threading._shutdown`; esto evita que se produzcan algunas excepciones " -"cuando un intérprete se cierra. (Parche de Adam Olsen; :issue:`1722344`.)" +"La función :c:func:`Py_Finalize` ahora llama a la función interna :func:`!" +"threading._shutdown`; esto evita que se generen algunas excepciones cuando " +"se apaga un intérprete. (Parche de Adam Olsen; :issue:`1722344`)." #: ../Doc/whatsnew/2.7.rst:2235 -#, fuzzy msgid "" "When using the :c:type:`PyMemberDef` structure to define attributes of a " "type, Python will no longer let you try to delete or set a :c:macro:" "`T_STRING_INPLACE` attribute." msgstr "" -"Cuando se utiliza la estructura :c:type:`PyMemberDef` para definir los " -"atributos de un tipo, Python ya no permitirá que se intente borrar o " -"establecer un atributo :const:`T_STRING_INPLACE`." +"Al utilizar la estructura :c:type:`PyMemberDef` para definir atributos de un " +"tipo, Python ya no le permitirá intentar eliminar o establecer un atributo :" +"c:macro:`T_STRING_INPLACE`." #: ../Doc/whatsnew/2.7.rst:2241 msgid "" @@ -4517,17 +4751,16 @@ msgstr "" "`3102`.)" #: ../Doc/whatsnew/2.7.rst:2245 -#, fuzzy msgid "" "New configure option: the :option:`!--with-system-expat` switch allows " "building the :mod:`pyexpat ` module to use the system " "Expat library. (Contributed by Arfrever Frehtes Taifersar Arahesis; :issue:" "`7609`.)" msgstr "" -"Nueva opción de configuración: la opción :option:`!--with-system-expat` " -"permite construir el módulo :mod:`pyexpat` para utilizar la biblioteca Expat " -"del sistema. (Contribuido por Arfrever Frehtes Taifersar Arahesis; :issue:" -"`7609`.)" +"Nueva opción de configuración: el conmutador :option:`!--with-system-expat` " +"permite crear el módulo :mod:`pyexpat ` para utilizar la " +"biblioteca Expat del sistema. (Contribución de Arfrever Frehtes Taifersar " +"Arahesis; :issue:`7609`)." #: ../Doc/whatsnew/2.7.rst:2249 msgid "" @@ -4619,7 +4852,6 @@ msgstr "" "API del módulo." #: ../Doc/whatsnew/2.7.rst:2292 -#, fuzzy msgid "" "There is an existing data type already used for this, :c:type:`!PyCObject`, " "but it doesn't provide type safety. Evil code written in pure Python could " @@ -4628,12 +4860,12 @@ msgid "" "Capsules know their own name, and getting the pointer requires providing the " "name:" msgstr "" -"Existe un tipo de datos ya utilizado para esto, :c:type:`PyCObject`, pero no " -"proporciona seguridad de tipo. Un código malvado escrito en Python puro " -"podría causar un fallo de segmentación tomando un :c:type:`PyCObject` del " -"módulo A y sustituyéndolo de alguna manera por el :c:type:`PyCObject` del " -"módulo B. Las cápsulas conocen su propio nombre, y obtener el puntero " -"requiere proporcionar el nombre:" +"Ya existe un tipo de datos que se utiliza para esto, :c:type:`!PyCObject`, " +"pero no proporciona seguridad de tipos. Un código malicioso escrito en " +"Python puro podría provocar un error de segmentación al tomar un :c:type:`!" +"PyCObject` del módulo A y sustituirlo de alguna manera por el :c:type:`!" +"PyCObject` del módulo B. Las cápsulas conocen su propio nombre y, para " +"obtener el puntero, es necesario proporcionar el nombre:" #: ../Doc/whatsnew/2.7.rst:2299 msgid "" @@ -4646,6 +4878,14 @@ msgid "" "\n" "vtable = PyCapsule_GetPointer(capsule, \"mymodule.CAPI\");" msgstr "" +"void *vtable;\n" +"\n" +"if (!PyCapsule_IsValid(capsule, \"mymodule.CAPI\") {\n" +" PyErr_SetString(PyExc_ValueError, \"argument type invalid\");\n" +" return NULL;\n" +"}\n" +"\n" +"vtable = PyCapsule_GetPointer(capsule, \"mymodule.CAPI\");" #: ../Doc/whatsnew/2.7.rst:2310 msgid "" @@ -4660,7 +4900,6 @@ msgstr "" "sobre el uso de estos objetos." #: ../Doc/whatsnew/2.7.rst:2315 -#, fuzzy msgid "" "Python 2.7 now uses capsules internally to provide various extension-module " "APIs, but the :c:func:`!PyCObject_AsVoidPtr` was modified to handle " @@ -4668,12 +4907,12 @@ msgid "" "PyCObject` interface. Use of :c:func:`!PyCObject_AsVoidPtr` will signal a :" "exc:`PendingDeprecationWarning`, which is silent by default." msgstr "" -"Python 2.7 ahora utiliza cápsulas internamente para proporcionar varias APIs " -"de módulos de extensión, pero el :c:func:`PyCObject_AsVoidPtr` fue " -"modificado para manejar cápsulas, preservando la compatibilidad en tiempo de " -"compilación con la interfaz :c:type:`CObject`. El uso de :c:func:" -"`PyCObject_AsVoidPtr` señalará un :exc:`PendingDeprecationWarning`, que es " -"silencioso por defecto." +"Python 2.7 ahora utiliza cápsulas internamente para proporcionar varias API " +"de módulos de extensión, pero se modificó :c:func:`!PyCObject_AsVoidPtr` " +"para manejar cápsulas, lo que preserva la compatibilidad en tiempo de " +"compilación con la interfaz :c:type:`!PyCObject`. El uso de :c:func:`!" +"PyCObject_AsVoidPtr` indicará un :exc:`PendingDeprecationWarning`, que es " +"silencioso de manera predeterminada." #: ../Doc/whatsnew/2.7.rst:2322 msgid "" @@ -4688,7 +4927,6 @@ msgid "Port-Specific Changes: Windows" msgstr "Cambios específicos en los puertos: Windows" #: ../Doc/whatsnew/2.7.rst:2331 -#, fuzzy msgid "" "The :mod:`msvcrt` module now contains some constants from the :file:" "`crtassem.h` header file: :data:`~msvcrt.CRT_ASSEMBLY_VERSION`, :data:" @@ -4696,13 +4934,13 @@ msgid "" "LIBRARIES_ASSEMBLY_NAME_PREFIX`. (Contributed by David Cournapeau; :issue:" "`4365`.)" msgstr "" -"El módulo :mod:`msvcrt` contiene ahora algunas constantes del fichero de " -"cabecera :file:`crtassem.h`: :data:`CRT_ASSEMBLY_VERSION`, :data:" -"`VC_ASSEMBLY_PUBLICKEYTOKEN`, y :data:`LIBRARIES_ASSEMBLY_NAME_PREFIX`. " -"(Contribución de David Cournapeau; :issue:`4365`.)" +"El módulo :mod:`msvcrt` ahora contiene algunas constantes del archivo de " +"encabezado :file:`crtassem.h`: :data:`~msvcrt.CRT_ASSEMBLY_VERSION`, :data:" +"`~msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN` y :data:`~msvcrt." +"LIBRARIES_ASSEMBLY_NAME_PREFIX`. (Contribuido por David Cournapeau; :issue:" +"`4365`)." #: ../Doc/whatsnew/2.7.rst:2338 -#, fuzzy msgid "" "The :mod:`_winreg ` module for accessing the registry now implements " "the :func:`~winreg.CreateKeyEx` and :func:`~winreg.DeleteKeyEx` functions, " @@ -4711,27 +4949,25 @@ msgid "" "EnableReflectionKey`, and :func:`~winreg.QueryReflectionKey` were also " "tested and documented. (Implemented by Brian Curtin: :issue:`7347`.)" msgstr "" -"El módulo :mod:`_winreg` para acceder al registro ahora implementa las " -"funciones :func:`~_winreg.CreateKeyEx` y :func:`~_winreg.DeleteKeyEx`, " +"El módulo :mod:`_winreg ` para acceder al registro ahora implementa " +"las funciones :func:`~winreg.CreateKeyEx` y :func:`~winreg.DeleteKeyEx`, " "versiones extendidas de funciones admitidas anteriormente que toman varios " -"argumentos adicionales. También se probaron y documentaron :func:`~_winreg." -"DisableReflectionKey`, :func:`~_winreg.EnableReflectionKey` y :func:" -"`~_winreg.QueryReflectionKey`. (Implementado por Brian Curtin: :issue:" -"`7347`.)" +"argumentos adicionales. También se probaron y documentaron las funciones :" +"func:`~winreg.DisableReflectionKey`, :func:`~winreg.EnableReflectionKey` y :" +"func:`~winreg.QueryReflectionKey`. (Implementado por Brian Curtin: :issue:" +"`7347`)." #: ../Doc/whatsnew/2.7.rst:2346 -#, fuzzy msgid "" "The new :c:func:`!_beginthreadex` API is used to start threads, and the " "native thread-local storage functions are now used. (Contributed by Kristján " "Valur Jónsson; :issue:`3582`.)" msgstr "" -"La nueva API :c:func:`_beginthreadex` se utiliza para iniciar hilos, y ahora " -"se utilizan las funciones nativas de almacenamiento local de hilos. " -"(Contribuido por Kristján Valur Jónsson; :issue:`3582`.)" +"La nueva API :c:func:`!_beginthreadex` se utiliza para iniciar subprocesos y " +"ahora se utilizan las funciones nativas de almacenamiento local de " +"subprocesos. (Contribución de Kristján Valur Jónsson; :issue:`3582`)." #: ../Doc/whatsnew/2.7.rst:2350 -#, fuzzy msgid "" "The :func:`os.kill` function now works on Windows. The signal value can be " "the constants :const:`~signal.CTRL_C_EVENT`, :const:`~signal." @@ -4740,12 +4976,12 @@ msgid "" "other value will use the :c:func:`!TerminateProcess` API. (Contributed by " "Miki Tebeka; :issue:`1220212`.)" msgstr "" -"La función :func:`os.kill` ahora funciona en Windows. El valor de la señal " -"puede ser las constantes :const:`CTRL_C_EVENT`, :const:`CTRL_BREAK_EVENT`, o " -"cualquier número entero. Las dos primeras constantes enviarán los eventos " -"de pulsación de teclas :kbd:`Control-C` y :kbd:`Control-Break` a los " -"subprocesos; cualquier otro valor utilizará la API :c:func:" -"`TerminateProcess`. (Contribuido por Miki Tebeka; :issue:`1220212`.)" +"La función :func:`os.kill` ahora funciona en Windows. El valor de la señal " +"puede ser las constantes :const:`~signal.CTRL_C_EVENT`, :const:`~signal." +"CTRL_BREAK_EVENT` o cualquier número entero. Las dos primeras constantes " +"enviarán eventos de pulsación de teclas :kbd:`Control-C` y :kbd:`Control-" +"Break` a los subprocesos; cualquier otro valor utilizará la API :c:func:`!" +"TerminateProcess`. (Contribuido por Miki Tebeka; :issue:`1220212`.)" #: ../Doc/whatsnew/2.7.rst:2357 msgid "" @@ -4756,13 +4992,12 @@ msgstr "" "vacía. (Corregido por Hirokazu Yamamoto; :issue:`5913`.)" #: ../Doc/whatsnew/2.7.rst:2360 -#, fuzzy msgid "" "The :mod:`mimetypes` module will now read the MIME database from the Windows " "registry when initializing. (Patch by Gabriel Genellina; :issue:`4969`.)" msgstr "" -"El módulo :mod:`mimelib` ahora leerá la base de datos MIME del registro de " -"Windows cuando se inicialice. (Parche de Gabriel Genellina; :issue:`4969`.)" +"El módulo :mod:`mimetypes` ahora leerá la base de datos MIME del registro de " +"Windows al inicializarse. (Parche de Gabriel Genellina; :issue:`4969`)." #: ../Doc/whatsnew/2.7.rst:2367 msgid "Port-Specific Changes: Mac OS X" @@ -4806,17 +5041,17 @@ msgid "Port-Specific Changes: FreeBSD" msgstr "Cambios específicos en los puertos: FreeBSD" #: ../Doc/whatsnew/2.7.rst:2389 -#, fuzzy msgid "" "FreeBSD 7.1's :const:`!SO_SETFIB` constant, used with the :func:`~socket." "socket` methods :func:`~socket.socket.getsockopt`/:func:`~socket.socket." "setsockopt` to select an alternate routing table, is now available in the :" "mod:`socket` module. (Added by Kyle VanderBeek; :issue:`8235`.)" msgstr "" -"La constante :const:`SO_SETFIB` de FreeBSD 7.1, utilizada con :func:`~socket." -"getsockopt`/:func:`~socket.setsockopt` para seleccionar una tabla de " -"enrutamiento alternativa, está ahora disponible en el módulo :mod:`socket`. " -"(Añadido por Kyle VanderBeek; :issue:`8235`.)" +"La constante :const:`!SO_SETFIB` de FreeBSD 7.1, utilizada con los métodos :" +"func:`~socket.socket.getsockopt`/:func:`~socket.socket.setsockopt` de :func:" +"`~socket.socket` para seleccionar una tabla de enrutamiento alternativa, " +"ahora está disponible en el módulo :mod:`socket`. (Agregado por Kyle " +"VanderBeek; :issue:`8235`.)" #: ../Doc/whatsnew/2.7.rst:2395 msgid "Other Changes and Fixes" @@ -4848,7 +5083,6 @@ msgstr "" "los archivos :file:`.po`. (Corregido por Martin von Löwis; :issue:`5464`.)" #: ../Doc/whatsnew/2.7.rst:2409 -#, fuzzy msgid "" "When importing a module from a :file:`.pyc` or :file:`.pyo` file with an " "existing :file:`.py` counterpart, the :attr:`~codeobject.co_filename` " @@ -4857,12 +5091,13 @@ msgid "" "or is accessed through different paths. (Patch by Ziga Seilnacht and Jean-" "Paul Calderone; :issue:`1180193`.)" msgstr "" -"Cuando se importa un módulo desde un archivo :file:`.pyc` o :file:`.pyo` con " -"una contraparte :file:`.py` existente, los atributos :attr:`co_filename` de " -"los objetos de código resultantes se sobrescriben cuando el nombre de " -"archivo original es obsoleto. Esto puede ocurrir si el archivo ha sido " -"renombrado, movido, o se accede a él a través de diferentes rutas. (Parche " -"de Ziga Seilnacht y Jean-Paul Calderone; :issue:`1180193`.)" +"Al importar un módulo desde un archivo :file:`.pyc` o :file:`.pyo` con un " +"equivalente :file:`.py` existente, los atributos :attr:`~codeobject." +"co_filename` de los objetos de código resultantes se sobrescriben cuando el " +"nombre de archivo original queda obsoleto. Esto puede suceder si el archivo " +"ha cambiado de nombre, se ha movido o se accede a él a través de rutas " +"diferentes. (Parche de Ziga Seilnacht y Jean-Paul Calderone; :issue:" +"`1180193`)." #: ../Doc/whatsnew/2.7.rst:2416 msgid "" @@ -4920,15 +5155,15 @@ msgstr "" "correcciones de errores que pueden requerir cambios en su código:" #: ../Doc/whatsnew/2.7.rst:2444 -#, fuzzy msgid "" "The :func:`range` function processes its arguments more consistently; it " "will now call :meth:`~object.__int__` on non-float, non-integer arguments " "that are supplied to it. (Fixed by Alexander Belopolsky; :issue:`1533`.)" msgstr "" -"La función :func:`range` procesa sus argumentos de forma más consistente; " -"ahora llamará a :meth:`__int__` en los argumentos no flotantes y no enteros " -"que se le suministren. (Corregido por Alexander Belopolsky; :issue:`1533`.)" +"La función :func:`range` procesa sus argumentos de manera más consistente; " +"ahora llamará a :meth:`~object.__int__` en los argumentos que no sean " +"números flotantes ni enteros que se le proporcionen. (Corregido por " +"Alexander Belopolsky; :issue:`1533`)." #: ../Doc/whatsnew/2.7.rst:2449 msgid "" @@ -4943,7 +5178,6 @@ msgstr "" "Eric Smith; :issue:`5920`.)" #: ../Doc/whatsnew/2.7.rst:2454 -#, fuzzy msgid "" "Because of an optimization for the :keyword:`with` statement, the special " "methods :meth:`~object.__enter__` and :meth:`~object.__exit__` must belong " @@ -4951,14 +5185,13 @@ msgid "" "instance. This affects new-style classes (derived from :class:`object`) and " "C extension types. (:issue:`6101`.)" msgstr "" -"Debido a una optimización de la sentencia :keyword:`with`, los métodos " -"especiales :meth:`__enter__` y :meth:`__exit__` deben pertenecer al tipo del " -"objeto, y no pueden adjuntarse directamente a la instancia del objeto. Esto " -"afecta a las clases de nuevo estilo (derivadas de :class:`object`) y a los " -"tipos de extensión de C. (:issue:`6101`.)" +"Debido a una optimización de la declaración :keyword:`with`, los métodos " +"especiales :meth:`~object.__enter__` y :meth:`~object.__exit__` deben " +"pertenecer al tipo del objeto y no pueden adjuntarse directamente a la " +"instancia del objeto. Esto afecta a las clases de nuevo estilo (derivadas " +"de :class:`object`) y a los tipos de extensión de C. (:issue:`6101`)." #: ../Doc/whatsnew/2.7.rst:2460 -#, fuzzy msgid "" "Due to a bug in Python 2.6, the *exc_value* parameter to :meth:`~object." "__exit__` methods was often the string representation of the exception, not " @@ -4966,9 +5199,10 @@ msgid "" "expected. (Fixed by Florent Xicluna; :issue:`7853`.)" msgstr "" "Debido a un error en Python 2.6, el parámetro *exc_value* de los métodos :" -"meth:`__exit__` era a menudo la representación en cadena de la excepción, no " -"una instancia. Esto fue corregido en 2.7, así que *exc_value* será una " -"instancia como se esperaba. (Corregido por Florent Xicluna; :issue:`7853`.)" +"meth:`~object.__exit__` era a menudo la representación de cadena de la " +"excepción, no una instancia. Esto se solucionó en la versión 2.7, por lo que " +"*exc_value* será una instancia como se esperaba. (Solucionado por Florent " +"Xicluna; :issue:`7853`)." #: ../Doc/whatsnew/2.7.rst:2470 msgid "In the standard library:" @@ -5001,29 +5235,26 @@ msgstr "" "salida de sus programas. (Cambiado por Mark Dickinson; :issue:`6857`.)" #: ../Doc/whatsnew/2.7.rst:2490 -#, fuzzy msgid "" "The :mod:`xml.etree.ElementTree` library no longer escapes ampersands and " "angle brackets when outputting an XML processing instruction (which looks " "like ````) or comment (which looks like " "````). (Patch by Neil Muller; :issue:`2746`.)" msgstr "" -"La biblioteca ElementTree, :mod:`xml.etree`, ya no escapa los ampersands y " -"los paréntesis angulares cuando se emite una instrucción de procesamiento " -"XML (que tiene el aspecto de ````) o un " -"comentario (que tiene el aspecto de ````). (Parche de Neil " -"Muller; :issue:`2746`.)" +"La biblioteca :mod:`xml.etree.ElementTree` ya no omite los símbolos & y los " +"corchetes angulares al generar una instrucción de procesamiento XML (que se " +"parece a ````) o un comentario (que se " +"parece a ````). (Parche de Neil Muller; :issue:`2746`)." #: ../Doc/whatsnew/2.7.rst:2496 -#, fuzzy msgid "" "The :meth:`!readline` method of :class:`~io.StringIO` objects now does " "nothing when a negative length is requested, as other file-like objects do. " "(:issue:`7348`)." msgstr "" -"El método :meth:`~StringIO.StringIO.readline` de los objetos :class:" -"`~StringIO.StringIO` ahora no hace nada cuando se solicita una longitud " -"negativa, como hacen otros objetos tipo archivo. (:issue:`7348`)." +"El método :meth:`!readline` de los objetos :class:`~io.StringIO` ahora no " +"hace nada cuando se solicita una longitud negativa, como lo hacen otros " +"objetos similares a archivos. (:issue:`7348`)." #: ../Doc/whatsnew/2.7.rst:2539 msgid "For C extensions:" @@ -5040,22 +5271,20 @@ msgstr "" "en lugar de provocar un :exc:`DeprecationWarning` (:issue:`5080`)." #: ../Doc/whatsnew/2.7.rst:2545 -#, fuzzy msgid "" "Use the new :c:func:`PyOS_string_to_double` function instead of the old :c:" "func:`!PyOS_ascii_strtod` and :c:func:`!PyOS_ascii_atof` functions, which " "are now deprecated." msgstr "" "Utilice la nueva función :c:func:`PyOS_string_to_double` en lugar de las " -"antiguas funciones :c:func:`PyOS_ascii_strtod` y :c:func:`PyOS_ascii_atof`, " -"que ya están obsoletas." +"antiguas funciones :c:func:`!PyOS_ascii_strtod` y :c:func:`!" +"PyOS_ascii_atof`, que ahora están obsoletas." #: ../Doc/whatsnew/2.7.rst:2549 msgid "For applications that embed Python:" msgstr "Para aplicaciones que incrustan Python:" #: ../Doc/whatsnew/2.7.rst:2551 -#, fuzzy msgid "" "The :c:func:`!PySys_SetArgvEx` function was added, letting applications " "close a security hole when the existing :c:func:`!PySys_SetArgv` function " @@ -5063,11 +5292,11 @@ msgid "" "carefully consider whether the application should be using :c:func:`!" "PySys_SetArgvEx` with *updatepath* set to false." msgstr "" -"Se ha añadido la función :c:func:`PySys_SetArgvEx`, que permite a las " +"Se agregó la función :c:func:`!PySys_SetArgvEx`, que permite a las " "aplicaciones cerrar un agujero de seguridad cuando se utiliza la función :c:" -"func:`PySys_SetArgv` existente. Compruebe si está llamando a :c:func:" -"`PySys_SetArgv` y considere cuidadosamente si la aplicación debería estar " -"usando :c:func:`PySys_SetArgvEx` con *updatepath* establecido en false." +"func:`!PySys_SetArgv` existente. Verifique si está llamando a :c:func:`!" +"PySys_SetArgv` y considere cuidadosamente si la aplicación debería usar :c:" +"func:`!PySys_SetArgvEx` con *updatepath* configurado como falso." #: ../Doc/whatsnew/2.7.rst:2564 msgid "New Features Added to Python 2.7 Maintenance Releases" @@ -5104,18 +5333,17 @@ msgid "Two new environment variables for debug mode" msgstr "Dos nuevas variables de entorno para el modo de depuración" #: ../Doc/whatsnew/2.7.rst:2580 -#, fuzzy msgid "" "In debug mode, the ``[xxx refs]`` statistic is not written by default, the :" "envvar:`!PYTHONSHOWREFCOUNT` environment variable now must also be set. " "(Contributed by Victor Stinner; :issue:`31733`.)" msgstr "" -"En el modo de depuración, la estadística ``[xxx refs]`` no se escribe por " -"defecto, la variable de entorno :envvar:`PYTHONSHOWREFCOUNT` ahora también " -"debe ser establecida. (Contribución de Victor Stinner; :issue:`31733`.)" +"En el modo de depuración, la estadística ``[xxx refs]`` no se escribe de " +"manera predeterminada; ahora también se debe configurar la variable de " +"entorno :envvar:`!PYTHONSHOWREFCOUNT`. (Contribución de Victor Stinner; :" +"issue:`31733`)." #: ../Doc/whatsnew/2.7.rst:2584 -#, fuzzy msgid "" "When Python is compiled with ``COUNT_ALLOC`` defined, allocation counts are " "no longer dumped by default anymore: the :envvar:`!PYTHONSHOWALLOCCOUNT` " @@ -5124,10 +5352,10 @@ msgid "" "issue:`31692`.)" msgstr "" "Cuando Python se compila con ``COUNT_ALLOC`` definido, los recuentos de " -"asignaciones ya no se vuelcan por defecto: la variable de entorno :envvar:" -"`PYTHONSHOWALLOCCOUNT` ahora también debe ser establecida. Además, los " -"recuentos de asignación se vuelcan ahora en stderr, en lugar de en stdout. " -"(Contribución de Victor Stinner; :issue:`31692`.)" +"asignación ya no se vuelcan de forma predeterminada: ahora también se debe " +"configurar la variable de entorno :envvar:`!PYTHONSHOWALLOCCOUNT`. Además, " +"los recuentos de asignación ahora se vuelcan en stderr, en lugar de stdout. " +"(Contribuido por Victor Stinner; :issue:`31692`)." #: ../Doc/whatsnew/2.7.rst:2593 msgid "PEP 434: IDLE Enhancement Exception for All Branches" @@ -5206,15 +5434,14 @@ msgstr "" "Alex Gaynor; :issue:`21304`.)" #: ../Doc/whatsnew/2.7.rst:2626 -#, fuzzy msgid "" "OpenSSL 1.0.1h was upgraded for the official Windows installers published on " "python.org. (Contributed by Zachary Ware in :issue:`21671` for :cve:" "`2014-0224`.)" msgstr "" -"OpenSSL 1.0.1h fue actualizado para los instaladores oficiales de Windows " -"publicados en python.org. (contribuido por Zachary Ware en :issue:`21671` " -"para CVE-2014-0224)" +"OpenSSL 1.0.1h se actualizó para los instaladores oficiales de Windows " +"publicados en python.org. (Contribución de Zachary Ware en :issue:`21671` " +"para :cve:`2014-0224`.)" #: ../Doc/whatsnew/2.7.rst:2629 msgid ":pep:`466` related features added in Python 2.7.9:" @@ -5338,7 +5565,6 @@ msgstr "" "``py -m pip``." #: ../Doc/whatsnew/2.7.rst:2683 -#, fuzzy msgid "" "As :pep:`discussed in the PEP <0477#disabling-ensurepip-by-downstream-" "distributors>`, platform packagers may choose not to install these commands " @@ -5346,11 +5572,11 @@ msgid "" "directions on how to install them on that platform (usually using the system " "package manager)." msgstr "" -"`Como se discute en el PEP`__, los empaquetadores de plataformas pueden " -"optar por no instalar estos comandos por defecto, siempre y cuando, cuando " -"se invoquen, proporcionen instrucciones claras y sencillas sobre cómo " -"instalarlos en esa plataforma (normalmente utilizando el gestor de paquetes " -"del sistema)." +"Como en :pep:`discussed in the PEP <0477#disabling-ensurepip-by-downstream-" +"distributors>`, los empaquetadores de plataformas pueden elegir no instalar " +"estos comandos de forma predeterminada, siempre que, cuando se invoquen, " +"proporcionen instrucciones claras y simples sobre cómo instalarlos en esa " +"plataforma (generalmente usando el administrador de paquetes del sistema)." #: ../Doc/whatsnew/2.7.rst:2690 msgid "Documentation Changes" @@ -5373,15 +5599,14 @@ msgstr "" "org>`__ y la documentación de los proyectos individuales." #: ../Doc/whatsnew/2.7.rst:2700 -#, fuzzy msgid "" "However, as this migration is currently still incomplete, the legacy " "versions of those guides remaining available as :ref:`install-index` and :" "ref:`setuptools-index`." msgstr "" -"Sin embargo, como esta migración está aún incompleta, las versiones " -"anteriores de esas guías siguen disponibles como :ref:`install-index` y :ref:" -"`distutils-index`." +"Sin embargo, como esta migración aún no está completa, las versiones " +"anteriores de esas guías siguen estando disponibles como :ref:`install-" +"index` y :ref:`setuptools-index`." #: ../Doc/whatsnew/2.7.rst:2707 msgid ":pep:`453` -- Explicit bootstrapping of pip in Python installations" @@ -5403,7 +5628,6 @@ msgstr "" "clientes http stdlib" #: ../Doc/whatsnew/2.7.rst:2713 -#, fuzzy msgid "" ":pep:`476` updated :mod:`httplib ` and modules which use it, such as :" "mod:`urllib2 ` and :mod:`xmlrpclib `, to now " @@ -5412,13 +5636,13 @@ msgid "" "the hostname being requested by default, significantly improving security " "for many applications. This change was made in the Python 2.7.9 release." msgstr "" -":pep:`476` ha actualizado :mod:`httplib` y los módulos que lo utilizan, " -"como :mod:`urllib2` y :mod:`xmlrpclib`, para que ahora verifiquen que el " -"servidor presenta un certificado que está firmado por una Autoridad de " -"Certificación en el almacén de confianza de la plataforma y cuyo nombre de " -"host coincide con el nombre de host que se solicita por defecto, mejorando " -"significativamente la seguridad de muchas aplicaciones. Este cambio se " -"realizó en la versión 2.7.9 de Python." +":pep:`476` actualizó :mod:`httplib ` y los módulos que lo utilizan, " +"como :mod:`urllib2 ` y :mod:`xmlrpclib `, " +"para verificar que el servidor presente un certificado firmado por una " +"autoridad de certificación en el almacén de confianza de la plataforma y " +"cuyo nombre de host coincida con el nombre de host que se solicita de manera " +"predeterminada, lo que mejora significativamente la seguridad para muchas " +"aplicaciones. Este cambio se realizó en la versión Python 2.7.9." #: ../Doc/whatsnew/2.7.rst:2721 msgid "" @@ -5442,6 +5666,17 @@ msgid "" "\n" "urllib2.urlopen(\"https://invalid-cert\", context=context)" msgstr "" +"import urllib2\n" +"import ssl\n" +"\n" +"# This disables all verification\n" +"context = ssl._create_unverified_context()\n" +"\n" +"# This allows using a specific certificate for the host, which doesn't need\n" +"# to be in the trust store\n" +"context = ssl.create_default_context(cafile=\"/path/to/file.crt\")\n" +"\n" +"urllib2.urlopen(\"https://invalid-cert\", context=context)" #: ../Doc/whatsnew/2.7.rst:2738 msgid "PEP 493: HTTPS verification migration tools for Python 2.7" @@ -5486,16 +5721,15 @@ msgstr "" "por defecto de Python 2.7.8 y anteriores." #: ../Doc/whatsnew/2.7.rst:2755 -#, fuzzy msgid "" "For cases where the connection establishment code can't be modified, but the " "overall application can be, the new :func:`!ssl._https_verify_certificates` " "function can be used to adjust the default behaviour at runtime." msgstr "" -"Para los casos en los que el código de establecimiento de la conexión no " -"puede modificarse, pero sí la aplicación en general, la nueva función :func:" -"`ssl._https_verify_certificates` puede utilizarse para ajustar el " -"comportamiento por defecto en tiempo de ejecución." +"Para los casos en los que no se puede modificar el código de establecimiento " +"de conexión, pero sí la aplicación general, se puede utilizar la nueva " +"función :func:`!ssl._https_verify_certificates` para ajustar el " +"comportamiento predeterminado en tiempo de ejecución." #: ../Doc/whatsnew/2.7.rst:2761 msgid "New ``make regen-all`` build target" diff --git a/whatsnew/3.0.po b/whatsnew/3.0.po index 1724705def..5c09da2c37 100644 --- a/whatsnew/3.0.po +++ b/whatsnew/3.0.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2020-11-29 11:59-0300\n" "Last-Translator: \n" -"Language: es_ES\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_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.0.rst:3 @@ -129,6 +129,20 @@ msgid "" "Old: print (x, y) # prints repr((x, y))\n" "New: print((x, y)) # Not the same as print(x, y)!" msgstr "" +"Old: print \"The answer is\", 2*2\n" +"New: print(\"The answer is\", 2*2)\n" +"\n" +"Old: print x, # Trailing comma suppresses newline\n" +"New: print(x, end=\" \") # Appends a space instead of a newline\n" +"\n" +"Old: print # Prints a newline\n" +"New: print() # You must call the function!\n" +"\n" +"Old: print >>sys.stderr, \"fatal error\"\n" +"New: print(\"fatal error\", file=sys.stderr)\n" +"\n" +"Old: print (x, y) # prints repr((x, y))\n" +"New: print((x, y)) # Not the same as print(x, y)!" #: ../Doc/whatsnew/3.0.rst:116 msgid "You can also customize the separator between items, e.g.::" @@ -136,7 +150,7 @@ msgstr "También se puede personalizar el separador entre ítems, por ejemplo::" #: ../Doc/whatsnew/3.0.rst:118 msgid "print(\"There are <\", 2**32, \"> possibilities!\", sep=\"\")" -msgstr "" +msgstr "print(\"There are <\", 2**32, \"> possibilities!\", sep=\"\")" #: ../Doc/whatsnew/3.0.rst:120 msgid "which produces:" @@ -144,7 +158,7 @@ msgstr "que genera:" #: ../Doc/whatsnew/3.0.rst:122 msgid "There are <4294967296> possibilities!" -msgstr "" +msgstr "¡Hay <4294967296> posibilidades!" #: ../Doc/whatsnew/3.0.rst:126 msgid "Note:" @@ -611,13 +625,12 @@ msgstr "" "excepción de nombres de colaboradores en comentarios.)" #: ../Doc/whatsnew/3.0.rst:340 -#, fuzzy msgid "" "The :mod:`!StringIO` and :mod:`!cStringIO` modules are gone. Instead, " "import the :mod:`io` module and use :class:`io.StringIO` or :class:`io." "BytesIO` for text and data respectively." msgstr "" -"Los módulos :mod:`StringIO` and :mod:`cStringIO` ya no están. En su lugar, " +"Los módulos :mod:`!StringIO` and :mod:`!cStringIO` ya no están. En su lugar, " "se importa el módulo the :mod:`io` y se usa :class:`io.StringIO` o :class:" "`io.BytesIO` para texto y datos respectivamente." @@ -708,7 +721,7 @@ msgstr "" #: ../Doc/whatsnew/3.0.rst:383 msgid "(a, *rest, b) = range(5)" -msgstr "" +msgstr "(a, *rest, b) = range(5)" #: ../Doc/whatsnew/3.0.rst:385 msgid "This sets *a* to ``0``, *b* to ``4``, and *rest* to ``[1, 2, 3]``." @@ -805,6 +818,9 @@ msgid "" " __metaclass__ = M\n" " ..." msgstr "" +"clase C:\n" +"__metaclass__ = M\n" +"..." #: ../Doc/whatsnew/3.0.rst:426 msgid "you must now use::" @@ -815,6 +831,8 @@ msgid "" "class C(metaclass=M):\n" " ..." msgstr "" +"clase C(metaclase=M):\n" +"..." #: ../Doc/whatsnew/3.0.rst:431 msgid "" @@ -1089,7 +1107,6 @@ msgstr "" "revisión de cápsula:" #: ../Doc/whatsnew/3.0.rst:558 -#, fuzzy msgid "" "Many old modules were removed. Some, like :mod:`!gopherlib` (no longer " "used) and :mod:`!md5` (replaced by :mod:`hashlib`), were already deprecated " @@ -1098,16 +1115,15 @@ msgid "" "modules were also selected for removal in Python 3.0 due to lack of use or " "because a better replacement exists. See :pep:`3108` for an exhaustive list." msgstr "" -"Se eliminaron muchos módulos antiguos. Algunos, como :mod:`gopherlib` (ya no " -"se usa) y :mod:`md5` (reemplazado por :mod:`hashlib`), ya estaban en desuso " -"por :pep:`4`. Otros fueron eliminados como resultado de la eliminación de " -"soporte para varias plataformas como Irix, BeOS y Mac OS 9 (ver :pep:`11`). " -"Algunos módulos también fueron seleccionados para su eliminación en Python " -"3.0 debido a la falta de uso o porque existe un mejor reemplazo. Consultar :" -"pep:`3108` para obtener una lista exhaustiva." +"Se eliminaron muchos módulos antiguos. Algunos, como :mod:`!gopherlib` (que " +"ya no se utiliza) y :mod:`!md5` (reemplazado por :mod:`hashlib`), ya estaban " +"obsoletos en :pep:`4`. Otros se eliminaron como resultado de la eliminación " +"del soporte para varias plataformas, como Irix, BeOS y Mac OS 9 (consulte :" +"pep:`11`). También se seleccionaron algunos módulos para su eliminación en " +"Python 3.0 debido a la falta de uso o porque existe un mejor reemplazo. " +"Consulte :pep:`3108` para obtener una lista exhaustiva." #: ../Doc/whatsnew/3.0.rst:566 -#, fuzzy msgid "" "The :mod:`!bsddb3` package was removed because its presence in the core " "standard library has proved over time to be a particular burden for the core " @@ -1115,11 +1131,11 @@ msgid "" "However, the package is alive and well, externally maintained at https://www." "jcea.es/programacion/pybsddb.htm." msgstr "" -"El paquete :mod:`bsddb3` fue eliminado porque su presencia en la biblioteca " -"estándar principal ha demostrado con el tiempo ser una particular carga para " -"los desarrolladores principales, debido a la inestabilidad de las pruebas y " -"la programación del lanzamiento de Berkeley DB. Sin embargo, el paquete está " -"vivo y bien, mantenido externamente en https://www.jcea.es/programacion/" +"El paquete :mod:`!bsddb3` fue eliminado porque su presencia en la biblioteca " +"estándar principal ha demostrado con el tiempo ser una carga particular para " +"los desarrolladores principales debido a la inestabilidad de las pruebas y " +"al cronograma de lanzamiento de Berkeley DB. Sin embargo, el paquete está " +"activo y bien, mantenido externamente en https://www.jcea.es/programacion/" "pybsddb.htm." #: ../Doc/whatsnew/3.0.rst:572 @@ -1203,7 +1219,6 @@ msgid "test.support" msgstr "test.support" #: ../Doc/whatsnew/3.0.rst:588 -#, fuzzy msgid "" "A common pattern in Python 2.x is to have one version of a module " "implemented in pure Python, with an optional accelerated version implemented " @@ -1219,15 +1234,15 @@ msgid "" msgstr "" "Un patrón común en Python 2.x es tener una versión de un módulo implementado " "en Python puro, con una versión acelerada opcional implementada como una " -"extensión C; por ejemplo, :mod:`pickle` y :mod:`cPickle`. Esto coloca la " -"carga de importar la versión acelerada y volver a caer en la versión de " -"Python pura en cada usuario de estos módulos. En Python 3.0, las versiones " -"aceleradas se consideran detalles de implementación de las versiones puras " -"de Python. Los usuarios siempre deberían importar la versión estándar, que " -"intenta importar la versión acelerada y vuelve a la versión de Python pura. " -"El par :mod:`pickle` / :mod:`cPickle` recibió este tratamiento. El módulo :" -"mod:`profile` está en la lista para 3.1. El módulo :mod:`StringIO` se ha " -"convertido en una clase en el módulo :mod:`io`." +"extensión de C; por ejemplo, :mod:`pickle` y :mod:`!cPickle`. Esto hace que " +"la carga de importar la versión acelerada y recurrir a la versión Python " +"pura recaiga sobre cada usuario de estos módulos. En Python 3.0, las " +"versiones aceleradas se consideran detalles de implementación de las " +"versiones Python puras. Los usuarios siempre deben importar la versión " +"estándar, que intenta importar la versión acelerada y recurre a la versión " +"Python pura. El par :mod:`pickle` / :mod:`!cPickle` recibió este " +"tratamiento. El módulo :mod:`profile` está en la lista para 3.1. El módulo :" +"mod:`!StringIO` se ha convertido en una clase en el módulo :mod:`io`." #: ../Doc/whatsnew/3.0.rst:602 msgid "" @@ -1239,27 +1254,24 @@ msgstr "" "resultantes son:" #: ../Doc/whatsnew/3.0.rst:606 -#, fuzzy msgid "" ":mod:`dbm` (:mod:`!anydbm`, :mod:`!dbhash`, :mod:`!dbm`, :mod:`!dumbdbm`, :" "mod:`!gdbm`, :mod:`!whichdb`)." msgstr "" -":mod:`dbm` (:mod:`anydbm`, :mod:`dbhash`, :mod:`dbm`, :mod:`dumbdbm`, :mod:" -"`gdbm`, :mod:`whichdb`)." +":mod:`dbm` (:mod:`!anydbm`, :mod:`!dbhash`, :mod:`!dbm`, :mod:`!dumbdbm`, :" +"mod:`!gdbm`, :mod:`!whichdb`)." #: ../Doc/whatsnew/3.0.rst:609 -#, fuzzy msgid ":mod:`html` (:mod:`!HTMLParser`, :mod:`!htmlentitydefs`)." -msgstr ":mod:`html` (:mod:`HTMLParser`, :mod:`htmlentitydefs`)." +msgstr ":mod:`html` (:mod:`!HTMLParser`, :mod:`!htmlentitydefs`)." #: ../Doc/whatsnew/3.0.rst:611 -#, fuzzy msgid "" ":mod:`http` (:mod:`!httplib`, :mod:`!BaseHTTPServer`, :mod:`!" "CGIHTTPServer`, :mod:`!SimpleHTTPServer`, :mod:`!Cookie`, :mod:`!cookielib`)." msgstr "" -":mod:`http` (:mod:`httplib`, :mod:`BaseHTTPServer`, :mod:`CGIHTTPServer`, :" -"mod:`SimpleHTTPServer`, :mod:`Cookie`, :mod:`cookielib`)." +":mod:`http` (:mod:`!httplib`, :mod:`!BaseHTTPServer`, :mod:`!" +"CGIHTTPServer`, :mod:`!SimpleHTTPServer`, :mod:`!Cookie`, :mod:`!cookielib`)." #: ../Doc/whatsnew/3.0.rst:615 msgid "" @@ -1274,22 +1286,20 @@ msgstr "" "2.6, la funcionalidad de :mod:`turtle` se ha mejorado considerablemente." #: ../Doc/whatsnew/3.0.rst:620 -#, fuzzy msgid "" ":mod:`urllib` (:mod:`!urllib`, :mod:`!urllib2`, :mod:`!urlparse`, :mod:`!" "robotparse`)." msgstr "" -":mod:`urllib` (:mod:`urllib`, :mod:`urllib2`, :mod:`urlparse`, :mod:" -"`robotparse`)." +":mod:`urllib` (:mod:`!urllib`, :mod:`!urllib2`, :mod:`!urlparse`, :mod:`!" +"robotparse`)." #: ../Doc/whatsnew/3.0.rst:623 -#, fuzzy msgid "" ":mod:`xmlrpc` (:mod:`!xmlrpclib`, :mod:`!DocXMLRPCServer`, :mod:`!" "SimpleXMLRPCServer`)." msgstr "" -":mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`, :mod:" -"`SimpleXMLRPCServer`)." +":mod:`xmlrpc` (:mod:`!xmlrpclib`, :mod:`!DocXMLRPCServer`, :mod:`!" +"SimpleXMLRPCServer`)." #: ../Doc/whatsnew/3.0.rst:626 msgid "" @@ -1299,9 +1309,8 @@ msgstr "" "por :pep:`3108`:" #: ../Doc/whatsnew/3.0.rst:629 -#, fuzzy msgid "Killed :mod:`!sets`. Use the built-in :func:`set` class." -msgstr "Quitado :mod:`sets`. Usar la clase incorporada :func:`set`." +msgstr "Quitado :mod:`!sets`. Usar la clase incorporada :func:`set`." #: ../Doc/whatsnew/3.0.rst:631 msgid "" @@ -1334,24 +1343,22 @@ msgstr "" "func:`isCallable`." #: ../Doc/whatsnew/3.0.rst:645 -#, fuzzy msgid "" "Cleanup of the :mod:`!thread` module: :func:`!acquire_lock` and :func:`!" "release_lock` are gone; use :meth:`~threading.Lock.acquire` and :meth:" "`~threading.Lock.release` instead." msgstr "" -"Limpieza del módulo :mod:`thread`: :func:`acquire_lock` y :func:" -"`release_lock` ya no están; utilizar :func:`acquire` y :func:`release` en su " -"lugar." +"Limpieza del módulo :mod:`!thread`: :func:`!acquire_lock` y :func:`!" +"release_lock` han desaparecido; utilice :meth:`~threading.Lock.acquire` y :" +"meth:`~threading.Lock.release` en su lugar." #: ../Doc/whatsnew/3.0.rst:649 msgid "Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API." msgstr "Limpieza del módulo :mod:`random`: quitada la API :func:`jumpahead`." #: ../Doc/whatsnew/3.0.rst:651 -#, fuzzy msgid "The :mod:`!new` module is gone." -msgstr "El módulo :mod:`new` ya no está." +msgstr "El módulo :mod:`!new` ya no está." #: ../Doc/whatsnew/3.0.rst:653 msgid "" @@ -1472,7 +1479,6 @@ msgstr "" "attr:`args` en su lugar." #: ../Doc/whatsnew/3.0.rst:710 -#, fuzzy msgid "" ":pep:`3109`: Raising exceptions. You must now use :samp:`raise {Exception}" "({args})` instead of :samp:`raise {Exception}, {args}`. Additionally, you " @@ -1480,11 +1486,11 @@ msgid "" "this, you can assign directly to the :attr:`~BaseException.__traceback__` " "attribute (see below)." msgstr "" -":pep:`3109`: Lanzando excepciones. Ahora se debe usar :samp:`raise " -"{Exception}({args})` en lugar de :samp:`raise {Exception}, {args}`. " -"Adicionalmente, ya no se puede especificar explícitamente un traceback; en " -"su lugar, si se *debe* hacer esto, se puede asignar directamente al " -"atributo :attr:`__traceback__` (ver debajo)." +":pep:`3109`: Generación de excepciones. Ahora debe utilizar :samp:`raise " +"{Exception}({args})` en lugar de :samp:`raise {Exception}, {args}`. Además, " +"ya no puede especificar explícitamente un seguimiento; en su lugar, si desea " +"hacerlo, puede asignarlo directamente al atributo :attr:`~BaseException." +"__traceback__` (consulte a continuación)." #: ../Doc/whatsnew/3.0.rst:716 msgid "" @@ -1499,7 +1505,6 @@ msgstr "" "eliminada cuando el bloque :keyword:`except` se deja." #: ../Doc/whatsnew/3.0.rst:722 -#, fuzzy msgid "" ":pep:`3134`: Exception chaining. There are two cases: implicit chaining and " "explicit chaining. Implicit chaining happens when an exception is raised in " @@ -1509,21 +1514,21 @@ msgid "" "saved as the :attr:`~BaseException.__context__` attribute of the secondary " "exception. Explicit chaining is invoked with this syntax::" msgstr "" -":pep:`3134`: Encadenamiento de excepciones. Hay dos casos: encadenamiento " -"implícito y encadenamiento explícito. El encadenamiento implícito se produce " -"cuando se lanza una excepción en un bloque de controlador :keyword:`except` " -"o :keyword:`finally`. Esto suele ocurrir debido a un error en el bloque de " -"controlador; llamamos a esto una excepción *secundaria*. En este caso, la " -"excepción original (que se estaba controlando) se guarda como el atributo :" -"attr:`__context__` de la excepción secundaria. El encadenamiento explícito " -"se invoca con esta sintaxis:" +":pep:`3134`: encadenamiento de excepciones. Existen dos casos: " +"encadenamiento implícito y encadenamiento explícito. El encadenamiento " +"implícito se produce cuando se genera una excepción en un bloque de " +"controlador :keyword:`except` o :keyword:`finally`. Esto suele ocurrir " +"debido a un error en el bloque de controlador; lo llamamos excepción " +"*secondary*. En este caso, la excepción original (que se estaba manejando) " +"se guarda como el atributo :attr:`~BaseException.__context__` de la " +"excepción secundaria. El encadenamiento explícito se invoca con esta " +"sintaxis:" #: ../Doc/whatsnew/3.0.rst:731 msgid "raise SecondaryException() from primary_exception" -msgstr "" +msgstr "generar SecondaryException() desde primary_exception" #: ../Doc/whatsnew/3.0.rst:733 -#, fuzzy msgid "" "(where *primary_exception* is any expression that produces an exception " "object, probably an exception that was previously caught). In this case, the " @@ -1535,16 +1540,16 @@ msgid "" "users may recognize this behavior.)" msgstr "" "(donde *primary_exception* es cualquier expresión que produce un objeto de " -"excepción, probablemente una excepción que se detectó anteriormente). En " -"este caso, la excepción principal se almacena en el atributo :attr:" -"`__cause__` de la excepción secundaria. El traceback impreso recorre la " -"cadena de atributos :attr:`__cause__` y :attr:`__context__` cuando se " -"produce una excepción no controlada e imprime un traceback independiente " -"para cada componente de la cadena, con la excepción principal en la parte " -"superior. (Los usuarios de Java pueden reconocer este comportamiento.)" +"excepción, probablemente una excepción que se detectó previamente). En este " +"caso, la excepción principal se almacena en el atributo :attr:" +"`~BaseException.__cause__` de la excepción secundaria. El seguimiento que se " +"imprime cuando se produce una excepción no controlada recorre la cadena de " +"atributos :attr:`!__cause__` y :attr:`~BaseException.__context__` e imprime " +"un seguimiento independiente para cada componente de la cadena, con la " +"excepción principal en la parte superior. (Los usuarios de Java pueden " +"reconocer este comportamiento)." #: ../Doc/whatsnew/3.0.rst:743 -#, fuzzy msgid "" ":pep:`3134`: Exception objects now store their traceback as the :attr:" "`~BaseException.__traceback__` attribute. This means that an exception " @@ -1552,10 +1557,11 @@ msgid "" "there are fewer reasons to use :func:`sys.exc_info` (though the latter is " "not removed)." msgstr "" -":pep:`3134`: Los objetos de excepción ahora almacenan su traceback como el " -"atributo :attr:`__traceback__`. Esto significa que un objeto de excepción " -"ahora contiene toda la información relativa a una excepción y hay menos " -"razones para usar :func:`sys.exc_info` (aunque este último no se quita)." +":pep:`3134`: Los objetos de excepción ahora almacenan su seguimiento como " +"atributo :attr:`~BaseException.__traceback__`. Esto significa que un objeto " +"de excepción ahora contiene toda la información relacionada con una " +"excepción y hay menos razones para usar :func:`sys.exc_info` (aunque este " +"último no se ha eliminado)." #: ../Doc/whatsnew/3.0.rst:749 msgid "" @@ -1629,7 +1635,6 @@ msgid "Removed support for :attr:`__members__` and :attr:`__methods__`." msgstr "Soporte eliminado para :attr:`__members__` y :attr:`__methods__`." #: ../Doc/whatsnew/3.0.rst:783 -#, fuzzy msgid "" "The function attributes named :attr:`!func_X` have been renamed to use the :" "attr:`!__X__` form, freeing up these names in the function attribute " @@ -1640,19 +1645,19 @@ msgid "" "__defaults__`, :attr:`~function.__dict__`, :attr:`~function.__doc__`, :attr:" "`~function.__globals__`, :attr:`~function.__name__`, respectively." msgstr "" -"Se ha cambiado el nombre de los atributos de función denominados :attr:" -"`func_X` para utilizar el formulario :data:`__X__`, liberando estos nombres " -"en el espacio de nombres de atributo de función para los atributos definidos " -"por el usuario. Es decir, :attr:`func_closure`, :attr:`func_code`, :attr:" -"`func_defaults`, :attr:`func_dict`, :attr:`func_doc`, :attr:`func_globals`, :" -"attr:`func_name` se renombraron a :attr:`__closure__`, :attr:`__code__`, :" -"attr:`__defaults__`, :attr:`~object.__dict__`, :attr:`__doc__`, :attr:" -"`__globals__`, :attr:`~definition.__name__`, respectivamente." +"Los atributos de función denominados :attr:`!func_X` se han renombrado para " +"utilizar el formato :attr:`!__X__`, lo que libera estos nombres en el " +"espacio de nombres de atributos de función para los atributos definidos por " +"el usuario. Es decir, :attr:`!func_closure`, :attr:`!func_code`, :attr:`!" +"func_defaults`, :attr:`!func_dict`, :attr:`!func_doc`, :attr:`!" +"func_globals`, :attr:`!func_name` se renombraron a :attr:`~function." +"__closure__`, :attr:`~function.__code__`, :attr:`~function.__defaults__`, :" +"attr:`~function.__dict__`, :attr:`~function.__doc__`, :attr:`~function." +"__globals__`, :attr:`~function.__name__`, respectivamente." #: ../Doc/whatsnew/3.0.rst:794 -#, fuzzy msgid ":meth:`!__nonzero__` is now :meth:`~object.__bool__`." -msgstr ":meth:`__nonzero__` ahora es :meth:`__bool__`." +msgstr ":meth:`!__nonzero__` ahora es :meth:`~object.__bool__`." #: ../Doc/whatsnew/3.0.rst:797 msgid "Builtins" @@ -1769,9 +1774,8 @@ msgstr "" "keyword:`for` explícito es más legible." #: ../Doc/whatsnew/3.0.rst:845 -#, fuzzy msgid "Removed :func:`reload`. Use :func:`!imp.reload`." -msgstr "Se eliminó :func:`reload`. Se utiliza :func:`imp.reload`." +msgstr "Se eliminó :func:`reload`. Se utiliza :func:`!imp.reload`." #: ../Doc/whatsnew/3.0.rst:847 msgid "" @@ -1817,13 +1821,12 @@ msgid "No more C API support for restricted execution." msgstr "No más compatibilidad con API C para ejecución restringida." #: ../Doc/whatsnew/3.0.rst:870 -#, fuzzy msgid "" ":c:func:`!PyNumber_Coerce`, :c:func:`!PyNumber_CoerceEx`, :c:func:`!" "PyMember_Get`, and :c:func:`!PyMember_Set` C APIs are removed." msgstr "" -"Las API C :c:func:`PyNumber_Coerce`, :c:func:`PyNumber_CoerceEx`, :c:func:" -"`PyMember_Get`, y :c:func:`PyMember_Set` se eliminan." +"Las API C :c:func:`!PyNumber_Coerce`, :c:func:`!PyNumber_CoerceEx`, :c:func:" +"`!PyMember_Get`, y :c:func:`!PyMember_Set` se eliminan." #: ../Doc/whatsnew/3.0.rst:873 msgid "" @@ -1844,12 +1847,11 @@ msgstr "" "``nb_nonzero`` ahora es ``nb_bool``." #: ../Doc/whatsnew/3.0.rst:880 -#, fuzzy msgid "" "Removed :c:macro:`!METH_OLDARGS` and :c:macro:`!WITH_CYCLE_GC` from the C " "API." msgstr "" -"Se eliminó :c:macro:`METH_OLDARGS` y :c:macro:`WITH_CYCLE_GC` de la API C." +"Se eliminó :c:macro:`!METH_OLDARGS` y :c:macro:`!WITH_CYCLE_GC` de la API C." #: ../Doc/whatsnew/3.0.rst:886 msgid "Performance" @@ -1908,17 +1910,15 @@ msgstr "" "advertencias y todas las pruebas sigan pasando." #: ../Doc/whatsnew/3.0.rst:915 -#, fuzzy msgid "" "Run the ``2to3`` source-to-source translator over your source code tree. " "Run the result of the translation under Python 3.0. Manually fix up any " "remaining issues, fixing problems until all tests pass again." msgstr "" -"Ejecutar el traductor de origen a origen ``2to3`` sobre el árbol de código " -"fuente. (Consultar :ref:`2to3-reference` para obtener más información sobre " -"esta herramienta.) Ejecutar el resultado de la traducción en Python 3.0. " -"Corregir manualmente los problemas restantes, solucionando problemas hasta " -"que todos las pruebas vuelvan a pasar." +"Ejecute el traductor de código fuente a código fuente ``2to3`` sobre su " +"árbol de código fuente. Ejecute el resultado de la traducción en Python 3.0. " +"Corrija manualmente los problemas restantes hasta que se aprueben todas las " +"pruebas nuevamente." #: ../Doc/whatsnew/3.0.rst:920 msgid "" diff --git a/whatsnew/3.1.po b/whatsnew/3.1.po index be5dca7951..91a6faffe7 100644 --- a/whatsnew/3.1.po +++ b/whatsnew/3.1.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2020-10-22 15:48+0200\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.1.rst:3 @@ -47,16 +47,16 @@ msgstr "PEP 372: Diccionarios ordenados" #: ../Doc/whatsnew/3.1.rst:56 msgid "" -"Regular Python dictionaries iterate over key/value pairs in arbitrary order. " -"Over the years, a number of authors have written alternative implementations " -"that remember the order that the keys were originally inserted. Based on " -"the experiences from those implementations, a new :class:`collections." -"OrderedDict` class has been introduced." +"Regular Python dictionaries iterate over key/value pairs in arbitrary order." +" Over the years, a number of authors have written alternative " +"implementations that remember the order that the keys were originally " +"inserted. Based on the experiences from those implementations, a new " +":class:`collections.OrderedDict` class has been introduced." msgstr "" "Los diccionarios de Python normales iteran sobre los pares clave/valor en " "orden arbitrario. A través de los años, varios autores han escrito " -"implementaciones alternativas que recuerdan el orden en el que se insertaron " -"originalmente las claves. Basándose en las experiencias de esas " +"implementaciones alternativas que recuerdan el orden en el que se insertaron" +" originalmente las claves. Basándose en las experiencias de esas " "implementaciones, una nueva clase :class:`collections.OrderedDict` ha sido " "introducida." @@ -68,10 +68,10 @@ msgid "" "original insertion position is left unchanged. Deleting an entry and " "reinserting it will move it to the end." msgstr "" -"La API de OrderedDict es sustancialmente la misma que la de los diccionarios " -"normales, pero iterará sobre las claves y los valores en un orden " -"garantizado, dependiendo de cuándo se insertó una clave por primera vez. Si " -"una nueva entrada sobrescribe una entrada existente, la posición de " +"La API de OrderedDict es sustancialmente la misma que la de los diccionarios" +" normales, pero iterará sobre las claves y los valores en un orden " +"garantizado, dependiendo de cuándo se insertó una clave por primera vez. Si" +" una nueva entrada sobrescribe una entrada existente, la posición de " "inserción original se deja sin cambios. Eliminar una entrada y volver a " "insertarla la moverá hasta el final." @@ -89,13 +89,14 @@ msgid "" msgstr "" "La biblioteca estándar ahora admite el uso de diccionarios ordenados en " "varios módulos. El módulo :mod:`configparser` los usa por defecto. Esto " -"permite leer, modificar y volver a escribir los archivos de configuración en " -"su orden original. El método *_asdict()* para :func:`collections.namedtuple` " -"ahora devuelve un diccionario ordenado con los valores que aparecen en el " -"mismo orden que los índices de tupla subyacentes. El módulo :mod:`json` se " -"está construyendo con un *object_pairs_hook* para permitir que el " -"decodificador construya OrderedDicts. También se agregó soporte para " -"herramientas de terceros como `PyYAML `_." +"permite leer, modificar y volver a escribir los archivos de configuración en" +" su orden original. El método *_asdict()* para " +":func:`collections.namedtuple` ahora devuelve un diccionario ordenado con " +"los valores que aparecen en el mismo orden que los índices de tupla " +"subyacentes. El módulo :mod:`json` se está construyendo con un " +"*object_pairs_hook* para permitir que el decodificador construya " +"OrderedDicts. También se agregó soporte para herramientas de terceros como " +"`PyYAML `_." #: ../Doc/whatsnew/3.1.rst:80 msgid ":pep:`372` - Ordered Dictionaries" @@ -103,17 +104,19 @@ msgstr ":pep:`372` - Diccionarios ordenados" #: ../Doc/whatsnew/3.1.rst:80 msgid "" -"PEP written by Armin Ronacher and Raymond Hettinger. Implementation written " -"by Raymond Hettinger." +"PEP written by Armin Ronacher and Raymond Hettinger. Implementation written" +" by Raymond Hettinger." msgstr "" "PEP escrito por Armin Ronacher y Raymond Hettinger. Implementación escrita " "por Raymond Hettinger." #: ../Doc/whatsnew/3.1.rst:83 msgid "" -"Since an ordered dictionary remembers its insertion order, it can be used in " -"conjunction with sorting to make a sorted dictionary::" +"Since an ordered dictionary remembers its insertion order, it can be used in" +" conjunction with sorting to make a sorted dictionary::" msgstr "" +"Dado que un diccionario ordenado recuerda su orden de inserción, se puede " +"utilizar junto con la ordenación para crear un diccionario ordenado:" #: ../Doc/whatsnew/3.1.rst:86 msgid "" @@ -132,6 +135,20 @@ msgid "" ">>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))\n" "OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])" msgstr "" +">>> # diccionario regular sin clasificar\n" +">>> d = {'banana': 3, 'manzana':4, 'pera': 1, 'naranja': 2}\n" +"\n" +">>> # diccionario ordenado por clave\n" +">>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))\n" +"OrderedDict([('manzana', 4), ('banana', 3), ('naranja', 2), ('pera', 1)])\n" +"\n" +">>> # diccionario ordenado por valor\n" +">>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))\n" +"OrderedDict([('pera', 1), ('naranja', 2), ('banana', 3), ('manzana', 4)])\n" +"\n" +">>> # diccionario ordenado por longitud de la clave cadena\n" +">>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))\n" +"OrderedDict([('pera', 1), ('manzana', 4), ('naranja', 2), ('banana', 3)])" #: ../Doc/whatsnew/3.1.rst:101 msgid "" @@ -139,6 +156,9 @@ msgid "" "deleted. But when new keys are added, the keys are appended to the end and " "the sort is not maintained." msgstr "" +"Los nuevos diccionarios ordenados mantienen su orden de clasificación cuando" +" se eliminan entradas, pero cuando se agregan nuevas claves, estas se " +"agregan al final y no se mantiene el orden." #: ../Doc/whatsnew/3.1.rst:107 msgid "PEP 378: Format Specifier for Thousands Separator" @@ -146,14 +166,14 @@ msgstr "PEP 378: Especificador de formato para el separador de miles" #: ../Doc/whatsnew/3.1.rst:109 msgid "" -"The built-in :func:`format` function and the :meth:`str.format` method use a " -"mini-language that now includes a simple, non-locale aware way to format a " +"The built-in :func:`format` function and the :meth:`str.format` method use a" +" mini-language that now includes a simple, non-locale aware way to format a " "number with a thousands separator. That provides a way to humanize a " "program's output, improving its professional appearance and readability::" msgstr "" -"La función incorporada :func:`format` y el método :meth:`str.format` usan un " -"mini-lenguaje que ahora incluye una forma simple, que no tiene en cuenta la " -"configuración regional, de formatear un número con un separador de miles. " +"La función incorporada :func:`format` y el método :meth:`str.format` usan un" +" mini-lenguaje que ahora incluye una forma simple, que no tiene en cuenta la" +" configuración regional, de formatear un número con un separador de miles. " "Eso proporciona una manera de humanizar la salida de un programa, mejorando " "su apariencia profesional y legibilidad::" @@ -168,26 +188,34 @@ msgid "" ">>> format(Decimal('1234567.89'), ',f')\n" "'1,234,567.89'" msgstr "" +">>> formato(1234567, ',d')\n" +"'1,234,567'\n" +">>> formato(1234567.89, ',.2f')\n" +"'1,234,567.89'\n" +">>> formato(12345.6 + 8901234.12j, ',f')\n" +"'12,345.600000+8,901,234.120000j'\n" +">>> formato(Decimal('1234567.89'), ',f')\n" +"'1,234,567.89'" #: ../Doc/whatsnew/3.1.rst:123 msgid "" -"The supported types are :class:`int`, :class:`float`, :class:`complex` and :" -"class:`decimal.Decimal`." +"The supported types are :class:`int`, :class:`float`, :class:`complex` and " +":class:`decimal.Decimal`." msgstr "" -"Los tipos soportados son :class:`int`, :class:`float`, :class:`complex` y :" -"class:`decimal.Decimal`." +"Los tipos soportados son :class:`int`, :class:`float`, :class:`complex` y " +":class:`decimal.Decimal`." #: ../Doc/whatsnew/3.1.rst:126 msgid "" "Discussions are underway about how to specify alternative separators like " -"dots, spaces, apostrophes, or underscores. Locale-aware applications should " -"use the existing *n* format specifier which already has some support for " +"dots, spaces, apostrophes, or underscores. Locale-aware applications should" +" use the existing *n* format specifier which already has some support for " "thousands separators." msgstr "" "Se está discutiendo cómo especificar separadores alternativos como puntos, " "espacios, apóstrofos o guiones bajos. Las aplicaciones que reconocen la " -"configuración regional deben usar el especificador de formato *n* existente, " -"que ya es compatible con el separadores de miles." +"configuración regional deben usar el especificador de formato *n* existente," +" que ya es compatible con el separadores de miles." #: ../Doc/whatsnew/3.1.rst:134 msgid ":pep:`378` - Format Specifier for Thousands Separator" @@ -212,16 +240,16 @@ msgstr "Algunos cambios pequeños en el núcleo del lenguaje Python son:" #: ../Doc/whatsnew/3.1.rst:143 msgid "" "Directories and zip archives containing a :file:`__main__.py` file can now " -"be executed directly by passing their name to the interpreter. The directory/" -"zipfile is automatically inserted as the first entry in sys.path. " -"(Suggestion and initial patch by Andy Chu; revised patch by Phillip J. Eby " -"and Nick Coghlan; :issue:`1739468`.)" +"be executed directly by passing their name to the interpreter. The " +"directory/zipfile is automatically inserted as the first entry in sys.path." +" (Suggestion and initial patch by Andy Chu; revised patch by Phillip J. Eby" +" and Nick Coghlan; :issue:`1739468`.)" msgstr "" "Los directorios y archivos zip que contienen un archivo :file:`__main__.py` " -"pueden ahora ser ejecutados directamente pasando su nombre al intérprete. El " -"directorio/archivo zip es automáticamente insertado como la primera entrada " -"en sys.path. (Sugerencia y parche inicial por Andy Chu; parche revisado por " -"Phillip J. Eby y Nick Coghlan; :issue:`1739468`.)" +"pueden ahora ser ejecutados directamente pasando su nombre al intérprete. El" +" directorio/archivo zip es automáticamente insertado como la primera entrada" +" en sys.path. (Sugerencia y parche inicial por Andy Chu; parche revisado " +"por Phillip J. Eby y Nick Coghlan; :issue:`1739468`.)" #: ../Doc/whatsnew/3.1.rst:149 msgid "" @@ -244,14 +272,24 @@ msgid "" ">>> (n+1).bit_length()\n" "124" msgstr "" +">>> n = 37\n" +">>> bin(37)\n" +"'0b100101'\n" +">>> n.bit_length()\n" +"6\n" +">>> n = 2**123-1\n" +">>> n.bit_length()\n" +"123\n" +">>> (n+1).bit_length()\n" +"124" #: ../Doc/whatsnew/3.1.rst:163 msgid "" "(Contributed by Fredrik Johansson, Victor Stinner, Raymond Hettinger, and " "Mark Dickinson; :issue:`3439`.)" msgstr "" -"(Contribución de Fredrik Johansson, Victor Stinner, Raymond Hettinger y Mark " -"Dickinson; :issue:`3439`.)" +"(Contribución de Fredrik Johansson, Victor Stinner, Raymond Hettinger y Mark" +" Dickinson; :issue:`3439`.)" #: ../Doc/whatsnew/3.1.rst:166 msgid "" @@ -265,11 +303,13 @@ msgid "" ">>> 'Sir {} of {}'.format('Gallahad', 'Camelot')\n" "'Sir Gallahad of Camelot'" msgstr "" +">>> 'Señor {} de {}'.format('Gallahad', 'Camelot')\n" +"'Sir Gallahad de Camelot'" #: ../Doc/whatsnew/3.1.rst:172 msgid "" -"Formerly, the string would have required numbered fields such as: ``'Sir {0} " -"of {1}'``." +"Formerly, the string would have required numbered fields such as: ``'Sir {0}" +" of {1}'``." msgstr "" "Anteriormente, la cadena requería campos numerados como: ``'Sir {0} of " "{1}'``." @@ -279,21 +319,20 @@ msgid "(Contributed by Eric Smith; :issue:`5237`.)" msgstr "(Contribución de Eric Smith; :issue:`5237`.)" #: ../Doc/whatsnew/3.1.rst:177 -#, fuzzy msgid "" "The :func:`!string.maketrans` function is deprecated and is replaced by new " "static methods, :meth:`bytes.maketrans` and :meth:`bytearray.maketrans`. " -"This change solves the confusion around which types were supported by the :" -"mod:`string` module. Now, :class:`str`, :class:`bytes`, and :class:" -"`bytearray` each have their own **maketrans** and **translate** methods with " -"intermediate translation tables of the appropriate type." -msgstr "" -"La función :func:`string.maketrans` está en desuso y se reemplaza por nuevos " -"métodos estáticos, :meth:`bytes.maketrans` y :meth:`bytearray.maketrans`. " -"Este cambio resuelve la confusión en torno a los tipos que fueron soportados " -"por 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." +"This change solves the confusion around which types were supported by the " +":mod:`string` module. Now, :class:`str`, :class:`bytes`, and " +":class:`bytearray` each have their own **maketrans** and **translate** " +"methods with intermediate translation tables of the appropriate type." +msgstr "" +"La función :func:`!string.maketrans` ha quedado obsoleta y se ha reemplazado" +" por nuevos 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.1.rst:184 msgid "(Contributed by Georg Brandl; :issue:`5675`.)" @@ -304,8 +343,8 @@ msgid "" "The syntax of the :keyword:`with` statement now allows multiple context " "managers in a single statement::" msgstr "" -"La sintaxis de la sentencia :keyword:`with` ahora permite múltiples gestores " -"de contexto en una sola declaración::" +"La sintaxis de la sentencia :keyword:`with` ahora permite múltiples gestores" +" de contexto en una sola declaración::" #: ../Doc/whatsnew/3.1.rst:189 msgid "" @@ -314,14 +353,17 @@ 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.1.rst:194 -#, fuzzy msgid "" "With the new syntax, the :func:`!contextlib.nested` function is no longer " "needed and is now deprecated." msgstr "" -"Con la nueva sintaxis, la función :func:`contextlib.nested` ya no es " +"Con la nueva sintaxis, la función :func:`!contextlib.nested` ya no es " "necesaria y ahora está obsoleta." #: ../Doc/whatsnew/3.1.rst:197 @@ -345,25 +387,25 @@ msgid "" ">>> round(1123, -2)\n" "1100" msgstr "" +">>> redondear(1123, -2)\n" +"1100" #: ../Doc/whatsnew/3.1.rst:206 msgid "(Contributed by Mark Dickinson; :issue:`4707`.)" msgstr "(Contribución de Mark Dickinson; :issue:`4707`.)" #: ../Doc/whatsnew/3.1.rst:208 -#, fuzzy msgid "" "Python now uses David Gay's algorithm for finding the shortest floating-" "point representation that doesn't change its value. This should help " "mitigate some of the confusion surrounding binary floating-point numbers." msgstr "" "Python ahora utiliza el algoritmo de David Gay para encontrar la " -"representación de coma flotante más corta que no cambia su valor. Esto " -"debería ayudar a mitigar parte de la confusión que rodea a los números de " -"coma flotante binarios." +"representación de punto flotante más corta que no cambia su valor. Esto " +"debería ayudar a mitigar parte de la confusión que rodea a los números " +"binarios de punto flotante." #: ../Doc/whatsnew/3.1.rst:213 -#, fuzzy msgid "" "The significance is easily seen with a number like ``1.1`` which does not " "have an exact equivalent in binary floating point. Since there is no exact " @@ -373,34 +415,33 @@ msgid "" "nearest value was and still is used in subsequent floating-point " "calculations." msgstr "" -"La importancia se ve fácilmente con un número como ``1.1``, que no tiene un " -"equivalente exacto en coma flotante binaria. Puesto que no hay un " +"La importancia se aprecia fácilmente con un número como ``1.1``, que no " +"tiene un equivalente exacto en coma flotante binaria. Como no hay un " "equivalente exacto, una expresión como ``float('1.1')`` se evalúa como el " "valor representable más cercano, que es ``0x1.199999999999ap+0`` en " "hexadecimal o ``1.100000000000000088817841970012523233890533447265625`` en " -"decimal. Ese valor más cercano fue y todavía es utilizado en los cálculos de " -"coma flotante posteriores." +"decimal. Ese valor más cercano se utilizó y todavía se utiliza en cálculos " +"de coma flotante posteriores." #: ../Doc/whatsnew/3.1.rst:221 -#, fuzzy msgid "" "What is new is how the number gets displayed. Formerly, Python used a " "simple approach. The value of ``repr(1.1)`` was computed as ``format(1.1, " "'.17g')`` which evaluated to ``'1.1000000000000001'``. The advantage of " "using 17 digits was that it relied on IEEE-754 guarantees to assure that " "``eval(repr(1.1))`` would round-trip exactly to its original value. The " -"disadvantage is that many people found the output to be confusing (mistaking " -"intrinsic limitations of binary floating-point representation as being a " +"disadvantage is that many people found the output to be confusing (mistaking" +" intrinsic limitations of binary floating-point representation as being a " "problem with Python itself)." msgstr "" -"La novedad es cómo se muestra el número. Anteriormente, Python usaba un " -"enfoque simple. El valor de ``repr(1.1)`` se calculaba como ``format(1.1, " -"'.17g')`` que era evaluado como ``'1.1000000000000001'``. La ventaja de " -"utilizar 17 dígitos era que se basaba en las garantías de IEEE-754 para " -"asegurar que ``eval(repr(1.1))`` se volviera a redondear exactamente a su " -"valor original. La desventaja es que muchas personas encontraban el " -"resultado confuso (confundiendo las limitaciones intrínsecas de la " -"representación de coma flotante binaria con un problema con Python en sí)." +"Lo nuevo es cómo se muestra el número. Anteriormente, Python utilizaba un " +"enfoque simple. El valor de ``repr(1.1)`` se calculaba como ``format(1.1, " +"'.17g')``, que se evaluaba como ``'1.1000000000000001'``. La ventaja de " +"utilizar 17 dígitos era que dependía de las garantías IEEE-754 para asegurar" +" que ``eval(repr(1.1))`` regresaría exactamente a su valor original. La " +"desventaja es que muchas personas encontraron que el resultado era confuso " +"(confundiendo las limitaciones intrínsecas de la representación binaria de " +"punto flotante con un problema del propio Python)." #: ../Doc/whatsnew/3.1.rst:230 msgid "" @@ -411,8 +452,8 @@ msgid "" msgstr "" "El nuevo algoritmo para ``repr(1.1)`` es más inteligente y retorna " "``'1.1'``. Efectivamente, busca todas las representaciones de cadenas " -"equivalentes (las que se almacenan con el mismo valor flotante subyacente) y " -"retorna la representación más corta." +"equivalentes (las que se almacenan con el mismo valor flotante subyacente) y" +" retorna la representación más corta." #: ../Doc/whatsnew/3.1.rst:235 msgid "" @@ -421,12 +462,11 @@ msgid "" "``1.1 + 2.2 != 3.3`` even though the representations may suggest otherwise." msgstr "" "El nuevo algoritmo tiende a emitir representaciones más limpias cuando es " -"posible, pero esto no cambia los valores subyacentes. Por lo tanto, todavía " -"se da el caso ``1.1 + 2.2 != 3.3``, aún cuando las representaciones puedan " +"posible, pero esto no cambia los valores subyacentes. Por lo tanto, todavía" +" se da el caso ``1.1 + 2.2 != 3.3``, aún cuando las representaciones puedan " "sugerir lo contrario." #: ../Doc/whatsnew/3.1.rst:239 -#, fuzzy msgid "" "The new algorithm depends on certain features in the underlying floating-" "point implementation. If the required features are not found, the old " @@ -434,10 +474,10 @@ msgid "" "cross-platform portability by using the old algorithm." msgstr "" "El nuevo algoritmo depende de ciertas características de la implementación " -"de coma flotante subyacente. Si no se encuentran las características " -"necesarias, el algoritmo antiguo seguirá utilizándose. Además, los " -"protocolos de pickle de texto aseguran la portabilidad multiplataforma " -"mediante el algoritmo antiguo." +"de punto flotante subyacente. Si no se encuentran las características " +"requeridas, se seguirá utilizando el algoritmo antiguo. Además, los " +"protocolos de pickle de texto garantizan la portabilidad entre plataformas " +"mediante el uso del algoritmo antiguo." #: ../Doc/whatsnew/3.1.rst:244 msgid "(Contributed by Eric Smith and Mark Dickinson; :issue:`1580`)" @@ -449,8 +489,8 @@ msgstr "Módulos nuevos, mejorados y obsoletos" #: ../Doc/whatsnew/3.1.rst:249 msgid "" -"Added a :class:`collections.Counter` class to support convenient counting of " -"unique items in a sequence or iterable::" +"Added a :class:`collections.Counter` class to support convenient counting of" +" unique items in a sequence or iterable::" msgstr "" "Se ha añadido una clase :class:`collections.Counter` para admitir el " "recuento conveniente de elementos únicos en una secuencia o una iteración::" @@ -460,6 +500,8 @@ msgid "" ">>> Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])\n" "Counter({'blue': 3, 'red': 2, 'green': 1})" msgstr "" +">>> Contador(['rojo', 'azul', 'rojo', 'verde', 'azul', 'azul'])\n" +"Contador({'azul': 3, 'rojo': 2, 'verde': 1})" #: ../Doc/whatsnew/3.1.rst:255 msgid "(Contributed by Raymond Hettinger; :issue:`1696199`.)" @@ -471,8 +513,8 @@ msgid "" "set. The basic idea of ttk is to separate, to the extent possible, the code " "implementing a widget's behavior from the code implementing its appearance." msgstr "" -"Se ha añadido un nuevo módulo :mod:`tkinter.ttk` para acceder al conjunto de " -"widgets temáticos de Tk. La idea básica de ttk es separar, dentro de lo " +"Se ha añadido un nuevo módulo :mod:`tkinter.ttk` para acceder al conjunto de" +" widgets temáticos de Tk. La idea básica de ttk es separar, dentro de lo " "posible, el código que implementa el comportamiento de un widget del código " "que implementa su apariencia." @@ -494,6 +536,9 @@ msgid "" ">>> with gzip.GzipFile(filename, \"wb\") as f:\n" "... f.write(b\"xxx\")" msgstr "" +">>> # Cerrar automáticamente el archivo después de escribir\n" +">>> con gzip.GzipFile(filename, \"wb\") como f:\n" +"... f.write(b\"xxx\")" #: ../Doc/whatsnew/3.1.rst:270 msgid "(Contributed by Antoine Pitrou.)" @@ -501,9 +546,9 @@ msgstr "(Contribución de Antoine Pitrou.)" #: ../Doc/whatsnew/3.1.rst:272 msgid "" -"The :mod:`decimal` module now supports methods for creating a decimal object " -"from a binary :class:`float`. The conversion is exact but can sometimes be " -"surprising::" +"The :mod:`decimal` module now supports methods for creating a decimal object" +" from a binary :class:`float`. The conversion is exact but can sometimes be" +" surprising::" msgstr "" "El módulo :mod:`decimal` ahora admite métodos para crear un objeto decimal " "de un :class:`float` binario. La conversión es exacta pero puede ser a " @@ -514,6 +559,8 @@ msgid "" ">>> Decimal.from_float(1.1)\n" "Decimal('1.100000000000000088817841970012523233890533447265625')" msgstr "" +">>> Decimal.from_float(1.1)\n" +"Decimal('1.100000000000000088817841970012523233890533447265625')" #: ../Doc/whatsnew/3.1.rst:279 msgid "" @@ -531,21 +578,21 @@ msgstr "(Contribución de Raymond Hettinger y Mark Dickinson.)" #: ../Doc/whatsnew/3.1.rst:285 msgid "" -"The :mod:`itertools` module grew two new functions. The :func:`itertools." -"combinations_with_replacement` function is one of four for generating " -"combinatorics including permutations and Cartesian products. The :func:" -"`itertools.compress` function mimics its namesake from APL. Also, the " -"existing :func:`itertools.count` function now has an optional *step* " -"argument and can accept any type of counting sequence including :class:" -"`fractions.Fraction` and :class:`decimal.Decimal`::" +"The :mod:`itertools` module grew two new functions. The " +":func:`itertools.combinations_with_replacement` function is one of four for " +"generating combinatorics including permutations and Cartesian products. The" +" :func:`itertools.compress` function mimics its namesake from APL. Also, " +"the existing :func:`itertools.count` function now has an optional *step* " +"argument and can accept any type of counting sequence including " +":class:`fractions.Fraction` and :class:`decimal.Decimal`::" msgstr "" -"El módulo :mod:`itertools` desarrolló dos nuevas funciones. La función :" -"func:`itertools.combinations_with_replacement` es una de las cuatro para " +"El módulo :mod:`itertools` desarrolló dos nuevas funciones. La función " +":func:`itertools.combinations_with_replacement` es una de las cuatro para " "generar combinatorias que incluyen permutaciones y productos cartesianos. " "La función :func:`itertools.compress` imita su homónimo de APL. Además, la " "función existente :func:`itertools.count` tiene ahora un argumento *step* " -"opcional y puede aceptar cualquier tipo de secuencia de conteo, incluyendo :" -"class:`fractions.Fraction` y :class:`decimal.Decimal`::" +"opcional y puede aceptar cualquier tipo de secuencia de conteo, incluyendo " +":class:`fractions.Fraction` y :class:`decimal.Decimal`::" #: ../Doc/whatsnew/3.1.rst:294 msgid "" @@ -559,6 +606,15 @@ msgid "" ">>> [next(c), next(c), next(c), next(c)]\n" "[Fraction(1, 2), Fraction(2, 3), Fraction(5, 6), Fraction(1, 1)]" msgstr "" +">>> [p+q para p,q en combinaciones_con_reemplazo('LOVE', 2)]\n" +"['LL', 'LO', 'LV', 'LE', 'OO', 'OV', 'OE', 'VV', 'VE', 'EE']\n" +"\n" +">>> lista(comprimir(datos=rango(10), selectores=[0,0,1,1,0,1,0,1,0,0]))\n" +"[2, 3, 5, 7]\n" +"\n" +">>> c = conteo(inicio=Fracción(1,2), paso=Fracción(1,6))\n" +">>> [siguiente(c), siguiente(c), siguiente(c), siguiente(c)]\n" +"[Fracción(1, 2), Fracción(2, 3), Fracción(5, 6), Fracción(1, 1)]" #: ../Doc/whatsnew/3.1.rst:304 msgid "(Contributed by Raymond Hettinger.)" @@ -567,15 +623,15 @@ msgstr "(Contribución de Raymond Hettinger.)" #: ../Doc/whatsnew/3.1.rst:306 msgid "" ":func:`collections.namedtuple` now supports a keyword argument *rename* " -"which lets invalid fieldnames be automatically converted to positional names " -"in the form _0, _1, etc. This is useful when the field names are being " +"which lets invalid fieldnames be automatically converted to positional names" +" in the form _0, _1, etc. This is useful when the field names are being " "created by an external source such as a CSV header, SQL field list, or user " "input::" msgstr "" ":func:`collections.namedtuple` ahora admite un argumento de palabra clave " "*rename* que permite que los campos de nombre inválidos se conviertan " -"automáticamente en nombres posicionados de la forma _0, _1, etc. Esto es de " -"utilidad cuando los nombres del campo están siendo creados por una fuente " +"automáticamente en nombres posicionados de la forma _0, _1, etc. Esto es de" +" utilidad cuando los nombres del campo están siendo creados por una fuente " "externa como un encabezado CSV, una lista de campos SQL, o la entrada del " "usuario::" @@ -592,6 +648,16 @@ msgid "" " UserQuery(region='North', dept='Accounting', _2=37),\n" " UserQuery(region='West', dept='Sales', _2=419)]" msgstr "" +">>> consulta = entrada()\n" +"SELECT región, departamento, count(*) FROM main GROUPBY region, dept\n" +"\n" +">>> cursor.execute(query)\n" +">>> query_fields = [desc[0] for desc in cursor.description]\n" +">>> UserQuery = namedtuple('UserQuery', query_fields, rename=True)\n" +">>> pprint.pprint([UserQuery(*row) para la fila en el cursor])\n" +"[UserQuery(región='Sur', departamento='Envíos', _2=185),\n" +"UserQuery(región='Norte', departamento='Contabilidad', _2=37),\n" +"UserQuery(región='Oeste', departamento='Ventas', _2=419)]" #: ../Doc/whatsnew/3.1.rst:323 msgid "(Contributed by Raymond Hettinger; :issue:`1818`.)" @@ -611,22 +677,25 @@ msgstr "(Contribución de Gregory Smith.)" #: ../Doc/whatsnew/3.1.rst:330 msgid "" -"The :mod:`logging` module now implements a simple :class:`logging." -"NullHandler` class for applications that are not using logging but are " -"calling library code that does. Setting-up a null handler will suppress " -"spurious warnings such as \"No handlers could be found for logger foo\"::" -msgstr "" -"El módulo :mod:`logging` ahora implementa una clase simple :class:`logging." -"NullHandler` para aplicaciones que no utilizan el registro pero llaman al " -"código de una biblioteca que si lo hace. La configuración de un controlador " -"nulo suprimirá las advertencias falsas como \"No handlers could be found for " +"The :mod:`logging` module now implements a simple " +":class:`logging.NullHandler` class for applications that are not using " +"logging but are calling library code that does. Setting-up a null handler " +"will suppress spurious warnings such as \"No handlers could be found for " "logger foo\"::" +msgstr "" +"El módulo :mod:`logging` ahora implementa una clase simple " +":class:`logging.NullHandler` para aplicaciones que no utilizan el registro " +"pero llaman al código de una biblioteca que si lo hace. La configuración de" +" un controlador nulo suprimirá las advertencias falsas como \"No handlers " +"could be found for logger foo\"::" #: ../Doc/whatsnew/3.1.rst:335 msgid "" ">>> h = logging.NullHandler()\n" ">>> logging.getLogger(\"foo\").addHandler(h)" msgstr "" +">>> h = registro.NullHandler()\n" +">>> registro.getLogger(\"foo\").addHandler(h)" #: ../Doc/whatsnew/3.1.rst:338 msgid "(Contributed by Vinay Sajip; :issue:`4384`)." @@ -648,11 +717,12 @@ msgstr "(Contribución de Andi Vajda; :issue:`4195`.)" #: ../Doc/whatsnew/3.1.rst:346 msgid "" -"The :mod:`pdb` module can now access and display source code loaded via :mod:" -"`zipimport` (or any other conformant :pep:`302` loader)." +"The :mod:`pdb` module can now access and display source code loaded via " +":mod:`zipimport` (or any other conformant :pep:`302` loader)." msgstr "" "El módulo :mod:`pdb` puede ahora acceder y mostrar el código fuente cargado " -"a través de :mod:`zipimport` (o cualquier otro cargador conforme :pep:`302`)." +"a través de :mod:`zipimport` (o cualquier otro cargador conforme " +":pep:`302`)." #: ../Doc/whatsnew/3.1.rst:349 msgid "(Contributed by Alexander Belopolsky; :issue:`4201`.)" @@ -686,13 +756,13 @@ msgstr "(Contribución de David Laban; :issue:`4739`.)" #: ../Doc/whatsnew/3.1.rst:361 msgid "" -"The :mod:`unittest` module now supports skipping individual tests or classes " -"of tests. And it supports marking a test as an expected failure, a test that " -"is known to be broken, but shouldn't be counted as a failure on a " +"The :mod:`unittest` module now supports skipping individual tests or classes" +" of tests. And it supports marking a test as an expected failure, a test " +"that is known to be broken, but shouldn't be counted as a failure on a " "TestResult::" msgstr "" -"El módulo :mod:`unittest` ahora admite saltear pruebas individuales o clases " -"de pruebas. Y admite marcar una prueba como una falla esperada, una prueba " +"El módulo :mod:`unittest` ahora admite saltear pruebas individuales o clases" +" de pruebas. Y admite marcar una prueba como una falla esperada, una prueba " "que se sabe que está rota, pero que no debe contarse como una falla en un " "TestResult::" @@ -700,8 +770,7 @@ msgstr "" msgid "" "class TestGizmo(unittest.TestCase):\n" "\n" -" @unittest.skipUnless(sys.platform.startswith(\"win\"), \"requires " -"Windows\")\n" +" @unittest.skipUnless(sys.platform.startswith(\"win\"), \"requires Windows\")\n" " def test_gizmo_on_windows(self):\n" " ...\n" "\n" @@ -709,6 +778,15 @@ msgid "" " def test_gimzo_without_required_library(self):\n" " ..." msgstr "" +"clase TestGizmo(unittest.TestCase):\n" +"\n" +"@unittest.skipUnless(sys.platform.startswith(\"win\"), \"requiere Windows\")\n" +"def test_gizmo_on_windows(self):\n" +"...\n" +"\n" +"@unittest.expectedFailure\n" +"def test_gimzo_without_required_library(self):\n" +"..." #: ../Doc/whatsnew/3.1.rst:376 msgid "" @@ -724,57 +802,67 @@ msgid "" " with self.assertRaises(ZeroDivisionError):\n" " x / 0" msgstr "" +"def test_division_by_zero(self):\n" +"con self.assertRaises(ZeroDivisionError):\n" +"x / 0" #: ../Doc/whatsnew/3.1.rst:383 -#, fuzzy -msgid "" -"In addition, several new assertion methods were added including :meth:" -"`~unittest.TestCase.assertSetEqual`, :meth:`~unittest.TestCase." -"assertDictEqual`, :meth:`!assertDictContainsSubset`, :meth:`~unittest." -"TestCase.assertListEqual`, :meth:`~unittest.TestCase.assertTupleEqual`, :" -"meth:`~unittest.TestCase.assertSequenceEqual`, :meth:`assertRaisesRegexp() " -"`, :meth:`~unittest.TestCase." -"assertIsNone`, and :meth:`~unittest.TestCase.assertIsNotNone`." -msgstr "" -"Además, se agregaron varios métodos de aserción nuevos, incluyendo :func:" -"`assertSetEqual`, :func:`assertDictEqual`, :func:" -"`assertDictContainsSubset`, :func:`assertListEqual`, :func:" -"`assertTupleEqual`, :func:`assertSequenceEqual`, :func:" -"`assertRaisesRegexp`, :func:`assertIsNone`, y :func:`assertIsNotNone`." +msgid "" +"In addition, several new assertion methods were added including " +":meth:`~unittest.TestCase.assertSetEqual`, " +":meth:`~unittest.TestCase.assertDictEqual`, " +":meth:`!assertDictContainsSubset`, " +":meth:`~unittest.TestCase.assertListEqual`, " +":meth:`~unittest.TestCase.assertTupleEqual`, " +":meth:`~unittest.TestCase.assertSequenceEqual`, :meth:`assertRaisesRegexp() " +"`, " +":meth:`~unittest.TestCase.assertIsNone`, and " +":meth:`~unittest.TestCase.assertIsNotNone`." +msgstr "" +"Además, se agregaron varios métodos de afirmación nuevos, incluidos " +":meth:`~unittest.TestCase.assertSetEqual`, " +":meth:`~unittest.TestCase.assertDictEqual`, " +":meth:`!assertDictContainsSubset`, " +":meth:`~unittest.TestCase.assertListEqual`, " +":meth:`~unittest.TestCase.assertTupleEqual`, " +":meth:`~unittest.TestCase.assertSequenceEqual`, :meth:`assertRaisesRegexp() " +"`, " +":meth:`~unittest.TestCase.assertIsNone` y " +":meth:`~unittest.TestCase.assertIsNotNone`." #: ../Doc/whatsnew/3.1.rst:394 msgid "(Contributed by Benjamin Peterson and Antoine Pitrou.)" msgstr "(Contribución de Benjamin Peterson y Antoine Pitrou.)" #: ../Doc/whatsnew/3.1.rst:396 -#, fuzzy msgid "" -"The :mod:`io` module has three new constants for the :meth:`~io.IOBase.seek` " -"method: :data:`~os.SEEK_SET`, :data:`~os.SEEK_CUR`, and :data:`~os.SEEK_END`." +"The :mod:`io` module has three new constants for the :meth:`~io.IOBase.seek`" +" method: :data:`~os.SEEK_SET`, :data:`~os.SEEK_CUR`, and " +":data:`~os.SEEK_END`." msgstr "" -"El módulo :mod:`io` tiene tres nuevas constantes para el método :meth:" -"`seek`: :data:`SEEK_SET`, :data:`SEEK_CUR` y :data:`SEEK_END`." +"El módulo :mod:`io` tiene tres nuevas constantes para el método " +":meth:`~io.IOBase.seek`: :data:`~os.SEEK_SET`, :data:`~os.SEEK_CUR` y " +":data:`~os.SEEK_END`." #: ../Doc/whatsnew/3.1.rst:399 -#, fuzzy msgid "The :data:`sys.version_info` tuple is now a named tuple::" -msgstr "La tupla :attr:`sys.version_info` es ahora una tupla nombrada::" +msgstr "La tupla :data:`sys.version_info` ahora es una tupla con nombre:" #: ../Doc/whatsnew/3.1.rst:401 msgid "" ">>> sys.version_info\n" "sys.version_info(major=3, minor=1, micro=0, releaselevel='alpha', serial=2)" msgstr "" +">>> sys.version_info\n" +"sys.version_info(mayor=3, menor=1, micro=0, nivel de versión='alfa', serial=2)" #: ../Doc/whatsnew/3.1.rst:404 msgid "(Contributed by Ross Light; :issue:`4285`.)" msgstr "(Contribución de Ross Light; :issue:`4285`.)" #: ../Doc/whatsnew/3.1.rst:406 -#, fuzzy msgid "The :mod:`!nntplib` and :mod:`imaplib` modules now support IPv6." -msgstr "" -"Los módulos :mod:`nntplib` y :mod:`imaplib` ahora tienen soporte de IPv6." +msgstr "Los módulos :mod:`!nntplib` y :mod:`imaplib` ahora admiten IPv6." #: ../Doc/whatsnew/3.1.rst:408 msgid "(Contributed by Derek Morr; :issue:`1655` and :issue:`1664`.)" @@ -789,16 +877,16 @@ msgid "" "Python 3. This change confounded efforts to share data between different " "versions of Python. But now when protocol 2 or lower is selected, the " "pickler will automatically use the old Python 2 names for both loading and " -"dumping. This remapping is turned-on by default but can be disabled with the " -"*fix_imports* option::" +"dumping. This remapping is turned-on by default but can be disabled with the" +" *fix_imports* option::" msgstr "" "El módulo :mod:`pickle` ha sido adaptado para una mejor interoperabilidad " -"con 2.x cuando es usado con un protocolo 2 o menor. La reorganización de la " -"biblioteca estándar cambió la referencia formal para varios objetos. Por " +"con 2.x cuando es usado con un protocolo 2 o menor. La reorganización de la" +" biblioteca estándar cambió la referencia formal para varios objetos. Por " "ejemplo, ``__builtin__.set`` en Python 2 es llamado ``builtins.set`` en " "Python 3. Este cambio confundió los esfuerzos de compartir datos entre " -"diferentes versiones de Python. Pero ahora cuando el protocolo 2 o menor es " -"seleccionado, el pickler va a usar automáticamente los nombres antiguos de " +"diferentes versiones de Python. Pero ahora cuando el protocolo 2 o menor es" +" seleccionado, el pickler va a usar automáticamente los nombres antiguos de " "Python 2 tanto para carga como para volcado. Esta reasignación es activada " "de manera predeterminada pero puede ser desactivada con la opción " "*fix_imports*::" @@ -811,14 +899,19 @@ msgid "" ">>> pickle.dumps(s, protocol=0, fix_imports=False)\n" "b'cbuiltins\\nset\\np0\\n((lp1\\nL1L\\naL2L\\naL3L\\natp2\\nRp3\\n.'" msgstr "" +">>> s = {1, 2, 3}\n" +">>> pickle.dumps(s, protocolo=0)\n" +"b'c__builtin__\\nestablecer\\np0\\n((lp1\\nL1L\\naL2L\\naL3L\\natp2\\nRp3\\n.'\n" +">>> pickle.dumps(s, protocolo=0, fix_imports=False)\n" +"b'cbuiltins\\nestablecer\\np0\\n((lp1\\nL1L\\naL2L\\naL3L\\natp2\\nRp3\\n.'" #: ../Doc/whatsnew/3.1.rst:426 msgid "" -"An unfortunate but unavoidable side-effect of this change is that protocol 2 " -"pickles produced by Python 3.1 won't be readable with Python 3.0. The latest " -"pickle protocol, protocol 3, should be used when migrating data between " -"Python 3.x implementations, as it doesn't attempt to remain compatible with " -"Python 2.x." +"An unfortunate but unavoidable side-effect of this change is that protocol 2" +" pickles produced by Python 3.1 won't be readable with Python 3.0. The " +"latest pickle protocol, protocol 3, should be used when migrating data " +"between Python 3.x implementations, as it doesn't attempt to remain " +"compatible with Python 2.x." msgstr "" "Un efecto secundario, desafortunado pero inevitable, de este cambio es que " "los pickles del protocolo 2 producidos con Python 3.1 no serán legibles con " @@ -834,17 +927,17 @@ msgstr "" #: ../Doc/whatsnew/3.1.rst:434 msgid "" -"A new module, :mod:`importlib` was added. It provides a complete, portable, " -"pure Python reference implementation of the :keyword:`import` statement and " -"its counterpart, the :func:`__import__` function. It represents a " +"A new module, :mod:`importlib` was added. It provides a complete, portable," +" pure Python reference implementation of the :keyword:`import` statement and" +" its counterpart, the :func:`__import__` function. It represents a " "substantial step forward in documenting and defining the actions that take " "place during imports." msgstr "" "Se agregó un nuevo módulo, :mod:`importlib`. Proporciona una implementación " -"de referencia de Python completa, portátil y pura de la instrucción :keyword:" -"`import` y su contraparte, la función :func:`__import__` . Representa un " -"avance sustancial en la documentación y definición de las acciones que " -"tienen lugar durante las importaciones." +"de referencia de Python completa, portátil y pura de la instrucción " +":keyword:`import` y su contraparte, la función :func:`__import__` . " +"Representa un avance sustancial en la documentación y definición de las " +"acciones que tienen lugar durante las importaciones." #: ../Doc/whatsnew/3.1.rst:440 msgid "(Contributed by Brett Cannon.)" @@ -860,8 +953,8 @@ msgstr "Se han agregado importantes mejoras de rendimiento:" #: ../Doc/whatsnew/3.1.rst:447 msgid "" -"The new I/O library (as defined in :pep:`3116`) was mostly written in Python " -"and quickly proved to be a problematic bottleneck in Python 3.0. In Python " +"The new I/O library (as defined in :pep:`3116`) was mostly written in Python" +" and quickly proved to be a problematic bottleneck in Python 3.0. In Python " "3.1, the I/O library has been entirely rewritten in C and is 2 to 20 times " "faster depending on the task at hand. The pure Python version is still " "available for experimentation purposes through the ``_pyio`` module." @@ -881,8 +974,8 @@ msgstr "(Contribución de Amaury Forgeot d'Arc y Antoine Pitrou.)" msgid "" "Added a heuristic so that tuples and dicts containing only untrackable " "objects are not tracked by the garbage collector. This can reduce the size " -"of collections and therefore the garbage collection overhead on long-running " -"programs, depending on their particular use of datatypes." +"of collections and therefore the garbage collection overhead on long-running" +" programs, depending on their particular use of datatypes." msgstr "" "Se ha añadido una heurística para que el recolector de basura no realice el " "seguimiento de tuplas y diccionarios que contengan solo objetos no " @@ -897,23 +990,23 @@ msgstr "(Contribución de Antoine Pitrou, :issue:`4688`.)" #: ../Doc/whatsnew/3.1.rst:463 msgid "" "Enabling a configure option named ``--with-computed-gotos`` on compilers " -"that support it (notably: gcc, SunPro, icc), the bytecode evaluation loop is " -"compiled with a new dispatch mechanism which gives speedups of up to 20%, " +"that support it (notably: gcc, SunPro, icc), the bytecode evaluation loop is" +" compiled with a new dispatch mechanism which gives speedups of up to 20%, " "depending on the system, the compiler, and the benchmark." msgstr "" -"Habilitando una opción de configuración llamada ``--with-computed-gotos`` en " -"compiladores que la admiten (en particular: gcc, SunPro, icc), el ciclo de " +"Habilitando una opción de configuración llamada ``--with-computed-gotos`` en" +" compiladores que la admiten (en particular: gcc, SunPro, icc), el ciclo de " "evaluación del bytecode se compila con un nuevo mecanismo de despacho que " "proporciona aceleraciones de hasta un 20% , dependiendo del sistema, del " "compilador y del punto de referencia." #: ../Doc/whatsnew/3.1.rst:469 msgid "" -"(Contributed by Antoine Pitrou along with a number of other participants, :" -"issue:`4753`)." +"(Contributed by Antoine Pitrou along with a number of other participants, " +":issue:`4753`)." msgstr "" -"(Contribución de Antoine Pitrou junto con varios otros participantes, :issue:" -"`4753`)." +"(Contribución de Antoine Pitrou junto con varios otros participantes, " +":issue:`4753`)." #: ../Doc/whatsnew/3.1.rst:472 msgid "" @@ -931,16 +1024,16 @@ msgstr "" #: ../Doc/whatsnew/3.1.rst:477 msgid "" "The :mod:`json` module now has a C extension to substantially improve its " -"performance. In addition, the API was modified so that json works only " -"with :class:`str`, not with :class:`bytes`. That change makes the module " -"closely match the `JSON specification `_ which is defined " -"in terms of Unicode." +"performance. In addition, the API was modified so that json works only with" +" :class:`str`, not with :class:`bytes`. That change makes the module " +"closely match the `JSON specification `_ which is defined" +" in terms of Unicode." msgstr "" "El módulo :mod:`json` ahora tiene una extensión C para mejorar " "sustancialmente su rendimiento. Además, se modificó la API para que json " "funcione solo con :class:`str`, no con :class:`bytes`. Ese cambio hace que " -"el módulo coincida estrechamente con el `JSON specification `_ que se define en términos de Unicode." +"el módulo coincida estrechamente con el `JSON specification " +"`_ que se define en términos de Unicode." #: ../Doc/whatsnew/3.1.rst:483 msgid "" @@ -955,8 +1048,8 @@ msgid "" "Unpickling now interns the attribute names of pickled objects. This saves " "memory and allows pickles to be smaller." msgstr "" -"La deserialización (*unpickling*) ahora interna los nombres de los atributos " -"de los objetos serializados (*pickled*). Esto ahorra memoria y permite que " +"La deserialización (*unpickling*) ahora interna los nombres de los atributos" +" de los objetos serializados (*pickled*). Esto ahorra memoria y permite que " "los pickles sean más pequeños." #: ../Doc/whatsnew/3.1.rst:489 @@ -993,24 +1086,23 @@ msgid "" "Integers are now stored internally either in base ``2**15`` or in base " "``2**30``, the base being determined at build time. Previously, they were " "always stored in base ``2**15``. Using base ``2**30`` gives significant " -"performance improvements on 64-bit machines, but benchmark results on 32-bit " -"machines have been mixed. Therefore, the default is to use base ``2**30`` " -"on 64-bit machines and base ``2**15`` on 32-bit machines; on Unix, there's a " -"new configure option ``--enable-big-digits`` that can be used to override " +"performance improvements on 64-bit machines, but benchmark results on 32-bit" +" machines have been mixed. Therefore, the default is to use base ``2**30`` " +"on 64-bit machines and base ``2**15`` on 32-bit machines; on Unix, there's a" +" new configure option ``--enable-big-digits`` that can be used to override " "this default." msgstr "" "Los enteros ahora se almacenan internamente en base 2**15 o en base 2**30, " "la base se determina en el momento de la construcción. Anteriormente, " "siempre se almacenaban en base 2**15. El uso de base 2**30 ofrece mejoras " -"significativas en el rendimiento en máquinas de 64 bits, pero los resultados " -"de las pruebas comparativas en máquinas de 32 bits han sido diversos. Por lo " -"tanto, el valor predeterminado es usar base 2**30 en máquinas de 64 bits y " -"base 2**15 en máquinas de 32 bits; en Unix, hay una nueva opción de " +"significativas en el rendimiento en máquinas de 64 bits, pero los resultados" +" de las pruebas comparativas en máquinas de 32 bits han sido diversos. Por " +"lo tanto, el valor predeterminado es usar base 2**30 en máquinas de 64 bits " +"y base 2**15 en máquinas de 32 bits; en Unix, hay una nueva opción de " "configuración ``--enable-big-digits`` que puede ser usada para sobre " "escribir este valor predeterminado." #: ../Doc/whatsnew/3.1.rst:513 -#, fuzzy msgid "" "Apart from the performance improvements this change should be invisible to " "end users, with one exception: for testing and debugging purposes there's a " @@ -1018,11 +1110,11 @@ msgid "" "format, giving the number of bits per digit and the size in bytes of the C " "type used to store each digit::" msgstr "" -"Aparte de las mejoras de rendimiento, este cambio debería ser invisible para " -"los usuarios finales, con una excepción: para propósitos de prueba y " -"depuración, hay un nuevo :attr:`sys.int_info` que proporciona información " -"sobre el formato interno, dando el número de bits por dígito y el tamaño en " -"bytes del tipo C utilizado para almacenar cada dígito::" +"Aparte de las mejoras de rendimiento, este cambio debería ser invisible para" +" los usuarios finales, con una excepción: para fines de prueba y depuración " +"hay un nuevo :data:`sys.int_info` que proporciona información sobre el " +"formato interno, dando el número de bits por dígito y el tamaño en bytes del" +" tipo C utilizado para almacenar cada dígito:" #: ../Doc/whatsnew/3.1.rst:519 msgid "" @@ -1030,6 +1122,9 @@ msgid "" ">>> sys.int_info\n" "sys.int_info(bits_per_digit=30, sizeof_digit=4)" msgstr "" +">>> import sys\n" +">>> sys.int_info\n" +"sys.int_info(bits_per_digit=30, sizeof_digit=4)" #: ../Doc/whatsnew/3.1.rst:523 msgid "(Contributed by Mark Dickinson; :issue:`4258`.)" @@ -1041,54 +1136,51 @@ msgid "" "*pylong* by raising :exc:`OverflowError` instead of :exc:`TypeError`." msgstr "" "La función :c:func:`PyLong_AsUnsignedLongLong()` es ahora capaz de manejar " -"un *pylong* negativo lanzando una excepción :exc:`OverflowError` en lugar " -"de :exc:`TypeError`." +"un *pylong* negativo lanzando una excepción :exc:`OverflowError` en lugar de" +" :exc:`TypeError`." #: ../Doc/whatsnew/3.1.rst:528 msgid "(Contributed by Mark Dickinson and Lisandro Dalcrin; :issue:`5175`.)" msgstr "(Contribución de Mark Dickinson y Lisandro Dalcrin; :issue:`5175`.)" #: ../Doc/whatsnew/3.1.rst:530 -#, fuzzy msgid "" "Deprecated :c:func:`!PyNumber_Int`. Use :c:func:`PyNumber_Long` instead." msgstr "" -":c:func:`PyNumber_Int` está ahora obsoleto. Utilice :c:func:`PyNumber_Long` " -"en su lugar." +":c:func:`!PyNumber_Int` está ahora obsoleto. Utilice " +":c:func:`PyNumber_Long` en su lugar." #: ../Doc/whatsnew/3.1.rst:532 msgid "(Contributed by Mark Dickinson; :issue:`4910`.)" msgstr "(Contribución de Mark Dickinson; :issue:`4910`.)" #: ../Doc/whatsnew/3.1.rst:534 -#, fuzzy msgid "" "Added a new :c:func:`PyOS_string_to_double` function to replace the " -"deprecated functions :c:func:`!PyOS_ascii_strtod` and :c:func:`!" -"PyOS_ascii_atof`." +"deprecated functions :c:func:`!PyOS_ascii_strtod` and " +":c:func:`!PyOS_ascii_atof`." msgstr "" -"Se agrega una nueva función :c:func:`PyOS_string_to_double` para reemplazar " -"las funciones obsoletas :c:func:`PyOS_ascii_strtod` y :c:func:" -"`PyOS_ascii_atof`." +"Se agregó una nueva función :c:func:`PyOS_string_to_double` para reemplazar " +"las funciones obsoletas :c:func:`!PyOS_ascii_strtod` y " +":c:func:`!PyOS_ascii_atof`." #: ../Doc/whatsnew/3.1.rst:537 msgid "(Contributed by Mark Dickinson; :issue:`5914`.)" msgstr "(Contribución de Mark Dickinson; :issue:`5914`.)" #: ../Doc/whatsnew/3.1.rst:539 -#, fuzzy msgid "" -"Added :c:type:`PyCapsule` as a replacement for the :c:type:`!PyCObject` API. " -"The principal difference is that the new type has a well defined interface " +"Added :c:type:`PyCapsule` as a replacement for the :c:type:`!PyCObject` API." +" The principal difference is that the new type has a well defined interface " "for passing typing safety information and a less complicated signature for " "calling a destructor. The old type had a problematic API and is now " "deprecated." msgstr "" -"Se agrega :c:type:`PyCapsule` como un reemplazo para la API :c:type:" -"`PyCObject`. La principal diferencia es que 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. El tipo anterior tenía una API " -"problemática y ahora está obsoleta." +"Se agregó :c:type:`PyCapsule` como reemplazo de la API :c:type:`!PyCObject`." +" La principal diferencia es que 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. El tipo anterior tenía una API " +"problemática y ahora está obsoleto." #: ../Doc/whatsnew/3.1.rst:545 msgid "(Contributed by Larry Hastings; :issue:`5630`.)" @@ -1107,13 +1199,12 @@ msgstr "" "correcciones de errores que pueden requerir cambios en su código:" #: ../Doc/whatsnew/3.1.rst:553 -#, fuzzy msgid "" "The new floating-point string representations can break existing doctests. " "For example::" msgstr "" -"Las nuevas representaciones de cadenas de coma flotante pueden romper las " -"pruebas de documentación existentes. Por ejemplo::" +"Las nuevas representaciones de cadenas de punto flotante pueden romper las " +"pruebas de documentación existentes. Por ejemplo:" #: ../Doc/whatsnew/3.1.rst:556 msgid "" @@ -1137,6 +1228,25 @@ msgid "" " 2.718281828459045\n" "**********************************************************************" msgstr "" +"def e():\n" +" '''Compute the base of natural logarithms.\n" +"\n" +" >>> e()\n" +" 2.7182818284590451\n" +"\n" +" '''\n" +" return sum(1/math.factorial(x) for x in reversed(range(30)))\n" +"\n" +"doctest.testmod()\n" +"\n" +"**********************************************************************\n" +"Failed example:\n" +" e()\n" +"Expected:\n" +" 2.7182818284590451\n" +"Got:\n" +" 2.718281828459045\n" +"**********************************************************************" #: ../Doc/whatsnew/3.1.rst:576 msgid "" 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`." diff --git a/whatsnew/3.4.po b/whatsnew/3.4.po index 063c703549..cf2d462899 100644 --- a/whatsnew/3.4.po +++ b/whatsnew/3.4.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Claudia Millan \n" -"Language: es\n" +"PO-Revision-Date: 2024-11-24 11:35+0100\n" +"Last-Translator: Cristián Maureira-Fredes \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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/whatsnew/3.4.rst:3 msgid "What's New In Python 3.4" @@ -91,7 +92,7 @@ msgid "" "that are not text encodings (multiple issues)." msgstr "" ":ref:`mejoras en el manejo de códecs ` que no " -"son codificaciones de texto (múltiples problemas).improvements>" +"son codificaciones de texto (múltiples problemas).improvements>." #: ../Doc/whatsnew/3.4.rst:93 msgid "" @@ -448,7 +449,6 @@ msgstr "" "``py -m pip``." #: ../Doc/whatsnew/3.4.rst:218 -#, fuzzy msgid "" "As :pep:`discussed in the PEP <0453#recommendations-for-downstream-" "distributors>` platform packagers may choose not to install these commands " @@ -456,11 +456,12 @@ msgid "" "directions on how to install them on that platform (usually using the system " "package manager)." msgstr "" -"Como se discute en el PEP (`discussed in the PEP`__), los empaquetadores de " -"plataformas pueden optar por no instalar estos comandos por defecto, siempre " -"y cuando, cuando se invoquen, proporcionen instrucciones claras y sencillas " -"sobre cómo instalarlos en esa plataforma (normalmente utilizando el gestor " -"de paquetes del sistema)." +"Como los empaquetadores de la plataforma :pep:`discussed in the PEP " +"<0453#recommendations-for-downstream-distributors>` pueden elegir no " +"instalar estos comandos de forma predeterminada, siempre que, cuando se " +"invoquen, proporcionen instrucciones claras y simples sobre cómo instalarlos " +"en esa plataforma (generalmente usando el administrador de paquetes del " +"sistema)." #: ../Doc/whatsnew/3.4.rst:226 msgid "" @@ -504,7 +505,6 @@ msgstr "" "individuales." #: ../Doc/whatsnew/3.4.rst:247 -#, fuzzy msgid "" "However, as this migration is currently still incomplete, the legacy " "versions of those guides remaining available as :ref:`install-index` and :" @@ -512,7 +512,7 @@ msgid "" msgstr "" "Sin embargo, como esta migración está aún incompleta, las versiones " "anteriores de esas guías siguen disponibles como :ref:`install-index` y :ref:" -"`distutils-index`." +"`setuptools-index`." #: ../Doc/whatsnew/3.4.rst:254 msgid ":pep:`453` -- Explicit bootstrapping of pip in Python installations" @@ -656,6 +656,23 @@ msgid "" "LookupError: 'hex' is not a text encoding; use codecs.open() to handle " "arbitrary codecs" msgstr "" +">>> b\"abcdef\".decode(\"hex\")\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"LookupError: 'hex' is not a text encoding; use codecs.decode() to handle " +"arbitrary codecs\n" +"\n" +">>> \"hello\".encode(\"rot13\")\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle " +"arbitrary codecs\n" +"\n" +">>> open(\"foo.txt\", encoding=\"hex\")\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"LookupError: 'hex' is not a text encoding; use codecs.open() to handle " +"arbitrary codecs" #: ../Doc/whatsnew/3.4.rst:325 msgid "" @@ -704,6 +721,37 @@ msgid "" "TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not " "support the buffer interface)" msgstr "" +">>> import codecs\n" +"\n" +">>> codecs.decode(b\"abcdefgh\", \"hex\")\n" +"Traceback (most recent call last):\n" +" File \"/usr/lib/python3.4/encodings/hex_codec.py\", line 20, in " +"hex_decode\n" +" return (binascii.a2b_hex(input), len(input))\n" +"binascii.Error: Non-hexadecimal digit found\n" +"\n" +"The above exception was the direct cause of the following exception:\n" +"\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal " +"digit found)\n" +"\n" +">>> codecs.encode(\"hello\", \"bz2\")\n" +"Traceback (most recent call last):\n" +" File \"/usr/lib/python3.4/encodings/bz2_codec.py\", line 17, in " +"bz2_encode\n" +" return (bz2.compress(input), len(input))\n" +" File \"/usr/lib/python3.4/bz2.py\", line 498, in compress\n" +" return comp.compress(data) + comp.flush()\n" +"TypeError: 'str' does not support the buffer interface\n" +"\n" +"The above exception was the direct cause of the following exception:\n" +"\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not " +"support the buffer interface)" #: ../Doc/whatsnew/3.4.rst:358 msgid "" @@ -726,6 +774,11 @@ msgid "" ">>> decode(b\"68656c6c6f\", \"hex\")\n" "b'hello'" msgstr "" +">>> from codecs import encode, decode\n" +">>> encode(b\"hello\", \"hex\")\n" +"b'68656c6c6f'\n" +">>> decode(b\"68656c6c6f\", \"hex\")\n" +"b'hello'" #: ../Doc/whatsnew/3.4.rst:370 msgid "" @@ -1177,37 +1230,34 @@ msgid "aifc" msgstr "aifc" #: ../Doc/whatsnew/3.4.rst:607 -#, fuzzy msgid "" "The :meth:`!getparams` method now returns a namedtuple rather than a plain " "tuple. (Contributed by Claudiu Popa in :issue:`17818`.)" msgstr "" -"El método :meth:`~wave.getparams` ahora devuelve una tupla con nombre en " -"lugar de una tupla simple. (Contribuido por Claudiu Popa en :issue:`17487`.)" +"El método :meth:`!getparams` ahora retorna una tupla con nombre en lugar de " +"una tupla simple. (Contribuido por Claudiu Popa en :issue:`17487`.)" #: ../Doc/whatsnew/3.4.rst:610 -#, fuzzy msgid "" ":func:`!aifc.open` now supports the context management protocol: when used " "in a :keyword:`with` block, the :meth:`!close` method of the returned object " "will be called automatically at the end of the block. (Contributed by " "Serhiy Storchacha in :issue:`16486`.)" msgstr "" -":func:`aifc.open` ahora soporta el protocolo de gestión de contexto: cuando " -"se utiliza en un bloque :keyword:`with`, el método :meth:`~aifc.aifc.close` " -"del objeto devuelto será llamado automáticamente al final del bloque. " -"(Contribuido por Serhiy Storchacha en :issue:`16486`.)" +":func:`!aifc.open` ahora soporta el protocolo de gestión de contexto: cuando " +"se utiliza en un bloque :keyword:`with`, el método :meth:`!close` del objeto " +"devuelto será llamado automáticamente al final del bloque. (Contribuido por " +"Serhiy Storchacha en :issue:`16486`.)" #: ../Doc/whatsnew/3.4.rst:615 ../Doc/whatsnew/3.4.rst:1542 -#, fuzzy msgid "" "The :meth:`!writeframesraw` and :meth:`!writeframes` methods now accept any :" "term:`bytes-like object`. (Contributed by Serhiy Storchaka in :issue:" "`8311`.)" msgstr "" -"Los métodos :meth:`~aifc.aifc.writeframesraw` y :meth:`~aifc.aifc." -"writeframes` aceptan ahora cualquier :term:`bytes-like object`. " -"(Contribuido por Serhiy Storchaka en :issue:`8311`.)" +"Los métodos :meth:`!writeframesraw` y :meth:`!writeframes` aceptan ahora " +"cualquier :term:`bytes-like object`. (Contribuido por Serhiy Storchaka en :" +"issue:`8311`.)" #: ../Doc/whatsnew/3.4.rst:621 msgid "argparse" @@ -1228,34 +1278,30 @@ msgid "audioop" msgstr "audioop" #: ../Doc/whatsnew/3.4.rst:631 -#, fuzzy msgid "" ":mod:`!audioop` now supports 24-bit samples. (Contributed by Serhiy " "Storchaka in :issue:`12866`.)" msgstr "" -":mod:`audioop` ahora soporta muestras de 24 bits. (Contribuido por Serhiy " +":mod:`!audioop` ahora soporta muestras de 24 bits. (Contribuido por Serhiy " "Storchaka en :issue:`12866`.)" #: ../Doc/whatsnew/3.4.rst:634 -#, fuzzy msgid "" "New :func:`!byteswap` function converts big-endian samples to little-endian " "and vice versa. (Contributed by Serhiy Storchaka in :issue:`19641`.)" msgstr "" -"La nueva función :func:`~audioop.byteswap` convierte muestras big-endian en " -"little-endian y viceversa. (Contribuido por Serhiy Storchaka en :issue:" -"`19641`.)" +"La nueva función :func:`!byteswap` convierte muestras big-endian en little-" +"endian y viceversa. (Contribuido por Serhiy Storchaka en :issue:`19641`.)" #: ../Doc/whatsnew/3.4.rst:638 -#, fuzzy msgid "" "All :mod:`!audioop` functions now accept any :term:`bytes-like object`. " "Strings are not accepted: they didn't work before, now they raise an error " "right away. (Contributed by Serhiy Storchaka in :issue:`16685`.)" msgstr "" -"Todas las funciones :mod:`audioop` aceptan ahora cualquier :term:`bytes-like " -"object`. No se aceptan cadenas: antes no funcionaban, ahora dan un error de " -"inmediato. (Contribuido por Serhiy Storchaka en :issue:`16685`.)" +"Todas las funciones :mod:`!audioop` aceptan ahora cualquier :term:`bytes-" +"like object`. No se aceptan cadenas: antes no funcionaban, ahora dan un " +"error de inmediato. (Contribuido por Serhiy Storchaka en :issue:`16685`.)" #: ../Doc/whatsnew/3.4.rst:644 msgid "base64" @@ -1439,6 +1485,13 @@ msgid "" "BINARY_ADD\n" "RETURN_VALUE" msgstr "" +">>> import dis\n" +">>> for instr in dis.get_instructions(lambda x: x + 1):\n" +"... print(instr.opname)\n" +"LOAD_FAST\n" +"LOAD_CONST\n" +"BINARY_ADD\n" +"RETURN_VALUE" #: ../Doc/whatsnew/3.4.rst:736 msgid "" @@ -1520,16 +1573,14 @@ msgid "doctest" msgstr "doctest" #: ../Doc/whatsnew/3.4.rst:777 -#, fuzzy msgid "" "A new :ref:`option flag `, :const:`~doctest.FAIL_FAST`, " "halts test running as soon as the first failure is detected. (Contributed " "by R. David Murray and Daniel Urban in :issue:`16522`.)" msgstr "" -"Una nueva :ref:`flag de opción `, :data:`~doctest." -"FAIL_FAST`, detiene la ejecución de la prueba tan pronto como se detecta el " -"primer fallo. (Contribuido por R. David Murray y Daniel Urban en :issue:" -"`16522`.)" +"Un nuevo :ref:`option flag `, :const:`~doctest.FAIL_FAST`, " +"detiene la ejecución de la prueba tan pronto como se detecta la primera " +"falla. (Contribuido por R. David Murray y Daniel Urban en :issue:`16522`)." #: ../Doc/whatsnew/3.4.rst:781 msgid "" @@ -1662,17 +1713,16 @@ msgstr "" "particular. (Contribuido por Mark Levitt en :issue:`18149`.)" #: ../Doc/whatsnew/3.4.rst:843 -#, fuzzy msgid "" "New module attribute :const:`~filecmp.DEFAULT_IGNORES` provides the list of " "directories that are used as the default value for the *ignore* parameter of " "the :func:`~filecmp.dircmp` function. (Contributed by Eli Bendersky in :" "issue:`15442`.)" msgstr "" -"El nuevo atributo del módulo :data:`~filecmp.DEFAULT_IGNORES` proporciona la " -"lista de directorios que se utilizan como valor por defecto para el " -"parámetro *ignore* de la función :func:`~filecmp.dircmp`. (Contribuido por " -"Eli Bendersky en :issue:`15442`.)" +"El nuevo atributo de módulo :const:`~filecmp.DEFAULT_IGNORES` proporciona la " +"lista de directorios que se utilizan como valor predeterminado para el " +"parámetro *ignore* de la función :func:`~filecmp.dircmp`. (Contribuido por " +"Eli Bendersky en :issue:`15442`)." #: ../Doc/whatsnew/3.4.rst:850 msgid "functools" @@ -1720,15 +1770,14 @@ msgid "PEP written and implemented by Łukasz Langa." msgstr "PEP escrito e implementado por Łukasz Langa." #: ../Doc/whatsnew/3.4.rst:873 -#, fuzzy msgid "" ":func:`~functools.total_ordering` now supports a return value of :data:" "`NotImplemented` from the underlying comparison function. (Contributed by " "Katie Miller in :issue:`10042`.)" msgstr "" -":func:`~functools.total_ordering` ahora soporta un valor de retorno de :" -"const:`NotImplemented` de la función de comparación subyacente. " -"(Contribuido por Katie Miller en :issue:`10042`.)" +":func:`~functools.total_ordering` ahora admite un valor de retorno de :data:" +"`NotImplemented` de la función de comparación subyacente. (Contribución de " +"Katie Miller en :issue:`10042`)." #: ../Doc/whatsnew/3.4.rst:877 msgid "" @@ -1967,31 +2016,28 @@ msgstr "" "`18072`.)" #: ../Doc/whatsnew/3.4.rst:993 -#, fuzzy msgid "" "The :func:`~importlib.reload` function has been moved from :mod:`!imp` to :" "mod:`importlib` as part of the :mod:`!imp` module deprecation. (Contributed " "by Berker Peksag in :issue:`18193`.)" msgstr "" -"La función :func:`~importlib.reload` ha sido trasladada de :mod:`imp` a :mod:" -"`importlib` como parte de la eliminación del módulo :mod:`imp`. " -"(Contribuido por Berker Peksag en :issue:`18193`.)" +"La función :func:`~importlib.reload` se ha trasladado de :mod:`!imp` a :mod:" +"`importlib` como parte de la descontinuación del módulo :mod:`!imp`. " +"(Contribución de Berker Peksag en :issue:`18193`)." #: ../Doc/whatsnew/3.4.rst:997 -#, fuzzy msgid "" ":mod:`importlib.util` now has a :data:`~importlib.util.MAGIC_NUMBER` " "attribute providing access to the bytecode version number. This replaces " "the :func:`!get_magic` function in the deprecated :mod:`!imp` module. " "(Contributed by Brett Cannon in :issue:`18192`.)" msgstr "" -":mod:`importlib.util` tiene ahora un atributo :data:`~importlib.util." -"MAGIC_NUMBER` que proporciona acceso al número de versión del código de " -"bytes. Esto sustituye a la función :func:`~imp.get_magic` del módulo :mod:" -"`imp`, ya obsoleto. (Contribuido por Brett Cannon en :issue:`18192`.)" +":mod:`importlib.util` ahora tiene un atributo :data:`~importlib.util." +"MAGIC_NUMBER` que brinda acceso al número de versión del bytecode. Esto " +"reemplaza la función :func:`!get_magic` en el módulo :mod:`!imp` obsoleto. " +"(Contribuido por Brett Cannon en :issue:`18192`)." #: ../Doc/whatsnew/3.4.rst:1002 -#, fuzzy msgid "" "New :mod:`importlib.util` functions :func:`~importlib.util." "cache_from_source` and :func:`~importlib.util.source_from_cache` replace the " @@ -1999,9 +2045,9 @@ msgid "" "Brett Cannon in :issue:`18194`.)" msgstr "" "Las nuevas funciones :mod:`importlib.util` :func:`~importlib.util." -"cache_from_source` y :func:`~importlib.util.source_from_cache` sustituyen a " -"las funciones con el mismo nombre del módulo :mod:`imp`, ya obsoleto. " -"(Contribuido por Brett Cannon en :issue:`18194`.)" +"cache_from_source` y :func:`~importlib.util.source_from_cache` reemplazan " +"las funciones con el mismo nombre en el módulo :mod:`!imp` obsoleto. " +"(Contribución de Brett Cannon en :issue:`18194`)." #: ../Doc/whatsnew/3.4.rst:1007 msgid "" @@ -2142,9 +2188,7 @@ msgstr "" #: ../Doc/whatsnew/3.4.rst:1072 msgid "logging" -msgstr "" -"Tres mejoras más pequeñas en el módulo :mod:`logging`, todas implementadas " -"por Vinay Sajip, son:" +msgstr "logging" #: ../Doc/whatsnew/3.4.rst:1074 msgid "" @@ -2234,7 +2278,7 @@ msgid "" "mmap objects are now :ref:`weakly referenceable `. (Contributed " "by Valerie Lambert in :issue:`4885`.)" msgstr "" -"Los objetos mmap ahora son :ref:`weakly referenceable `. " +"los objetos mmap ahora son :ref:`weakly referenceable `. " "(Aportado por Valerie Lambert en :issue:`4885`.)" #: ../Doc/whatsnew/3.4.rst:1120 @@ -2315,9 +2359,7 @@ msgstr "" #: ../Doc/whatsnew/3.4.rst:1157 msgid "operator" -msgstr "" -":ref:`PEP 465 `, un nuevo operador de multiplicación de " -"matrices: ``a @ b``." +msgstr "operator" #: ../Doc/whatsnew/3.4.rst:1159 msgid "" @@ -2394,7 +2436,6 @@ msgstr "" "`9035`.)" #: ../Doc/whatsnew/3.4.rst:1190 -#, fuzzy msgid "" ":func:`os.open` supports two new flags on platforms that provide them, :" "const:`~os.O_PATH` (un-opened file descriptor), and :const:`~os.O_TMPFILE` " @@ -2403,12 +2444,12 @@ msgid "" "(Contributed by Christian Heimes in :issue:`18673` and Benjamin Peterson, " "respectively.)" msgstr "" -":func:`os.open` soporta dos nuevas banderas en las plataformas que las " -"proporcionan, :data:`~os.O_PATH` (descriptor de archivo no abierto), y :data:" -"`~os.O_TMPFILE` (archivo temporal sin nombre; a partir de la versión 3.4.0 " -"disponible sólo en sistemas Linux con una versión del kernel de 3.11 o más " -"reciente que tenga cabeceras uapi). (Contribuido por Christian Heimes en :" -"issue:`18673` y Benjamin Peterson, respectivamente)" +":func:`os.open` admite dos nuevos indicadores en las plataformas que los " +"proporcionan: :const:`~os.O_PATH` (descriptor de archivo no abierto) y :" +"const:`~os.O_TMPFILE` (archivo temporal sin nombre; a partir de la versión " +"3.4.0, disponible solo en sistemas Linux con una versión de kernel 3.11 o " +"más reciente que tengan encabezados uapi). (Contribuido por Christian Heimes " +"en :issue:`18673` y Benjamin Peterson, respectivamente)." #: ../Doc/whatsnew/3.4.rst:1198 msgid "pdb" @@ -2483,7 +2524,6 @@ msgid "plistlib" msgstr "plistlib" #: ../Doc/whatsnew/3.4.rst:1236 -#, fuzzy msgid "" ":mod:`plistlib` now has an API that is similar to the standard pattern for " "stdlib serialization protocols, with new :func:`~plistlib.load`, :func:" @@ -2493,13 +2533,13 @@ msgid "" "supports the binary plist format (:const:`~plistlib.FMT_BINARY`). " "(Contributed by Ronald Oussoren and others in :issue:`14455`.)" msgstr "" -":mod:`plistlib` tiene ahora una API que es similar al patrón estándar de los " -"protocolos de serialización de stdlib, con nuevas funciones :func:`~plistlib." -"load`, :func:`~plistlib.dump`, :func:`~plistlib.loads`, y :func:`~plistlib." -"dumps`. (Además del formato XML de plist que ya se soportaba (:data:" -"`~plistlib.FMT_XML`), ahora también se soporta el formato binario de plist (:" -"data:`~plistlib.FMT_BINARY`). (Contribuido por Ronald Oussoren y otros en :" -"issue:`14455`.)" +":mod:`plistlib` ahora tiene una API similar al patrón estándar para los " +"protocolos de serialización de stdlib, con las nuevas funciones :func:" +"`~plistlib.load`, :func:`~plistlib.dump`, :func:`~plistlib.loads` y :func:" +"`~plistlib.dumps`. (La API anterior ya está obsoleta). Además del formato " +"plist XML ya compatible (:const:`~plistlib.FMT_XML`), ahora también admite " +"el formato plist binario (:const:`~plistlib.FMT_BINARY`). (Contribuido por " +"Ronald Oussoren y otros en :issue:`14455`)." #: ../Doc/whatsnew/3.4.rst:1246 msgid "poplib" @@ -2663,7 +2703,6 @@ msgstr "" "Christian Heimes en :issue:`16595`.)" #: ../Doc/whatsnew/3.4.rst:1324 -#, fuzzy msgid "" "On Linux kernel version 2.6.36 or later, there are also some new Linux " "specific constants: :const:`~resource.RLIMIT_MSGQUEUE`, :const:`~resource." @@ -2671,23 +2710,22 @@ msgid "" "RLIMIT_RTTIME`, and :const:`~resource.RLIMIT_SIGPENDING`. (Contributed by " "Christian Heimes in :issue:`19324`.)" msgstr "" -"En el kernel de Linux versión 2.6.36 o posterior, también hay algunas nuevas " -"constantes específicas de Linux: :attr:`~resource.RLIMIT_MSGQUEUE`, :attr:" -"`~resource.RLIMIT_NICE`, :attr:`~resource.RLIMIT_RTPRIO`, :attr:`~resource." -"RLIMIT_RTTIME`, y :attr:`~resource.RLIMIT_SIGPENDING`. (Contribuido por " -"Christian Heimes en :issue:`19324`.)" +"En la versión 2.6.36 o posterior del kernel de Linux, también hay algunas " +"nuevas constantes específicas de Linux: :const:`~resource.RLIMIT_MSGQUEUE`, :" +"const:`~resource.RLIMIT_NICE`, :const:`~resource.RLIMIT_RTPRIO`, :const:" +"`~resource.RLIMIT_RTTIME` y :const:`~resource.RLIMIT_SIGPENDING`. " +"(Contribuido por Christian Heimes en :issue:`19324`)." #: ../Doc/whatsnew/3.4.rst:1330 -#, fuzzy msgid "" "On FreeBSD version 9 and later, there some new FreeBSD specific constants: :" "const:`~resource.RLIMIT_SBSIZE`, :const:`~resource.RLIMIT_SWAP`, and :const:" "`~resource.RLIMIT_NPTS`. (Contributed by Claudiu Popa in :issue:`19343`.)" msgstr "" -"En FreeBSD versión 9 y posteriores, hay algunas nuevas constantes " -"específicas de FreeBSD: :attr:`~resource.RLIMIT_SBSIZE`, :attr:`~resource." -"RLIMIT_SWAP`, y :attr:`~resource.RLIMIT_NPTS`. (Contribuido por Claudiu " -"Popa en :issue:`19343`.)" +"En la versión 9 y posteriores de FreeBSD, hay algunas nuevas constantes " +"específicas de FreeBSD: :const:`~resource.RLIMIT_SBSIZE`, :const:`~resource." +"RLIMIT_SWAP` y :const:`~resource.RLIMIT_NPTS`. (Contribución de Claudiu Popa " +"en :issue:`19343`)." #: ../Doc/whatsnew/3.4.rst:1337 msgid "select" @@ -2754,7 +2792,6 @@ msgid "smtpd" msgstr "smtpd" #: ../Doc/whatsnew/3.4.rst:1371 -#, fuzzy msgid "" "The :class:`!SMTPServer` and :class:`!SMTPChannel` classes now accept a " "*map* keyword argument which, if specified, is passed in to :class:`!" @@ -2762,11 +2799,11 @@ msgid "" "avoid affecting the global socket map. (Contributed by Vinay Sajip in :" "issue:`11959`.)" msgstr "" -"Las clases :class:`~smtpd.SMTPServer` y :class:`~smtpd.SMTPChannel` aceptan " -"ahora un argumento de palabra clave *map* que, si se especifica, se pasa a :" -"class:`asynchat.async_chat` como su argumento *map*. Esto permite que una " -"aplicación no afecte al mapa global de sockets. (Contribuido por Vinay " -"Sajip en :issue:`11959`.)" +"Las clases :class:`!SMTPServer` y :class:`!SMTPChannel` ahora aceptan un " +"argumento de palabra clave *map* que, si se especifica, se pasa a :class:`!" +"asynchat.async_chat` como su argumento *map*. Esto permite que una " +"aplicación evite afectar el mapa de sockets global. (Contribuido por Vinay " +"Sajip en :issue:`11959`)." #: ../Doc/whatsnew/3.4.rst:1379 msgid "smtplib" @@ -2790,14 +2827,13 @@ msgid "socket" msgstr "enchufe" #: ../Doc/whatsnew/3.4.rst:1390 -#, fuzzy msgid "" "The socket module now supports the :const:`~socket.CAN_BCM` protocol on " "platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.)" msgstr "" -"El módulo socket ahora soporta el protocolo :data:`~socket.CAN_BCM` en las " -"plataformas que lo soportan. (Contribuido por Brian Thorne en :issue:" -"`15359`.)" +"El módulo de socket ahora admite el protocolo :const:`~socket.CAN_BCM` en " +"las plataformas que lo admiten. (Contribución de Brian Thorne en :issue:" +"`15359`)." #: ../Doc/whatsnew/3.4.rst:1393 msgid "" @@ -2821,10 +2857,9 @@ msgstr "" "mágicos\" enteros." #: ../Doc/whatsnew/3.4.rst:1401 -#, fuzzy msgid "The :const:`~socket.AF_LINK` constant is now available on BSD and OSX." msgstr "" -"La constante :data:`~socket.AF_LINK` está ahora disponible en BSD y OSX." +"La constante :const:`~socket.AF_LINK` está ahora disponible en BSD y OSX." #: ../Doc/whatsnew/3.4.rst:1403 msgid "" @@ -2937,7 +2972,6 @@ msgstr "" "Christian Heimes en :issue:`18147`.)" #: ../Doc/whatsnew/3.4.rst:1459 -#, fuzzy msgid "" "If OpenSSL 0.9.8 or later is available, :class:`~ssl.SSLContext` has a new " "attribute :attr:`~ssl.SSLContext.verify_flags` that can be used to control " @@ -2947,13 +2981,14 @@ msgid "" "`~ssl.VERIFY_X509_STRICT`. OpenSSL does not do any CRL verification by " "default. (Contributed by Christien Heimes in :issue:`8813`.)" msgstr "" -"Si OpenSSL 0.9.8 o posterior está disponible, :class:`~ssl.SSLContext` tiene " -"un nuevo atributo :attr:`~ssl.SSLContext.verify_flags` que puede utilizarse " -"para controlar el proceso de verificación del certificado estableciéndolo en " -"alguna combinación de las nuevas constantes :data:`~ssl.VERIFY_DEFAULT`, :" -"data:`~ssl.VERIFY_CRL_CHECK_LEAF`, :data:`~ssl.VERIFY_CRL_CHECK_CHAIN`, o :" -"data:`~ssl.VERIFY_X509_STRICT`. OpenSSL no realiza ninguna verificación CRL " -"por defecto. (Contribuido por Christien Heimes en :issue:`8813`.)" +"Si está disponible OpenSSL 0.9.8 o posterior, :class:`~ssl.SSLContext` tiene " +"un nuevo atributo :attr:`~ssl.SSLContext.verify_flags` que se puede utilizar " +"para controlar el proceso de verificación de certificados estableciéndolo en " +"alguna combinación de las nuevas constantes :const:`~ssl.VERIFY_DEFAULT`, :" +"const:`~ssl.VERIFY_CRL_CHECK_LEAF`, :const:`~ssl.VERIFY_CRL_CHECK_CHAIN` o :" +"const:`~ssl.VERIFY_X509_STRICT`. OpenSSL no realiza ninguna verificación de " +"CRL de forma predeterminada. (Contribuido por Christien Heimes en :issue:" +"`8813`)." #: ../Doc/whatsnew/3.4.rst:1467 msgid "" @@ -3015,27 +3050,25 @@ msgid "stat" msgstr "stat" #: ../Doc/whatsnew/3.4.rst:1497 -#, fuzzy msgid "" "The :mod:`stat` module is now backed by a C implementation in :mod:`!_stat`. " "A C implementation is required as most of the values aren't standardized and " "are platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)" msgstr "" -"El módulo :mod:`stat` está ahora respaldado por una implementación en C en :" -"mod:`_stat`. Se requiere una implementación en C ya que la mayoría de los " -"valores no están estandarizados y dependen de la plataforma. (Contribuido " -"por Christian Heimes en :issue:`11016`.)" +"El módulo :mod:`stat` ahora cuenta con el respaldo de una implementación en " +"C en :mod:`!_stat`. Se requiere una implementación en C ya que la mayoría de " +"los valores no están estandarizados y dependen de la plataforma. " +"(Contribución de Christian Heimes en :issue:`11016`)." #: ../Doc/whatsnew/3.4.rst:1501 -#, fuzzy msgid "" "The module supports new :mod:`~stat.ST_MODE` flags, :mod:`~stat.S_IFDOOR`, :" "const:`~stat.S_IFPORT`, and :const:`~stat.S_IFWHT`. (Contributed by " "Christian Hiemes in :issue:`11016`.)" msgstr "" -"El módulo soporta las nuevas banderas :mod:`~stat.ST_MODE`, :mod:`~stat." -"S_IFDOOR`, :attr:`~stat.S_IFPORT`, y :attr:`~stat.S_IFWHT`. (Contribución " -"de Christian Hiemes en :issue:`11016`.)" +"El módulo admite los nuevos indicadores :mod:`~stat.ST_MODE`, :mod:`~stat." +"S_IFDOOR`, :const:`~stat.S_IFPORT` y :const:`~stat.S_IFWHT`. (Contribuido " +"por Christian Hiemes en :issue:`11016`)." #: ../Doc/whatsnew/3.4.rst:1507 msgid "struct" @@ -3082,26 +3115,24 @@ msgid "sunau" msgstr "sunau" #: ../Doc/whatsnew/3.4.rst:1530 -#, fuzzy msgid "" "The :meth:`!getparams` method now returns a namedtuple rather than a plain " "tuple. (Contributed by Claudiu Popa in :issue:`18901`.)" msgstr "" -"El método :meth:`~sunau.getparams` ahora devuelve una tupla con nombre en " -"lugar de una tupla simple. (Contribuido por Claudiu Popa en :issue:`18901`.)" +"El método :meth:`!getparams` ahora devuelve una tupla con nombre en lugar de " +"una tupla simple. (Contribuido por Claudiu Popa en :issue:`18901`.)" #: ../Doc/whatsnew/3.4.rst:1533 -#, fuzzy msgid "" ":meth:`!sunau.open` now supports the context management protocol: when used " "in a :keyword:`with` block, the ``close`` method of the returned object will " "be called automatically at the end of the block. (Contributed by Serhiy " "Storchaka in :issue:`18878`.)" msgstr "" -":meth:`sunau.open` ahora soporta el protocolo de gestión de contexto: cuando " +":meth:`!sunau.open` ahora admite el protocolo de gestión de contexto: cuando " "se utiliza en un bloque :keyword:`with`, el método ``close`` del objeto " -"devuelto será llamado automáticamente al final del bloque. (Contribuido por " -"Serhiy Storchaka en :issue:`18878`.)" +"devuelto se llamará automáticamente al final del bloque. (Contribuido por " +"Serhiy Storchaka en :issue:`18878`)." #: ../Doc/whatsnew/3.4.rst:1538 msgid "" @@ -3354,6 +3385,11 @@ msgid "" " with self.subTest(i=i):\n" " self.assertEqual(i % 2, 0)" msgstr "" +"class NumbersTest(unittest.TestCase):\n" +" def test_even(self):\n" +" for i in range(6):\n" +" with self.subTest(i=i):\n" +" self.assertEqual(i % 2, 0)" #: ../Doc/whatsnew/3.4.rst:1670 msgid "" @@ -3713,16 +3749,15 @@ msgstr "" "algoritmo FNV es trivial." #: ../Doc/whatsnew/3.4.rst:1851 -#, fuzzy msgid "" "The PEP adds additional fields to the :data:`sys.hash_info` named tuple to " "describe the hash algorithm in use by the currently executing binary. " "Otherwise, the PEP does not alter any existing CPython APIs." msgstr "" -"El PEP añade campos adicionales a la tupla con nombre :attr:`sys.hash_info` " -"para describir el algoritmo hash en uso por el binario que se está " -"ejecutando. Por lo demás, el PEP no altera ninguna de las APIs existentes " -"de CPython." +"El PEP agrega campos adicionales a la tupla con nombre :data:`sys.hash_info` " +"para describir el algoritmo hash que utiliza el binario que se está " +"ejecutando actualmente. De lo contrario, el PEP no modifica ninguna API " +"CPython existente." #: ../Doc/whatsnew/3.4.rst:1859 msgid "PEP 436: Argument Clinic" @@ -3797,18 +3832,17 @@ msgstr "" "Löwis en :issue:`17162`.)" #: ../Doc/whatsnew/3.4.rst:1893 -#, fuzzy msgid "" "The new :c:func:`!Py_SetStandardStreamEncoding` pre-initialization API " "allows applications embedding the CPython interpreter to reliably force a " "particular encoding and error handler for the standard streams. (Contributed " "by Bastien Montagne and Nick Coghlan in :issue:`16129`.)" msgstr "" -"La nueva API de preinicialización :c:func:`Py_SetStandardStreamEncoding` " -"permite a las aplicaciones que incrustan el intérprete de CPython forzar de " -"forma fiable una codificación concreta y un manejador de errores para los " -"flujos estándar. (Contribuido por Bastien Montagne y Nick Coghlan en :issue:" -"`16129`.)" +"La nueva API de preinicialización :c:func:`!Py_SetStandardStreamEncoding` " +"permite que las aplicaciones que incorporan el intérprete CPython fuercen de " +"manera confiable una codificación y un controlador de errores particulares " +"para los flujos estándar. (Contribución de Bastien Montagne y Nick Coghlan " +"en :issue:`16129`)." #: ../Doc/whatsnew/3.4.rst:1898 msgid "" @@ -3890,7 +3924,6 @@ msgid "Other Improvements" msgstr "Otras mejoras" #: ../Doc/whatsnew/3.4.rst:1935 -#, fuzzy msgid "" "The :ref:`python ` command has a new :ref:`option `, ``-I``, which causes it to run in \"isolated mode\", " @@ -3903,17 +3936,17 @@ msgid "" "most POSIX systems it can and should be used in the ``#!`` line of system " "scripts. (Contributed by Christian Heimes in :issue:`16499`.)" msgstr "" -"El :ref:`python ` tiene una nueva :ref:`option `, ``-I``, que hace que se ejecute en \"modo aislado\", lo que " -"significa que :data:`sys.path` no contiene ni el directorio del script ni el " -"directorio ``site-packages`` del usuario, y todas las variables de entorno :" -"envvar:`PYTHON*` son ignoradas (implica tanto ``-s`` como ``-E``). También " -"pueden aplicarse otras restricciones en el futuro, con el objetivo de aislar " -"la ejecución de un script del entorno del usuario. Esto es apropiado, por " -"ejemplo, cuando se utiliza Python para ejecutar un script del sistema. En " -"la mayoría de los sistemas POSIX puede y debe utilizarse en la línea ``#!`` " -"de los scripts del sistema. (Contribuido por Christian Heimes en :issue:" -"`16499`.)" +"El comando :ref:`python ` tiene un nuevo :ref:`option " +"`, ``-I``, que hace que se ejecute en \"modo " +"aislado\", lo que significa que :data:`sys.path` no contiene ni el " +"directorio del script ni el directorio ``site-packages`` del usuario, y se " +"ignoran todas las variables de entorno :envvar:`!PYTHON*` (implica tanto ``-" +"s`` como ``-E``). También se pueden aplicar otras restricciones en el " +"futuro, con el objetivo de aislar la ejecución de un script del entorno del " +"usuario. Esto es apropiado, por ejemplo, cuando se utiliza Python para " +"ejecutar un script del sistema. En la mayoría de los sistemas POSIX puede y " +"debe utilizarse en la línea ``#!`` de scripts del sistema. (Contribuido por " +"Christian Heimes en :issue:`16499`.)" #: ../Doc/whatsnew/3.4.rst:1946 msgid "" @@ -3955,7 +3988,6 @@ msgstr "" "Moore en :issue:`18569`.)" #: ../Doc/whatsnew/3.4.rst:1961 -#, fuzzy msgid "" "A new ``make`` target `coverage-report `_ will build python, run " @@ -3965,20 +3997,18 @@ msgstr "" "Un nuevo objetivo ``make``, `coverage-report `_, compilará " "Python, ejecutará el conjunto de pruebas y generará un informe de cobertura " -"HTML para el código base C utilizando ``gcov`` y `lcov `_." +"HTML para la base de código C utilizando ``gcov`` y `lcov `_." #: ../Doc/whatsnew/3.4.rst:1967 -#, fuzzy msgid "" "The ``-R`` option to the :ref:`python regression test suite ` now " "also checks for memory allocation leaks, using :func:`sys." "getallocatedblocks`. (Contributed by Antoine Pitrou in :issue:`13390`.)" msgstr "" -"La opción ``-R`` del :ref:`conjunto de pruebas de regresión de python " -"` ahora también comprueba las fugas de asignación de memoria, " -"utilizando :func:`sys.getallocatedblocks()`. (Contribuido por Antoine Pitrou " -"en :issue:`13390`.)" +"La opción ``-R`` de :ref:`python regression test suite ` ahora " +"también verifica si hay fugas de asignación de memoria, utilizando :func:" +"`sys.getallocatedblocks`. (Contribuido por Antoine Pitrou en :issue:`13390`)." #: ../Doc/whatsnew/3.4.rst:1972 msgid "``python -m`` now works with namespace packages." @@ -4223,7 +4253,6 @@ msgid "Deprecations in the Python API" msgstr "Desapariciones en la API de Python" #: ../Doc/whatsnew/3.4.rst:2078 -#, fuzzy msgid "" "As mentioned in :ref:`whatsnew-pep-451`, a number of :mod:`importlib` " "methods and functions are deprecated: :meth:`!importlib.find_loader` is " @@ -4246,33 +4275,32 @@ msgid "" "now handled automatically by the import system." msgstr "" "Como se menciona en :ref:`whatsnew-pep-451`, varios métodos y funciones de :" -"mod:`importlib` están obsoletos: :meth:`importlib.find_loader` se sustituye " -"por :func:`importlib.util.find_spec`; :meth:`importlib.machinery.PathFinder." -"find_module` se sustituye por :meth:`importlib.machinery.PathFinder." -"find_spec`; :meth:`importlib.abc.MetaPathFinder.find_module` se sustituye " -"por :meth:`importlib.abc.MetaPathFinder.find_spec`; :meth:`importlib.abc." -"PathEntryFinder.find_loader` y :meth:`~importlib.abc.PathEntryFinder." -"find_module` se sustituyen por :meth:`importlib.abc.PathEntryFinder." -"find_spec`; todos los métodos ``xxxLoader`` ABC ``load_module`` (:meth:" -"`importlib.abc.Loader.load_module`, :meth:`importlib.abc.InspectLoader." -"load_module`, :meth:`importlib.abc.FileLoader.load_module`, :meth:`importlib." -"abc.SourceLoader.load_module`) ya no deberían implementarse, en su lugar los " -"cargadores deberían implementar un método ``exec_module`` (:meth:`importlib." -"abc.Loader.exec_module`, :meth:`importlib.abc.InspectLoader.exec_module` :" -"meth:`importlib.abc.SourceLoader.exec_module`) y dejar que el sistema de " -"importación se encargue del resto; y :meth:`importlib.abc.Loader." -"module_repr`, :meth:`importlib.util.module_for_loader`, :meth:`importlib." -"util.set_loader`, y :meth:`importlib.util.set_package` ya no son necesarios " -"porque sus funciones son ahora manejadas automáticamente por el sistema de " +"mod:`importlib` están obsoletos: :meth:`!importlib.find_loader` se reemplaza " +"por :func:`importlib.util.find_spec`; :meth:`!importlib.machinery.PathFinder." +"find_module` se reemplaza por :meth:`importlib.machinery.PathFinder." +"find_spec`; :meth:`!importlib.abc.MetaPathFinder.find_module` se reemplaza " +"por :meth:`importlib.abc.MetaPathFinder.find_spec`; :meth:`!importlib.abc." +"PathEntryFinder.find_loader` y :meth:`!find_module` se reemplazan por :meth:" +"`importlib.abc.PathEntryFinder.find_spec`; todos los métodos ABC " +"``load_module`` de :samp:`{xxx}Loader` (:meth:`!importlib.abc.Loader." +"load_module`, :meth:`!importlib.abc.InspectLoader.load_module`, :meth:`!" +"importlib.abc.FileLoader.load_module`, :meth:`!importlib.abc.SourceLoader." +"load_module`) ya no se deben implementar, en su lugar, los cargadores deben " +"implementar un método ``exec_module`` (:meth:`importlib.abc.Loader." +"exec_module`, :meth:`importlib.abc.InspectLoader.exec_module` :meth:" +"`importlib.abc.SourceLoader.exec_module`) y dejar que el sistema de " +"importación se encargue del resto; y :meth:`!importlib.abc.Loader." +"module_repr`, :meth:`!importlib.util.module_for_loader`, :meth:`!importlib." +"util.set_loader` y :meth:`!importlib.util.set_package` ya no son necesarios " +"porque sus funciones ahora son manejadas automáticamente por el sistema de " "importación." #: ../Doc/whatsnew/3.4.rst:2103 -#, fuzzy msgid "" "The :mod:`!imp` module is pending deprecation. To keep compatibility with " "Python 2/3 code bases, the module's removal is currently not scheduled." msgstr "" -"El módulo :mod:`imp` está pendiente de ser eliminado. Para mantener la " +"El módulo :mod:`!imp` está pendiente de ser eliminado. Para mantener la " "compatibilidad con las bases de código de Python 2/3, la eliminación del " "módulo no está programada actualmente." @@ -4659,17 +4687,17 @@ msgstr "" "``getattr(module, '__loader__', None) is not None``. (:issue:`17115`.)" #: ../Doc/whatsnew/3.4.rst:2279 -#, fuzzy msgid "" ":meth:`!importlib.util.module_for_loader` now sets ``__loader__`` and " "``__package__`` unconditionally to properly support reloading. If this is " "not desired then you will need to set these attributes manually. You can " "use :func:`importlib.util.module_to_load` for module management." msgstr "" -":meth:`importlib.util.module_for_loader` ahora establece ``loader__`` y " -"``__package__`` incondicionalmente para soportar adecuadamente la recarga. " -"Si no lo desea, tendrá que establecer estos atributos manualmente. Puede " -"utilizar :func:`importlib.util.module_to_load` para la gestión de módulos." +":meth:`!importlib.util.module_for_loader` ahora configura ``__loader__`` y " +"``__package__`` de manera incondicional para admitir la recarga de manera " +"adecuada. Si no desea esto, deberá configurar estos atributos manualmente. " +"Puede usar :func:`importlib.util.module_to_load` para la administración de " +"módulos." #: ../Doc/whatsnew/3.4.rst:2284 msgid "" @@ -4702,7 +4730,6 @@ msgstr "" "'__path__')`` (:issue:`18065`)." #: ../Doc/whatsnew/3.4.rst:2296 -#, fuzzy msgid "" "Frozen modules no longer define a ``__file__`` attribute. It's semantically " "incorrect for frozen modules to set the attribute as they are not loaded " @@ -4712,14 +4739,14 @@ msgid "" "machinery.FrozenImporter`, or if Python 2 compatibility is necessary you can " "use :func:`!imp.is_frozen`." msgstr "" -"Los módulos congelados ya no definen el atributo ``file__``. Es " -"semánticamente incorrecto que los módulos congelados definan el atributo, ya " -"que no se cargan desde ninguna ubicación explícita. Si necesitas saber que " -"un módulo proviene de código congelado, puedes ver si el ``__spec__." -"location`` del módulo está configurado como ``'frozen``, comprobar si el " -"cargador es una subclase de :class:`importlib.machinery.FrozenImporter`, o " -"si la compatibilidad con Python 2 es necesaria, puedes utilizar :func:`imp." -"is_frozen`." +"Los módulos congelados ya no definen un atributo ``__file__``. Es " +"semánticamente incorrecto que los módulos congelados establezcan el " +"atributo, ya que no se cargan desde ninguna ubicación explícita. Si debe " +"saber que un módulo proviene de un código congelado, puede ver si el " +"``__spec__.location`` del módulo está configurado en ``'frozen'``, verificar " +"si el cargador es una subclase de :class:`importlib.machinery." +"FrozenImporter` o, si es necesaria la compatibilidad con Python 2, puede " +"usar :func:`!imp.is_frozen`." #: ../Doc/whatsnew/3.4.rst:2304 msgid "" @@ -4875,7 +4902,6 @@ msgstr "" "inadvertidamente en Python 3.3.3." #: ../Doc/whatsnew/3.4.rst:2372 -#, fuzzy msgid "" "The :attr:`!file` attribute is now automatically closed when the creating :" "class:`!cgi.FieldStorage` instance is garbage collected. If you were pulling " @@ -4884,13 +4910,13 @@ msgid "" "class:`!cgi.FieldStorage` instance or read the contents of the file before " "the :class:`!cgi.FieldStorage` instance is garbage collected." msgstr "" -"El atributo :attr:`~cgi.FieldStorage.file` ahora se cierra automáticamente " -"cuando la instancia :class:`cgi.FieldStorage` creada se recoge de la basura. " -"Si estaba sacando el objeto archivo por separado de la instancia :class:`cgi." -"FieldStorage` y no mantenía la instancia viva, entonces debería almacenar " -"toda la instancia :class:`cgi.FieldStorage` o leer el contenido del archivo " -"antes de que la instancia :class:`cgi.FieldStorage` sea recogida de la " -"basura." +"El atributo :attr:`!file` ahora se cierra automáticamente cuando se realiza " +"la recolección de basura de la instancia :class:`!cgi.FieldStorage` que la " +"crea. Si extrajo el objeto de archivo por separado de la instancia :class:`!" +"cgi.FieldStorage` y no mantuvo activa la instancia, entonces debe almacenar " +"toda la instancia :class:`!cgi.FieldStorage` o leer el contenido del archivo " +"antes de que se realice la recolección de basura de la instancia :class:`!" +"cgi.FieldStorage`." #: ../Doc/whatsnew/3.4.rst:2379 msgid "" @@ -4962,15 +4988,14 @@ msgstr "" "`17094`.)" #: ../Doc/whatsnew/3.4.rst:2406 -#, fuzzy msgid "" "Parameter names in ``__annotations__`` dicts are now mangled properly, " "similarly to :attr:`~function.__kwdefaults__`. (Contributed by Yury " "Selivanov in :issue:`20625`.)" msgstr "" -"Los nombres de los parámetros en los dicts de ``__annotations__`` ahora se " -"manipulan correctamente, de forma similar a ``__kwdefaults__``. " -"(Contribuido por Yury Selivanov en :issue:`20625`.)" +"Los nombres de parámetros en los diccionarios ``__annotations__`` ahora se " +"modifican correctamente, de manera similar a :attr:`~function." +"__kwdefaults__`. (Contribuido por Yury Selivanov en :issue:`20625`)." #: ../Doc/whatsnew/3.4.rst:2410 msgid "" @@ -4984,7 +5009,6 @@ msgstr "" "denominación se ha hecho consistente (:issue:`18532`)." #: ../Doc/whatsnew/3.4.rst:2414 -#, fuzzy msgid "" "Because :mod:`unittest.TestSuite` now drops references to tests after they " "are run, test harnesses that reuse a :class:`~unittest.TestSuite` to re-run " @@ -4997,15 +5021,15 @@ msgid "" "__iter__`) (:issue:`11798`)." msgstr "" "Debido a que :mod:`unittest.TestSuite` ahora elimina las referencias a las " -"pruebas después de su ejecución, los arneses de pruebas que reutilizan un :" -"class:`~unittest.TestSuite` para volver a ejecutar un conjunto de pruebas " -"pueden fallar. Los conjuntos de pruebas no deberían ser reutilizados de " -"esta manera, ya que significa que el estado se mantiene entre las " -"ejecuciones de las pruebas, rompiendo el aislamiento de las pruebas que :mod:" -"`unittest` está diseñado para proporcionar. Sin embargo, si la falta de " -"aislamiento se considera aceptable, el antiguo comportamiento puede " -"restaurarse creando una subclase :mod:`~unittest.TestSuite` que defina un " -"método ``_removeTestAtIndex`` que no haga nada (ver :meth:`.TestSuite." +"pruebas después de que se ejecutan, los conjuntos de pruebas que reutilizan " +"un :class:`~unittest.TestSuite` para volver a ejecutar un conjunto de " +"pruebas pueden fallar. Los conjuntos de pruebas no se deben reutilizar de " +"esta manera, ya que significa que el estado se conserva entre ejecuciones de " +"pruebas, lo que rompe el aislamiento de pruebas que :mod:`unittest` está " +"diseñado para proporcionar. Sin embargo, si la falta de aislamiento se " +"considera aceptable, el comportamiento anterior se puede restaurar creando " +"una subclase :mod:`~unittest.TestSuite` que defina un método " +"``_removeTestAtIndex`` que no haga nada (consulte :meth:`.TestSuite." "__iter__`) (:issue:`11798`)." #: ../Doc/whatsnew/3.4.rst:2424 @@ -5040,12 +5064,11 @@ msgstr "" "código." #: ../Doc/whatsnew/3.4.rst:2436 -#, fuzzy msgid "" ":mod:`!audioop` functions now raise an error immediately if passed string " "input, instead of failing randomly later on (:issue:`16685`)." msgstr "" -"Las funciones de :mod:`audioop` ahora lanzan un error inmediatamente si se " +"Las funciones de :mod:`!audioop` ahora lanzan un error inmediatamente si se " "les pasa una cadena de entrada, en lugar de fallar aleatoriamente más tarde " "(:issue:`16685`)." @@ -5274,3 +5297,14 @@ msgid "" "\n" "urllib.request.urlopen(\"https://invalid-cert\", context=context)" msgstr "" +"import urllib.request\n" +"import ssl\n" +"\n" +"# This disables all verification\n" +"context = ssl._create_unverified_context()\n" +"\n" +"# This allows using a specific certificate for the host, which doesn't need\n" +"# to be in the trust store\n" +"context = ssl.create_default_context(cafile=\"/path/to/file.crt\")\n" +"\n" +"urllib.request.urlopen(\"https://invalid-cert\", context=context)" diff --git a/whatsnew/3.6.po b/whatsnew/3.6.po index 8c57e5fada..554ebf2ac4 100644 --- a/whatsnew/3.6.po +++ b/whatsnew/3.6.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-31 19:48-0300\n" -"Last-Translator: Sofía Denner \n" -"Language: es\n" +"PO-Revision-Date: 2024-11-24 11:47+0100\n" +"Last-Translator: Cristián Maureira-Fredes \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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/whatsnew/3.6.rst:3 msgid "What's New In Python 3.6" @@ -355,6 +356,14 @@ msgid "" ">>> f\"result: {value:{width}.{precision}}\" # nested fields\n" "'result: 12.35'" msgstr "" +">>> name = \"Fred\"\n" +">>> f\"He said his name is {name}.\"\n" +"'He said his name is Fred.'\n" +">>> width = 10\n" +">>> precision = 4\n" +">>> value = decimal.Decimal(\"12.34567\")\n" +">>> f\"result: {value:{width}.{precision}}\" # nested fields\n" +"'result: 12.35'" #: ../Doc/whatsnew/3.6.rst:204 msgid ":pep:`498` -- Literal String Interpolation." @@ -392,6 +401,12 @@ msgid "" "class Starship:\n" " stats: Dict[str, int] = {}" msgstr "" +"primes: List[int] = []\n" +"\n" +"captain: str # Note: no initial value!\n" +"\n" +"class Starship:\n" +" stats: Dict[str, int] = {}" #: ../Doc/whatsnew/3.6.rst:225 msgid "" @@ -429,12 +444,11 @@ msgstr "" "Guido van Rossum. Implementado por Ivan Levkivskyi." #: ../Doc/whatsnew/3.6.rst:240 -#, fuzzy msgid "" "Tools that use or will use the new syntax: `mypy `_, `pytype `_, PyCharm, etc." msgstr "" -"Herramientas que utilizan o utilizarán la nueva sintaxis: `mypy `_, `pytype `_, PyCharm, " "etc." @@ -457,6 +471,10 @@ msgid "" ">>> 0x_FF_FF_FF_FF\n" "4294967295" msgstr "" +">>> 1_000_000_000_000_000\n" +"1000000000000000\n" +">>> 0x_FF_FF_FF_FF\n" +"4294967295" #: ../Doc/whatsnew/3.6.rst:258 msgid "" @@ -468,7 +486,6 @@ msgstr "" "múltiples en una fila." #: ../Doc/whatsnew/3.6.rst:262 -#, fuzzy msgid "" "The :ref:`string formatting ` language also now has support for " "the ``'_'`` option to signal the use of an underscore for a thousands " @@ -476,12 +493,12 @@ msgid "" "type ``'d'``. For integer presentation types ``'b'``, ``'o'``, ``'x'``, and " "``'X'``, underscores will be inserted every 4 digits::" msgstr "" -"El lenguaje :ref:`string formatting ` ahora también tiene " -"soporte para la opción ``'_'`` para señalar el uso de un guión bajo para un " -"separador de miles para los tipos de presentación de punto flotante y para " -"el tipo de presentación de enteros ``'d'``. Para los tipos de presentación " -"de enteros ``'b'``, ``'o'``, ``'x'`` y ``'X'``, se insertarán guiones bajos " -"cada 4 dígitos:" +"El lenguaje :ref:`string formatting ` ahora también admite la " +"opción ``'_'`` para indicar el uso de un guión bajo como separador de miles " +"para los tipos de presentación de punto flotante y para el tipo de " +"presentación de enteros ``'d'``. Para los tipos de presentación de enteros " +"``'b'``, ``'o'``, ``'x'`` y ``'X'``, se insertarán guiones bajos cada 4 " +"dígitos:" #: ../Doc/whatsnew/3.6.rst:269 msgid "" @@ -490,6 +507,10 @@ msgid "" ">>> '{:_x}'.format(0xFFFFFFFF)\n" "'ffff_ffff'" msgstr "" +">>> '{:_}'.format(1000000)\n" +"'1_000_000'\n" +">>> '{:_x}'.format(0xFFFFFFFF)\n" +"'ffff_ffff'" #: ../Doc/whatsnew/3.6.rst:276 msgid ":pep:`515` -- Underscores in Numeric Literals" @@ -525,6 +546,11 @@ msgid "" " yield i\n" " await asyncio.sleep(delay)" msgstr "" +"async def ticker(delay, to):\n" +" \"\"\"Yield numbers from 0 to *to* every *delay* seconds.\"\"\"\n" +" for i in range(to):\n" +" yield i\n" +" await asyncio.sleep(delay)" #: ../Doc/whatsnew/3.6.rst:297 msgid "The new syntax allows for faster and more concise code." @@ -552,7 +578,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:313 msgid "result = [i async for i in aiter() if i % 2]" -msgstr "" +msgstr "result = [i async for i in aiter() if i % 2]" #: ../Doc/whatsnew/3.6.rst:315 msgid "" @@ -564,7 +590,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:318 msgid "result = [await fun() for fun in funcs if await condition()]" -msgstr "" +msgstr "result = [await fun() for fun in funcs if await condition()]" #: ../Doc/whatsnew/3.6.rst:322 msgid ":pep:`530` -- Asynchronous Comprehensions" @@ -599,6 +625,18 @@ msgid "" "class Plugin2(PluginBase):\n" " pass" msgstr "" +"class PluginBase:\n" +" subclasses = []\n" +"\n" +" def __init_subclass__(cls, **kwargs):\n" +" super().__init_subclass__(**kwargs)\n" +" cls.subclasses.append(cls)\n" +"\n" +"class Plugin1(PluginBase):\n" +" pass\n" +"\n" +"class Plugin2(PluginBase):\n" +" pass" #: ../Doc/whatsnew/3.6.rst:348 msgid "" @@ -665,6 +703,21 @@ msgid "" "class Model:\n" " int_field = IntField()" msgstr "" +"class IntField:\n" +" def __get__(self, instance, owner):\n" +" return instance.__dict__[self.name]\n" +"\n" +" def __set__(self, instance, value):\n" +" if not isinstance(value, int):\n" +" raise ValueError(f'expecting integer in {self.name}')\n" +" instance.__dict__[self.name] = value\n" +"\n" +" # this is the new initializer:\n" +" def __set_name__(self, owner, name):\n" +" self.name = name\n" +"\n" +"class Model:\n" +" int_field = IntField()" #: ../Doc/whatsnew/3.6.rst:396 msgid ":ref:`Feature documentation `" @@ -773,6 +826,18 @@ msgid "" ">>> os.fspath(pathlib.Path(\"some_file.txt\"))\n" "'some_file.txt'" msgstr "" +">>> import pathlib\n" +">>> with open(pathlib.Path(\"README\")) as f:\n" +"... contents = f.read()\n" +"...\n" +">>> import os.path\n" +">>> os.path.splitext(pathlib.Path(\"some_file.txt\"))\n" +"('some_file', '.txt')\n" +">>> os.path.join(\"/a/b\", pathlib.Path(\"c\"))\n" +"'/a/b/c'\n" +">>> import os\n" +">>> os.fspath(pathlib.Path(\"some_file.txt\"))\n" +"'some_file.txt'" #: ../Doc/whatsnew/3.6.rst:457 msgid "" @@ -832,6 +897,16 @@ msgid "" "06:00:00 UTC = 01:00:00 EST 1\n" "07:00:00 UTC = 02:00:00 EST 0" msgstr "" +">>> u0 = datetime(2016, 11, 6, 4, tzinfo=timezone.utc)\n" +">>> for i in range(4):\n" +"... u = u0 + i*HOUR\n" +"... t = u.astimezone(Eastern)\n" +"... print(u.time(), 'UTC =', t.time(), t.tzname(), t.fold)\n" +"...\n" +"04:00:00 UTC = 00:00:00 EDT 0\n" +"05:00:00 UTC = 01:00:00 EDT 0\n" +"06:00:00 UTC = 01:00:00 EST 1\n" +"07:00:00 UTC = 02:00:00 EST 0" #: ../Doc/whatsnew/3.6.rst:491 msgid "" @@ -871,21 +946,19 @@ msgstr "" "que el uso de bytes es suficiente y correcto." #: ../Doc/whatsnew/3.6.rst:511 -#, fuzzy msgid "" "Prior to Python 3.6, data loss could result when using bytes paths on " "Windows. With this change, using bytes to represent paths is now supported " "on Windows, provided those bytes are encoded with the encoding returned by :" "func:`sys.getfilesystemencoding`, which now defaults to ``'utf-8'``." msgstr "" -"Antes de Python 3.6, podía producirse una pérdida de datos al utilizar rutas " +"Antes de Python 3.6, se podían producir pérdidas de datos al utilizar rutas " "de bytes en Windows. Con este cambio, ahora se admite el uso de bytes para " "representar rutas en Windows, siempre que esos bytes estén codificados con " -"la codificación devuelta por :func:`sys.getfilesystemencoding()`, que ahora " +"la codificación devuelta por :func:`sys.getfilesystemencoding`, que ahora " "tiene como valor predeterminado ``'utf-8'``." #: ../Doc/whatsnew/3.6.rst:516 -#, fuzzy msgid "" "Applications that do not use str to represent paths should use :func:`os." "fsencode` and :func:`os.fsdecode` to ensure their bytes are correctly " @@ -893,8 +966,8 @@ msgid "" "`PYTHONLEGACYWINDOWSFSENCODING` or call :func:`sys." "_enablelegacywindowsfsencoding`." msgstr "" -"Las aplicaciones que no usan str para representar rutas deben usar :func:`os." -"fsencode()` y :func:`os.fsdecode()` para asegurarse de que sus bytes estén " +"Las aplicaciones que no utilizan str para representar rutas deben utilizar :" +"func:`os.fsencode` y :func:`os.fsdecode` para garantizar que sus bytes estén " "codificados correctamente. Para volver al comportamiento anterior, " "configure :envvar:`PYTHONLEGACYWINDOWSFSENCODING` o llame a :func:`sys." "_enablelegacywindowsfsencoding`." @@ -946,15 +1019,14 @@ msgid "PEP 520: Preserving Class Attribute Definition Order" msgstr "PEP 520: Conservación del orden de definición de atributos de clase" #: ../Doc/whatsnew/3.6.rst:550 -#, fuzzy msgid "" "Attributes in a class definition body have a natural ordering: the same " "order in which the names appear in the source. This order is now preserved " "in the new class's :attr:`~type.__dict__` attribute." msgstr "" -"Los atributos en el cuerpo de una definición de clase tienen un orden " -"natural: el mismo orden en el que aparecen los nombres en la fuente. Este " -"orden ahora se conserva en el atributo :attr:`~object.__dict__` de la nueva " +"Los atributos del cuerpo de una definición de clase tienen un orden natural: " +"el mismo orden en el que aparecen los nombres en el código fuente. Este " +"orden ahora se conserva en el atributo :attr:`~type.__dict__` de la nueva " "clase." #: ../Doc/whatsnew/3.6.rst:554 @@ -1147,17 +1219,16 @@ msgid "Detect writes after the end of a buffer (buffer overflows)" msgstr "Detectar escrituras después del final de un búfer (desbordes de búfer)" #: ../Doc/whatsnew/3.6.rst:652 -#, fuzzy msgid "" "Check that the :term:`GIL ` is held when allocator " "functions of :c:macro:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) " "and :c:macro:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are " "called." msgstr "" -"Verifique que el :term:`GIL ` se mantenga cuando se " -"invoquen las funciones de asignación de los dominios :c:data:" -"`PYMEM_DOMAIN_OBJ` (ej .: :c:func:`PyObject_Malloc`) y :c:data:" -"`PYMEM_DOMAIN_MEM` (ej .: :c:func:`PyMem_Malloc`)." +"Verifique que :term:`GIL ` se mantenga cuando se " +"llamen las funciones de asignador de los dominios :c:macro:" +"`PYMEM_DOMAIN_OBJ` (por ejemplo: :c:func:`PyObject_Malloc`) y :c:macro:" +"`PYMEM_DOMAIN_MEM` (por ejemplo: :c:func:`PyMem_Malloc`)." #: ../Doc/whatsnew/3.6.rst:656 msgid "Checking if the GIL is held is also a new feature of Python 3.6." @@ -1239,6 +1310,40 @@ msgid "" " File \"unittest/suite.py\", line 84 in __call__\n" " ..." msgstr "" +"Debug memory block at address p=0x7fbcd41666f8: API 'o'\n" +" 4 bytes originally requested\n" +" The 7 pad bytes at p-7 are FORBIDDENBYTE, as expected.\n" +" The 8 pad bytes at tail=0x7fbcd41666fc are not all FORBIDDENBYTE " +"(0xfb):\n" +" at tail+0: 0x02 *** OUCH\n" +" at tail+1: 0xfb\n" +" at tail+2: 0xfb\n" +" at tail+3: 0xfb\n" +" at tail+4: 0xfb\n" +" at tail+5: 0xfb\n" +" at tail+6: 0xfb\n" +" at tail+7: 0xfb\n" +" The block was made by call #1233329 to debug malloc/realloc.\n" +" Data at p: 1a 2b 30 00\n" +"\n" +"Memory block allocated at (most recent call first):\n" +" File \"test/test_bytes.py\", line 323\n" +" File \"unittest/case.py\", line 600\n" +" File \"unittest/case.py\", line 648\n" +" File \"unittest/suite.py\", line 122\n" +" File \"unittest/suite.py\", line 84\n" +"\n" +"Fatal Python error: bad trailing pad byte\n" +"\n" +"Current thread 0x00007fbcdbd32700 (most recent call first):\n" +" File \"test/test_bytes.py\", line 323 in test_hex\n" +" File \"unittest/case.py\", line 600 in run\n" +" File \"unittest/case.py\", line 648 in __call__\n" +" File \"unittest/suite.py\", line 122 in run\n" +" File \"unittest/suite.py\", line 84 in __call__\n" +" File \"unittest/suite.py\", line 122 in run\n" +" File \"unittest/suite.py\", line 84 in __call__\n" +" ..." #: ../Doc/whatsnew/3.6.rst:707 msgid "(Contributed by Victor Stinner in :issue:`26516` and :issue:`26564`.)" @@ -1386,16 +1491,14 @@ msgstr "" "autenticación de cuentas, tokens y similares." #: ../Doc/whatsnew/3.6.rst:781 -#, fuzzy msgid "" "Note that the pseudo-random generators in the :mod:`random` module should " "*NOT* be used for security purposes. Use :mod:`secrets` on Python 3.6+ and :" "func:`os.urandom` on Python 3.5 and earlier." msgstr "" -"Tenga en cuenta que los generadores pseudoaleatorios en el módulo :mod:" -"`random` deben utilizarse *NOT* por motivos de seguridad. Utilice :mod:" -"`secrets` en Python 3.6+ y :func:`os.urandom()` en Python 3.5 y versiones " -"anteriores." +"Tenga en cuenta que los generadores pseudoaleatorios del módulo :mod:" +"`random` deben usarse con fines de seguridad. Use :mod:`secrets` en Python " +"3.6+ y :func:`os.urandom` en Python 3.5 y versiones anteriores." #: ../Doc/whatsnew/3.6.rst:787 msgid ":pep:`506` -- Adding A Secrets Module To The Standard Library" @@ -1709,7 +1812,6 @@ msgstr "" "issue:`28720`.)" #: ../Doc/whatsnew/3.6.rst:935 -#, fuzzy msgid "" "The :func:`~collections.namedtuple` function now accepts an optional keyword " "argument *module*, which, when specified, is used for the :attr:`~type." @@ -1718,8 +1820,8 @@ msgid "" msgstr "" "La función :func:`~collections.namedtuple` ahora acepta un argumento de " "palabra clave opcional *module*, que, cuando se especifica, se utiliza para " -"el atributo ``__module__`` de la clase de tupla con nombre devuelto. " -"(Contribuido por Raymond Hettinger en :issue:`17941`.)" +"el atributo :attr:`~type.__module__` de la clase de tupla nombrada que se " +"devuelve. (Contribuido por Raymond Hettinger en :issue:`17941`)." #: ../Doc/whatsnew/3.6.rst:940 ../Doc/whatsnew/3.6.rst:2295 msgid "" @@ -1740,7 +1842,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:949 msgid "concurrent.futures" -msgstr "Futuros concurrentes" +msgstr "concurrent.futures" #: ../Doc/whatsnew/3.6.rst:951 msgid "" @@ -1850,6 +1952,8 @@ msgid "" ">>> Decimal('-3.14').as_integer_ratio()\n" "(-157, 50)" msgstr "" +">>> Decimal('-3.14').as_integer_ratio()\n" +"(-157, 50)" #: ../Doc/whatsnew/3.6.rst:1007 msgid "(Contributed by Stefan Krah amd Mark Dickinson in :issue:`25928`.)" @@ -1860,7 +1964,6 @@ msgid "distutils" msgstr "distutils" #: ../Doc/whatsnew/3.6.rst:1014 -#, fuzzy msgid "" "The ``default_format`` attribute has been removed from ``distutils.command." "sdist.sdist`` and the ``formats`` attribute defaults to ``['gztar']``. " @@ -1868,15 +1971,15 @@ msgid "" "``default_format`` may need to be adapted. See :issue:`27819` for more " "details." msgstr "" -"El atributo ``default_format`` se ha eliminado de :class:`distutils.command." -"sdist.sdist` y el atributo ``formats`` se establece por defecto en " -"``['gztar']``. Aunque no está previsto, es posible que sea necesario adaptar " +"El atributo ``default_format`` se ha eliminado de ``distutils.command.sdist." +"sdist`` y el atributo ``formats`` tiene como valor predeterminado " +"``['gztar']``. Aunque no se prevé, es posible que sea necesario adaptar " "cualquier código que dependa de la presencia de ``default_format``. " "Consulte :issue:`27819` para obtener más detalles." #: ../Doc/whatsnew/3.6.rst:1022 msgid "email" -msgstr "Email" +msgstr "email" #: ../Doc/whatsnew/3.6.rst:1024 msgid "" @@ -1982,6 +2085,14 @@ msgid "" ">>> list(Color)\n" "[, , ]" msgstr "" +">>> from enum import Enum, auto\n" +">>> class Color(Enum):\n" +"... red = auto()\n" +"... blue = auto()\n" +"... green = auto()\n" +"...\n" +">>> list(Color)\n" +"[, , ]" #: ../Doc/whatsnew/3.6.rst:1076 msgid "faulthandler" @@ -2341,7 +2452,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:1243 msgid "logging" -msgstr "Inicio sesión" +msgstr "logging" #: ../Doc/whatsnew/3.6.rst:1245 msgid "" @@ -2357,7 +2468,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:1252 msgid "math" -msgstr "Matemáticas" +msgstr "math" #: ../Doc/whatsnew/3.6.rst:1254 msgid "" @@ -2427,7 +2538,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:1292 msgid "pathlib" -msgstr "Pathlib" +msgstr "pathlib" #: ../Doc/whatsnew/3.6.rst:1294 msgid "" @@ -2477,18 +2588,17 @@ msgid "pickletools" msgstr "pepinillos" #: ../Doc/whatsnew/3.6.rst:1319 -#, fuzzy msgid "" ":func:`pickletools.dis` now outputs the implicit memo index for the " "``MEMOIZE`` opcode. (Contributed by Serhiy Storchaka in :issue:`25382`.)" msgstr "" -":func:`pickletools.dis()` ahora genera el índice de memo implícito para el " +":func:`pickletools.dis` ahora genera el índice de memo implícito para el " "código de operación ``MEMOIZE``. (Contribuido por Serhiy Storchaka en :issue:" -"`25382`.)" +"`25382`)." #: ../Doc/whatsnew/3.6.rst:1325 msgid "pydoc" -msgstr "Pydoc" +msgstr "pydoc" #: ../Doc/whatsnew/3.6.rst:1327 msgid "" @@ -2610,16 +2720,14 @@ msgid "site" msgstr "sitio" #: ../Doc/whatsnew/3.6.rst:1391 -#, fuzzy msgid "" "When specifying paths to add to :data:`sys.path` in a ``.pth`` file, you may " "now specify file paths on top of directories (e.g. zip files). (Contributed " "by Wolfgang Langner in :issue:`26587`)." msgstr "" -"Al especificar rutas para agregar a :attr:`sys.path` en un archivo ``.pth``, " -"ahora puede especificar rutas de archivo en la parte superior de los " -"directorios (por ejemplo, archivos zip). (Contribuido por Wolfgang Langner " -"en :issue:`26587`)." +"Al especificar rutas para agregar a :data:`sys.path` en un archivo ``.pth``, " +"ahora puede especificar rutas de archivos sobre directorios (por ejemplo, " +"archivos zip). (Contribuido por Wolfgang Langner en :issue:`26587`)." #: ../Doc/whatsnew/3.6.rst:1397 msgid "sqlite3" @@ -2638,15 +2746,14 @@ msgid "socket" msgstr "enchufe" #: ../Doc/whatsnew/3.6.rst:1406 -#, fuzzy msgid "" "The :func:`~socket.socket.ioctl` function now supports the :const:`~socket." "SIO_LOOPBACK_FAST_PATH` control code. (Contributed by Daniel Stokes in :" "issue:`26536`.)" msgstr "" "La función :func:`~socket.socket.ioctl` ahora admite el código de control :" -"data:`~socket.SIO_LOOPBACK_FAST_PATH`. (Contribuido por Daniel Stokes en :" -"issue:`26536`.)" +"const:`~socket.SIO_LOOPBACK_FAST_PATH`. (Contribución de Daniel Stokes en :" +"issue:`26536`)." #: ../Doc/whatsnew/3.6.rst:1410 msgid "" @@ -2669,18 +2776,17 @@ msgstr "" "Christian Heimes en :issue:`27744`.)" #: ../Doc/whatsnew/3.6.rst:1418 -#, fuzzy msgid "" "The socket module now supports the address family :const:`~socket.AF_ALG` to " "interface with Linux Kernel crypto API. ``ALG_*``, ``SOL_ALG`` and :meth:" "`~socket.socket.sendmsg_afalg` were added. (Contributed by Christian Heimes " "in :issue:`27744` with support from Victor Stinner.)" msgstr "" -"El módulo de socket ahora admite la familia de direcciones :data:`~socket." +"El módulo de socket ahora admite la familia de direcciones :const:`~socket." "AF_ALG` para interactuar con la API de cifrado del kernel de Linux. Se " "agregaron ``ALG_*``, ``SOL_ALG`` y :meth:`~socket.socket.sendmsg_afalg`. " -"(Contribuido por Christian Heimes en :issue:`27744` con el apoyo de Victor " -"Stinner.)" +"(Contribución de Christian Heimes en :issue:`27744` con el apoyo de Victor " +"Stinner)." #: ../Doc/whatsnew/3.6.rst:1424 msgid "" @@ -2795,6 +2901,10 @@ msgid "" "SSLSocket.verify_client_post_handshake` to initiate TLS 1.3 post-handshake " "authentication. (Contributed by Christian Heimes in :gh:`78851`.)" msgstr "" +"Se agregó :attr:`ssl.SSLContext.post_handshake_auth` para habilitar y :meth:" +"`ssl.SSLSocket.verify_client_post_handshake` para iniciar la autenticación " +"posterior al protocolo de enlace TLS 1.3. (Contribuido por Christian Heimes " +"en :gh:`78851`.)" #: ../Doc/whatsnew/3.6.rst:1481 msgid "statistics" @@ -2887,12 +2997,11 @@ msgid "telnetlib" msgstr "telnetlib" #: ../Doc/whatsnew/3.6.rst:1527 -#, fuzzy msgid "" ":class:`!telnetlib.Telnet` is now a context manager (contributed by Stéphane " "Wirtel in :issue:`25485`)." msgstr "" -":class:`~telnetlib.Telnet` es ahora un administrador de contexto " +":class:`!telnetlib.Telnet` es ahora un administrador de contexto " "(contribución de Stéphane Wirtel en :issue:`25485`)." #: ../Doc/whatsnew/3.6.rst:1532 @@ -2981,6 +3090,16 @@ msgid "" " [Previous line repeated 995 more times]\n" "RecursionError: maximum recursion depth exceeded" msgstr "" +">>> def f(): f()\n" +"...\n" +">>> f()\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"\", line 1, in f\n" +" File \"\", line 1, in f\n" +" File \"\", line 1, in f\n" +" [Previous line repeated 995 more times]\n" +"RecursionError: maximum recursion depth exceeded" #: ../Doc/whatsnew/3.6.rst:1584 msgid "(Contributed by Emanuel Barry in :issue:`26823`.)" @@ -3098,6 +3217,10 @@ msgid "" "UserId = NewType('UserId', int)\n" "some_id = UserId(524313)" msgstr "" +"from typing import NewType\n" +"\n" +"UserId = NewType('UserId', int)\n" +"some_id = UserId(524313)" #: ../Doc/whatsnew/3.6.rst:1642 msgid "" @@ -3238,6 +3361,13 @@ msgid "" "f = func()\n" "f = None" msgstr "" +"import warnings\n" +"\n" +"def func():\n" +" return open(__file__)\n" +"\n" +"f = func()\n" +"f = None" #: ../Doc/whatsnew/3.6.rst:1720 msgid "Output of the command ``python3.6 -Wd -X tracemalloc=5 example.py``::" @@ -3254,6 +3384,14 @@ msgid "" " File \"example.py\", lineno 6\n" " f = func()" msgstr "" +"example.py:7: ResourceWarning: unclosed file <_io.TextIOWrapper " +"name='example.py' mode='r' encoding='UTF-8'>\n" +" f = None\n" +"Object allocated at (most recent call first):\n" +" File \"example.py\", lineno 4\n" +" return open(__file__)\n" +" File \"example.py\", lineno 6\n" +" f = func()" #: ../Doc/whatsnew/3.6.rst:1730 msgid "" @@ -3466,7 +3604,6 @@ msgstr "" "hasta un 80% más rápido. (Contribuido por Josh Snider en :issue:`26574`)." #: ../Doc/whatsnew/3.6.rst:1828 -#, fuzzy msgid "" "Allocator functions of the :c:func:`PyMem_Malloc` domain (:c:macro:" "`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc memory allocator ` " @@ -3475,12 +3612,13 @@ msgid "" "short lifetime, and use :c:func:`malloc` for larger memory blocks. " "(Contributed by Victor Stinner in :issue:`26249`)." msgstr "" -"Las funciones de asignación del dominio :c:func:`PyMem_Malloc` ( :c:data:" -"`PYMEM_DOMAIN_MEM`) ahora usan la función :ref:`pymalloc memory allocator " -"` en lugar de la función :c:func:`malloc` de la biblioteca C. El " -"asignador de pymalloc está optimizado para objetos menores o iguales a 512 " -"bytes con una vida útil corta y usa :c:func:`malloc` para bloques de memoria " -"más grandes. (Contribuido por Victor Stinner en :issue:`26249`)." +"Las funciones de asignación del dominio :c:func:`PyMem_Malloc` (:c:macro:" +"`PYMEM_DOMAIN_MEM`) ahora utilizan la función :ref:`pymalloc memory " +"allocator ` en lugar de la función :c:func:`malloc` de la " +"biblioteca C. El asignador pymalloc está optimizado para objetos más " +"pequeños o iguales a 512 bytes con una vida útil corta, y utiliza :c:func:" +"`malloc` para bloques de memoria más grandes. (Contribuido por Victor " +"Stinner en :issue:`26249`)." #: ../Doc/whatsnew/3.6.rst:1835 #, python-format @@ -3589,16 +3727,15 @@ msgstr "" "Alecsandru Patrascu de Intel en :issue:`26359`.)" #: ../Doc/whatsnew/3.6.rst:1880 -#, fuzzy msgid "" "The :term:`GIL ` must now be held when allocator " "functions of :c:macro:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) " "and :c:macro:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are " "called." msgstr "" -"El :term:`GIL ` ahora debe mantenerse cuando se " -"llaman las funciones de asignación de los dominios :c:data:" -"`PYMEM_DOMAIN_OBJ` (por ejemplo: :c:func:`PyObject_Malloc`) y: :c:data:" +"Ahora se debe mantener :term:`GIL ` cuando se " +"llaman las funciones de asignador de los dominios :c:macro:" +"`PYMEM_DOMAIN_OBJ` (por ejemplo: :c:func:`PyObject_Malloc`) y :c:macro:" "`PYMEM_DOMAIN_MEM` (por ejemplo: :c:func:`PyMem_Malloc`)." #: ../Doc/whatsnew/3.6.rst:1884 @@ -3687,6 +3824,9 @@ msgid "" "Python 3.6.0b4+ (3.6:223967b49e49+, Nov 21 2016, 20:55:04)\n" "[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]" msgstr "" +"$ ./python -VV\n" +"Python 3.6.0b4+ (3.6:223967b49e49+, Nov 21 2016, 20:55:04)\n" +"[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]" #: ../Doc/whatsnew/3.6.rst:1927 msgid "Deprecated" @@ -3770,12 +3910,11 @@ msgid "asynchat" msgstr "asynchat" #: ../Doc/whatsnew/3.6.rst:1968 -#, fuzzy msgid "" "The :mod:`!asynchat` has been deprecated in favor of :mod:`asyncio`. " "(Contributed by Mariatta in :issue:`25002`.)" msgstr "" -"El :mod:`asynchat` ha quedado obsoleto en favor del :mod:`asyncio`. " +"El :mod:`!asynchat` ha quedado obsoleto en favor del :mod:`asyncio`. " "(Contribuido por Mariatta en :issue:`25002`.)" #: ../Doc/whatsnew/3.6.rst:1973 @@ -3783,12 +3922,11 @@ msgid "asyncore" msgstr "asyncore" #: ../Doc/whatsnew/3.6.rst:1975 -#, fuzzy msgid "" "The :mod:`!asyncore` has been deprecated in favor of :mod:`asyncio`. " "(Contributed by Mariatta in :issue:`25002`.)" msgstr "" -"El :mod:`asyncore` ha quedado obsoleto en favor del :mod:`asyncio`. " +"El :mod:`!asyncore` ha quedado obsoleto en favor del :mod:`asyncio`. " "(Contribuido por Mariatta en :issue:`25002`.)" #: ../Doc/whatsnew/3.6.rst:1980 @@ -3809,18 +3947,16 @@ msgstr "" "`21708`.)" #: ../Doc/whatsnew/3.6.rst:1992 -#, fuzzy msgid "" "The undocumented ``extra_path`` argument to the ``distutils.Distribution`` " "constructor is now considered deprecated and will raise a warning if set. " "Support for this parameter will be removed in a future Python release. See :" "issue:`27919` for details." msgstr "" -"El argumento ``extra_path`` sin documentar para el constructor :class:" -"`~distutils.Distribution` ahora se considera obsoleto y lanzará una " -"advertencia si se establece. La compatibilidad con este parámetro se " -"eliminará en una futura versión de Python. Consulte :issue:`27919` para " -"obtener más detalles." +"El argumento ``extra_path`` no documentado para el constructor ``distutils." +"Distribution`` ahora se considera obsoleto y generará una advertencia si se " +"configura. La compatibilidad con este parámetro se eliminará en una futura " +"versión de Python. Consulte :issue:`27919` para obtener más detalles." #: ../Doc/whatsnew/3.6.rst:1999 msgid "grp" @@ -3851,16 +3987,15 @@ msgstr "" "exec_module`." #: ../Doc/whatsnew/3.6.rst:2016 -#, fuzzy msgid "" "The :class:`importlib.machinery.WindowsRegistryFinder` class is now " "deprecated. As of 3.6.0, it is still added to :data:`sys.meta_path` by " "default (on Windows), but this may change in future releases." msgstr "" -"La clase :class:`importlib.machinery.WindowsRegistryFinder` ahora está en " -"desuso. A partir de 3.6.0, todavía se agrega a :attr:`sys.meta_path` de " -"forma predeterminada (en Windows), pero esto puede cambiar en versiones " -"futuras." +"La clase :class:`importlib.machinery.WindowsRegistryFinder` ya no se " +"utiliza. A partir de la versión 3.6.0, todavía se agrega a :data:`sys." +"meta_path` de manera predeterminada (en Windows), pero esto puede cambiar en " +"futuras versiones." #: ../Doc/whatsnew/3.6.rst:2023 msgid "" @@ -3920,12 +4055,11 @@ msgstr "" "(Contribuido por Christian Heimes en :issue:`28022` y :issue:`26470`.)" #: ../Doc/whatsnew/3.6.rst:2056 -#, fuzzy msgid "" "The :mod:`!tkinter.tix` module is now deprecated. :mod:`tkinter` users " "should use :mod:`tkinter.ttk` instead." msgstr "" -"El módulo :mod:`tkinter.tix` ahora está en desuso. Los usuarios de :mod:" +"El módulo :mod:`!tkinter.tix` ahora está en desuso. Los usuarios de :mod:" "`tkinter` deberían utilizar :mod:`tkinter.ttk` en su lugar." #: ../Doc/whatsnew/3.6.rst:2064 @@ -3943,7 +4077,7 @@ msgstr "" #: ../Doc/whatsnew/3.6.rst:2071 msgid "xml" -msgstr "" +msgstr "xml" #: ../Doc/whatsnew/3.6.rst:2073 msgid "" @@ -3951,23 +4085,26 @@ msgid "" "minidom` and :mod:`xml.sax` modules no longer process external entities by " "default. (Contributed by Christian Heimes in :gh:`61441`.)" msgstr "" +"Como medida de mitigación frente a la recuperación de DTD y entidades " +"externas, los módulos :mod:`xml.dom.minidom` y :mod:`xml.sax` ya no procesan " +"entidades externas de forma predeterminada. (Contribuido por Christian " +"Heimes en :gh:`61441`.)" #: ../Doc/whatsnew/3.6.rst:2080 msgid "Deprecated functions and types of the C API" msgstr "Funciones y tipos obsoletos de la API de C" #: ../Doc/whatsnew/3.6.rst:2082 -#, fuzzy msgid "" "Undocumented functions :c:func:`!PyUnicode_AsEncodedObject`, :c:func:`!" "PyUnicode_AsDecodedObject`, :c:func:`!PyUnicode_AsEncodedUnicode` and :c:" "func:`!PyUnicode_AsDecodedUnicode` are deprecated now. Use the :ref:`generic " "codec based API ` instead." msgstr "" -"Las funciones no documentadas :c:func:`PyUnicode_AsEncodedObject`, :c:func:" -"`PyUnicode_AsDecodedObject`, :c:func:`PyUnicode_AsEncodedUnicode` y :c:func:" -"`PyUnicode_AsDecodedUnicode` ahora están en desuso. En su lugar, utilice el :" -"ref:`generic codec based API `." +"Las funciones no documentadas :c:func:`!PyUnicode_AsEncodedObject`, :c:func:" +"`!PyUnicode_AsDecodedObject`, :c:func:`!PyUnicode_AsEncodedUnicode` y :c:" +"func:`!PyUnicode_AsDecodedUnicode` ya no se utilizan. Utilice :ref:`generic " +"codec based API ` en su lugar." #: ../Doc/whatsnew/3.6.rst:2089 msgid "Deprecated Build Options" @@ -4157,7 +4294,6 @@ msgstr "" "``NULL``." #: ../Doc/whatsnew/3.6.rst:2176 -#, fuzzy msgid "" "The format of the :attr:`~codeobject.co_lnotab` attribute of code objects " "changed to support a negative line number delta. By default, Python does not " @@ -4169,17 +4305,17 @@ msgid "" "delta. See ``Objects/lnotab_notes.txt`` for the :attr:`!co_lnotab` format " "and how to decode it, and see the :pep:`511` for the rationale." msgstr "" -"El formato del atributo ``co_lnotab`` de los objetos de código cambió para " -"admitir un delta de número de línea negativo. De forma predeterminada, " -"Python no emite un código de bytes con un delta de número de línea negativo. " -"Las funciones que utilizan ``frame.f_lineno``, ``PyFrame_GetLineNumber()`` o " -"``PyCode_Addr2Line()`` no se ven afectadas. Las funciones que decodifican " -"directamente ``co_lnotab`` deben actualizarse para usar un tipo entero de 8 " -"bits con signo para el delta del número de línea, pero esto solo es " -"necesario para admitir aplicaciones que usan un delta del número de línea " -"negativo. Consulte ``Objects/lnotab_notes.txt`` para conocer el formato " -"``co_lnotab`` y cómo decodificarlo, y consulte :pep:`511` para conocer la " -"justificación." +"El formato del atributo :attr:`~codeobject.co_lnotab` de los objetos de " +"código cambió para admitir un delta de número de línea negativo. De manera " +"predeterminada, Python no emite código de bytes con un delta de número de " +"línea negativo. Las funciones que usan :attr:`frame.f_lineno`, " +"``PyFrame_GetLineNumber()`` o ``PyCode_Addr2Line()`` no se ven afectadas. " +"Las funciones que decodifican directamente :attr:`!co_lnotab` deben " +"actualizarse para usar un tipo entero de 8 bits con signo para el delta de " +"número de línea, pero esto solo es necesario para admitir aplicaciones que " +"usen un delta de número de línea negativo. Consulte ``Objects/lnotab_notes." +"txt`` para conocer el formato :attr:`!co_lnotab` y cómo decodificarlo, y " +"consulte :pep:`511` para conocer la justificación." #: ../Doc/whatsnew/3.6.rst:2187 msgid "" @@ -4207,16 +4343,14 @@ msgstr "" "devolver :const:`None`. Ver :issue:`20059`." #: ../Doc/whatsnew/3.6.rst:2197 -#, fuzzy msgid "" "The :mod:`!imp` module now raises a :exc:`DeprecationWarning` instead of :" "exc:`PendingDeprecationWarning`." msgstr "" -"El módulo :mod:`imp` ahora lanza un :exc:`DeprecationWarning` en lugar de :" +"El módulo :mod:`!imp` ahora lanza un :exc:`DeprecationWarning` en lugar de :" "exc:`PendingDeprecationWarning`." #: ../Doc/whatsnew/3.6.rst:2200 -#, fuzzy msgid "" "The following modules have had missing APIs added to their :attr:`__all__` " "attributes to match the documented APIs: :mod:`calendar`, :mod:`!cgi`, :mod:" @@ -4227,14 +4361,14 @@ msgid "" "new symbols when ``import *`` is used. (Contributed by Joel Taddei and Jacek " "Kołodziej in :issue:`23883`.)" msgstr "" -"Los siguientes módulos han tenido API faltantes agregadas a sus atributos :" -"attr:`__all__` para que coincidan con las API documentadas: :mod:" -"`calendar`, :mod:`cgi`, :mod:`csv`, :mod:`~xml.etree.ElementTree`, :mod:" +"A los siguientes módulos se les han añadido las API faltantes a sus " +"atributos :attr:`__all__` para que coincidan con las API documentadas: :mod:" +"`calendar`, :mod:`!cgi`, :mod:`csv`, :mod:`~xml.etree.ElementTree`, :mod:" "`enum`, :mod:`fileinput`, :mod:`ftplib`, :mod:`logging`, :mod:`mailbox`, :" -"mod:`mimetypes`, :mod:`optparse`, :mod:`plistlib`, :mod:`smtpd`, :mod:" +"mod:`mimetypes`, :mod:`optparse`, :mod:`plistlib`, :mod:`!smtpd`, :mod:" "`subprocess`, :mod:`tarfile`, :mod:`threading` y :mod:`wave`. Esto significa " -"que exportarán nuevos símbolos cuando se utilice ``import *``. (Contribuido " -"por Joel Taddei y Jacek Kołodziej en :issue:`23883`.)" +"que exportarán nuevos símbolos cuando se utilice ``import *``. (Contribución " +"de Joel Taddei y Jacek Kołodziej en :issue:`23883`)." #: ../Doc/whatsnew/3.6.rst:2211 msgid "" @@ -4276,13 +4410,12 @@ msgstr "" "`23430`.)" #: ../Doc/whatsnew/3.6.rst:2228 -#, fuzzy msgid "" ":func:`!spwd.getspnam` now raises a :exc:`PermissionError` instead of :exc:" "`KeyError` if the user doesn't have privileges." msgstr "" -":func:`spwd.getspnam` ahora lanza un :exc:`PermissionError` en lugar de :exc:" -"`KeyError` si el usuario no tiene privilegios." +":func:`!spwd.getspnam` ahora lanza un :exc:`PermissionError` en lugar de :" +"exc:`KeyError` si el usuario no tiene privilegios." #: ../Doc/whatsnew/3.6.rst:2231 msgid "" @@ -4295,7 +4428,6 @@ msgstr "" "(Contribuido por Martin Panter en :issue:`26685`.)" #: ../Doc/whatsnew/3.6.rst:2235 -#, fuzzy msgid "" "The *decode_data* argument for the :class:`!smtpd.SMTPChannel` and :class:`!" "smtpd.SMTPServer` constructors is now ``False`` by default. This means that " @@ -4304,12 +4436,13 @@ msgid "" "that has already been updated in accordance with the deprecation warning " "generated by 3.5 will not be affected." msgstr "" -"El argumento *decode_data* para los constructores :class:`smtpd.SMTPChannel` " -"y :class:`smtpd.SMTPServer` ahora es ``False`` por defecto. Esto significa " -"que el argumento pasado a :meth:`~smtpd.SMTPServer.process_message` ahora es " -"un objeto de bytes por defecto, y ``process_message()`` se pasarán " -"argumentos de palabra clave. El código que ya se haya actualizado de acuerdo " -"con la advertencia de obsolescencia generada por 3.5 no se verá afectado." +"El argumento *decode_data* para los constructores :class:`!smtpd." +"SMTPChannel` y :class:`!smtpd.SMTPServer` ahora es ``False`` de manera " +"predeterminada. Esto significa que el argumento que se pasa a :meth:`!" +"process_message` ahora es un objeto bytes de manera predeterminada y a :meth:" +"`!process_message` se le pasarán argumentos de palabras clave. El código que " +"ya se haya actualizado de acuerdo con la advertencia de obsolescencia " +"generada por la versión 3.5 no se verá afectado." #: ../Doc/whatsnew/3.6.rst:2243 msgid "" @@ -4356,7 +4489,6 @@ msgstr "" "consecuencia." #: ../Doc/whatsnew/3.6.rst:2262 -#, fuzzy msgid "" "In ``distutils.command.sdist.sdist``, the ``default_format`` attribute has " "been removed and is no longer honored. Instead, the gzipped tarfile format " @@ -4365,11 +4497,11 @@ msgid "" "distributions are required, configure the project with a ``setup.cfg`` file " "containing the following:" msgstr "" -"En :class:`distutils.command.sdist.sdist`, el atributo ``default_format`` se " -"ha eliminado y ya no se respeta. En cambio, el formato de archivo tar " -"comprimido con gzip es el predeterminado en todas las plataformas y no se " -"realiza ninguna selección específica de la plataforma. En entornos donde las " -"distribuciones se construyen en Windows y se requieren distribuciones zip, " +"En ``distutils.command.sdist.sdist``, se ha eliminado el atributo " +"``default_format`` y ya no se respeta. En su lugar, el formato de archivo " +"tar comprimido con gzip es el predeterminado en todas las plataformas y no " +"se realiza ninguna selección específica de la plataforma. En entornos donde " +"las distribuciones se crean en Windows y se requieren distribuciones zip, " "configure el proyecto con un archivo ``setup.cfg`` que contenga lo siguiente:" #: ../Doc/whatsnew/3.6.rst:2270 @@ -4377,6 +4509,8 @@ msgid "" "[sdist]\n" "formats=zip" msgstr "" +"[sdist]\n" +"formats=zip" #: ../Doc/whatsnew/3.6.rst:2275 msgid "" @@ -4413,13 +4547,12 @@ msgstr "" "`~collections.OrderedDict`. (Contribuido por Steve Holden en :issue:`27842`.)" #: ../Doc/whatsnew/3.6.rst:2291 -#, fuzzy msgid "" "The :const:`!crypt.METHOD_CRYPT` will no longer be added to ``crypt." "methods`` if unsupported by the platform. (Contributed by Victor Stinner in :" "issue:`25287`.)" msgstr "" -"El :const:`crypt.METHOD_CRYPT` ya no se agregará a ``crypt.methods`` si la " +"El :const:`!crypt.METHOD_CRYPT` ya no se agregará a ``crypt.methods`` si la " "plataforma no lo admite. (Contribuido por Victor Stinner en :issue:`25287`.)" #: ../Doc/whatsnew/3.6.rst:2299 @@ -4510,7 +4643,6 @@ msgstr "" "`RuntimeError` en Python 3.8." #: ../Doc/whatsnew/3.6.rst:2336 -#, fuzzy msgid "" "With the introduction of :exc:`ModuleNotFoundError`, import system consumers " "may start expecting import system replacements to raise that more specific " @@ -4524,15 +4656,16 @@ msgid "" msgstr "" "Con la introducción de :exc:`ModuleNotFoundError`, los consumidores del " "sistema de importación pueden comenzar a esperar que los reemplazos del " -"sistema de importación generen esa excepción más específica cuando " -"corresponda, en lugar de que el :exc:`ImportError`. Para proveer " -"compatibilidad futura con dichos consumidores, los implementadores de un " -"sistema alternativo de importación que completamente reemplacen :func:" -"`__import__` necesitarán actualizar su implementación para lanzar la nueva " -"subclase cundo un módulo no puede ser encontrado.. Los implementadores de " -"complementos compatibles con el sistema de importación predeterminado no " -"deberían necesitar realizar ningún cambio, ya que el sistema de importación " -"predeterminado lanzará la nueva subclase cuando sea apropiado." +"sistema de importación generen esa excepción más específica cuando sea " +"apropiado, en lugar de la excepción menos específica :exc:`ImportError`. " +"Para proporcionar compatibilidad futura con dichos consumidores, los " +"implementadores de sistemas de importación alternativos que reemplacen " +"completamente a :func:`__import__` deberán actualizar sus implementaciones " +"para generar la nueva subclase cuando no se pueda encontrar un módulo. Los " +"implementadores de complementos compatibles con el sistema de importación " +"predeterminado no deberían necesitar realizar ningún cambio, ya que el " +"sistema de importación predeterminado generará la nueva subclase cuando sea " +"apropiado." #: ../Doc/whatsnew/3.6.rst:2348 msgid "Changes in the C API" @@ -4738,6 +4871,8 @@ msgid "" ":mod:`xml.dom.minidom` and :mod:`xml.sax` modules no longer process external " "entities by default. See also :gh:`61441`." msgstr "" +"Los módulos :mod:`xml.dom.minidom` y :mod:`xml.sax` ya no procesan entidades " +"externas de forma predeterminada. Consulte también :gh:`61441`." #: ../Doc/whatsnew/3.6.rst:2453 msgid "" @@ -4776,7 +4911,6 @@ msgid "Notable changes in Python 3.6.13" msgstr "Cambios notables en Python 3.6.13" #: ../Doc/whatsnew/3.6.rst:2471 -#, fuzzy msgid "" "Earlier Python versions allowed using both ``;`` and ``&`` as query " "parameter separators in :func:`urllib.parse.parse_qs` and :func:`urllib." @@ -4787,20 +4921,19 @@ msgid "" "For more details, please see their respective documentation. (Contributed by " "Adam Goldschmidt, Senthil Kumaran and Ken Jin in :issue:`42967`.)" msgstr "" -"Las versiones anteriores de Python permitían el uso de ``;`` y ``&`` como " -"separadores de parámetros de consulta en :func:`urllib.parse.parse_qs` y :" -"func:`urllib.parse.parse_qsl`. Debido a problemas de seguridad y para " -"cumplir con las recomendaciones más recientes del W3C, esto se ha cambiado " -"para permitir solo una clave separadora, con ``&`` como predeterminado. Este " -"cambio también afecta a :func:`cgi.parse` y :func:`cgi.parse_multipart` ya " -"que utilizan las funciones afectadas internamente. Para obtener más " -"detalles, consulte su documentación respectiva. (Contribuido por Adam " -"Goldschmidt, Senthil Kumaran y Ken Jin en :issue:`42967`.)" +"Las versiones anteriores de Python permitían utilizar tanto ``;`` como ``&`` " +"como separadores de parámetros de consulta en :func:`urllib.parse.parse_qs` " +"y :func:`urllib.parse.parse_qsl`. Por cuestiones de seguridad y para cumplir " +"con las recomendaciones más recientes del W3C, esto se ha modificado para " +"permitir solo una clave separadora, con ``&`` como valor predeterminado. " +"Este cambio también afecta a :func:`!cgi.parse` y :func:`!cgi." +"parse_multipart`, ya que utilizan las funciones afectadas internamente. Para " +"obtener más detalles, consulte su documentación respectiva. (Contribuido por " +"Adam Goldschmidt, Senthil Kumaran y Ken Jin en :issue:`42967`)." #: ../Doc/whatsnew/3.6.rst:2482 -#, fuzzy msgid "Notable changes in Python 3.6.14" -msgstr "Cambios notables en Python 3.6.4" +msgstr "Cambios notables en Python 3.6.14" #: ../Doc/whatsnew/3.6.rst:2484 msgid "" @@ -4810,6 +4943,13 @@ msgid "" "old behavior, set a ``trust_server_pasv_ipv4_address`` attribute on your FTP " "instance to ``True``. (See :gh:`87451`)" msgstr "" +"Una corrección de seguridad modifica el comportamiento de :class:`ftplib." +"FTP` para que no confíe en la dirección IPv4 enviada desde el servidor " +"remoto al configurar un canal de datos pasivo. En su lugar, reutilizamos la " +"dirección IP del servidor FTP. Para el código inusual que requiere el " +"comportamiento anterior, configure un atributo " +"``trust_server_pasv_ipv4_address`` en su instancia FTP en ``True``. " +"(Consulte :gh:`87451`)" #: ../Doc/whatsnew/3.6.rst:2490 msgid "" @@ -4820,3 +4960,10 @@ msgid "" "removal characters are controlled by a new module level variable ``urllib." "parse._UNSAFE_URL_BYTES_TO_REMOVE``. (See :gh:`88048`)" msgstr "" +"La presencia de caracteres de nueva línea o de tabulación en partes de una " +"URL permite algunas formas de ataques. Siguiendo la especificación WHATWG " +"que actualiza RFC 3986, el analizador :func:`urllib.parse` elimina de la URL " +"los caracteres de nueva línea ASCII ``\\n``, ``\\r`` y de tabulación ``\\t`` " +"para evitar este tipo de ataques. Los caracteres eliminados se controlan " +"mediante una nueva variable de nivel de módulo ``urllib.parse." +"_UNSAFE_URL_BYTES_TO_REMOVE``. (Véase :gh:`88048`)" diff --git a/whatsnew/3.7.po b/whatsnew/3.7.po index a55bec65db..7db3473611 100644 --- a/whatsnew/3.7.po +++ b/whatsnew/3.7.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-30 16:55-0300\n" +"PO-Revision-Date: 2024-11-24 11:55+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language: es_EC\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_EC\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" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/whatsnew/3.7.rst:3 msgid "What's New In Python 3.7" @@ -304,6 +305,16 @@ msgid "" "class B:\n" " ..." msgstr "" +"class C:\n" +" @classmethod\n" +" def from_string(cls, source: str) -> C:\n" +" ...\n" +"\n" +" def validate_b(self, obj: B) -> bool:\n" +" ...\n" +"\n" +"class B:\n" +" ..." #: ../Doc/whatsnew/3.7.rst:169 msgid "" @@ -316,7 +327,7 @@ msgstr "" #: ../Doc/whatsnew/3.7.rst:172 msgid "from __future__ import annotations" -msgstr "" +msgstr "from __future__ import annotations" #: ../Doc/whatsnew/3.7.rst:174 msgid "It will become the default in Python 3.10." @@ -648,7 +659,6 @@ msgid "PEP 564: New Time Functions With Nanosecond Resolution" msgstr "PEP 564: Nuevas funciones de tiempo con resolución de nanosegundos" #: ../Doc/whatsnew/3.7.rst:341 -#, fuzzy msgid "" "The resolution of clocks in modern systems can exceed the limited precision " "of a floating-point number returned by the :func:`time.time` function and " @@ -656,11 +666,11 @@ msgid "" "\"nanosecond\" variants of the existing timer functions to the :mod:`time` " "module:" msgstr "" -"La resolución de los relojes en los sistemas modernos puede exceder la " +"La resolución de los relojes en los sistemas modernos puede superar la " "precisión limitada de un número de punto flotante devuelto por la función :" "func:`time.time` y sus variantes. Para evitar la pérdida de precisión, :pep:" -"`564` agrega seis nuevas variantes de “nanosegundos” de las funciones de " -"temporizador existentes para el módulo :mod:`time`:" +"`564` agrega seis nuevas variantes de \"nanosegundos\" de las funciones de " +"temporizador existentes al módulo :mod:`time`:" #: ../Doc/whatsnew/3.7.rst:347 ../Doc/whatsnew/3.7.rst:1451 msgid ":func:`time.clock_gettime_ns`" @@ -693,15 +703,14 @@ msgstr "" "entero." #: ../Doc/whatsnew/3.7.rst:356 -#, fuzzy msgid "" ":pep:`Measurements <0564#annex-clocks-resolution-in-python>` show that on " "Linux and Windows the resolution of :func:`time.time_ns` is approximately 3 " "times better than that of :func:`time.time`." msgstr "" -"`Measurements `_ muestra que en Linux y Windows la resolución de :func:`time." -"time_ns` es aproximadamente 3 veces mejor que la de :func:`time.time`." +":pep:`Measurements <0564#annex-clocks-resolution-in-python>` muestra que en " +"Linux y Windows la resolución de :func:`time.time_ns` es aproximadamente 3 " +"veces mejor que la de :func:`time.time`." #: ../Doc/whatsnew/3.7.rst:362 msgid ":pep:`564` -- Add new time functions with nanosecond resolution" @@ -1035,18 +1044,17 @@ msgstr "" "`28974`.)" #: ../Doc/whatsnew/3.7.rst:526 -#, fuzzy msgid "" "In order to better support dynamic creation of stack traces, :class:`types." "TracebackType` can now be instantiated from Python code, and the :attr:" "`~traceback.tb_next` attribute on :ref:`tracebacks ` is " "now writable. (Contributed by Nathaniel J. Smith in :issue:`30579`.)" msgstr "" -"Para soportar mejor la creación dinámica de seguimientos de pila, :class:" -"`types.TracebackType` ahora se puede crear una instancia desde el código " -"Python, y el atributo ``tb_next`` en on :ref:`rastreos ` " -"ahora se puede escribir. (Contribuido por *Nathaniel J. Smith* en :issue:" -"`30579`.)" +"Para brindar un mejor soporte a la creación dinámica de seguimientos de " +"pila, ahora se puede crear una instancia de :class:`types.TracebackType` a " +"partir del código Python, y el atributo :attr:`~traceback.tb_next` en :ref:" +"`tracebacks ` ahora se puede escribir. (Contribución de " +"Nathaniel J. Smith en :issue:`30579`)." #: ../Doc/whatsnew/3.7.rst:532 msgid "" @@ -1146,6 +1154,14 @@ msgid "" "p = Point(1.5, 2.5)\n" "print(p) # produces \"Point(x=1.5, y=2.5, z=0.0)\"" msgstr "" +"@dataclass\n" +"class Point:\n" +" x: float\n" +" y: float\n" +" z: float = 0.0\n" +"\n" +"p = Point(1.5, 2.5)\n" +"print(p) # produces \"Point(x=1.5, y=2.5, z=0.0)\"" #: ../Doc/whatsnew/3.7.rst:593 msgid ":pep:`557` -- Data Classes" @@ -1160,7 +1176,6 @@ msgid "importlib.resources" msgstr "*importlib.resources*" #: ../Doc/whatsnew/3.7.rst:602 -#, fuzzy msgid "" "The new :mod:`importlib.resources` module provides several new APIs and one " "new ABC for access to, opening, and reading *resources* inside packages. " @@ -1171,13 +1186,13 @@ msgid "" "loaders and zip file loaders both support this." msgstr "" "El nuevo módulo :mod:`importlib.resources` proporciona varias API nuevas y " -"un ABC nuevo para acceder, abrir y leer * recursos * dentro de los paquetes. " -"Los recursos son más o menos similares a los archivos dentro de los " -"paquetes, pero no es necesario que sean archivos reales en el sistema de " -"archivos físico. Los cargadores de módulos proporcionar una función :meth:" -"`get_resource_reader()` que devuelve una instancia :class:`importlib.abc." -"ResourceReader` para admitir esta nueva API. Los cargadores de ruta de " -"archivo integrados y los cargadores de archivos zip admiten esto." +"un nuevo ABC para acceder, abrir y leer *resources* dentro de los paquetes. " +"Los recursos son similares a los archivos dentro de los paquetes, pero no " +"necesitan ser archivos reales en el sistema de archivos físico. Los " +"cargadores de módulos pueden proporcionar una función :meth:" +"`get_resource_reader` que devuelve una instancia :class:`importlib.abc." +"ResourceReader` para admitir esta nueva API. Los cargadores de rutas de " +"archivos integrados y los cargadores de archivos zip admiten esto." #: ../Doc/whatsnew/3.7.rst:610 msgid "Contributed by Barry Warsaw and Brett Cannon in :issue:`32248`." @@ -1288,7 +1303,6 @@ msgstr "" "en :issue:`31819`.)" #: ../Doc/whatsnew/3.7.rst:669 -#, fuzzy msgid "" "The new :func:`asyncio.current_task` function returns the currently running :" "class:`~asyncio.Task` instance, and the new :func:`asyncio.all_tasks` " @@ -1296,13 +1310,12 @@ msgid "" "The :meth:`!Task.current_task` and :meth:`!Task.all_tasks` methods have been " "deprecated. (Contributed by Andrew Svetlov in :issue:`32250`.)" msgstr "" -"La nueva función :func:`asyncio.current_task` devuelve la instancia actual " -"en ejecución :class:`~asyncio.Task`, y la nueva función :func:`asyncio." -"all_tasks` devuelve un conjunto de todas las instancias de ``Task`` " -"existentes en un bucle determinado. Los métodos :meth:`Task.current_task() " -"` y :meth:`Task.all_tasks() ` han quedado obsoletos. (Contribuido por *Andrew Svetlov* en :" -"issue:`32250`.)" +"La nueva función :func:`asyncio.current_task` devuelve la instancia :class:" +"`~asyncio.Task` que se está ejecutando actualmente y la nueva función :func:" +"`asyncio.all_tasks` devuelve un conjunto de todas las instancias ``Task`` " +"existentes en un bucle determinado. Los métodos :meth:`!Task.current_task` " +"y :meth:`!Task.all_tasks` han quedado obsoletos. (Contribución de Andrew " +"Svetlov en :issue:`32250`)." #: ../Doc/whatsnew/3.7.rst:676 msgid "" @@ -1403,6 +1416,12 @@ msgid "" "\n" "# At this point, srv is closed and no longer accepts new connections." msgstr "" +"srv = await loop.create_server(...)\n" +"\n" +"async with srv:\n" +" # some code\n" +"\n" +"# En éste momento, srv está cerrado y ya no acepta conexiones" #: ../Doc/whatsnew/3.7.rst:723 msgid "(Contributed by Yury Selivanov in :issue:`32662`.)" @@ -1661,22 +1680,20 @@ msgid "crypt" msgstr "*crypt*" #: ../Doc/whatsnew/3.7.rst:851 -#, fuzzy msgid "" "The :mod:`!crypt` module now supports the Blowfish hashing method. " "(Contributed by Serhiy Storchaka in :issue:`31664`.)" msgstr "" -"El módulo :mod:`crypt` ahora es compatible con el método de hash Blowfish. " -"(Contribuido por *Serhiy Storchaka* en :issue:`31664`.)" +"El módulo :mod:`!crypt` ahora admite el método de hash Blowfish. " +"(Contribuido por Serhiy Storchaka en :issue:`31664`)." #: ../Doc/whatsnew/3.7.rst:854 -#, fuzzy msgid "" "The :func:`!mksalt` function now allows specifying the number of rounds for " "hashing. (Contributed by Serhiy Storchaka in :issue:`31702`.)" msgstr "" -"La función :func:`~crypt.mksalt` ahora permite especificar el número de " -"rondas para el hash. (Contribuido por *Serhiy Storchaka* en :issue:`31702`.)" +"La función :func:`!mksalt` ahora permite especificar el número de rondas " +"para el hash. (Contribución de Serhiy Storchaka en :issue:`31702`)." #: ../Doc/whatsnew/3.7.rst:859 msgid "datetime" @@ -2231,14 +2248,12 @@ msgid "msilib" msgstr "*msilib*" #: ../Doc/whatsnew/3.7.rst:1136 -#, fuzzy msgid "" "The new :meth:`!Database.Close` method can be used to close the :abbr:`MSI` " "database. (Contributed by Berker Peksag in :issue:`20486`.)" msgstr "" -"El nuevo método :meth:`Database.Close() ` se puede " -"utilizar para cerrar la base de datos :abbr:`MSI`. (Contribuido por *Berker " -"Peksag* en :issue:`20486`.)" +"El nuevo método :meth:`!Database.Close` se puede utilizar para cerrar la " +"base de datos MSI. (Contribuido por Berker Peksag en :issue:`20486`)." #: ../Doc/whatsnew/3.7.rst:1142 msgid "multiprocessing" @@ -2532,28 +2547,26 @@ msgstr "" "Heimes* en :issue:`32454`.)" #: ../Doc/whatsnew/3.7.rst:1283 -#, fuzzy msgid "" "The :mod:`socket` module now exposes the :const:`socket.TCP_CONGESTION` " "(Linux 2.6.13), :const:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37), and :const:" "`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constants. (Contributed by Omar " "Sandoval in :issue:`26273` and Nathaniel J. Smith in :issue:`29728`.)" msgstr "" -"El módulo :mod:`socket` ahora expone las constantes :data:`socket." -"TCP_CONGESTION` (Linux 2.6.13), :data:`socket.TCP_USER_TIMEOUT` (Linux " -"2.6.37), y :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12). (Contribuido por " -"*Omar Sandoval* en :issue:`26273` y *Nathaniel J. Smith* en :issue:`29728`.)" +"El módulo :mod:`socket` ahora expone las constantes :const:`socket." +"TCP_CONGESTION` (Linux 2.6.13), :const:`socket.TCP_USER_TIMEOUT` (Linux " +"2.6.37) y :const:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12). (Contribuido por " +"Omar Sandoval en :issue:`26273` y Nathaniel J. Smith en :issue:`29728`)." #: ../Doc/whatsnew/3.7.rst:1289 -#, fuzzy msgid "" "Support for :const:`socket.AF_VSOCK` sockets has been added to allow " "communication between virtual machines and their hosts. (Contributed by " "Cathy Avery in :issue:`27584`.)" msgstr "" -"Se ha agregado soporte para :data:`socket.AF_VSOCK` *sockets* para permitir " -"la comunicación entre las máquinas virtuales y sus hosts. (Contribuido por " -"*Cathy Avery* en :issue:`27584`.)" +"Se agregó compatibilidad con sockets :const:`socket.AF_VSOCK` para permitir " +"la comunicación entre máquinas virtuales y sus hosts. (Contribución de Cathy " +"Avery en :issue:`27584`)." #: ../Doc/whatsnew/3.7.rst:1293 msgid "" @@ -2758,6 +2771,10 @@ msgid "" "SSLSocket.verify_client_post_handshake` to initiate TLS 1.3 post-handshake " "authentication. (Contributed by Christian Heimes in :gh:`78851`.)" msgstr "" +"Se agregó :attr:`ssl.SSLContext.post_handshake_auth` para habilitar y :meth:" +"`ssl.SSLSocket.verify_client_post_handshake` para iniciar la autenticación " +"posterior al protocolo de enlace TLS 1.3. (Contribuido por Christian Heimes " +"en :gh:`78851`.)" #: ../Doc/whatsnew/3.7.rst:1389 msgid "string" @@ -2779,7 +2796,6 @@ msgid "subprocess" msgstr "*subprocess*" #: ../Doc/whatsnew/3.7.rst:1399 -#, fuzzy msgid "" "The :func:`subprocess.run` function accepts the new *capture_output* keyword " "argument. When true, stdout and stderr will be captured. This is equivalent " @@ -2787,9 +2803,9 @@ msgid "" "(Contributed by Bo Bayles in :issue:`32102`.)" msgstr "" "La función :func:`subprocess.run` acepta el nuevo argumento de palabra clave " -"*capture_output*. Cuando es verdadero, se capturarán *stdout* y *stderr*. " -"Esto es equivalente a pasar :data:`subprocess.PIPE` como argumentos *stdout* " -"y *stderr*. (Contribuido por *Bo Bayles* en :issue:`32102`.)" +"*capture_output*. Cuando es verdadero, se capturarán stdout y stderr. Esto " +"es equivalente a pasar :const:`subprocess.PIPE` como argumentos *stdout* y " +"*stderr*. (Contribuido por Bo Bayles en :issue:`32102`)." #: ../Doc/whatsnew/3.7.rst:1405 msgid "" @@ -2887,35 +2903,32 @@ msgid "New clock identifiers have been added:" msgstr "Se han agregado nuevos identificadores de reloj:" #: ../Doc/whatsnew/3.7.rst:1460 -#, fuzzy msgid "" ":const:`time.CLOCK_BOOTTIME` (Linux): Identical to :const:`time." "CLOCK_MONOTONIC`, except it also includes any time that the system is " "suspended." msgstr "" -":data:`time.CLOCK_BOOTTIME` (Linux): Idéntico a :data:`time." +":const:`time.CLOCK_BOOTTIME` (Linux): idéntico a :const:`time." "CLOCK_MONOTONIC`, excepto que también incluye cualquier momento en que el " "sistema esté suspendido." #: ../Doc/whatsnew/3.7.rst:1463 -#, fuzzy msgid "" ":const:`time.CLOCK_PROF` (FreeBSD, NetBSD and OpenBSD): High-resolution per-" "process CPU timer." msgstr "" -":data:`time.CLOCK_PROF` (FreeBSD, NetBSD y OpenBSD): Temporizador de CPU por " -"proceso de alta resolución." +":const:`time.CLOCK_PROF` (FreeBSD, NetBSD y OpenBSD): Temporizador de CPU " +"por proceso de alta resolución." #: ../Doc/whatsnew/3.7.rst:1465 -#, fuzzy msgid "" ":const:`time.CLOCK_UPTIME` (FreeBSD, OpenBSD): Time whose absolute value is " "the time the system has been running and not suspended, providing accurate " "uptime measurement." msgstr "" -":data:`time.CLOCK_UPTIME` (FreeBSD, OpenBSD): Hora cuyo valor absoluto es el " -"tiempo que el sistema ha estado funcionando y no suspendido, proporcionando " -"una medición precisa del tiempo de actividad." +":const:`time.CLOCK_UPTIME` (FreeBSD, OpenBSD): Tiempo cuyo valor absoluto es " +"el tiempo que el sistema ha estado funcionando y no suspendido, " +"proporcionando una medición precisa del tiempo de actividad." #: ../Doc/whatsnew/3.7.rst:1469 msgid "" @@ -3075,16 +3088,15 @@ msgid "uu" msgstr "*uu*" #: ../Doc/whatsnew/3.7.rst:1554 -#, fuzzy msgid "" "The :func:`!uu.encode` function now accepts an optional *backtick* keyword " "argument. When it's true, zeros are represented by ``'`'`` instead of " "spaces. (Contributed by Xiang Zhang in :issue:`30103`.)" msgstr "" -"La nueva función :func:`uu.encode` ahora acepta un argumento opcional de " -"palabra clave *backtick*. Mientras esto se verdadero, los ceros son " -"representados por ``’`’`` en lugar de espacios. (Contribuido por *Xiang " -"Zhang* en :issue:`30103`.)" +"La función :func:`!uu.encode` ahora acepta un argumento de palabra clave " +"*backtick* opcional. Cuando es verdadero, los ceros se representan con " +"``'`'`` en lugar de espacios. (Contribuido por Xiang Zhang en :issue:" +"`30103`)." #: ../Doc/whatsnew/3.7.rst:1560 msgid "uuid" @@ -3206,7 +3218,7 @@ msgstr "" #: ../Doc/whatsnew/3.7.rst:1607 msgid "xml" -msgstr "" +msgstr "xml" #: ../Doc/whatsnew/3.7.rst:1609 msgid "" @@ -3214,6 +3226,10 @@ msgid "" "minidom` and :mod:`xml.sax` modules no longer process external entities by " "default. (Contributed by Christian Heimes in :gh:`61441`.)" msgstr "" +"Como medida de mitigación frente a la recuperación de DTD y entidades " +"externas, los módulos :mod:`xml.dom.minidom` y :mod:`xml.sax` ya no procesan " +"entidades externas de forma predeterminada. (Contribuido por Christian " +"Heimes en :gh:`61441`.)" #: ../Doc/whatsnew/3.7.rst:1616 msgid "xml.etree" @@ -3368,7 +3384,6 @@ msgstr "" "`31574`.)" #: ../Doc/whatsnew/3.7.rst:1690 -#, fuzzy msgid "" "The fields :c:member:`!name` and :c:member:`!doc` of structures :c:type:" "`PyMemberDef`, :c:type:`PyGetSetDef`, :c:type:`PyStructSequence_Field`, :c:" @@ -3376,10 +3391,10 @@ msgid "" "``const char *`` rather of ``char *``. (Contributed by Serhiy Storchaka in :" "issue:`28761`.)" msgstr "" -"Los campos :c:member:`name` and :c:member:`doc` de estructuras :c:type:" +"Los campos :c:member:`!name` y :c:member:`!doc` de las estructuras :c:type:" "`PyMemberDef`, :c:type:`PyGetSetDef`, :c:type:`PyStructSequence_Field`, :c:" -"type:`PyStructSequence_Desc`, y :c:type:`wrapperbase` ahora son de tipo " -"``const char *`` en lugar de ``char *``. (Contribuido por *Serhiy Storchaka* " +"type:`PyStructSequence_Desc` y :c:struct:`wrapperbase` ahora son del tipo " +"``const char *`` en lugar de ``char *``. (Contribuido por Serhiy Storchaka " "en :issue:`28761`.)" #: ../Doc/whatsnew/3.7.rst:1696 @@ -3865,18 +3880,17 @@ msgid "Other CPython Implementation Changes" msgstr "Otros cambios de implementación de CPython" #: ../Doc/whatsnew/3.7.rst:1905 -#, fuzzy msgid "" "Trace hooks may now opt out of receiving the ``line`` and opt into receiving " "the ``opcode`` events from the interpreter by setting the corresponding new :" "attr:`~frame.f_trace_lines` and :attr:`~frame.f_trace_opcodes` attributes on " "the frame being traced. (Contributed by Nick Coghlan in :issue:`31344`.)" msgstr "" -"Los ganchos de seguimiento ahora pueden optar por no recibir la ``linea`` y " +"Los ganchos de seguimiento ahora pueden optar por no recibir ``line`` y " "optar por recibir los eventos ``opcode`` del intérprete configurando los " -"nuevos atributos correspondientes ``f_trace_lines`` y ``f_trace_opcodes`` en " -"el marco que se está rastreando . (Contribuido por *Nick Coghlan* en :issue:" -"`31344`.)" +"nuevos atributos :attr:`~frame.f_trace_lines` y :attr:`~frame." +"f_trace_opcodes` correspondientes en el marco que se está rastreando. " +"(Contribuido por Nick Coghlan en :issue:`31344`)." #: ../Doc/whatsnew/3.7.rst:1910 msgid "" @@ -3908,17 +3922,16 @@ msgstr "" "(Contribuido por *Raymond Hettinger* en :issue:`32690`.)" #: ../Doc/whatsnew/3.7.rst:1922 -#, fuzzy msgid "" "The ``distutils`` ``upload`` command no longer tries to change CR end-of-" "line characters to CRLF. This fixes a corruption issue with sdists that " "ended with a byte equivalent to CR. (Contributed by Bo Bayles in :issue:" "`32304`.)" msgstr "" -"El comando :mod:`distutils` ``upload`` ya no intenta cambiar los caracteres " -"de fin de línea de CR a CRLF. Esto soluciona un problema de corrupción con " -"*sdists* que terminaba con un byte equivalente a CR. (Contribuido por *Bo " -"Bayles* en :issue:`32304`.)" +"El comando ``distutils`` ``upload`` ya no intenta cambiar los caracteres de " +"fin de línea CR a CRLF. Esto soluciona un problema de corrupción con sdists " +"que terminaban con un byte equivalente a CR. (Contribuido por Bo Bayles en :" +"issue:`32304`)." #: ../Doc/whatsnew/3.7.rst:1929 msgid "Deprecated Python Behavior" @@ -3971,15 +3984,14 @@ msgid "aifc" msgstr "*aifc*" #: ../Doc/whatsnew/3.7.rst:1956 -#, fuzzy msgid "" ":func:`!aifc.openfp` has been deprecated and will be removed in Python 3.9. " "Use :func:`!aifc.open` instead. (Contributed by Brian Curtin in :issue:" "`31985`.)" msgstr "" -":func:`aifc.openfp` ha quedado obsoleto y se eliminará en Python 3.9. En su " -"lugar use :func:`aifc.open`. (Contribuido por *Brian Curtin* en :issue:" -"`31985`.)" +":func:`!aifc.openfp` ha quedado obsoleto y se eliminará en Python 3.9. " +"Utilice :func:`!aifc.open` en su lugar. (Contribuido por Brian Curtin en :" +"issue:`31985`)." #: ../Doc/whatsnew/3.7.rst:1966 msgid "" @@ -3996,15 +4008,14 @@ msgstr "" "`32253`.)" #: ../Doc/whatsnew/3.7.rst:1972 -#, fuzzy msgid "" "The :meth:`!asyncio.Task.current_task` and :meth:`!asyncio.Task.all_tasks` " "methods have been deprecated. (Contributed by Andrew Svetlov in :issue:" "`32250`.)" msgstr "" -"Los métodos :meth:`asyncio.Task.current_task` y :meth:`asyncio.Task." -"all_tasks` han quedado obsoletos. (Contribuido por *Andrew Svetlov* en :" -"issue:`32250`.)" +"Los métodos :meth:`!asyncio.Task.current_task` y :meth:`!asyncio.Task." +"all_tasks` han quedado obsoletos. (Contribución de Andrew Svetlov en :issue:" +"`32250`)." #: ../Doc/whatsnew/3.7.rst:1980 msgid "" @@ -4062,7 +4073,6 @@ msgstr "" "por *Serhiy Storchaka* en :issue:`28692`.)" #: ../Doc/whatsnew/3.7.rst:2019 -#, fuzzy msgid "" "Methods :meth:`!MetaPathFinder.find_module` (replaced by :meth:" "`MetaPathFinder.find_spec() `) and :" @@ -4071,13 +4081,12 @@ msgid "" "Python 3.4 now emit :exc:`DeprecationWarning`. (Contributed by Matthias " "Bussonnier in :issue:`29576`.)" msgstr "" -"Métodos :meth:`MetaPathFinder.find_module() ` (reemplazado por :meth:`MetaPathFinder.find_spec() `) y :meth:`PathEntryFinder.find_loader() " -"` (reemplazado por :meth:" -"`PathEntryFinder.find_spec() `) " -"ambas en desuso en Python 3.4 ahora emiten :exc:`DeprecationWarning`. " -"(Contribuido por *Matthias Bussonnier* en :issue:`29576`)" +"Los métodos :meth:`!MetaPathFinder.find_module` (reemplazado por :meth:" +"`MetaPathFinder.find_spec() `) y :" +"meth:`!PathEntryFinder.find_loader` (reemplazado por :meth:`PathEntryFinder." +"find_spec() `), ambos obsoletos en " +"Python 3.4, ahora emiten :exc:`DeprecationWarning`. (Contribuido por " +"Matthias Bussonnier en :issue:`29576`)." #: ../Doc/whatsnew/3.7.rst:2030 msgid "" @@ -4112,15 +4121,14 @@ msgid "threading" msgstr "*threading*" #: ../Doc/whatsnew/3.7.rst:2051 -#, fuzzy msgid "" ":mod:`!dummy_threading` and :mod:`!_dummy_thread` have been deprecated. It " "is no longer possible to build Python with threading disabled. Use :mod:" "`threading` instead. (Contributed by Antoine Pitrou in :issue:`31370`.)" msgstr "" -":mod:`dummy_threading` y :mod:`_dummy_thread` han quedado en desuso. ya no " -"es posible compilar Python con el subproceso desactivado. En lugar use :mod:" -"`threading`. (Contribuido por *Antoine Pitrou* en :issue:`31370`.)" +":mod:`!dummy_threading` y :mod:`!_dummy_thread` han quedado obsoletos. Ya no " +"es posible compilar Python con los subprocesos deshabilitados. Utilice :mod:" +"`threading` en su lugar. (Contribuido por Antoine Pitrou en :issue:`31370`)." #: ../Doc/whatsnew/3.7.rst:2060 msgid "" @@ -4148,15 +4156,14 @@ msgid "sunau" msgstr "*sunau*" #: ../Doc/whatsnew/3.7.rst:2077 -#, fuzzy msgid "" ":func:`!sunau.openfp` has been deprecated and will be removed in Python 3.9. " "Use :func:`!sunau.open` instead. (Contributed by Brian Curtin in :issue:" "`31985`.)" msgstr "" -":func:`sunau.openfp` ha quedado obsoleto y se eliminará en Python 3.9. En " -"lugar use :func:`sunau.open`. (Contribuido por *Brian Curtin* en :issue:" -"`31985`.)" +":func:`!sunau.openfp` ha quedado obsoleto y se eliminará en Python 3.9. " +"Utilice :func:`!sunau.open` en su lugar. (Contribuido por Brian Curtin en :" +"issue:`31985`)." #: ../Doc/whatsnew/3.7.rst:2085 msgid "" @@ -4329,14 +4336,12 @@ msgstr "" "su lugar." #: ../Doc/whatsnew/3.7.rst:2160 -#, fuzzy msgid "" "The :func:`!ntpath.splitunc` function was deprecated in Python 3.1, and has " "now been removed. Use :func:`~os.path.splitdrive` instead." msgstr "" -"La función ``splitunc()`` en el módulo :mod:`ntpath` quedó obsoleto en " -"Python 3.1 y ahora se ha eliminado. Utilice la función :func:`~os.path." -"splitdrive` en su lugar." +"La función :func:`!ntpath.splitunc` quedó obsoleta en Python 3.1 y ahora se " +"ha eliminado. Utilice :func:`~os.path.splitdrive` en su lugar." #: ../Doc/whatsnew/3.7.rst:2164 msgid "" @@ -4389,15 +4394,14 @@ msgstr "" "alias para ``socket.socketpair`` en Python 3.5 y mas nuevo." #: ../Doc/whatsnew/3.7.rst:2186 -#, fuzzy msgid "" ":mod:`asyncio` no longer exports the :mod:`selectors` and :mod:`!" "_overlapped` modules as ``asyncio.selectors`` and ``asyncio._overlapped``. " "Replace ``from asyncio import selectors`` with ``import selectors``." msgstr "" -":mod:`asyncio` ya no exporta el :mod:`selectors` y módulos como :mod:" -"`_overlapped` ``asyncio.selectors`` y ``asyncio._overlapped``. reemplazar " -"por ``from asyncio import selectors`` y ``import selectors``." +":mod:`asyncio` ya no exporta los módulos :mod:`selectors` y :mod:`!" +"_overlapped` como ``asyncio.selectors`` y ``asyncio._overlapped``. Reemplace " +"``from asyncio import selectors`` por ``import selectors``." #: ../Doc/whatsnew/3.7.rst:2191 msgid "" @@ -4414,13 +4418,12 @@ msgstr "" "(Contribuido por *Christian Heimes* en :issue:`32951`.)" #: ../Doc/whatsnew/3.7.rst:2197 -#, fuzzy msgid "" "The unused ``distutils`` ``install_misc`` command has been removed. " "(Contributed by Eric N. Vander Weele in :issue:`29218`.)" msgstr "" -"El comando no utilizado :mod:`distutils` ``install_misc`` ha sido eliminado. " -"(Contribuido por *Eric N. Vander Weele* en :issue:`29218`.)" +"Se ha eliminado el comando ``distutils`` ``install_misc`` no utilizado. " +"(Contribuido por Eric N. Vander Weele en :issue:`29218`)." #: ../Doc/whatsnew/3.7.rst:2202 msgid "Module Removals" @@ -4536,6 +4539,10 @@ msgid "" "class C(1 for x in [1]):\n" " pass" msgstr "" +"f(1 for x in [1],)\n" +"\n" +"class C(1 for x in [1]):\n" +" pass" #: ../Doc/whatsnew/3.7.rst:2260 msgid "" @@ -4668,18 +4675,16 @@ msgstr "" "class :class:`bytes`. (Contribuido por *Victor Stinner* en :issue:`21071`.)" #: ../Doc/whatsnew/3.7.rst:2320 -#, fuzzy msgid "" ":func:`!cgi.parse_multipart` now accepts the *encoding* and *errors* " "arguments and returns the same results as :class:`!FieldStorage`: for non-" "file fields, the value associated to a key is a list of strings, not bytes. " "(Contributed by Pierre Quentel in :issue:`29979`.)" msgstr "" -":func:`~cgi.parse_multipart` ahora acepta los argumentos * codificación * y " -"* errores * y devuelve los mismos resultados que :class:`~FieldStorage`: " -"para campos que no son de archivo, el valor asociado a una clave es una " -"lista de cadenas, no bytes. (Contribuido por *Pierre Quentel* en :issue:" -"`29979`.)" +":func:`!cgi.parse_multipart` ahora acepta los argumentos *encoding* y " +"*errors* y devuelve los mismos resultados que :class:`!FieldStorage`: para " +"los campos que no son archivos, el valor asociado a una clave es una lista " +"de cadenas, no bytes. (Contribuido por Pierre Quentel en :issue:`29979`)." #: ../Doc/whatsnew/3.7.rst:2326 msgid "" @@ -4776,18 +4781,17 @@ msgstr "" "blanco, el patrón debe reescribirse como ``r'(?m)^[^\\S\\n]*$'``." #: ../Doc/whatsnew/3.7.rst:2369 -#, fuzzy msgid "" ":func:`re.sub` now replaces empty matches adjacent to a previous non-empty " "match. For example ``re.sub('x*', '-', 'abxd')`` returns now ``'-a-b--d-'`` " "instead of ``'-a-b-d-'`` (the first minus between 'b' and 'd' replaces 'x', " "and the second minus replaces an empty string between 'x' and 'd')." msgstr "" -":func:`re.sub()` ahora reemplaza las coincidencias vacías adyacentes a una " -"coincidencia anterior no vacía. Por ejemplo ``re.sub(‘x*’, ‘-‘, ‘abxd’)`` " -"retorno ahora ``’-a-b—d-‘`` en lugar de ``’-a-b-d-‘`` (el primer signo menos " -"entre ‘b’ y ‘d’ reemplaza a ‘x’, y el segundo signo menos reemplaza una " -"cadena vacía entre ‘x’ y ‘d’)." +":func:`re.sub` ahora reemplaza las coincidencias vacías adyacentes a una " +"coincidencia no vacía anterior. Por ejemplo, ``re.sub('x*', '-', 'abxd')`` " +"ahora devuelve ``'-a-b--d-'`` en lugar de ``'-a-b-d-'`` (el primer signo " +"menos entre 'b' y 'd' reemplaza a 'x', y el segundo signo menos reemplaza a " +"una cadena vacía entre 'x' y 'd')." #: ../Doc/whatsnew/3.7.rst:2375 msgid "(Contributed by Serhiy Storchaka in :issue:`25054` and :issue:`32308`.)" @@ -4908,15 +4912,14 @@ msgstr "" "issue:`26510`.)" #: ../Doc/whatsnew/3.7.rst:2428 -#, fuzzy msgid "" ":meth:`ast.literal_eval` is now stricter. Addition and subtraction of " "arbitrary numbers are no longer allowed. (Contributed by Serhiy Storchaka " "in :issue:`31778`.)" msgstr "" -":meth:`ast.literal_eval()` ahora es más estricto. Ya no se permiten sumas y " -"restas de números arbitrarios. (Contribuido por *Serhiy Storchaka* en :issue:" -"`31778`.)" +"El sistema :meth:`ast.literal_eval` es ahora más estricto. Ya no se permite " +"la suma ni la resta de números arbitrarios. (Contribuido por Serhiy " +"Storchaka en :issue:`31778`)." #: ../Doc/whatsnew/3.7.rst:2432 msgid "" @@ -5077,27 +5080,26 @@ msgstr "" "varios otros números). Algunos detalles conocidos afectados:" #: ../Doc/whatsnew/3.7.rst:2511 -#, fuzzy msgid "" ":c:func:`!PySys_AddWarnOptionUnicode` is not currently usable by embedding " "applications due to the requirement to create a Unicode object prior to " "calling ``Py_Initialize``. Use :c:func:`!PySys_AddWarnOption` instead." msgstr "" -"Actualmente, :c:func:`PySys_AddWarnOptionUnicode` no se puede usar mediante " -"la incorporación de aplicaciones debido al requisito de crear un objeto " -"Unicode antes de llamar a ``Py_Initialize``. Utilice :c:func:" -"`PySys_AddWarnOption` en su lugar." +"Actualmente, las aplicaciones integradas no pueden utilizar :c:func:`!" +"PySys_AddWarnOptionUnicode` debido al requisito de crear un objeto Unicode " +"antes de llamar a ``Py_Initialize``. Utilice :c:func:`!PySys_AddWarnOption` " +"en su lugar." #: ../Doc/whatsnew/3.7.rst:2515 -#, fuzzy msgid "" "warnings filters added by an embedding application with :c:func:`!" "PySys_AddWarnOption` should now more consistently take precedence over the " "default filters set by the interpreter" msgstr "" -"filtros de advertencias agregados por una aplicación de incrustación con :c:" -"func:`PySys_AddWarnOption` ahora debería tener prioridad sobre los filtros " -"predeterminados establecidos por el intérprete" +"Los filtros de advertencias agregados por una aplicación de incrustación " +"con :c:func:`!PySys_AddWarnOption` ahora deberían tener prioridad de manera " +"más consistente sobre los filtros predeterminados establecidos por el " +"intérprete" #: ../Doc/whatsnew/3.7.rst:2519 msgid "" @@ -5230,7 +5232,6 @@ msgid "Notable changes in Python 3.7.10" msgstr "Cambios notables en Python 3.7.10" #: ../Doc/whatsnew/3.7.rst:2578 -#, fuzzy msgid "" "Earlier Python versions allowed using both ``;`` and ``&`` as query " "parameter separators in :func:`urllib.parse.parse_qs` and :func:`urllib." @@ -5241,20 +5242,19 @@ msgid "" "For more details, please see their respective documentation. (Contributed by " "Adam Goldschmidt, Senthil Kumaran and Ken Jin in :issue:`42967`.)" msgstr "" -"Las versiones anteriores de Python permitían usar tanto ``;`` como ``&`` " +"Las versiones anteriores de Python permitían utilizar tanto ``;`` como ``&`` " "como separadores de parámetros de consulta en :func:`urllib.parse.parse_qs` " -"y :func:`urllib.parse.parse_qsl`. Debido a problemas de seguridad y para " -"cumplir con las recomendaciones más recientes del W3C, esto se ha cambiado " -"para permitir solo una clave separadora, con ``&`` como valor " -"predeterminado. Este cambio también afecta a :func:`cgi.parse` y :func:`cgi." -"parse_multipart` ya que utilizan las funciones afectadas internamente. Para " +"y :func:`urllib.parse.parse_qsl`. Por cuestiones de seguridad y para cumplir " +"con las recomendaciones más recientes del W3C, esto se ha modificado para " +"permitir solo una clave separadora, con ``&`` como valor predeterminado. " +"Este cambio también afecta a :func:`!cgi.parse` y :func:`!cgi." +"parse_multipart`, ya que utilizan las funciones afectadas internamente. Para " "obtener más detalles, consulte su documentación respectiva. (Contribuido por " -"Adam Goldschmidt, Senthil Kumaran y Ken Jin en :issue:`42967`.)" +"Adam Goldschmidt, Senthil Kumaran y Ken Jin en :issue:`42967`)." #: ../Doc/whatsnew/3.7.rst:2589 -#, fuzzy msgid "Notable changes in Python 3.7.11" -msgstr "Cambios notables en Python 3.7.1" +msgstr "Cambios notables en Python 3.7.11" #: ../Doc/whatsnew/3.7.rst:2591 msgid "" @@ -5264,6 +5264,13 @@ msgid "" "old behavior, set a ``trust_server_pasv_ipv4_address`` attribute on your FTP " "instance to ``True``. (See :gh:`87451`)" msgstr "" +"Una corrección de seguridad modifica el comportamiento de :class:`ftplib." +"FTP` para que no confíe en la dirección IPv4 enviada desde el servidor " +"remoto al configurar un canal de datos pasivo. En su lugar, reutilizamos la " +"dirección IP del servidor FTP. Para el código inusual que requiere el " +"comportamiento anterior, configure un atributo " +"``trust_server_pasv_ipv4_address`` en su instancia FTP en ``True``. " +"(Consulte :gh:`87451`)" #: ../Doc/whatsnew/3.7.rst:2598 msgid "" @@ -5274,11 +5281,17 @@ msgid "" "removal characters are controlled by a new module level variable ``urllib." "parse._UNSAFE_URL_BYTES_TO_REMOVE``. (See :gh:`88048`)" msgstr "" +"La presencia de caracteres de nueva línea o de tabulación en partes de una " +"URL permite algunas formas de ataques. Siguiendo la especificación WHATWG " +"que actualiza RFC 3986, el analizador :func:`urllib.parse` elimina de la URL " +"los caracteres de nueva línea ASCII ``\\n``, ``\\r`` y de tabulación ``\\t`` " +"para evitar este tipo de ataques. Los caracteres eliminados se controlan " +"mediante una nueva variable de nivel de módulo ``urllib.parse." +"_UNSAFE_URL_BYTES_TO_REMOVE``. (Véase :gh:`88048`)" #: ../Doc/whatsnew/3.7.rst:2606 -#, fuzzy msgid "Notable security feature in 3.7.14" -msgstr "Cambios notables en Python 3.7.1" +msgstr "Cambios notables en Python 3.7.14" #: ../Doc/whatsnew/3.7.rst:2608 msgid "" @@ -5292,3 +5305,13 @@ msgid "" "limitation ` documentation. The default limit is 4300 " "digits in string form." msgstr "" +"La conversión entre :class:`int` y :class:`str` en bases distintas de 2 " +"(binario), 4, 8 (octal), 16 (hexadecimal) o 32, como la base 10 (decimal), " +"ahora genera un error :exc:`ValueError` si la cantidad de dígitos en formato " +"de cadena supera un límite para evitar posibles ataques de denegación de " +"servicio debido a la complejidad algorítmica. Esta es una mitigación para :" +"cve:`2020-10735`. Este límite se puede configurar o deshabilitar mediante " +"una variable de entorno, un indicador de línea de comandos o las API de :mod:" +"`sys`. Consulte la documentación de :ref:`integer string conversion length " +"limitation `. El límite predeterminado es de 4300 " +"dígitos en formato de cadena."