forked from AFPy/python-docs-fr
2740 lines
103 KiB
Plaintext
2740 lines
103 KiB
Plaintext
# SOME DESCRIPTIVE TITLE.
|
||
# Copyright (C) 2001-2016, Python Software Foundation
|
||
# This file is distributed under the same license as the Python package.
|
||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||
#
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: Python 3.6\n"
|
||
"Report-Msgid-Bugs-To: \n"
|
||
"POT-Creation-Date: 2018-06-10 11:27+0200\n"
|
||
"PO-Revision-Date: 2017-08-10 00:53+0200\n"
|
||
"Last-Translator: Julien Palard <julien@palard.fr>\n"
|
||
"Language-Team: \n"
|
||
"Language: fr\n"
|
||
"MIME-Version: 1.0\n"
|
||
"Content-Type: text/plain; charset=UTF-8\n"
|
||
"Content-Transfer-Encoding: 8bit\n"
|
||
"X-Generator: Poedit 1.8.11\n"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:3
|
||
msgid "What's New in Python 2.5"
|
||
msgstr "Nouveautés de Python 2.5"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:0
|
||
msgid "Author"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:5
|
||
msgid "A.M. Kuchling"
|
||
msgstr "A.M. Kuchling"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:12
|
||
msgid ""
|
||
"This article explains the new features in Python 2.5. The final release of "
|
||
"Python 2.5 is scheduled for August 2006; :pep:`356` describes the planned "
|
||
"release schedule."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:16
|
||
msgid ""
|
||
"The changes in Python 2.5 are an interesting mix of language and library "
|
||
"improvements. The library enhancements will be more important to Python's "
|
||
"user community, I think, because several widely-useful packages were added. "
|
||
"New modules include ElementTree for XML processing (:mod:`xml.etree`), the "
|
||
"SQLite database module (:mod:`sqlite`), and the :mod:`ctypes` module for "
|
||
"calling C functions."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:23
|
||
msgid ""
|
||
"The language changes are of middling significance. Some pleasant new "
|
||
"features were added, but most of them aren't features that you'll use every "
|
||
"day. Conditional expressions were finally added to the language using a "
|
||
"novel syntax; see section :ref:`pep-308`. The new ':keyword:`with`' "
|
||
"statement will make writing cleanup code easier (section :ref:`pep-343`). "
|
||
"Values can now be passed into generators (section :ref:`pep-342`). Imports "
|
||
"are now visible as either absolute or relative (section :ref:`pep-328`). "
|
||
"Some corner cases of exception handling are handled better (section :ref:"
|
||
"`pep-341`). All these improvements are worthwhile, but they're improvements "
|
||
"to one specific language feature or another; none of them are broad "
|
||
"modifications to Python's semantics."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:34
|
||
msgid ""
|
||
"As well as the language and library additions, other improvements and "
|
||
"bugfixes were made throughout the source tree. A search through the SVN "
|
||
"change logs finds there were 353 patches applied and 458 bugs fixed between "
|
||
"Python 2.4 and 2.5. (Both figures are likely to be underestimates.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:39
|
||
msgid ""
|
||
"This article doesn't try to be a complete specification of the new features; "
|
||
"instead changes are briefly introduced using helpful examples. For full "
|
||
"details, you should always refer to the documentation for Python 2.5 at "
|
||
"https://docs.python.org. If you want to understand the complete "
|
||
"implementation and design rationale, refer to the PEP for a particular new "
|
||
"feature."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:45
|
||
msgid ""
|
||
"Comments, suggestions, and error reports for this document are welcome; "
|
||
"please e-mail them to the author or open a bug in the Python bug tracker."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:54
|
||
msgid "PEP 308: Conditional Expressions"
|
||
msgstr "PEP 308 : Expressions conditionnelles"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:56
|
||
msgid ""
|
||
"For a long time, people have been requesting a way to write conditional "
|
||
"expressions, which are expressions that return value A or value B depending "
|
||
"on whether a Boolean value is true or false. A conditional expression lets "
|
||
"you write a single assignment statement that has the same effect as the "
|
||
"following::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:66
|
||
msgid ""
|
||
"There have been endless tedious discussions of syntax on both python-dev and "
|
||
"comp.lang.python. A vote was even held that found the majority of voters "
|
||
"wanted conditional expressions in some form, but there was no syntax that "
|
||
"was preferred by a clear majority. Candidates included C's ``cond ? true_v : "
|
||
"false_v``, ``if cond then true_v else false_v``, and 16 other variations."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:72
|
||
msgid "Guido van Rossum eventually chose a surprising syntax::"
|
||
msgstr "Guido van Rossum a finalement choisi une syntaxe surprenante ::"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:76
|
||
msgid ""
|
||
"Evaluation is still lazy as in existing Boolean expressions, so the order of "
|
||
"evaluation jumps around a bit. The *condition* expression in the middle is "
|
||
"evaluated first, and the *true_value* expression is evaluated only if the "
|
||
"condition was true. Similarly, the *false_value* expression is only "
|
||
"evaluated when the condition is false."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:82
|
||
msgid ""
|
||
"This syntax may seem strange and backwards; why does the condition go in the "
|
||
"*middle* of the expression, and not in the front as in C's ``c ? x : y``? "
|
||
"The decision was checked by applying the new syntax to the modules in the "
|
||
"standard library and seeing how the resulting code read. In many cases "
|
||
"where a conditional expression is used, one value seems to be the 'common "
|
||
"case' and one value is an 'exceptional case', used only on rarer occasions "
|
||
"when the condition isn't met. The conditional syntax makes this pattern a "
|
||
"bit more obvious::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:92
|
||
msgid ""
|
||
"I read the above statement as meaning \"here *contents* is usually assigned "
|
||
"a value of ``doc+'\\n'``; sometimes *doc* is empty, in which special case "
|
||
"an empty string is returned.\" I doubt I will use conditional expressions "
|
||
"very often where there isn't a clear common and uncommon case."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:97
|
||
msgid ""
|
||
"There was some discussion of whether the language should require surrounding "
|
||
"conditional expressions with parentheses. The decision was made to *not* "
|
||
"require parentheses in the Python language's grammar, but as a matter of "
|
||
"style I think you should always use them. Consider these two statements::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:108
|
||
msgid ""
|
||
"In the first version, I think a reader's eye might group the statement into "
|
||
"'level = 1', 'if logging', 'else 0', and think that the condition decides "
|
||
"whether the assignment to *level* is performed. The second version reads "
|
||
"better, in my opinion, because it makes it clear that the assignment is "
|
||
"always performed and the choice is being made between two values."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:114
|
||
msgid ""
|
||
"Another reason for including the brackets: a few odd combinations of list "
|
||
"comprehensions and lambdas could look like incorrect conditional "
|
||
"expressions. See :pep:`308` for some examples. If you put parentheses "
|
||
"around your conditional expressions, you won't run into this case."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:123
|
||
msgid ":pep:`308` - Conditional Expressions"
|
||
msgstr ":pep:`308` - Expressions conditionnelles"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:123
|
||
msgid ""
|
||
"PEP written by Guido van Rossum and Raymond D. Hettinger; implemented by "
|
||
"Thomas Wouters."
|
||
msgstr ""
|
||
"PEP écrite par Guido van Rossum et Raymond D. Hettinger; implémentée par "
|
||
"Thomas Wouters."
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:132
|
||
msgid "PEP 309: Partial Function Application"
|
||
msgstr "PEP 309 : Application partielle de fonction"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:134
|
||
msgid ""
|
||
"The :mod:`functools` module is intended to contain tools for functional-"
|
||
"style programming."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:137
|
||
msgid ""
|
||
"One useful tool in this module is the :func:`partial` function. For programs "
|
||
"written in a functional style, you'll sometimes want to construct variants "
|
||
"of existing functions that have some of the parameters filled in. Consider "
|
||
"a Python function ``f(a, b, c)``; you could create a new function ``g(b, "
|
||
"c)`` that was equivalent to ``f(1, b, c)``. This is called \"partial "
|
||
"function application\"."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:144
|
||
msgid ""
|
||
":func:`partial` takes the arguments ``(function, arg1, arg2, ... "
|
||
"kwarg1=value1, kwarg2=value2)``. The resulting object is callable, so you "
|
||
"can just call it to invoke *function* with the filled-in arguments."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:148
|
||
msgid "Here's a small but realistic example::"
|
||
msgstr "Voici un exemple court mais réaliste ::"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:160
|
||
msgid ""
|
||
"Here's another example, from a program that uses PyGTK. Here a context-"
|
||
"sensitive pop-up menu is being constructed dynamically. The callback "
|
||
"provided for the menu option is a partially applied version of the :meth:"
|
||
"`open_item` method, where the first argument has been provided. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:173
|
||
msgid ""
|
||
"Another function in the :mod:`functools` module is the "
|
||
"``update_wrapper(wrapper, wrapped)`` function that helps you write well-"
|
||
"behaved decorators. :func:`update_wrapper` copies the name, module, and "
|
||
"docstring attribute to a wrapper function so that tracebacks inside the "
|
||
"wrapped function are easier to understand. For example, you might write::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:186
|
||
msgid ""
|
||
":func:`wraps` is a decorator that can be used inside your own decorators to "
|
||
"copy the wrapped function's information. An alternate version of the "
|
||
"previous example would be::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:201
|
||
msgid ":pep:`309` - Partial Function Application"
|
||
msgstr ":pep:`309` - Application partielle de fonction"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:201
|
||
msgid ""
|
||
"PEP proposed and written by Peter Harris; implemented by Hye-Shik Chang and "
|
||
"Nick Coghlan, with adaptations by Raymond Hettinger."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:210
|
||
msgid "PEP 314: Metadata for Python Software Packages v1.1"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:212
|
||
msgid ""
|
||
"Some simple dependency support was added to Distutils. The :func:`setup` "
|
||
"function now has ``requires``, ``provides``, and ``obsoletes`` keyword "
|
||
"parameters. When you build a source distribution using the ``sdist`` "
|
||
"command, the dependency information will be recorded in the :file:`PKG-INFO` "
|
||
"file."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:217
|
||
msgid ""
|
||
"Another new keyword parameter is ``download_url``, which should be set to a "
|
||
"URL for the package's source code. This means it's now possible to look up "
|
||
"an entry in the package index, determine the dependencies for a package, and "
|
||
"download the required packages. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:231
|
||
msgid ""
|
||
"Another new enhancement to the Python package index at https://pypi.org is "
|
||
"storing source and binary archives for a package. The new :command:`upload` "
|
||
"Distutils command will upload a package to the repository."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:236
|
||
msgid ""
|
||
"Before a package can be uploaded, you must be able to build a distribution "
|
||
"using the :command:`sdist` Distutils command. Once that works, you can run "
|
||
"``python setup.py upload`` to add your package to the PyPI archive. "
|
||
"Optionally you can GPG-sign the package by supplying the :option:`!--sign` "
|
||
"and :option:`!--identity` options."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:242
|
||
msgid ""
|
||
"Package uploading was implemented by Martin von Löwis and Richard Jones."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:248
|
||
msgid ":pep:`314` - Metadata for Python Software Packages v1.1"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:248
|
||
msgid ""
|
||
"PEP proposed and written by A.M. Kuchling, Richard Jones, and Fred Drake; "
|
||
"implemented by Richard Jones and Fred Drake."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:257
|
||
msgid "PEP 328: Absolute and Relative Imports"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:259
|
||
msgid ""
|
||
"The simpler part of PEP 328 was implemented in Python 2.4: parentheses could "
|
||
"now be used to enclose the names imported from a module using the ``from ... "
|
||
"import ...`` statement, making it easier to import many different names."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:263
|
||
msgid ""
|
||
"The more complicated part has been implemented in Python 2.5: importing a "
|
||
"module can be specified to use absolute or package-relative imports. The "
|
||
"plan is to move toward making absolute imports the default in future "
|
||
"versions of Python."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:267
|
||
msgid "Let's say you have a package directory like this::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:274
|
||
msgid ""
|
||
"This defines a package named :mod:`pkg` containing the :mod:`pkg.main` and :"
|
||
"mod:`pkg.string` submodules."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:277
|
||
msgid ""
|
||
"Consider the code in the :file:`main.py` module. What happens if it "
|
||
"executes the statement ``import string``? In Python 2.4 and earlier, it "
|
||
"will first look in the package's directory to perform a relative import, "
|
||
"finds :file:`pkg/string.py`, imports the contents of that file as the :mod:"
|
||
"`pkg.string` module, and that module is bound to the name ``string`` in the :"
|
||
"mod:`pkg.main` module's namespace."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:284
|
||
msgid ""
|
||
"That's fine if :mod:`pkg.string` was what you wanted. But what if you "
|
||
"wanted Python's standard :mod:`string` module? There's no clean way to "
|
||
"ignore :mod:`pkg.string` and look for the standard module; generally you had "
|
||
"to look at the contents of ``sys.modules``, which is slightly unclean. "
|
||
"Holger Krekel's :mod:`py.std` package provides a tidier way to perform "
|
||
"imports from the standard library, ``import py; py.std.string.join()``, but "
|
||
"that package isn't available on all Python installations."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:292
|
||
msgid ""
|
||
"Reading code which relies on relative imports is also less clear, because a "
|
||
"reader may be confused about which module, :mod:`string` or :mod:`pkg."
|
||
"string`, is intended to be used. Python users soon learned not to duplicate "
|
||
"the names of standard library modules in the names of their packages' "
|
||
"submodules, but you can't protect against having your submodule's name being "
|
||
"used for a new module added in a future version of Python."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:299
|
||
msgid ""
|
||
"In Python 2.5, you can switch :keyword:`import`'s behaviour to absolute "
|
||
"imports using a ``from __future__ import absolute_import`` directive. This "
|
||
"absolute-import behaviour will become the default in a future version "
|
||
"(probably Python 2.7). Once absolute imports are the default, ``import "
|
||
"string`` will always find the standard library's version. It's suggested "
|
||
"that users should begin using absolute imports as much as possible, so it's "
|
||
"preferable to begin writing ``from pkg import string`` in your code."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:307
|
||
msgid ""
|
||
"Relative imports are still possible by adding a leading period to the "
|
||
"module name when using the ``from ... import`` form::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:315
|
||
msgid ""
|
||
"This imports the :mod:`string` module relative to the current package, so "
|
||
"in :mod:`pkg.main` this will import *name1* and *name2* from :mod:`pkg."
|
||
"string`. Additional leading periods perform the relative import starting "
|
||
"from the parent of the current package. For example, code in the :mod:`A.B."
|
||
"C` module can do::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:324
|
||
msgid ""
|
||
"Leading periods cannot be used with the ``import modname`` form of the "
|
||
"import statement, only the ``from ... import`` form."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:331
|
||
msgid ":pep:`328` - Imports: Multi-Line and Absolute/Relative"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:331
|
||
msgid "PEP written by Aahz; implemented by Thomas Wouters."
|
||
msgstr "PEP écrite par Aahz; implémentée par Thomas Wouters."
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:333
|
||
msgid "https://pylib.readthedocs.org/"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:334
|
||
msgid ""
|
||
"The py library by Holger Krekel, which contains the :mod:`py.std` package."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:342
|
||
msgid "PEP 338: Executing Modules as Scripts"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:344
|
||
msgid ""
|
||
"The :option:`-m` switch added in Python 2.4 to execute a module as a script "
|
||
"gained a few more abilities. Instead of being implemented in C code inside "
|
||
"the Python interpreter, the switch now uses an implementation in a new "
|
||
"module, :mod:`runpy`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:349
|
||
msgid ""
|
||
"The :mod:`runpy` module implements a more sophisticated import mechanism so "
|
||
"that it's now possible to run modules in a package such as :mod:`pychecker."
|
||
"checker`. The module also supports alternative import mechanisms such as "
|
||
"the :mod:`zipimport` module. This means you can add a .zip archive's path "
|
||
"to ``sys.path`` and then use the :option:`-m` switch to execute code from "
|
||
"the archive."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:359
|
||
msgid ":pep:`338` - Executing modules as scripts"
|
||
msgstr ":pep:`338` - Executing modules as scripts"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:360
|
||
msgid "PEP written and implemented by Nick Coghlan."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:368
|
||
msgid "PEP 341: Unified try/except/finally"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:370
|
||
msgid ""
|
||
"Until Python 2.5, the :keyword:`try` statement came in two flavours. You "
|
||
"could use a :keyword:`finally` block to ensure that code is always executed, "
|
||
"or one or more :keyword:`except` blocks to catch specific exceptions. You "
|
||
"couldn't combine both :keyword:`except` blocks and a :keyword:`finally` "
|
||
"block, because generating the right bytecode for the combined version was "
|
||
"complicated and it wasn't clear what the semantics of the combined statement "
|
||
"should be."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:377
|
||
msgid ""
|
||
"Guido van Rossum spent some time working with Java, which does support the "
|
||
"equivalent of combining :keyword:`except` blocks and a :keyword:`finally` "
|
||
"block, and this clarified what the statement should mean. In Python 2.5, "
|
||
"you can now write::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:393
|
||
msgid ""
|
||
"The code in *block-1* is executed. If the code raises an exception, the "
|
||
"various :keyword:`except` blocks are tested: if the exception is of class :"
|
||
"class:`Exception1`, *handler-1* is executed; otherwise if it's of class :"
|
||
"class:`Exception2`, *handler-2* is executed, and so forth. If no exception "
|
||
"is raised, the *else-block* is executed."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:399
|
||
msgid ""
|
||
"No matter what happened previously, the *final-block* is executed once the "
|
||
"code block is complete and any raised exceptions handled. Even if there's an "
|
||
"error in an exception handler or the *else-block* and a new exception is "
|
||
"raised, the code in the *final-block* is still run."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:407
|
||
msgid ":pep:`341` - Unifying try-except and try-finally"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:408
|
||
msgid "PEP written by Georg Brandl; implementation by Thomas Lee."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:416
|
||
msgid "PEP 342: New Generator Features"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:418
|
||
msgid ""
|
||
"Python 2.5 adds a simple way to pass values *into* a generator. As "
|
||
"introduced in Python 2.3, generators only produce output; once a generator's "
|
||
"code was invoked to create an iterator, there was no way to pass any new "
|
||
"information into the function when its execution is resumed. Sometimes the "
|
||
"ability to pass in some information would be useful. Hackish solutions to "
|
||
"this include making the generator's code look at a global variable and then "
|
||
"changing the global variable's value, or passing in some mutable object that "
|
||
"callers then modify."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:426
|
||
msgid "To refresh your memory of basic generators, here's a simple example::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:434
|
||
msgid ""
|
||
"When you call ``counter(10)``, the result is an iterator that returns the "
|
||
"values from 0 up to 9. On encountering the :keyword:`yield` statement, the "
|
||
"iterator returns the provided value and suspends the function's execution, "
|
||
"preserving the local variables. Execution resumes on the following call to "
|
||
"the iterator's :meth:`next` method, picking up after the :keyword:`yield` "
|
||
"statement."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:440
|
||
msgid ""
|
||
"In Python 2.3, :keyword:`yield` was a statement; it didn't return any "
|
||
"value. In 2.5, :keyword:`yield` is now an expression, returning a value "
|
||
"that can be assigned to a variable or otherwise operated on::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:446
|
||
msgid ""
|
||
"I recommend that you always put parentheses around a :keyword:`yield` "
|
||
"expression when you're doing something with the returned value, as in the "
|
||
"above example. The parentheses aren't always necessary, but it's easier to "
|
||
"always add them instead of having to remember when they're needed."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:451
|
||
msgid ""
|
||
"(:pep:`342` explains the exact rules, which are that a :keyword:`yield`\\ -"
|
||
"expression must always be parenthesized except when it occurs at the top-"
|
||
"level expression on the right-hand side of an assignment. This means you "
|
||
"can write ``val = yield i`` but have to use parentheses when there's an "
|
||
"operation, as in ``val = (yield i) + 12``.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:457
|
||
msgid ""
|
||
"Values are sent into a generator by calling its ``send(value)`` method. The "
|
||
"generator's code is then resumed and the :keyword:`yield` expression returns "
|
||
"the specified *value*. If the regular :meth:`next` method is called, the :"
|
||
"keyword:`yield` returns :const:`None`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:462
|
||
msgid ""
|
||
"Here's the previous example, modified to allow changing the value of the "
|
||
"internal counter. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:475
|
||
msgid "And here's an example of changing the counter::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:492
|
||
msgid ""
|
||
":keyword:`yield` will usually return :const:`None`, so you should always "
|
||
"check for this case. Don't just use its value in expressions unless you're "
|
||
"sure that the :meth:`send` method will be the only method used to resume "
|
||
"your generator function."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:497
|
||
msgid ""
|
||
"In addition to :meth:`send`, there are two other new methods on generators:"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:499
|
||
msgid ""
|
||
"``throw(type, value=None, traceback=None)`` is used to raise an exception "
|
||
"inside the generator; the exception is raised by the :keyword:`yield` "
|
||
"expression where the generator's execution is paused."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:503
|
||
msgid ""
|
||
":meth:`close` raises a new :exc:`GeneratorExit` exception inside the "
|
||
"generator to terminate the iteration. On receiving this exception, the "
|
||
"generator's code must either raise :exc:`GeneratorExit` or :exc:"
|
||
"`StopIteration`. Catching the :exc:`GeneratorExit` exception and returning "
|
||
"a value is illegal and will trigger a :exc:`RuntimeError`; if the function "
|
||
"raises some other exception, that exception is propagated to the caller. :"
|
||
"meth:`close` will also be called by Python's garbage collector when the "
|
||
"generator is garbage-collected."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:511
|
||
msgid ""
|
||
"If you need to run cleanup code when a :exc:`GeneratorExit` occurs, I "
|
||
"suggest using a ``try: ... finally:`` suite instead of catching :exc:"
|
||
"`GeneratorExit`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:514
|
||
msgid ""
|
||
"The cumulative effect of these changes is to turn generators from one-way "
|
||
"producers of information into both producers and consumers."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:517
|
||
msgid ""
|
||
"Generators also become *coroutines*, a more generalized form of subroutines. "
|
||
"Subroutines are entered at one point and exited at another point (the top of "
|
||
"the function, and a :keyword:`return` statement), but coroutines can be "
|
||
"entered, exited, and resumed at many different points (the :keyword:`yield` "
|
||
"statements). We'll have to figure out patterns for using coroutines "
|
||
"effectively in Python."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:523
|
||
msgid ""
|
||
"The addition of the :meth:`close` method has one side effect that isn't "
|
||
"obvious. :meth:`close` is called when a generator is garbage-collected, so "
|
||
"this means the generator's code gets one last chance to run before the "
|
||
"generator is destroyed. This last chance means that ``try...finally`` "
|
||
"statements in generators can now be guaranteed to work; the :keyword:"
|
||
"`finally` clause will now always get a chance to run. The syntactic "
|
||
"restriction that you couldn't mix :keyword:`yield` statements with a ``try..."
|
||
"finally`` suite has therefore been removed. This seems like a minor bit of "
|
||
"language trivia, but using generators and ``try...finally`` is actually "
|
||
"necessary in order to implement the :keyword:`with` statement described by "
|
||
"PEP 343. I'll look at this new statement in the following section."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:535
|
||
msgid ""
|
||
"Another even more esoteric effect of this change: previously, the :attr:"
|
||
"`gi_frame` attribute of a generator was always a frame object. It's now "
|
||
"possible for :attr:`gi_frame` to be ``None`` once the generator has been "
|
||
"exhausted."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:548
|
||
msgid ":pep:`342` - Coroutines via Enhanced Generators"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:544
|
||
msgid ""
|
||
"PEP written by Guido van Rossum and Phillip J. Eby; implemented by Phillip "
|
||
"J. Eby. Includes examples of some fancier uses of generators as coroutines."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:547
|
||
msgid ""
|
||
"Earlier versions of these features were proposed in :pep:`288` by Raymond "
|
||
"Hettinger and :pep:`325` by Samuele Pedroni."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:551
|
||
msgid "https://en.wikipedia.org/wiki/Coroutine"
|
||
msgstr "https://en.wikipedia.org/wiki/Coroutine"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:551
|
||
msgid "The Wikipedia entry for coroutines."
|
||
msgstr "L’article de Wikipédia sur les coroutines."
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:553
|
||
msgid "http://www.sidhe.org/~dan/blog/archives/000178.html"
|
||
msgstr "http://www.sidhe.org/~dan/blog/archives/000178.html"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:554
|
||
msgid ""
|
||
"An explanation of coroutines from a Perl point of view, written by Dan "
|
||
"Sugalski."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:562
|
||
msgid "PEP 343: The 'with' statement"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:564
|
||
msgid ""
|
||
"The ':keyword:`with`' statement clarifies code that previously would use "
|
||
"``try...finally`` blocks to ensure that clean-up code is executed. In this "
|
||
"section, I'll discuss the statement as it will commonly be used. In the "
|
||
"next section, I'll examine the implementation details and show how to write "
|
||
"objects for use with this statement."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:570
|
||
msgid ""
|
||
"The ':keyword:`with`' statement is a new control-flow structure whose basic "
|
||
"structure is::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:576
|
||
msgid ""
|
||
"The expression is evaluated, and it should result in an object that supports "
|
||
"the context management protocol (that is, has :meth:`__enter__` and :meth:"
|
||
"`__exit__` methods."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:580
|
||
msgid ""
|
||
"The object's :meth:`__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 ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:585
|
||
msgid ""
|
||
"After execution of the *with-block* is finished, the object's :meth:"
|
||
"`__exit__` method is called, even if the block raised an exception, and can "
|
||
"therefore run clean-up code."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:589
|
||
msgid ""
|
||
"To enable the statement in Python 2.5, you need to add the following "
|
||
"directive to your module::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:594
|
||
msgid "The statement will always be enabled in Python 2.6."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:596
|
||
msgid ""
|
||
"Some standard Python objects now support the context management protocol and "
|
||
"can be used with the ':keyword:`with`' statement. File objects are one "
|
||
"example::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:604
|
||
msgid ""
|
||
"After this statement has executed, the file object in *f* will have been "
|
||
"automatically closed, even if the :keyword:`for` loop raised an exception "
|
||
"part-way through the block."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:610
|
||
msgid ""
|
||
"In this case, *f* is the same object created by :func:`open`, because :meth:"
|
||
"`file.__enter__` returns *self*."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:613
|
||
msgid ""
|
||
"The :mod:`threading` module's locks and condition variables also support "
|
||
"the ':keyword:`with`' statement::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:621
|
||
msgid ""
|
||
"The lock is acquired before the block is executed and always released once "
|
||
"the block is complete."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:624
|
||
msgid ""
|
||
"The new :func:`localcontext` function in the :mod:`decimal` module makes it "
|
||
"easy to save and restore the current decimal context, which encapsulates the "
|
||
"desired precision and rounding characteristics for computations::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:643
|
||
msgid "Writing Context Managers"
|
||
msgstr "Écrire des gestionnaires de contexte"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:645
|
||
msgid ""
|
||
"Under the hood, the ':keyword:`with`' statement is fairly complicated. Most "
|
||
"people will only use ':keyword:`with`' in company with existing objects and "
|
||
"don't need to know these details, so you can skip the rest of this section "
|
||
"if you like. Authors of new objects will need to understand the details of "
|
||
"the underlying implementation and should keep reading."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:651
|
||
msgid "A high-level explanation of the context management protocol is:"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:653
|
||
msgid ""
|
||
"The expression is evaluated and should result in an object called a "
|
||
"\"context manager\". The context manager must have :meth:`__enter__` and :"
|
||
"meth:`__exit__` methods."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:657
|
||
msgid ""
|
||
"The context manager's :meth:`__enter__` method is called. The value "
|
||
"returned is assigned to *VAR*. If no ``'as VAR'`` clause is present, the "
|
||
"value is simply discarded."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:661
|
||
msgid "The code in *BLOCK* is executed."
|
||
msgstr "Le code dans *BLOCK* est exécuté."
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:663
|
||
msgid ""
|
||
"If *BLOCK* raises an exception, the ``__exit__(type, value, traceback)`` is "
|
||
"called with the exception details, the same values returned by :func:`sys."
|
||
"exc_info`. The method's return value controls whether the exception is re-"
|
||
"raised: any false value re-raises the exception, and ``True`` will result in "
|
||
"suppressing it. You'll only rarely want to suppress the exception, because "
|
||
"if you do the author of the code containing the ':keyword:`with`' statement "
|
||
"will never realize anything went wrong."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:671
|
||
msgid ""
|
||
"If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still "
|
||
"called, but *type*, *value*, and *traceback* are all ``None``."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:674
|
||
msgid ""
|
||
"Let's think through an example. I won't present detailed code but will only "
|
||
"sketch the methods necessary for a database that supports transactions."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:677
|
||
msgid ""
|
||
"(For people unfamiliar with database terminology: a set of changes to the "
|
||
"database are grouped into a transaction. Transactions can be either "
|
||
"committed, meaning that all the changes are written into the database, or "
|
||
"rolled back, meaning that the changes are all discarded and the database is "
|
||
"unchanged. See any database textbook for more information.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:683
|
||
msgid ""
|
||
"Let's assume there's an object representing a database connection. Our goal "
|
||
"will be to let the user write code like this::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:692
|
||
msgid ""
|
||
"The transaction should be committed if the code in the block runs flawlessly "
|
||
"or rolled back if there's an exception. Here's the basic interface for :"
|
||
"class:`DatabaseConnection` that I'll assume::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:705
|
||
msgid ""
|
||
"The :meth:`__enter__` method is pretty easy, having only to start a new "
|
||
"transaction. For this application the resulting cursor object would be a "
|
||
"useful result, so the method will return it. The user can then add ``as "
|
||
"cursor`` to their ':keyword:`with`' statement to bind the cursor to a "
|
||
"variable name. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:717
|
||
msgid ""
|
||
"The :meth:`__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 ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:722
|
||
msgid ""
|
||
"In the code below, execution will just fall off the end of the function, "
|
||
"returning the default value of ``None``. ``None`` is false, so the "
|
||
"exception will be re-raised automatically. If you wished, you could be more "
|
||
"explicit and add a :keyword:`return` statement at the marked location. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:742
|
||
msgid "The contextlib module"
|
||
msgstr "Le module contextlib"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:744
|
||
msgid ""
|
||
"The new :mod:`contextlib` module provides some functions and a decorator "
|
||
"that are useful for writing objects for use with the ':keyword:`with`' "
|
||
"statement."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:747
|
||
msgid ""
|
||
"The decorator is called :func:`contextmanager`, and lets you write a single "
|
||
"generator function instead of defining a new class. The generator should "
|
||
"yield exactly one value. The code up to the :keyword:`yield` will be "
|
||
"executed as the :meth:`__enter__` method, and the value yielded will be the "
|
||
"method's return value that will get bound to the variable in the ':keyword:"
|
||
"`with`' statement's :keyword:`as` clause, if any. The code after the :"
|
||
"keyword:`yield` will be executed in the :meth:`__exit__` method. Any "
|
||
"exception raised in the block will be raised by the :keyword:`yield` "
|
||
"statement."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:756
|
||
msgid ""
|
||
"Our database example from the previous section could be written using this "
|
||
"decorator as::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:776
|
||
msgid ""
|
||
"The :mod:`contextlib` module also has a ``nested(mgr1, mgr2, ...)`` function "
|
||
"that combines a number of context managers so you don't need to write nested "
|
||
"':keyword:`with`' statements. In this example, the single ':keyword:`with`' "
|
||
"statement both starts a database transaction and acquires a thread lock::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:785
|
||
msgid ""
|
||
"Finally, the ``closing(object)`` function returns *object* so that it can be "
|
||
"bound to a variable, and calls ``object.close`` at the end of the block. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:802
|
||
msgid ":pep:`343` - The \"with\" statement"
|
||
msgstr ":pep:`343` - The \"with\" statement"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:799
|
||
msgid ""
|
||
"PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland, "
|
||
"Guido van Rossum, and Neal Norwitz. The PEP shows the code generated for a "
|
||
"':keyword:`with`' statement, which can be helpful in learning how the "
|
||
"statement works."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:804
|
||
msgid "The documentation for the :mod:`contextlib` module."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:812
|
||
msgid "PEP 352: Exceptions as New-Style Classes"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:814
|
||
msgid ""
|
||
"Exception classes can now be new-style classes, not just classic classes, "
|
||
"and the built-in :exc:`Exception` class and all the standard built-in "
|
||
"exceptions (:exc:`NameError`, :exc:`ValueError`, etc.) are now new-style "
|
||
"classes."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:818
|
||
msgid ""
|
||
"The inheritance hierarchy for exceptions has been rearranged a bit. In 2.5, "
|
||
"the inheritance relationships are::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:827
|
||
msgid ""
|
||
"This rearrangement was done because people often want to catch all "
|
||
"exceptions that indicate program errors. :exc:`KeyboardInterrupt` and :exc:"
|
||
"`SystemExit` aren't errors, though, and usually represent an explicit action "
|
||
"such as the user hitting :kbd:`Control-C` or code calling :func:`sys.exit`. "
|
||
"A bare ``except:`` will catch all exceptions, so you commonly need to list :"
|
||
"exc:`KeyboardInterrupt` and :exc:`SystemExit` in order to re-raise them. "
|
||
"The usual pattern is::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:842
|
||
msgid ""
|
||
"In Python 2.5, you can now write ``except Exception`` to achieve the same "
|
||
"result, catching all the exceptions that usually indicate errors but "
|
||
"leaving :exc:`KeyboardInterrupt` and :exc:`SystemExit` alone. As in "
|
||
"previous versions, a bare ``except:`` still catches all exceptions."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:847
|
||
msgid ""
|
||
"The goal for Python 3.0 is to require any class raised as an exception to "
|
||
"derive from :exc:`BaseException` or some descendant of :exc:`BaseException`, "
|
||
"and future releases in the Python 2.x series may begin to enforce this "
|
||
"constraint. Therefore, I suggest you begin making all your exception classes "
|
||
"derive from :exc:`Exception` now. It's been suggested that the bare "
|
||
"``except:`` form should be removed in Python 3.0, but Guido van Rossum "
|
||
"hasn't decided whether to do this or not."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:855
|
||
msgid ""
|
||
"Raising of strings as exceptions, as in the statement ``raise \"Error "
|
||
"occurred\"``, is deprecated in Python 2.5 and will trigger a warning. The "
|
||
"aim is to be able to remove the string-exception feature in a few releases."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:862
|
||
msgid ":pep:`352` - Required Superclass for Exceptions"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:863
|
||
msgid ""
|
||
"PEP written by Brett Cannon and Guido van Rossum; implemented by Brett "
|
||
"Cannon."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:871
|
||
msgid "PEP 353: Using ssize_t as the index type"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:873
|
||
msgid ""
|
||
"A wide-ranging change to Python's C API, using a new :c:type:`Py_ssize_t` "
|
||
"type definition instead of :c:type:`int`, will permit the interpreter to "
|
||
"handle more data on 64-bit platforms. This change doesn't affect Python's "
|
||
"capacity on 32-bit platforms."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:878
|
||
msgid ""
|
||
"Various pieces of the Python interpreter used C's :c:type:`int` type to "
|
||
"store sizes or counts; for example, the number of items in a list or tuple "
|
||
"were stored in an :c:type:`int`. The C compilers for most 64-bit platforms "
|
||
"still define :c:type:`int` as a 32-bit type, so that meant that lists could "
|
||
"only hold up to ``2**31 - 1`` = 2147483647 items. (There are actually a few "
|
||
"different programming models that 64-bit C compilers can use -- see http://"
|
||
"www.unix.org/version2/whatsnew/lp64_wp.html for a discussion -- but the most "
|
||
"commonly available model leaves :c:type:`int` as 32 bits.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:887
|
||
msgid ""
|
||
"A limit of 2147483647 items doesn't really matter on a 32-bit platform "
|
||
"because you'll run out of memory before hitting the length limit. Each list "
|
||
"item requires space for a pointer, which is 4 bytes, plus space for a :c:"
|
||
"type:`PyObject` representing the item. 2147483647\\*4 is already more bytes "
|
||
"than a 32-bit address space can contain."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:893
|
||
msgid ""
|
||
"It's possible to address that much memory on a 64-bit platform, however. "
|
||
"The pointers for a list that size would only require 16 GiB of space, so "
|
||
"it's not unreasonable that Python programmers might construct lists that "
|
||
"large. Therefore, the Python interpreter had to be changed to use some type "
|
||
"other than :c:type:`int`, and this will be a 64-bit type on 64-bit "
|
||
"platforms. The change will cause incompatibilities on 64-bit machines, so "
|
||
"it was deemed worth making the transition now, while the number of 64-bit "
|
||
"users is still relatively small. (In 5 or 10 years, we may *all* be on 64-"
|
||
"bit machines, and the transition would be more painful then.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:903
|
||
msgid ""
|
||
"This change most strongly affects authors of C extension modules. Python "
|
||
"strings and container types such as lists and tuples now use :c:type:"
|
||
"`Py_ssize_t` to store their size. Functions such as :c:func:`PyList_Size` "
|
||
"now return :c:type:`Py_ssize_t`. Code in extension modules may therefore "
|
||
"need to have some variables changed to :c:type:`Py_ssize_t`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:909
|
||
msgid ""
|
||
"The :c:func:`PyArg_ParseTuple` and :c:func:`Py_BuildValue` functions have a "
|
||
"new conversion code, ``n``, for :c:type:`Py_ssize_t`. :c:func:"
|
||
"`PyArg_ParseTuple`'s ``s#`` and ``t#`` still output :c:type:`int` by "
|
||
"default, but you can define the macro :c:macro:`PY_SSIZE_T_CLEAN` before "
|
||
"including :file:`Python.h` to make them return :c:type:`Py_ssize_t`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:915
|
||
msgid ""
|
||
":pep:`353` has a section on conversion guidelines that extension authors "
|
||
"should read to learn about supporting 64-bit platforms."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:921
|
||
msgid ":pep:`353` - Using ssize_t as the index type"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:922
|
||
msgid "PEP written and implemented by Martin von Löwis."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:930
|
||
msgid "PEP 357: The '__index__' method"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:932
|
||
msgid ""
|
||
"The NumPy developers had a problem that could only be solved by adding a new "
|
||
"special method, :meth:`__index__`. When using slice notation, as in "
|
||
"``[start:stop:step]``, the values of the *start*, *stop*, and *step* indexes "
|
||
"must all be either integers or long integers. NumPy defines a variety of "
|
||
"specialized integer types corresponding to unsigned and signed integers of "
|
||
"8, 16, 32, and 64 bits, but there was no way to signal that these types "
|
||
"could be used as slice indexes."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:940
|
||
msgid ""
|
||
"Slicing can't just use the existing :meth:`__int__` method because that "
|
||
"method is also used to implement coercion to integers. If slicing used :"
|
||
"meth:`__int__`, floating-point numbers would also become legal slice indexes "
|
||
"and that's clearly an undesirable behaviour."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:945
|
||
msgid ""
|
||
"Instead, a new special method called :meth:`__index__` was added. It takes "
|
||
"no arguments and returns an integer giving the slice index to use. For "
|
||
"example::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:952
|
||
msgid ""
|
||
"The return value must be either a Python integer or long integer. The "
|
||
"interpreter will check that the type returned is correct, and raises a :exc:"
|
||
"`TypeError` if this requirement isn't met."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:956
|
||
msgid ""
|
||
"A corresponding :attr:`nb_index` slot was added to the C-level :c:type:"
|
||
"`PyNumberMethods` structure to let C extensions implement this protocol. "
|
||
"``PyNumber_Index(obj)`` can be used in extension code to call the :meth:"
|
||
"`__index__` function and retrieve its result."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:964
|
||
msgid ":pep:`357` - Allowing Any Object to be Used for Slicing"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:965
|
||
msgid "PEP written and implemented by Travis Oliphant."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:973
|
||
msgid "Other Language Changes"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:975
|
||
msgid ""
|
||
"Here are all of the changes that Python 2.5 makes to the core Python "
|
||
"language."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:977
|
||
msgid ""
|
||
"The :class:`dict` type has a new hook for letting subclasses provide a "
|
||
"default value when a key isn't contained in the dictionary. When a key isn't "
|
||
"found, the dictionary's ``__missing__(key)`` method will be called. This "
|
||
"hook is used to implement the new :class:`defaultdict` class in the :mod:"
|
||
"`collections` module. The following example defines a dictionary that "
|
||
"returns zero for any missing key::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:992
|
||
msgid ""
|
||
"Both 8-bit and Unicode strings have new ``partition(sep)`` and "
|
||
"``rpartition(sep)`` methods that simplify a common use case."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:995
|
||
msgid ""
|
||
"The ``find(S)`` method is often used to get an index which is then used to "
|
||
"slice the string and obtain the pieces that are before and after the "
|
||
"separator. ``partition(sep)`` condenses this pattern into a single method "
|
||
"call that returns a 3-tuple containing the substring before the separator, "
|
||
"the separator itself, and the substring after the separator. If the "
|
||
"separator isn't found, the first element of the tuple is the entire string "
|
||
"and the other two elements are empty. ``rpartition(sep)`` also returns a 3-"
|
||
"tuple but starts searching from the end of the string; the ``r`` stands for "
|
||
"'reverse'."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1004
|
||
msgid "Some examples::"
|
||
msgstr "Quelques exemples : ::"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1017
|
||
msgid ""
|
||
"(Implemented by Fredrik Lundh following a suggestion by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1019
|
||
msgid ""
|
||
"The :meth:`startswith` and :meth:`endswith` methods of string types now "
|
||
"accept tuples of strings to check for. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1025
|
||
msgid "(Implemented by Georg Brandl following a suggestion by Tom Lynn.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1029
|
||
msgid ""
|
||
"The :func:`min` and :func:`max` built-in functions gained a ``key`` keyword "
|
||
"parameter analogous to the ``key`` argument for :meth:`sort`. This "
|
||
"parameter supplies a function that takes a single argument and is called for "
|
||
"every value in the list; :func:`min`/:func:`max` will return the element "
|
||
"with the smallest/largest return value from this function. For example, to "
|
||
"find the longest string in a list, you can do::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1042
|
||
msgid "(Contributed by Steven Bethard and Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1044
|
||
msgid ""
|
||
"Two new built-in functions, :func:`any` and :func:`all`, evaluate whether an "
|
||
"iterator contains any true or false values. :func:`any` returns :const:"
|
||
"`True` if any value returned by the iterator is true; otherwise it will "
|
||
"return :const:`False`. :func:`all` returns :const:`True` only if all of the "
|
||
"values returned by the iterator evaluate as true. (Suggested by Guido van "
|
||
"Rossum, and implemented by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1051
|
||
msgid ""
|
||
"The result of a class's :meth:`__hash__` method can now be either a long "
|
||
"integer or a regular integer. If a long integer is returned, the hash of "
|
||
"that value is taken. In earlier versions the hash value was required to be "
|
||
"a regular integer, but in 2.5 the :func:`id` built-in was changed to always "
|
||
"return non-negative numbers, and users often seem to use ``id(self)`` in :"
|
||
"meth:`__hash__` methods (though this is discouraged)."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1060
|
||
msgid ""
|
||
"ASCII is now the default encoding for modules. It's now a syntax error if "
|
||
"a module contains string literals with 8-bit characters but doesn't have an "
|
||
"encoding declaration. In Python 2.4 this triggered a warning, not a syntax "
|
||
"error. See :pep:`263` for how to declare a module's encoding; for example, "
|
||
"you might add a line like this near the top of the source file::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1068
|
||
msgid ""
|
||
"A new warning, :class:`UnicodeWarning`, is triggered when you attempt to "
|
||
"compare a Unicode string and an 8-bit string that can't be converted to "
|
||
"Unicode using the default ASCII encoding. The result of the comparison is "
|
||
"false::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1080
|
||
msgid ""
|
||
"Previously this would raise a :class:`UnicodeDecodeError` exception, but in "
|
||
"2.5 this could result in puzzling problems when accessing a dictionary. If "
|
||
"you looked up ``unichr(128)`` and ``chr(128)`` was being used as a key, "
|
||
"you'd get a :class:`UnicodeDecodeError` exception. Other changes in 2.5 "
|
||
"resulted in this exception being raised instead of suppressed by the code "
|
||
"in :file:`dictobject.c` that implements dictionaries."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1087
|
||
msgid ""
|
||
"Raising an exception for such a comparison is strictly correct, but the "
|
||
"change might have broken code, so instead :class:`UnicodeWarning` was "
|
||
"introduced."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1090
|
||
msgid "(Implemented by Marc-André Lemburg.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1092
|
||
msgid ""
|
||
"One error that Python programmers sometimes make is forgetting to include "
|
||
"an :file:`__init__.py` module in a package directory. Debugging this mistake "
|
||
"can be confusing, and usually requires running Python with the :option:`-v` "
|
||
"switch to log all the paths searched. In Python 2.5, a new :exc:"
|
||
"`ImportWarning` warning is triggered when an import would have picked up a "
|
||
"directory as a package but no :file:`__init__.py` was found. This warning "
|
||
"is silently ignored by default; provide the :option:`-Wd <-W>` option when "
|
||
"running the Python executable to display the warning message. (Implemented "
|
||
"by Thomas Wouters.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1101
|
||
msgid ""
|
||
"The list of base classes in a class definition can now be empty. As an "
|
||
"example, this is now legal::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1107
|
||
msgid "(Implemented by Brett Cannon.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1115
|
||
msgid "Interactive Interpreter Changes"
|
||
msgstr "Changements de l’interpréteur interactif"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1117
|
||
msgid ""
|
||
"In the interactive interpreter, ``quit`` and ``exit`` have long been "
|
||
"strings so that new users get a somewhat helpful message when they try to "
|
||
"quit::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1123
|
||
msgid ""
|
||
"In Python 2.5, ``quit`` and ``exit`` are now objects that still produce "
|
||
"string representations of themselves, but are also callable. Newbies who try "
|
||
"``quit()`` or ``exit()`` will now exit the interpreter as they expect. "
|
||
"(Implemented by Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1128
|
||
msgid ""
|
||
"The Python executable now accepts the standard long options :option:`--"
|
||
"help` and :option:`--version`; on Windows, it also accepts the :option:`/? "
|
||
"<-?>` option for displaying a help message. (Implemented by Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1138
|
||
msgid "Optimizations"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1140
|
||
msgid ""
|
||
"Several of the optimizations were developed at the NeedForSpeed sprint, an "
|
||
"event held in Reykjavik, Iceland, from May 21--28 2006. The sprint focused "
|
||
"on speed enhancements to the CPython implementation and was funded by EWT "
|
||
"LLC with local support from CCP Games. Those optimizations added at this "
|
||
"sprint are specially marked in the following list."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1146
|
||
msgid ""
|
||
"When they were introduced in Python 2.4, the built-in :class:`set` and :"
|
||
"class:`frozenset` types were built on top of Python's dictionary type. In "
|
||
"2.5 the internal data structure has been customized for implementing sets, "
|
||
"and as a result sets will use a third less memory and are somewhat faster. "
|
||
"(Implemented by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1152
|
||
msgid ""
|
||
"The speed of some Unicode operations, such as finding substrings, string "
|
||
"splitting, and character map encoding and decoding, has been improved. "
|
||
"(Substring search and splitting improvements were added by Fredrik Lundh and "
|
||
"Andrew Dalke at the NeedForSpeed sprint. Character maps were improved by "
|
||
"Walter Dörwald and Martin von Löwis.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1160
|
||
msgid ""
|
||
"The ``long(str, base)`` function is now faster on long digit strings because "
|
||
"fewer intermediate results are calculated. The peak is for strings of "
|
||
"around 800--1000 digits where the function is 6 times faster. (Contributed "
|
||
"by Alan McIntyre and committed at the NeedForSpeed sprint.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1167
|
||
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` "
|
||
"methods. Iteration uses an internal buffer and the :meth:`read\\*` methods "
|
||
"don't use that buffer. Instead they would return the data following the "
|
||
"buffer, causing the data to appear out of order. Mixing iteration and these "
|
||
"methods will now trigger a :exc:`ValueError` from the :meth:`read\\*` "
|
||
"method. (Implemented by Thomas Wouters.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1177
|
||
msgid ""
|
||
"The :mod:`struct` module now compiles structure format strings into an "
|
||
"internal representation and caches this representation, yielding a 20% "
|
||
"speedup. (Contributed by Bob Ippolito at the NeedForSpeed sprint.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1181
|
||
msgid ""
|
||
"The :mod:`re` module got a 1 or 2% speedup by switching to Python's "
|
||
"allocator functions instead of the system's :c:func:`malloc` and :c:func:"
|
||
"`free`. (Contributed by Jack Diederich at the NeedForSpeed sprint.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1185
|
||
msgid ""
|
||
"The code generator's peephole optimizer now performs simple constant folding "
|
||
"in expressions. If you write something like ``a = 2+3``, the code generator "
|
||
"will do the arithmetic and produce code corresponding to ``a = 5``. "
|
||
"(Proposed and implemented by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1190
|
||
msgid ""
|
||
"Function calls are now faster because code objects now keep the most "
|
||
"recently finished frame (a \"zombie frame\") in an internal field of the "
|
||
"code object, reusing it the next time the code object is invoked. (Original "
|
||
"patch by Michael Hudson, modified by Armin Rigo and Richard Jones; committed "
|
||
"at the NeedForSpeed sprint.) Frame objects are also slightly smaller, which "
|
||
"may improve cache locality and reduce memory usage a bit. (Contributed by "
|
||
"Neal Norwitz.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1200
|
||
msgid ""
|
||
"Python's built-in exceptions are now new-style classes, a change that speeds "
|
||
"up instantiation considerably. Exception handling in Python 2.5 is "
|
||
"therefore about 30% faster than in 2.4. (Contributed by Richard Jones, Georg "
|
||
"Brandl and Sean Reifschneider at the NeedForSpeed sprint.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1205
|
||
msgid ""
|
||
"Importing now caches the paths tried, recording whether they exist or not "
|
||
"so that the interpreter makes fewer :c:func:`open` and :c:func:`stat` calls "
|
||
"on startup. (Contributed by Martin von Löwis and Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1217
|
||
msgid "New, Improved, and Removed Modules"
|
||
msgstr "Modules ajoutés, modifiés, et supprimés"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1219
|
||
msgid ""
|
||
"The standard library received many enhancements and bug fixes in Python 2.5. "
|
||
"Here's a partial list of the most notable changes, sorted alphabetically by "
|
||
"module name. Consult the :file:`Misc/NEWS` file in the source tree for a "
|
||
"more complete list of changes, or look through the SVN logs for all the "
|
||
"details."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1224
|
||
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 ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1227
|
||
msgid ""
|
||
"The :mod:`codecs` module gained support for incremental codecs. The :func:"
|
||
"`codec.lookup` function now returns a :class:`CodecInfo` instance instead of "
|
||
"a tuple. :class:`CodecInfo` instances behave like a 4-tuple to preserve "
|
||
"backward compatibility but also have the attributes :attr:`encode`, :attr:"
|
||
"`decode`, :attr:`incrementalencoder`, :attr:`incrementaldecoder`, :attr:"
|
||
"`streamwriter`, and :attr:`streamreader`. Incremental codecs can receive "
|
||
"input and produce output in multiple chunks; the output is the same as if "
|
||
"the entire input was fed to the non-incremental codec. See the :mod:`codecs` "
|
||
"module documentation for details. (Designed and implemented by Walter "
|
||
"Dörwald.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1239
|
||
msgid ""
|
||
"The :mod:`collections` module gained a new type, :class:`defaultdict`, that "
|
||
"subclasses the standard :class:`dict` type. The new type mostly behaves "
|
||
"like a dictionary but constructs a default value when a key isn't present, "
|
||
"automatically adding it to the dictionary for the requested key value."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1244
|
||
msgid ""
|
||
"The first argument to :class:`defaultdict`'s constructor is a factory "
|
||
"function that gets called whenever a key is requested but not found. This "
|
||
"factory function receives no arguments, so you can use built-in type "
|
||
"constructors such as :func:`list` or :func:`int`. For example, you can "
|
||
"make an index of words based on their initial letter like this::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1260
|
||
msgid "Printing ``index`` results in the following output::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1268
|
||
msgid "(Contributed by Guido van Rossum.)"
|
||
msgstr "(Contribution par Guido van Rossum.)"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1270
|
||
msgid ""
|
||
"The :class:`deque` double-ended queue type supplied by the :mod:"
|
||
"`collections` module now has a ``remove(value)`` method that removes the "
|
||
"first occurrence of *value* in the queue, raising :exc:`ValueError` if the "
|
||
"value isn't found. (Contributed by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1275
|
||
msgid ""
|
||
"New module: The :mod:`contextlib` module contains helper functions for use "
|
||
"with the new ':keyword:`with`' statement. See section :ref:`contextlibmod` "
|
||
"for more about this module."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1279
|
||
msgid ""
|
||
"New module: The :mod:`cProfile` module is a C implementation of the "
|
||
"existing :mod:`profile` module that has much lower overhead. The module's "
|
||
"interface is the same as :mod:`profile`: you run ``cProfile.run('main()')`` "
|
||
"to profile a function, can save profile data to a file, etc. It's not yet "
|
||
"known if the Hotshot profiler, which is also written in C but doesn't match "
|
||
"the :mod:`profile` module's interface, will continue to be maintained in "
|
||
"future versions of Python. (Contributed by Armin Rigo.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1287
|
||
msgid ""
|
||
"Also, the :mod:`pstats` module for analyzing the data measured by the "
|
||
"profiler now supports directing the output to any file object by supplying a "
|
||
"*stream* argument to the :class:`Stats` constructor. (Contributed by Skip "
|
||
"Montanaro.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1291
|
||
msgid ""
|
||
"The :mod:`csv` module, which parses files in comma-separated value format, "
|
||
"received several enhancements and a number of bugfixes. You can now set the "
|
||
"maximum size in bytes of a field by calling the ``csv."
|
||
"field_size_limit(new_limit)`` function; omitting the *new_limit* argument "
|
||
"will return the currently-set limit. The :class:`reader` class now has a :"
|
||
"attr:`line_num` attribute that counts the number of physical lines read from "
|
||
"the source; records can span multiple physical lines, so :attr:`line_num` is "
|
||
"not the same as the number of records read."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1300
|
||
msgid ""
|
||
"The CSV parser is now stricter about multi-line quoted fields. Previously, "
|
||
"if a line ended within a quoted field without a terminating newline "
|
||
"character, a newline would be inserted into the returned field. This "
|
||
"behavior caused problems when reading files that contained carriage return "
|
||
"characters within fields, so the code was changed to return the field "
|
||
"without inserting newlines. As a consequence, if newlines embedded within "
|
||
"fields are important, the input should be split into lines in a manner that "
|
||
"preserves the newline characters."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1308
|
||
msgid "(Contributed by Skip Montanaro and Andrew McNamara.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1310
|
||
msgid ""
|
||
"The :class:`~datetime.datetime` class in the :mod:`datetime` module now has "
|
||
"a ``strptime(string, format)`` method for parsing date strings, contributed "
|
||
"by Josh Spoerri. It uses the same format characters as :func:`time.strptime` "
|
||
"and :func:`time.strftime`::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1320
|
||
msgid ""
|
||
"The :meth:`SequenceMatcher.get_matching_blocks` method in the :mod:`difflib` "
|
||
"module now guarantees to return a minimal list of blocks describing matching "
|
||
"subsequences. Previously, the algorithm would occasionally break a block of "
|
||
"matching elements into two list entries. (Enhancement by Tim Peters.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1325
|
||
msgid ""
|
||
"The :mod:`doctest` module gained a ``SKIP`` option that keeps an example "
|
||
"from being executed at all. This is intended for code snippets that are "
|
||
"usage examples intended for the reader and aren't actually test cases."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1329
|
||
msgid ""
|
||
"An *encoding* parameter was added to the :func:`testfile` function and the :"
|
||
"class:`DocFileSuite` class to specify the file's encoding. This makes it "
|
||
"easier to use non-ASCII characters in tests contained within a docstring. "
|
||
"(Contributed by Bjorn Tillenius.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1336
|
||
msgid ""
|
||
"The :mod:`email` package has been updated to version 4.0. (Contributed by "
|
||
"Barry Warsaw.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1344
|
||
msgid ""
|
||
"The :mod:`fileinput` module was made more flexible. Unicode filenames are "
|
||
"now supported, and a *mode* parameter that defaults to ``\"r\"`` was added "
|
||
"to the :func:`input` function to allow opening files in binary or :term:"
|
||
"`universal newlines` mode. Another new parameter, *openhook*, lets you use "
|
||
"a function other than :func:`open` to open the input files. Once you're "
|
||
"iterating over the set of files, the :class:`FileInput` object's new :meth:"
|
||
"`fileno` returns the file descriptor for the currently opened file. "
|
||
"(Contributed by Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1353
|
||
msgid ""
|
||
"In the :mod:`gc` module, the new :func:`get_count` function returns a 3-"
|
||
"tuple containing the current collection counts for the three GC "
|
||
"generations. This is accounting information for the garbage collector; when "
|
||
"these counts reach a specified threshold, a garbage collection sweep will be "
|
||
"made. The existing :func:`gc.collect` function now takes an optional "
|
||
"*generation* argument of 0, 1, or 2 to specify which generation to collect. "
|
||
"(Contributed by Barry Warsaw.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1360
|
||
msgid ""
|
||
"The :func:`nsmallest` and :func:`nlargest` functions in the :mod:`heapq` "
|
||
"module now support a ``key`` keyword parameter similar to the one provided "
|
||
"by the :func:`min`/:func:`max` functions and the :meth:`sort` methods. For "
|
||
"example::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1372 ../Doc/whatsnew/2.5.rst:1381
|
||
msgid "(Contributed by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1374
|
||
msgid ""
|
||
"The :func:`itertools.islice` function now accepts ``None`` for the start and "
|
||
"step arguments. This makes it more compatible with the attributes of slice "
|
||
"objects, so that you can now write the following::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1383
|
||
msgid ""
|
||
"The :func:`format` function in the :mod:`locale` module has been modified "
|
||
"and two new functions were added, :func:`format_string` and :func:`currency`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1386
|
||
msgid ""
|
||
"The :func:`format` function's *val* parameter could previously be a string "
|
||
"as long as no more than one %char specifier appeared; now the parameter must "
|
||
"be exactly one %char specifier with no surrounding text. An optional "
|
||
"*monetary* parameter was also added which, if ``True``, will use the "
|
||
"locale's rules for formatting currency in placing a separator between groups "
|
||
"of three digits."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1392
|
||
msgid ""
|
||
"To format strings with multiple %char specifiers, use the new :func:"
|
||
"`format_string` function that works like :func:`format` but also supports "
|
||
"mixing %char specifiers with arbitrary text."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1396
|
||
msgid ""
|
||
"A new :func:`currency` function was also added that formats a number "
|
||
"according to the current locale's settings."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1399
|
||
msgid "(Contributed by Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1403
|
||
msgid ""
|
||
"The :mod:`mailbox` module underwent a massive rewrite to add the capability "
|
||
"to modify mailboxes in addition to reading them. A new set of classes that "
|
||
"include :class:`mbox`, :class:`MH`, and :class:`Maildir` are used to read "
|
||
"mailboxes, and have an ``add(message)`` method to add messages, "
|
||
"``remove(key)`` to remove messages, and :meth:`lock`/:meth:`unlock` to lock/"
|
||
"unlock the mailbox. The following example converts a maildir-format mailbox "
|
||
"into an mbox-format one::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1421
|
||
msgid ""
|
||
"(Contributed by Gregory K. Johnson. Funding was provided by Google's 2005 "
|
||
"Summer of Code.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1424
|
||
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 ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1428
|
||
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 ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1432
|
||
msgid ""
|
||
"The :mod:`operator` module's :func:`itemgetter` and :func:`attrgetter` "
|
||
"functions now support multiple fields. A call such as ``operator."
|
||
"attrgetter('a', 'b')`` will return a function that retrieves the :attr:`a` "
|
||
"and :attr:`b` attributes. Combining this new feature with the :meth:`sort` "
|
||
"method's ``key`` parameter lets you easily sort lists using multiple "
|
||
"fields. (Contributed by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1439
|
||
msgid ""
|
||
"The :mod:`optparse` module was updated to version 1.5.1 of the Optik "
|
||
"library. The :class:`OptionParser` class gained an :attr:`epilog` attribute, "
|
||
"a string that will be printed after the help message, and a :meth:`destroy` "
|
||
"method to break reference cycles created by the object. (Contributed by Greg "
|
||
"Ward.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1444
|
||
msgid ""
|
||
"The :mod:`os` module underwent several changes. The :attr:"
|
||
"`stat_float_times` variable now defaults to true, meaning that :func:`os."
|
||
"stat` will now return time values as floats. (This doesn't necessarily mean "
|
||
"that :func:`os.stat` will return times that are precise to fractions of a "
|
||
"second; not all systems support such precision.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1450
|
||
msgid ""
|
||
"Constants named :attr:`os.SEEK_SET`, :attr:`os.SEEK_CUR`, and :attr:`os."
|
||
"SEEK_END` have been added; these are the parameters to the :func:`os.lseek` "
|
||
"function. Two new constants for locking are :attr:`os.O_SHLOCK` and :attr:"
|
||
"`os.O_EXLOCK`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1455
|
||
msgid ""
|
||
"Two new functions, :func:`wait3` and :func:`wait4`, were added. They're "
|
||
"similar the :func:`waitpid` function which waits for a child process to exit "
|
||
"and returns a tuple of the process ID and its exit status, but :func:`wait3` "
|
||
"and :func:`wait4` return additional information. :func:`wait3` doesn't take "
|
||
"a process ID as input, so it waits for any child process to exit and returns "
|
||
"a 3-tuple of *process-id*, *exit-status*, *resource-usage* as returned from "
|
||
"the :func:`resource.getrusage` function. ``wait4(pid)`` does take a process "
|
||
"ID. (Contributed by Chad J. Schroeder.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1464
|
||
msgid ""
|
||
"On FreeBSD, the :func:`os.stat` function now returns times with nanosecond "
|
||
"resolution, and the returned object now has :attr:`st_gen` and :attr:"
|
||
"`st_birthtime`. The :attr:`st_flags` attribute is also available, if the "
|
||
"platform supports it. (Contributed by Antti Louko and Diego Pettenò.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1471
|
||
msgid ""
|
||
"The Python debugger provided by the :mod:`pdb` module can now store lists of "
|
||
"commands to execute when a breakpoint is reached and execution stops. Once "
|
||
"breakpoint #1 has been created, enter ``commands 1`` and enter a series of "
|
||
"commands to be executed, finishing the list with ``end``. The command list "
|
||
"can include commands that resume execution, such as ``continue`` or "
|
||
"``next``. (Contributed by Grégoire Dooms.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1480
|
||
msgid ""
|
||
"The :mod:`pickle` and :mod:`cPickle` modules no longer accept a return value "
|
||
"of ``None`` from the :meth:`__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 ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1485
|
||
msgid ""
|
||
"The :mod:`pkgutil` module, containing various utility functions for finding "
|
||
"packages, was enhanced to support PEP 302's import hooks and now also works "
|
||
"for packages stored in ZIP-format archives. (Contributed by Phillip J. Eby.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1489
|
||
msgid ""
|
||
"The pybench benchmark suite by Marc-André Lemburg is now included in the :"
|
||
"file:`Tools/pybench` directory. The pybench suite is an improvement on the "
|
||
"commonly used :file:`pystone.py` program because pybench provides a more "
|
||
"detailed measurement of the interpreter's speed. It times particular "
|
||
"operations such as function calls, tuple slicing, method lookups, and "
|
||
"numeric operations, instead of performing many different operations and "
|
||
"reducing the result to a single number as :file:`pystone.py` does."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1497
|
||
msgid ""
|
||
"The :mod:`pyexpat` module now uses version 2.0 of the Expat parser. "
|
||
"(Contributed by Trent Mick.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1500
|
||
msgid ""
|
||
"The :class:`~queue.Queue` class provided by the :mod:`Queue` module gained "
|
||
"two new methods. :meth:`join` blocks until all items in the queue have been "
|
||
"retrieved and all processing work on the items have been completed. Worker "
|
||
"threads call the other new method, :meth:`task_done`, to signal that "
|
||
"processing for an item has been completed. (Contributed by Raymond "
|
||
"Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1506
|
||
msgid ""
|
||
"The old :mod:`regex` and :mod:`regsub` modules, which have been deprecated "
|
||
"ever since Python 2.0, have finally been deleted. Other deleted modules: :"
|
||
"mod:`statcache`, :mod:`tzparse`, :mod:`whrandom`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1510
|
||
msgid ""
|
||
"Also deleted: the :file:`lib-old` directory, which includes ancient modules "
|
||
"such as :mod:`dircmp` and :mod:`ni`, was removed. :file:`lib-old` wasn't on "
|
||
"the default ``sys.path``, so unless your programs explicitly added the "
|
||
"directory to ``sys.path``, this removal shouldn't affect your code."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1515
|
||
msgid ""
|
||
"The :mod:`rlcompleter` module is no longer dependent on importing the :mod:"
|
||
"`readline` module and therefore now works on non-Unix platforms. (Patch from "
|
||
"Robert Kiendl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1521
|
||
msgid ""
|
||
"The :mod:`SimpleXMLRPCServer` and :mod:`DocXMLRPCServer` classes now have "
|
||
"a :attr:`rpc_paths` attribute that constrains XML-RPC operations to a "
|
||
"limited set of URL paths; the default is to allow only ``'/'`` and ``'/"
|
||
"RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables "
|
||
"this path checking."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1528
|
||
msgid ""
|
||
"The :mod:`socket` module now supports :const:`AF_NETLINK` sockets on Linux, "
|
||
"thanks to a patch from Philippe Biondi. Netlink sockets are a Linux-"
|
||
"specific mechanism for communications between a user-space process and "
|
||
"kernel code; an introductory article about them is at https://www."
|
||
"linuxjournal.com/article/7356. In Python code, netlink addresses are "
|
||
"represented as a tuple of 2 integers, ``(pid, group_mask)``."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1535
|
||
msgid ""
|
||
"Two new methods on socket objects, ``recv_into(buffer)`` and "
|
||
"``recvfrom_into(buffer)``, store the received data in an object that "
|
||
"supports the buffer protocol instead of returning the data as a string. "
|
||
"This means you can put the data directly into an array or a memory-mapped "
|
||
"file."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1540
|
||
msgid ""
|
||
"Socket objects also gained :meth:`getfamily`, :meth:`gettype`, and :meth:"
|
||
"`getproto` accessor methods to retrieve the family, type, and protocol "
|
||
"values for the socket."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1544
|
||
msgid ""
|
||
"New module: the :mod:`spwd` module provides functions for accessing the "
|
||
"shadow password database on systems that support shadow passwords."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1547
|
||
msgid ""
|
||
"The :mod:`struct` is now faster because it compiles format strings into :"
|
||
"class:`Struct` objects with :meth:`pack` and :meth:`unpack` methods. This "
|
||
"is similar to how the :mod:`re` module lets you create compiled regular "
|
||
"expression objects. You can still use the module-level :func:`pack` and :"
|
||
"func:`unpack` functions; they'll create :class:`Struct` objects and cache "
|
||
"them. Or you can use :class:`Struct` instances directly::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1559
|
||
msgid ""
|
||
"You can also pack and unpack data to and from buffer objects directly using "
|
||
"the ``pack_into(buffer, offset, v1, v2, ...)`` and ``unpack_from(buffer, "
|
||
"offset)`` methods. This lets you store data directly into an array or a "
|
||
"memory-mapped file."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1564
|
||
msgid ""
|
||
"(:class:`Struct` objects were implemented by Bob Ippolito at the "
|
||
"NeedForSpeed sprint. Support for buffer objects was added by Martin Blais, "
|
||
"also at the NeedForSpeed sprint.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1568
|
||
msgid ""
|
||
"The Python developers switched from CVS to Subversion during the 2.5 "
|
||
"development process. Information about the exact build version is available "
|
||
"as the ``sys.subversion`` variable, a 3-tuple of ``(interpreter-name, branch-"
|
||
"name, revision-range)``. For example, at the time of writing my copy of 2.5 "
|
||
"was reporting ``('CPython', 'trunk', '45313:45315')``."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1574
|
||
msgid ""
|
||
"This information is also available to C extensions via the :c:func:"
|
||
"`Py_GetBuildInfo` function that returns a string of build information like "
|
||
"this: ``\"trunk:45355:45356M, Apr 13 2006, 07:42:19\"``. (Contributed by "
|
||
"Barry Warsaw.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1579
|
||
msgid ""
|
||
"Another new function, :func:`sys._current_frames`, returns the current stack "
|
||
"frames for all running threads as a dictionary mapping thread identifiers to "
|
||
"the topmost stack frame currently active in that thread at the time the "
|
||
"function is called. (Contributed by Tim Peters.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1584
|
||
msgid ""
|
||
"The :class:`TarFile` class in the :mod:`tarfile` module now has an :meth:"
|
||
"`extractall` method that extracts all members from the archive into the "
|
||
"current working directory. It's also possible to set a different directory "
|
||
"as the extraction target, and to unpack only a subset of the archive's "
|
||
"members."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1589
|
||
msgid ""
|
||
"The compression used for a tarfile opened in stream mode can now be "
|
||
"autodetected using the mode ``'r|*'``. (Contributed by Lars Gustäbel.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1594
|
||
msgid ""
|
||
"The :mod:`threading` module now lets you set the stack size used when new "
|
||
"threads are created. The ``stack_size([*size*])`` function returns the "
|
||
"currently configured stack size, and supplying the optional *size* parameter "
|
||
"sets a new value. Not all platforms support changing the stack size, but "
|
||
"Windows, POSIX threading, and OS/2 all do. (Contributed by Andrew MacIntyre.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1602
|
||
msgid ""
|
||
"The :mod:`unicodedata` module has been updated to use version 4.1.0 of the "
|
||
"Unicode character database. Version 3.2.0 is required by some "
|
||
"specifications, so it's still available as :attr:`unicodedata.ucd_3_2_0`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1606
|
||
msgid ""
|
||
"New module: the :mod:`uuid` module generates universally unique "
|
||
"identifiers (UUIDs) according to :rfc:`4122`. The RFC defines several "
|
||
"different UUID versions that are generated from a starting string, from "
|
||
"system properties, or purely randomly. This module contains a :class:`UUID` "
|
||
"class and functions named :func:`uuid1`, :func:`uuid3`, :func:`uuid4`, "
|
||
"and :func:`uuid5` to generate different versions of UUID. (Version 2 "
|
||
"UUIDs are not specified in :rfc:`4122` and are not supported by this "
|
||
"module.) ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1631
|
||
msgid "(Contributed by Ka-Ping Yee.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1633
|
||
msgid ""
|
||
"The :mod:`weakref` module's :class:`WeakKeyDictionary` and :class:"
|
||
"`WeakValueDictionary` types gained new methods for iterating over the weak "
|
||
"references contained in the dictionary. :meth:`iterkeyrefs` and :meth:"
|
||
"`keyrefs` methods were added to :class:`WeakKeyDictionary`, and :meth:"
|
||
"`itervaluerefs` and :meth:`valuerefs` were added to :class:"
|
||
"`WeakValueDictionary`. (Contributed by Fred L. Drake, Jr.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1640
|
||
msgid ""
|
||
"The :mod:`webbrowser` module received a number of enhancements. It's now "
|
||
"usable as a script with ``python -m webbrowser``, taking a URL as the "
|
||
"argument; there are a number of switches to control the behaviour (:option:"
|
||
"`!-n` for a new browser window, :option:`!-t` for a new tab). New module-"
|
||
"level functions, :func:`open_new` and :func:`open_new_tab`, were added to "
|
||
"support this. The module's :func:`open` function supports an additional "
|
||
"feature, an *autoraise* parameter that signals whether to raise the open "
|
||
"window when possible. A number of additional browsers were added to the "
|
||
"supported list such as Firefox, Opera, Konqueror, and elinks. (Contributed "
|
||
"by Oleg Broytmann and Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1652
|
||
msgid ""
|
||
"The :mod:`xmlrpclib` module now supports returning :class:`~datetime."
|
||
"datetime` objects for the XML-RPC date type. Supply ``use_datetime=True`` "
|
||
"to the :func:`loads` function or the :class:`Unmarshaller` class to enable "
|
||
"this feature. (Contributed by Skip Montanaro.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1659
|
||
msgid ""
|
||
"The :mod:`zipfile` module now supports the ZIP64 version of the format, "
|
||
"meaning that a .zip archive can now be larger than 4 GiB and can contain "
|
||
"individual files larger than 4 GiB. (Contributed by Ronald Oussoren.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1665
|
||
msgid ""
|
||
"The :mod:`zlib` module's :class:`Compress` and :class:`Decompress` objects "
|
||
"now support a :meth:`copy` method that makes a copy of the object's "
|
||
"internal state and returns a new :class:`Compress` or :class:`Decompress` "
|
||
"object. (Contributed by Chris AtLee.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1678
|
||
msgid "The ctypes package"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1680
|
||
msgid ""
|
||
"The :mod:`ctypes` package, written by Thomas Heller, has been added to the "
|
||
"standard library. :mod:`ctypes` lets you call arbitrary functions in "
|
||
"shared libraries or DLLs. Long-time users may remember the :mod:`dl` "
|
||
"module, which provides functions for loading shared libraries and calling "
|
||
"functions in them. The :mod:`ctypes` package is much fancier."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1686
|
||
msgid ""
|
||
"To load a shared library or DLL, you must create an instance of the :class:"
|
||
"`CDLL` class and provide the name or path of the shared library or DLL. Once "
|
||
"that's done, you can call arbitrary functions by accessing them as "
|
||
"attributes of the :class:`CDLL` object. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1696
|
||
msgid ""
|
||
"Type constructors for the various C types are provided: :func:`c_int`, :func:"
|
||
"`c_float`, :func:`c_double`, :func:`c_char_p` (equivalent to :c:type:`char "
|
||
"\\*`), and so forth. Unlike Python's types, the C versions are all mutable; "
|
||
"you can assign to their :attr:`value` attribute to change the wrapped "
|
||
"value. Python integers and strings will be automatically converted to the "
|
||
"corresponding C types, but for other types you must call the correct type "
|
||
"constructor. (And I mean *must*; getting it wrong will often result in the "
|
||
"interpreter crashing with a segmentation fault.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1705
|
||
msgid ""
|
||
"You shouldn't use :func:`c_char_p` with a Python string when the C function "
|
||
"will be modifying the memory area, because Python strings are supposed to "
|
||
"be immutable; breaking this rule will cause puzzling bugs. When you need a "
|
||
"modifiable memory area, use :func:`create_string_buffer`::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1714
|
||
msgid ""
|
||
"C functions are assumed to return integers, but you can set the :attr:"
|
||
"`restype` attribute of the function object to change this::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1723
|
||
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 "
|
||
"lock before calling a function, because the lock must be held when calling "
|
||
"into the interpreter's code. There's a :class:`py_object()` type "
|
||
"constructor that will create a :c:type:`PyObject \\*` pointer. A simple "
|
||
"usage::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1736
|
||
msgid ""
|
||
"Don't forget to use :class:`py_object()`; if it's omitted you end up with a "
|
||
"segmentation fault."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1739
|
||
msgid ""
|
||
":mod:`ctypes` has been around for a while, but people still write and "
|
||
"distribution hand-coded extension modules because you can't rely on :mod:"
|
||
"`ctypes` being present. Perhaps developers will begin to write Python "
|
||
"wrappers atop a library accessed through :mod:`ctypes` instead of extension "
|
||
"modules, now that :mod:`ctypes` is included with core Python."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1749
|
||
msgid "http://starship.python.net/crew/theller/ctypes/"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1749
|
||
msgid "The ctypes web page, with a tutorial, reference, and FAQ."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1751
|
||
msgid "The documentation for the :mod:`ctypes` module."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1759
|
||
msgid "The ElementTree package"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1761
|
||
msgid ""
|
||
"A subset of Fredrik Lundh's ElementTree library for processing XML has been "
|
||
"added to the standard library as :mod:`xml.etree`. The available modules "
|
||
"are :mod:`ElementTree`, :mod:`ElementPath`, and :mod:`ElementInclude` from "
|
||
"ElementTree 1.2.6. The :mod:`cElementTree` accelerator module is also "
|
||
"included."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1767
|
||
msgid ""
|
||
"The rest of this section will provide a brief overview of using ElementTree. "
|
||
"Full documentation for ElementTree is available at http://effbot.org/zone/"
|
||
"element-index.htm."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1771
|
||
msgid ""
|
||
"ElementTree represents an XML document as a tree of element nodes. The text "
|
||
"content of the document is stored as the :attr:`text` and :attr:`tail` "
|
||
"attributes of (This is one of the major differences between ElementTree and "
|
||
"the Document Object Model; in the DOM there are many different types of "
|
||
"node, including :class:`TextNode`.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1777
|
||
msgid ""
|
||
"The most commonly used parsing function is :func:`parse`, that takes either "
|
||
"a string (assumed to contain a filename) or a file-like object and returns "
|
||
"an :class:`ElementTree` instance::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1789
|
||
msgid ""
|
||
"Once you have an :class:`ElementTree` instance, you can call its :meth:"
|
||
"`getroot` method to get the root :class:`Element` node."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1792
|
||
msgid ""
|
||
"There's also an :func:`XML` function that takes a string literal and returns "
|
||
"an :class:`Element` node (not an :class:`ElementTree`). This function "
|
||
"provides a tidy way to incorporate XML fragments, approaching the "
|
||
"convenience of an XML literal::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1802
|
||
msgid ""
|
||
"Each XML element supports some dictionary-like and some list-like access "
|
||
"methods. Dictionary-like operations are used to access attribute values, "
|
||
"and list-like operations are used to access child nodes."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1807
|
||
msgid "Operation"
|
||
msgstr "Opération"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1807
|
||
msgid "Result"
|
||
msgstr "Résultat"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1809
|
||
msgid "``elem[n]``"
|
||
msgstr "``elem[n]``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1809
|
||
msgid "Returns n'th child element."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1811
|
||
msgid "``elem[m:n]``"
|
||
msgstr "``elem[m:n]``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1811
|
||
msgid "Returns list of m'th through n'th child elements."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1814
|
||
msgid "``len(elem)``"
|
||
msgstr "``len(elem)``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1814
|
||
msgid "Returns number of child elements."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1816
|
||
msgid "``list(elem)``"
|
||
msgstr "``list(elem)``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1816
|
||
msgid "Returns list of child elements."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1818
|
||
msgid "``elem.append(elem2)``"
|
||
msgstr "``elem.append(elem2)``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1818
|
||
msgid "Adds *elem2* as a child."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1820
|
||
msgid "``elem.insert(index, elem2)``"
|
||
msgstr "``elem.insert(index, elem2)``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1820
|
||
msgid "Inserts *elem2* at the specified location."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1822
|
||
msgid "``del elem[n]``"
|
||
msgstr "``del elem[n]``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1822
|
||
msgid "Deletes n'th child element."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1824
|
||
msgid "``elem.keys()``"
|
||
msgstr "``elem.keys()``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1824
|
||
msgid "Returns list of attribute names."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1826
|
||
msgid "``elem.get(name)``"
|
||
msgstr "``elem.get(name)``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1826
|
||
msgid "Returns value of attribute *name*."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1828
|
||
msgid "``elem.set(name, value)``"
|
||
msgstr "``elem.set(name, value)``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1828
|
||
msgid "Sets new value for attribute *name*."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1830
|
||
msgid "``elem.attrib``"
|
||
msgstr "``elem.attrib``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1830
|
||
msgid "Retrieves the dictionary containing attributes."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1833
|
||
msgid "``del elem.attrib[name]``"
|
||
msgstr "``del elem.attrib[name]``"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1833
|
||
msgid "Deletes attribute *name*."
|
||
msgstr "Supprime l’attribut *name*."
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1836
|
||
msgid ""
|
||
"Comments and processing instructions are also represented as :class:"
|
||
"`Element` nodes. To check if a node is a comment or processing "
|
||
"instructions::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1844
|
||
msgid ""
|
||
"To generate XML output, you should call the :meth:`ElementTree.write` "
|
||
"method. Like :func:`parse`, it can take either a string or a file-like "
|
||
"object::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1854
|
||
msgid ""
|
||
"(Caution: the default encoding used for output is ASCII. For general XML "
|
||
"work, where an element's name may contain arbitrary Unicode characters, "
|
||
"ASCII isn't a very useful encoding because it will raise an exception if an "
|
||
"element's name contains any characters with values greater than 127. "
|
||
"Therefore, it's best to specify a different encoding such as UTF-8 that can "
|
||
"handle any Unicode character.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1861
|
||
msgid ""
|
||
"This section is only a partial description of the ElementTree interfaces. "
|
||
"Please read the package's official documentation for more details."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1867
|
||
msgid "http://effbot.org/zone/element-index.htm"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1868
|
||
msgid "Official documentation for ElementTree."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1876
|
||
msgid "The hashlib package"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1878
|
||
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 support "
|
||
"for additional secure hashes (SHA-224, SHA-256, SHA-384, and SHA-512). When "
|
||
"available, the module uses OpenSSL for fast platform optimized "
|
||
"implementations of algorithms."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1884
|
||
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 "
|
||
"very close to that of the old modules, but not identical. The most "
|
||
"significant difference is that the constructor functions for creating new "
|
||
"hashing objects are named differently. ::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1913
|
||
msgid ""
|
||
"Once a hash object has been created, its methods are the same as before: "
|
||
"``update(string)`` hashes the specified string into the current digest "
|
||
"state, :meth:`digest` and :meth:`hexdigest` return the digest value as a "
|
||
"binary string or a string of hex digits, and :meth:`copy` returns a new "
|
||
"hashing object with the same digest state."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1922
|
||
msgid "The documentation for the :mod:`hashlib` module."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1930
|
||
msgid "The sqlite3 package"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1932
|
||
msgid ""
|
||
"The pysqlite module (http://www.pysqlite.org), a wrapper for the SQLite "
|
||
"embedded database, has been added to the standard library under the package "
|
||
"name :mod:`sqlite3`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1936
|
||
msgid ""
|
||
"SQLite is a C library that provides a lightweight disk-based database that "
|
||
"doesn't require a separate server process and allows accessing the database "
|
||
"using a nonstandard variant of the SQL query language. Some applications can "
|
||
"use SQLite for internal data storage. It's also possible to prototype an "
|
||
"application using SQLite and then port the code to a larger database such as "
|
||
"PostgreSQL or Oracle."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1943
|
||
msgid ""
|
||
"pysqlite was written by Gerhard Häring and provides a SQL interface "
|
||
"compliant with the DB-API 2.0 specification described by :pep:`249`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1946
|
||
msgid ""
|
||
"If you're compiling the Python source yourself, note that the source tree "
|
||
"doesn't include the SQLite code, only the wrapper module. You'll need to "
|
||
"have the SQLite libraries and headers installed before compiling Python, and "
|
||
"the build process will compile the module when the necessary headers are "
|
||
"available."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1951
|
||
msgid ""
|
||
"To use the module, you must first create a :class:`Connection` object that "
|
||
"represents the database. Here the data will be stored in the :file:`/tmp/"
|
||
"example` file::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1957
|
||
msgid ""
|
||
"You can also supply the special name ``:memory:`` to create a database in "
|
||
"RAM."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1959
|
||
msgid ""
|
||
"Once you have a :class:`Connection`, you can create a :class:`Cursor` "
|
||
"object and call its :meth:`execute` method to perform SQL commands::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1973
|
||
msgid ""
|
||
"Usually your SQL operations will need to use values from Python variables. "
|
||
"You shouldn't assemble your query using Python's string operations because "
|
||
"doing so is insecure; it makes your program vulnerable to an SQL injection "
|
||
"attack."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1977
|
||
msgid ""
|
||
"Instead, use the DB-API's parameter substitution. Put ``?`` as a "
|
||
"placeholder wherever you want to use a value, and then provide a tuple of "
|
||
"values as the second argument to the cursor's :meth:`execute` method. "
|
||
"(Other database modules may use a different placeholder, such as ``%s`` or "
|
||
"``:1``.) For example::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:1997
|
||
msgid ""
|
||
"To retrieve data after executing a SELECT statement, you can either treat "
|
||
"the cursor as an iterator, call the cursor's :meth:`fetchone` method to "
|
||
"retrieve a single matching row, or call :meth:`fetchall` to get a list of "
|
||
"the matching rows."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2002
|
||
msgid "This example uses the iterator form::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2015
|
||
msgid ""
|
||
"For more information about the SQL dialect supported by SQLite, see https://"
|
||
"www.sqlite.org."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2022
|
||
msgid "http://www.pysqlite.org"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2022
|
||
msgid "The pysqlite web page."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2026
|
||
msgid "https://www.sqlite.org"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2025
|
||
msgid ""
|
||
"The SQLite web page; the documentation describes the syntax and the "
|
||
"available data types for the supported SQL dialect."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2028
|
||
msgid "The documentation for the :mod:`sqlite3` module."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2030
|
||
msgid ":pep:`249` - Database API Specification 2.0"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2031
|
||
msgid "PEP written by Marc-André Lemburg."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2039
|
||
msgid "The wsgiref package"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2041
|
||
msgid ""
|
||
"The Web Server Gateway Interface (WSGI) v1.0 defines a standard interface "
|
||
"between web servers and Python web applications and is described in :pep:"
|
||
"`333`. The :mod:`wsgiref` package is a reference implementation of the WSGI "
|
||
"specification."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2048
|
||
msgid ""
|
||
"The package includes a basic HTTP server that will run a WSGI application; "
|
||
"this server is useful for debugging but isn't intended for production use. "
|
||
"Setting up a server takes only a few lines of code::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2068
|
||
msgid "http://www.wsgi.org"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2068
|
||
msgid "A central web site for WSGI-related resources."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2070
|
||
msgid ":pep:`333` - Python Web Server Gateway Interface v1.0"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2071
|
||
msgid "PEP written by Phillip J. Eby."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2079
|
||
msgid "Build and C API Changes"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2081
|
||
msgid "Changes to Python's build process and to the C API include:"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2083
|
||
msgid ""
|
||
"The Python source tree was converted from CVS to Subversion, in a complex "
|
||
"migration procedure that was supervised and flawlessly carried out by Martin "
|
||
"von Löwis. The procedure was developed as :pep:`347`."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2087
|
||
msgid ""
|
||
"Coverity, a company that markets a source code analysis tool called Prevent, "
|
||
"provided the results of their examination of the Python source code. The "
|
||
"analysis found about 60 bugs that were quickly fixed. Many of the bugs "
|
||
"were refcounting problems, often occurring in error-handling code. See "
|
||
"https://scan.coverity.com for the statistics."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2093
|
||
msgid ""
|
||
"The largest change to the C API came from :pep:`353`, which modifies the "
|
||
"interpreter to use a :c:type:`Py_ssize_t` type definition instead of :c:type:"
|
||
"`int`. See the earlier section :ref:`pep-353` for a discussion of this "
|
||
"change."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2098
|
||
msgid ""
|
||
"The design of the bytecode compiler has changed a great deal, no longer "
|
||
"generating bytecode by traversing the parse tree. Instead the parse tree is "
|
||
"converted to an abstract syntax tree (or AST), and it is the abstract "
|
||
"syntax tree that's traversed to produce the bytecode."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2103
|
||
msgid ""
|
||
"It's possible for Python code to obtain AST objects by using the :func:"
|
||
"`compile` built-in and specifying ``_ast.PyCF_ONLY_AST`` as the value of "
|
||
"the *flags* parameter::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2116
|
||
msgid ""
|
||
"No official documentation has been written for the AST code yet, but :pep:"
|
||
"`339` discusses the design. To start learning about the code, read the "
|
||
"definition of the various AST nodes in :file:`Parser/Python.asdl`. A Python "
|
||
"script reads this file and generates a set of C structure definitions in :"
|
||
"file:`Include/Python-ast.h`. The :c:func:`PyParser_ASTFromString` and :c:"
|
||
"func:`PyParser_ASTFromFile`, defined in :file:`Include/pythonrun.h`, take "
|
||
"Python source as input and return the root of an AST representing the "
|
||
"contents. This AST can then be turned into a code object by :c:func:"
|
||
"`PyAST_Compile`. For more information, read the source code, and then ask "
|
||
"questions on python-dev."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2126
|
||
msgid ""
|
||
"The AST code was developed under Jeremy Hylton's management, and implemented "
|
||
"by (in alphabetical order) Brett Cannon, Nick Coghlan, Grant Edwards, John "
|
||
"Ehresman, Kurt Kaiser, Neal Norwitz, Tim Peters, Armin Rigo, and Neil "
|
||
"Schemenauer, plus the participants in a number of AST sprints at conferences "
|
||
"such as PyCon."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2135
|
||
msgid ""
|
||
"Evan Jones's patch to obmalloc, first described in a talk at PyCon DC 2005, "
|
||
"was applied. Python 2.4 allocated small objects in 256K-sized arenas, but "
|
||
"never freed arenas. With this patch, Python will free arenas when they're "
|
||
"empty. The net effect is that on some platforms, when you allocate many "
|
||
"objects, Python's memory usage may actually drop when you delete them and "
|
||
"the memory may be returned to the operating system. (Implemented by Evan "
|
||
"Jones, and reworked by Tim Peters.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2143
|
||
msgid ""
|
||
"Note that this change means extension modules must be more careful when "
|
||
"allocating memory. Python's API has many different functions for allocating "
|
||
"memory that are grouped into families. For example, :c:func:"
|
||
"`PyMem_Malloc`, :c:func:`PyMem_Realloc`, and :c:func:`PyMem_Free` are one "
|
||
"family that allocates raw memory, while :c:func:`PyObject_Malloc`, :c:func:"
|
||
"`PyObject_Realloc`, and :c:func:`PyObject_Free` are another family that's "
|
||
"supposed to be used for creating Python objects."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2151
|
||
msgid ""
|
||
"Previously these different families all reduced to the platform's :c:func:"
|
||
"`malloc` and :c:func:`free` functions. This meant it didn't matter if you "
|
||
"got things wrong and allocated memory with the :c:func:`PyMem` function but "
|
||
"freed it with the :c:func:`PyObject` function. With 2.5's changes to "
|
||
"obmalloc, these families now do different things and mismatches will "
|
||
"probably result in a segfault. You should carefully test your C extension "
|
||
"modules with Python 2.5."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2158
|
||
msgid ""
|
||
"The built-in set types now have an official C API. Call :c:func:`PySet_New` "
|
||
"and :c:func:`PyFrozenSet_New` to create a new set, :c:func:`PySet_Add` and :"
|
||
"c:func:`PySet_Discard` to add and remove elements, and :c:func:"
|
||
"`PySet_Contains` and :c:func:`PySet_Size` to examine the set's state. "
|
||
"(Contributed by Raymond Hettinger.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2164
|
||
msgid ""
|
||
"C code can now obtain information about the exact revision of the Python "
|
||
"interpreter by calling the :c:func:`Py_GetBuildInfo` function that returns "
|
||
"a string of build information like this: ``\"trunk:45355:45356M, Apr 13 "
|
||
"2006, 07:42:19\"``. (Contributed by Barry Warsaw.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2169
|
||
msgid ""
|
||
"Two new macros can be used to indicate C functions that are local to the "
|
||
"current file so that a faster calling convention can be used. "
|
||
"``Py_LOCAL(type)`` declares the function as returning a value of the "
|
||
"specified *type* and uses a fast-calling qualifier. "
|
||
"``Py_LOCAL_INLINE(type)`` does the same thing and also requests the function "
|
||
"be inlined. If :c:func:`PY_LOCAL_AGGRESSIVE` is defined before :file:"
|
||
"`python.h` is included, a set of more aggressive optimizations are enabled "
|
||
"for the module; you should benchmark the results to find out if these "
|
||
"optimizations actually make the code faster. (Contributed by Fredrik Lundh "
|
||
"at the NeedForSpeed sprint.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2180
|
||
msgid ""
|
||
"``PyErr_NewException(name, base, dict)`` can now accept a tuple of base "
|
||
"classes as its *base* argument. (Contributed by Georg Brandl.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2183
|
||
msgid ""
|
||
"The :c:func:`PyErr_Warn` function for issuing warnings is now deprecated in "
|
||
"favour of ``PyErr_WarnEx(category, message, stacklevel)`` which lets you "
|
||
"specify the number of stack frames separating this function and the caller. "
|
||
"A *stacklevel* of 1 is the function calling :c:func:`PyErr_WarnEx`, 2 is the "
|
||
"function above that, and so forth. (Added by Neal Norwitz.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2189
|
||
msgid ""
|
||
"The CPython interpreter is still written in C, but the code can now be "
|
||
"compiled with a C++ compiler without errors. (Implemented by Anthony "
|
||
"Baxter, Martin von Löwis, Skip Montanaro.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2193
|
||
msgid ""
|
||
"The :c:func:`PyRange_New` function was removed. It was never documented, "
|
||
"never used in the core code, and had dangerously lax error checking. In the "
|
||
"unlikely case that your extensions were using it, you can replace it by "
|
||
"something like the following::"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2207
|
||
msgid "Port-Specific Changes"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2209
|
||
msgid ""
|
||
"MacOS X (10.3 and higher): dynamic loading of modules now uses the :c:func:"
|
||
"`dlopen` function instead of MacOS-specific functions."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2212
|
||
msgid ""
|
||
"MacOS X: an :option:`!--enable-universalsdk` switch was added to the :"
|
||
"program:`configure` script that compiles the interpreter as a universal "
|
||
"binary able to run on both PowerPC and Intel processors. (Contributed by "
|
||
"Ronald Oussoren; :issue:`2573`.)"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2217
|
||
msgid ""
|
||
"Windows: :file:`.dll` is no longer supported as a filename extension for "
|
||
"extension modules. :file:`.pyd` is now the only filename extension that "
|
||
"will be searched for."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2227
|
||
msgid "Porting to Python 2.5"
|
||
msgstr "Portage vers Python 2.5"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2229
|
||
msgid ""
|
||
"This section lists previously described changes that may require changes to "
|
||
"your code:"
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2232
|
||
msgid ""
|
||
"ASCII is now the default encoding for modules. It's now a syntax error if "
|
||
"a module contains string literals with 8-bit characters but doesn't have an "
|
||
"encoding declaration. In Python 2.4 this triggered a warning, not a syntax "
|
||
"error."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2237
|
||
msgid ""
|
||
"Previously, the :attr:`gi_frame` attribute of a generator was always a frame "
|
||
"object. Because of the :pep:`342` changes described in section :ref:"
|
||
"`pep-342`, it's now possible for :attr:`gi_frame` to be ``None``."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2241
|
||
msgid ""
|
||
"A new warning, :class:`UnicodeWarning`, is triggered when you attempt to "
|
||
"compare a Unicode string and an 8-bit string that can't be converted to "
|
||
"Unicode using the default ASCII encoding. Previously such comparisons would "
|
||
"raise a :class:`UnicodeDecodeError` exception."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2246
|
||
msgid ""
|
||
"Library: the :mod:`csv` module is now stricter about multi-line quoted "
|
||
"fields. If your files contain newlines embedded within fields, the input "
|
||
"should be split into lines in a manner which preserves the newline "
|
||
"characters."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2250
|
||
msgid ""
|
||
"Library: the :mod:`locale` module's :func:`format` function's would "
|
||
"previously accept any string as long as no more than one %char specifier "
|
||
"appeared. In Python 2.5, the argument must be exactly one %char specifier "
|
||
"with no surrounding text."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2255
|
||
msgid ""
|
||
"Library: The :mod:`pickle` and :mod:`cPickle` modules no longer accept a "
|
||
"return value of ``None`` from the :meth:`__reduce__` method; the method must "
|
||
"return a tuple of arguments instead. The modules also no longer accept the "
|
||
"deprecated *bin* keyword parameter."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2260
|
||
msgid ""
|
||
"Library: The :mod:`SimpleXMLRPCServer` and :mod:`DocXMLRPCServer` classes "
|
||
"now have a :attr:`rpc_paths` attribute that constrains XML-RPC operations to "
|
||
"a limited set of URL paths; the default is to allow only ``'/'`` and ``'/"
|
||
"RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables "
|
||
"this path checking."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2266
|
||
msgid ""
|
||
"C API: Many functions now use :c:type:`Py_ssize_t` instead of :c:type:`int` "
|
||
"to allow processing more data on 64-bit machines. Extension code may need "
|
||
"to make the same change to avoid warnings and to support 64-bit machines. "
|
||
"See the earlier section :ref:`pep-353` for a discussion of this change."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2271
|
||
msgid ""
|
||
"C API: The obmalloc changes mean that you must be careful to not mix usage "
|
||
"of the :c:func:`PyMem_\\*` and :c:func:`PyObject_\\*` families of functions. "
|
||
"Memory allocated with one family's :c:func:`\\*_Malloc` must be freed with "
|
||
"the corresponding family's :c:func:`\\*_Free` function."
|
||
msgstr ""
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2280
|
||
msgid "Acknowledgements"
|
||
msgstr "Remerciements"
|
||
|
||
#: ../Doc/whatsnew/2.5.rst:2282
|
||
msgid ""
|
||
"The author would like to thank the following people for offering "
|
||
"suggestions, corrections and assistance with various drafts of this article: "
|
||
"Georg Brandl, Nick Coghlan, Phillip J. Eby, Lars Gustäbel, Raymond "
|
||
"Hettinger, Ralf W. Grosse-Kunstleve, Kent Johnson, Iain Lowe, Martin von "
|
||
"Löwis, Fredrik Lundh, Andrew McNamara, Skip Montanaro, Gustavo Niemeyer, "
|
||
"Paul Prescod, James Pryor, Mike Rovner, Scott Weikart, Barry Warsaw, Thomas "
|
||
"Wouters."
|
||
msgstr ""
|
||
|
||
#, fuzzy
|
||
#~ msgid "PEP 308 - Conditional Expressions"
|
||
#~ msgstr "PEP 308 : Expressions conditionnelles"
|
||
|
||
#, fuzzy
|
||
#~ msgid "PEP 309 - Partial Function Application"
|
||
#~ msgstr "PEP 309 : Application partielle de fonction"
|