# Copyright (C) 2001-2018, Python Software Foundation # For licence information, see README file. # msgid "" msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-15 22:33+0100\n" "PO-Revision-Date: 2018-08-01 00:06+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: whatsnew/2.4.rst:3 msgid "What's New in Python 2.4" msgstr "Nouveautés de Python 2.4" #: whatsnew/2.4.rst:0 msgid "Author" msgstr "Auteur" #: whatsnew/2.4.rst:5 msgid "A.M. Kuchling" msgstr "A.M. Kuchling" #: whatsnew/2.4.rst:14 msgid "" "This article explains the new features in Python 2.4.1, released on March " "30, 2005." msgstr "" #: whatsnew/2.4.rst:17 msgid "" "Python 2.4 is a medium-sized release. It doesn't introduce as many changes " "as the radical Python 2.2, but introduces more features than the " "conservative 2.3 release. The most significant new language features are " "function decorators and generator expressions; most other changes are to the " "standard library." msgstr "" #: whatsnew/2.4.rst:22 msgid "" "According to the CVS change logs, there were 481 patches applied and 502 " "bugs fixed between Python 2.3 and 2.4. Both figures are likely to be " "underestimates." msgstr "" #: whatsnew/2.4.rst:25 msgid "" "This article doesn't attempt to provide a complete specification of every " "single new feature, but instead provides a brief introduction to each " "feature. For full details, you should refer to the documentation for Python " "2.4, such as the Python Library Reference and the Python Reference Manual. " "Often you will be referred to the PEP for a particular new feature for " "explanations of the implementation and design rationale." msgstr "" #: whatsnew/2.4.rst:36 msgid "PEP 218: Built-In Set Objects" msgstr "" #: whatsnew/2.4.rst:38 msgid "" "Python 2.3 introduced the :mod:`sets` module. C implementations of set data " "types have now been added to the Python core as two new built-in types, " "``set(iterable)`` and ``frozenset(iterable)``. They provide high speed " "operations for membership testing, for eliminating duplicates from " "sequences, and for mathematical operations like unions, intersections, " "differences, and symmetric differences. ::" msgstr "" #: whatsnew/2.4.rst:71 msgid "" "The :func:`frozenset` type is an immutable version of :func:`set`. Since it " "is immutable and hashable, it may be used as a dictionary key or as a member " "of another set." msgstr "" #: whatsnew/2.4.rst:75 msgid "" "The :mod:`sets` module remains in the standard library, and may be useful if " "you wish to subclass the :class:`Set` or :class:`ImmutableSet` classes. " "There are currently no plans to deprecate the module." msgstr "" #: whatsnew/2.4.rst:83 msgid ":pep:`218` - Adding a Built-In Set Object Type" msgstr "" #: whatsnew/2.4.rst:83 msgid "" "Originally proposed by Greg Wilson and ultimately implemented by Raymond " "Hettinger." msgstr "" #: whatsnew/2.4.rst:90 msgid "PEP 237: Unifying Long Integers and Integers" msgstr "" #: whatsnew/2.4.rst:92 msgid "" "The lengthy transition process for this PEP, begun in Python 2.2, takes " "another step forward in Python 2.4. In 2.3, certain integer operations that " "would behave differently after int/long unification triggered :exc:" "`FutureWarning` warnings and returned values limited to 32 or 64 bits " "(depending on your platform). In 2.4, these expressions no longer produce a " "warning and instead produce a different result that's usually a long integer." msgstr "" #: whatsnew/2.4.rst:99 msgid "" "The problematic expressions are primarily left shifts and lengthy " "hexadecimal and octal constants. For example, ``2 << 32`` results in a " "warning in 2.3, evaluating to 0 on 32-bit platforms. In Python 2.4, this " "expression now returns the correct answer, 8589934592." msgstr "" #: whatsnew/2.4.rst:108 msgid ":pep:`237` - Unifying Long Integers and Integers" msgstr "" #: whatsnew/2.4.rst:108 msgid "" "Original PEP written by Moshe Zadka and GvR. The changes for 2.4 were " "implemented by Kalle Svensson." msgstr "" #: whatsnew/2.4.rst:115 msgid "PEP 289: Generator Expressions" msgstr "" #: whatsnew/2.4.rst:117 msgid "" "The iterator feature introduced in Python 2.2 and the :mod:`itertools` " "module make it easier to write programs that loop through large data sets " "without having the entire data set in memory at one time. List " "comprehensions don't fit into this picture very well because they produce a " "Python list object containing all of the items. This unavoidably pulls all " "of the objects into memory, which can be a problem if your data set is very " "large. When trying to write a functionally styled program, it would be " "natural to write something like::" msgstr "" #: whatsnew/2.4.rst:129 msgid "instead of ::" msgstr "" #: whatsnew/2.4.rst:136 msgid "" "The first form is more concise and perhaps more readable, but if you're " "dealing with a large number of link objects you'd have to write the second " "form to avoid having all link objects in memory at the same time." msgstr "" #: whatsnew/2.4.rst:140 msgid "" "Generator expressions work similarly to list comprehensions but don't " "materialize the entire list; instead they create a generator that will " "return elements one by one. The above example could be written as::" msgstr "" #: whatsnew/2.4.rst:148 #, fuzzy msgid "" "Generator expressions always have to be written inside parentheses, as in " "the above example. The parentheses signalling a function call also count, " "so if you want to create an iterator that will be immediately passed to a " "function you could write::" msgstr "" "Les expressions génératrices doivent toujours être écrites entre " "parenthèses, mais les parenthèses qui encadrent un appel de fonction " "comptent aussi. Si vous souhaitez créer un itérateur qui soit immédiatement " "passé à une fonction, vous pouvez écrire ::" #: whatsnew/2.4.rst:155 msgid "" "Generator expressions differ from list comprehensions in various small ways. " "Most notably, the loop variable (*obj* in the above example) is not " "accessible outside of the generator expression. List comprehensions leave " "the variable assigned to its last value; future versions of Python will " "change this, making list comprehensions match generator expressions in this " "respect." msgstr "" #: whatsnew/2.4.rst:165 #, fuzzy msgid ":pep:`289` - Generator Expressions" msgstr ":pep:`289`: *\"Generator Expressions\"*" #: whatsnew/2.4.rst:165 msgid "" "Proposed by Raymond Hettinger and implemented by Jiwon Seo with early " "efforts steered by Hye-Shik Chang." msgstr "" #: whatsnew/2.4.rst:172 msgid "PEP 292: Simpler String Substitutions" msgstr "" #: whatsnew/2.4.rst:174 msgid "" "Some new classes in the standard library provide an alternative mechanism " "for substituting variables into strings; this style of substitution may be " "better for applications where untrained users need to edit templates." msgstr "" #: whatsnew/2.4.rst:178 msgid "The usual way of substituting variables by name is the ``%`` operator::" msgstr "" #: whatsnew/2.4.rst:183 msgid "" "When writing the template string, it can be easy to forget the ``i`` or " "``s`` after the closing parenthesis. This isn't a big problem if the " "template is in a Python module, because you run the code, get an " "\"Unsupported format character\" :exc:`ValueError`, and fix the problem. " "However, consider an application such as Mailman where template strings or " "translations are being edited by users who aren't aware of the Python " "language. The format string's syntax is complicated to explain to such " "users, and if they make a mistake, it's difficult to provide helpful " "feedback to them." msgstr "" #: whatsnew/2.4.rst:192 msgid "" "PEP 292 adds a :class:`Template` class to the :mod:`string` module that uses " "``$`` to indicate a substitution::" msgstr "" #: whatsnew/2.4.rst:200 msgid "" "If a key is missing from the dictionary, the :meth:`substitute` method will " "raise a :exc:`KeyError`. There's also a :meth:`safe_substitute` method that " "ignores missing keys::" msgstr "" #: whatsnew/2.4.rst:211 msgid ":pep:`292` - Simpler String Substitutions" msgstr "" #: whatsnew/2.4.rst:212 msgid "Written and implemented by Barry Warsaw." msgstr "Écrit et implémenté par Barry Warsaw." #: whatsnew/2.4.rst:218 msgid "PEP 318: Decorators for Functions and Methods" msgstr "" #: whatsnew/2.4.rst:220 msgid "" "Python 2.2 extended Python's object model by adding static methods and class " "methods, but it didn't extend Python's syntax to provide any new way of " "defining static or class methods. Instead, you had to write a :keyword:" "`def` statement in the usual way, and pass the resulting method to a :func:" "`staticmethod` or :func:`classmethod` function that would wrap up the " "function as a method of the new type. Your code would look like this::" msgstr "" #: whatsnew/2.4.rst:233 msgid "" "If the method was very long, it would be easy to miss or forget the :func:" "`classmethod` invocation after the function body." msgstr "" #: whatsnew/2.4.rst:236 msgid "" "The intention was always to add some syntax to make such definitions more " "readable, but at the time of 2.2's release a good syntax was not obvious. " "Today a good syntax *still* isn't obvious but users are asking for easier " "access to the feature; a new syntactic feature has been added to meet this " "need." msgstr "" #: whatsnew/2.4.rst:241 msgid "" "The new feature is called \"function decorators\". The name comes from the " "idea that :func:`classmethod`, :func:`staticmethod`, and friends are storing " "additional information on a function object; they're *decorating* functions " "with more details." msgstr "" #: whatsnew/2.4.rst:246 msgid "" "The notation borrows from Java and uses the ``'@'`` character as an " "indicator. Using the new syntax, the example above would be written::" msgstr "" #: whatsnew/2.4.rst:256 msgid "" "The ``@classmethod`` is shorthand for the ``meth=classmethod(meth)`` " "assignment. More generally, if you have the following::" msgstr "" #: whatsnew/2.4.rst:265 msgid "It's equivalent to the following pre-decorator code::" msgstr "" #: whatsnew/2.4.rst:270 msgid "" "Decorators must come on the line before a function definition, one decorator " "per line, and can't be on the same line as the def statement, meaning that " "``@A def f(): ...`` is illegal. You can only decorate function definitions, " "either at the module level or inside a class; you can't decorate class " "definitions." msgstr "" #: whatsnew/2.4.rst:275 msgid "" "A decorator is just a function that takes the function to be decorated as an " "argument and returns either the same function or some new object. The " "return value of the decorator need not be callable (though it typically is), " "unless further decorators will be applied to the result. It's easy to write " "your own decorators. The following simple example just sets an attribute on " "the function object::" msgstr "" #: whatsnew/2.4.rst:295 msgid "" "As a slightly more realistic example, the following decorator checks that " "the supplied argument is an integer::" msgstr "" #: whatsnew/2.4.rst:313 msgid "" "An example in :pep:`318` contains a fancier version of this idea that lets " "you both specify the required type and check the returned type." msgstr "" #: whatsnew/2.4.rst:316 msgid "" "Decorator functions can take arguments. If arguments are supplied, your " "decorator function is called with only those arguments and must return a new " "decorator function; this function must take a single function and return a " "function, as previously described. In other words, ``@A @B @C(args)`` " "becomes::" msgstr "" #: whatsnew/2.4.rst:325 msgid "" "Getting this right can be slightly brain-bending, but it's not too difficult." msgstr "" #: whatsnew/2.4.rst:327 msgid "" "A small related change makes the :attr:`func_name` attribute of functions " "writable. This attribute is used to display function names in tracebacks, " "so decorators should change the name of any new function that's constructed " "and returned." msgstr "" #: whatsnew/2.4.rst:338 msgid ":pep:`318` - Decorators for Functions, Methods and Classes" msgstr "" #: whatsnew/2.4.rst:336 msgid "" "Written by Kevin D. Smith, Jim Jewett, and Skip Montanaro. Several people " "wrote patches implementing function decorators, but the one that was " "actually checked in was patch #979728, written by Mark Russell." msgstr "" #: whatsnew/2.4.rst:340 msgid "https://wiki.python.org/moin/PythonDecoratorLibrary" msgstr "" #: whatsnew/2.4.rst:341 msgid "This Wiki page contains several examples of decorators." msgstr "" #: whatsnew/2.4.rst:347 msgid "PEP 322: Reverse Iteration" msgstr "" #: whatsnew/2.4.rst:349 msgid "" "A new built-in function, ``reversed(seq)``, takes a sequence and returns an " "iterator that loops over the elements of the sequence in reverse order. ::" msgstr "" #: whatsnew/2.4.rst:359 msgid "" "Compared to extended slicing, such as ``range(1,4)[::-1]``, :func:`reversed` " "is easier to read, runs faster, and uses substantially less memory." msgstr "" #: whatsnew/2.4.rst:362 msgid "" "Note that :func:`reversed` only accepts sequences, not arbitrary iterators. " "If you want to reverse an iterator, first convert it to a list with :func:" "`list`. ::" msgstr "" #: whatsnew/2.4.rst:376 msgid ":pep:`322` - Reverse Iteration" msgstr "" #: whatsnew/2.4.rst:377 msgid "Written and implemented by Raymond Hettinger." msgstr "" #: whatsnew/2.4.rst:383 msgid "PEP 324: New subprocess Module" msgstr "" #: whatsnew/2.4.rst:385 msgid "" "The standard library provides a number of ways to execute a subprocess, " "offering different features and different levels of complexity. ``os." "system(command)`` is easy to use, but slow (it runs a shell process which " "executes the command) and dangerous (you have to be careful about escaping " "the shell's metacharacters). The :mod:`popen2` module offers classes that " "can capture standard output and standard error from the subprocess, but the " "naming is confusing. The :mod:`subprocess` module cleans this up, " "providing a unified interface that offers all the features you might need." msgstr "" #: whatsnew/2.4.rst:394 msgid "" "Instead of :mod:`popen2`'s collection of classes, :mod:`subprocess` contains " "a single class called :class:`Popen` whose constructor supports a number of " "different keyword arguments. ::" msgstr "" #: whatsnew/2.4.rst:404 msgid "" "*args* is commonly a sequence of strings that will be the arguments to the " "program executed as the subprocess. (If the *shell* argument is true, " "*args* can be a string which will then be passed on to the shell for " "interpretation, just as :func:`os.system` does.)" msgstr "" #: whatsnew/2.4.rst:409 msgid "" "*stdin*, *stdout*, and *stderr* specify what the subprocess's input, output, " "and error streams will be. You can provide a file object or a file " "descriptor, or you can use the constant ``subprocess.PIPE`` to create a pipe " "between the subprocess and the parent." msgstr "" #: whatsnew/2.4.rst:417 msgid "The constructor has a number of handy options:" msgstr "" #: whatsnew/2.4.rst:419 msgid "" "*close_fds* requests that all file descriptors be closed before running the " "subprocess." msgstr "" #: whatsnew/2.4.rst:422 msgid "" "*cwd* specifies the working directory in which the subprocess will be " "executed (defaulting to whatever the parent's working directory is)." msgstr "" #: whatsnew/2.4.rst:425 msgid "*env* is a dictionary specifying environment variables." msgstr "" #: whatsnew/2.4.rst:427 msgid "" "*preexec_fn* is a function that gets called before the child is started." msgstr "" #: whatsnew/2.4.rst:429 msgid "" "*universal_newlines* opens the child's input and output using Python's :term:" "`universal newlines` feature." msgstr "" #: whatsnew/2.4.rst:432 msgid "" "Once you've created the :class:`Popen` instance, you can call its :meth:" "`wait` method to pause until the subprocess has exited, :meth:`poll` to " "check if it's exited without pausing, or ``communicate(data)`` to send the " "string *data* to the subprocess's standard input. ``communicate(data)`` " "then reads any data that the subprocess has sent to its standard output or " "standard error, returning a tuple ``(stdout_data, stderr_data)``." msgstr "" #: whatsnew/2.4.rst:439 msgid "" ":func:`call` is a shortcut that passes its arguments along to the :class:" "`Popen` constructor, waits for the command to complete, and returns the " "status code of the subprocess. It can serve as a safer analog to :func:`os." "system`::" msgstr "" #: whatsnew/2.4.rst:451 msgid "" "The command is invoked without use of the shell. If you really do want to " "use the shell, you can add ``shell=True`` as a keyword argument and provide " "a string instead of a sequence::" msgstr "" #: whatsnew/2.4.rst:457 msgid "" "The PEP takes various examples of shell and Python code and shows how they'd " "be translated into Python code that uses :mod:`subprocess`. Reading this " "section of the PEP is highly recommended." msgstr "" #: whatsnew/2.4.rst:465 msgid ":pep:`324` - subprocess - New process module" msgstr "" #: whatsnew/2.4.rst:465 msgid "" "Written and implemented by Peter Åstrand, with assistance from Fredrik Lundh " "and others." msgstr "" #: whatsnew/2.4.rst:472 msgid "PEP 327: Decimal Data Type" msgstr "" #: whatsnew/2.4.rst:474 msgid "" "Python has always supported floating-point (FP) numbers, based on the " "underlying C :c:expr:`double` type, as a data type. However, while most " "programming languages provide a floating-point type, many people (even " "programmers) are unaware that floating-point numbers don't represent certain " "decimal fractions accurately. The new :class:`Decimal` type can represent " "these fractions accurately, up to a user-specified precision limit." msgstr "" #: whatsnew/2.4.rst:483 msgid "Why is Decimal needed?" msgstr "" #: whatsnew/2.4.rst:485 msgid "" "The limitations arise from the representation used for floating-point " "numbers. FP numbers are made up of three components:" msgstr "" #: whatsnew/2.4.rst:488 msgid "The sign, which is positive or negative." msgstr "" #: whatsnew/2.4.rst:490 msgid "" "The mantissa, which is a single-digit binary number followed by a " "fractional part. For example, ``1.01`` in base-2 notation is ``1 + 0/2 + " "1/4``, or 1.25 in decimal notation." msgstr "" #: whatsnew/2.4.rst:494 msgid "" "The exponent, which tells where the decimal point is located in the number " "represented." msgstr "" #: whatsnew/2.4.rst:497 msgid "" "For example, the number 1.25 has positive sign, a mantissa value of 1.01 (in " "binary), and an exponent of 0 (the decimal point doesn't need to be " "shifted). The number 5 has the same sign and mantissa, but the exponent is 2 " "because the mantissa is multiplied by 4 (2 to the power of the exponent 2); " "1.25 \\* 4 equals 5." msgstr "" #: whatsnew/2.4.rst:503 msgid "" "Modern systems usually provide floating-point support that conforms to a " "standard called IEEE 754. C's :c:expr:`double` type is usually implemented " "as a 64-bit IEEE 754 number, which uses 52 bits of space for the mantissa. " "This means that numbers can only be specified to 52 bits of precision. If " "you're trying to represent numbers whose expansion repeats endlessly, the " "expansion is cut off after 52 bits. Unfortunately, most software needs to " "produce output in base 10, and common fractions in base 10 are often " "repeating decimals in binary. For example, 1.1 decimal is binary " "``1.0001100110011 ...``; .1 = 1/16 + 1/32 + 1/256 plus an infinite number of " "additional terms. IEEE 754 has to chop off that infinitely repeated decimal " "after 52 digits, so the representation is slightly inaccurate." msgstr "" #: whatsnew/2.4.rst:515 msgid "Sometimes you can see this inaccuracy when the number is printed::" msgstr "" #: whatsnew/2.4.rst:520 msgid "" "The inaccuracy isn't always visible when you print the number because the FP-" "to-decimal-string conversion is provided by the C library, and most C " "libraries try to produce sensible output. Even if it's not displayed, " "however, the inaccuracy is still there and subsequent operations can magnify " "the error." msgstr "" #: whatsnew/2.4.rst:525 msgid "" "For many applications this doesn't matter. If I'm plotting points and " "displaying them on my monitor, the difference between 1.1 and " "1.1000000000000001 is too small to be visible. Reports often limit output " "to a certain number of decimal places, and if you round the number to two or " "three or even eight decimal places, the error is never apparent. However, " "for applications where it does matter, it's a lot of work to implement your " "own custom arithmetic routines." msgstr "" #: whatsnew/2.4.rst:533 msgid "Hence, the :class:`Decimal` type was created." msgstr "" #: whatsnew/2.4.rst:537 msgid "The :class:`Decimal` type" msgstr "" #: whatsnew/2.4.rst:539 msgid "" "A new module, :mod:`decimal`, was added to Python's standard library. It " "contains two classes, :class:`Decimal` and :class:`Context`. :class:" "`Decimal` instances represent numbers, and :class:`Context` instances are " "used to wrap up various settings such as the precision and default rounding " "mode." msgstr "" #: whatsnew/2.4.rst:544 msgid "" ":class:`Decimal` instances are immutable, like regular Python integers and " "FP numbers; once it's been created, you can't change the value an instance " "represents. :class:`Decimal` instances can be created from integers or " "strings::" msgstr "" #: whatsnew/2.4.rst:555 msgid "" "You can also provide tuples containing the sign, the mantissa represented " "as a tuple of decimal digits, and the exponent::" msgstr "" #: whatsnew/2.4.rst:561 msgid "" "Cautionary note: the sign bit is a Boolean value, so 0 is positive and 1 is " "negative." msgstr "" #: whatsnew/2.4.rst:564 msgid "" "Converting from floating-point numbers poses a bit of a problem: should the " "FP number representing 1.1 turn into the decimal number for exactly 1.1, or " "for 1.1 plus whatever inaccuracies are introduced? The decision was to dodge " "the issue and leave such a conversion out of the API. Instead, you should " "convert the floating-point number into a string using the desired precision " "and pass the string to the :class:`Decimal` constructor::" msgstr "" #: whatsnew/2.4.rst:577 msgid "" "Once you have :class:`Decimal` instances, you can perform the usual " "mathematical operations on them. One limitation: exponentiation requires an " "integer exponent::" msgstr "" #: whatsnew/2.4.rst:598 msgid "" "You can combine :class:`Decimal` instances with integers, but not with " "floating-point numbers::" msgstr "" #: whatsnew/2.4.rst:609 msgid "" ":class:`Decimal` numbers can be used with the :mod:`math` and :mod:`cmath` " "modules, but note that they'll be immediately converted to floating-point " "numbers before the operation is performed, resulting in a possible loss of " "precision and accuracy. You'll also get back a regular floating-point " "number and not a :class:`Decimal`. ::" msgstr "" #: whatsnew/2.4.rst:622 msgid "" ":class:`Decimal` instances have a :meth:`sqrt` method that returns a :class:" "`Decimal`, but if you need other things such as trigonometric functions " "you'll have to implement them. ::" msgstr "" #: whatsnew/2.4.rst:631 msgid "The :class:`Context` type" msgstr "" #: whatsnew/2.4.rst:633 msgid "" "Instances of the :class:`Context` class encapsulate several settings for " "decimal operations:" msgstr "" #: whatsnew/2.4.rst:636 msgid ":attr:`prec` is the precision, the number of decimal places." msgstr "" #: whatsnew/2.4.rst:638 msgid "" ":attr:`rounding` specifies the rounding mode. The :mod:`decimal` module has " "constants for the various possibilities: :const:`ROUND_DOWN`, :const:" "`ROUND_CEILING`, :const:`ROUND_HALF_EVEN`, and various others." msgstr "" #: whatsnew/2.4.rst:642 msgid "" ":attr:`traps` is a dictionary specifying what happens on encountering " "certain error conditions: either an exception is raised or a value is " "returned. Some examples of error conditions are division by zero, loss of " "precision, and overflow." msgstr "" #: whatsnew/2.4.rst:647 msgid "" "There's a thread-local default context available by calling :func:" "`getcontext`; you can change the properties of this context to alter the " "default precision, rounding, or trap handling. The following example shows " "the effect of changing the precision of the default context::" msgstr "" #: whatsnew/2.4.rst:660 msgid "" "The default action for error conditions is selectable; the module can either " "return a special value such as infinity or not-a-number, or exceptions can " "be raised::" msgstr "" #: whatsnew/2.4.rst:673 msgid "" "The :class:`Context` instance also has various methods for formatting " "numbers such as :meth:`to_eng_string` and :meth:`to_sci_string`." msgstr "" #: whatsnew/2.4.rst:676 msgid "" "For more information, see the documentation for the :mod:`decimal` module, " "which includes a quick-start tutorial and a reference." msgstr "" #: whatsnew/2.4.rst:684 msgid ":pep:`327` - Decimal Data Type" msgstr "" #: whatsnew/2.4.rst:683 msgid "" "Written by Facundo Batista and implemented by Facundo Batista, Eric Price, " "Raymond Hettinger, Aahz, and Tim Peters." msgstr "" #: whatsnew/2.4.rst:688 msgid "http://www.lahey.com/float.htm" msgstr "" #: whatsnew/2.4.rst:687 msgid "" "The article uses Fortran code to illustrate many of the problems that " "floating-point inaccuracy can cause." msgstr "" #: whatsnew/2.4.rst:692 msgid "http://speleotrove.com/decimal/" msgstr "" #: whatsnew/2.4.rst:691 msgid "" "A description of a decimal-based representation. This representation is " "being proposed as a standard, and underlies the new Python decimal type. " "Much of this material was written by Mike Cowlishaw, designer of the Rexx " "language." msgstr "" #: whatsnew/2.4.rst:699 msgid "PEP 328: Multi-line Imports" msgstr "" #: whatsnew/2.4.rst:701 msgid "" "One language change is a small syntactic tweak aimed at making it easier to " "import many names from a module. In a ``from module import names`` " "statement, *names* is a sequence of names separated by commas. If the " "sequence is very long, you can either write multiple imports from the same " "module, or you can use backslashes to escape the line endings like this::" msgstr "" #: whatsnew/2.4.rst:712 msgid "" "The syntactic change in Python 2.4 simply allows putting the names within " "parentheses. Python ignores newlines within a parenthesized expression, so " "the backslashes are no longer needed::" msgstr "" #: whatsnew/2.4.rst:721 msgid "" "The PEP also proposes that all :keyword:`import` statements be absolute " "imports, with a leading ``.`` character to indicate a relative import. This " "part of the PEP was not implemented for Python 2.4, but was completed for " "Python 2.5." msgstr "" #: whatsnew/2.4.rst:728 #, fuzzy msgid ":pep:`328` - Imports: Multi-Line and Absolute/Relative" msgstr "" ":pep:`328` : *Importations : multilignes et absolues/relatives* (ressource " "en anglais)" #: whatsnew/2.4.rst:729 msgid "Written by Aahz. Multi-line imports were implemented by Dima Dorfman." msgstr "" #: whatsnew/2.4.rst:735 msgid "PEP 331: Locale-Independent Float/String Conversions" msgstr "" #: whatsnew/2.4.rst:737 msgid "" "The :mod:`locale` modules lets Python software select various conversions " "and display conventions that are localized to a particular country or " "language. However, the module was careful to not change the numeric locale " "because various functions in Python's implementation required that the " "numeric locale remain set to the ``'C'`` locale. Often this was because the " "code was using the C library's :c:func:`atof` function." msgstr "" #: whatsnew/2.4.rst:744 msgid "" "Not setting the numeric locale caused trouble for extensions that used third-" "party C libraries, however, because they wouldn't have the correct locale " "set. The motivating example was GTK+, whose user interface widgets weren't " "displaying numbers in the current locale." msgstr "" #: whatsnew/2.4.rst:749 msgid "" "The solution described in the PEP is to add three new functions to the " "Python API that perform ASCII-only conversions, ignoring the locale setting:" msgstr "" #: whatsnew/2.4.rst:752 msgid "" "``PyOS_ascii_strtod(str, ptr)`` and ``PyOS_ascii_atof(str, ptr)`` both " "convert a string to a C :c:expr:`double`." msgstr "" #: whatsnew/2.4.rst:755 msgid "" "``PyOS_ascii_formatd(buffer, buf_len, format, d)`` converts a :c:expr:" "`double` to an ASCII string." msgstr "" #: whatsnew/2.4.rst:758 msgid "" "The code for these functions came from the GLib library (https://developer." "gnome.org/glib/stable/), whose developers kindly relicensed the relevant " "functions and donated them to the Python Software Foundation. The :mod:" "`locale` module can now change the numeric locale, letting extensions such " "as GTK+ produce the correct results." msgstr "" #: whatsnew/2.4.rst:767 msgid ":pep:`331` - Locale-Independent Float/String Conversions" msgstr "" #: whatsnew/2.4.rst:768 msgid "Written by Christian R. Reis, and implemented by Gustavo Carneiro." msgstr "" #: whatsnew/2.4.rst:774 msgid "Other Language Changes" msgstr "" #: whatsnew/2.4.rst:776 msgid "" "Here are all of the changes that Python 2.4 makes to the core Python " "language." msgstr "" #: whatsnew/2.4.rst:778 msgid "Decorators for functions and methods were added (:pep:`318`)." msgstr "" #: whatsnew/2.4.rst:780 msgid "" "Built-in :func:`set` and :func:`frozenset` types were added (:pep:`218`). " "Other new built-ins include the ``reversed(seq)`` function (:pep:`322`)." msgstr "" #: whatsnew/2.4.rst:783 msgid "Generator expressions were added (:pep:`289`)." msgstr "" #: whatsnew/2.4.rst:785 msgid "" "Certain numeric expressions no longer return values restricted to 32 or 64 " "bits (:pep:`237`)." msgstr "" #: whatsnew/2.4.rst:788 msgid "" "You can now put parentheses around the list of names in a ``from module " "import names`` statement (:pep:`328`)." msgstr "" #: whatsnew/2.4.rst:791 msgid "" "The :meth:`dict.update` method now accepts the same argument forms as the :" "class:`dict` constructor. This includes any mapping, any iterable of key/" "value pairs, and keyword arguments. (Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:795 msgid "" "The string methods :meth:`ljust`, :meth:`rjust`, and :meth:`center` now take " "an optional argument for specifying a fill character other than a space. " "(Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:799 msgid "" "Strings also gained an :meth:`rsplit` method that works like the :meth:" "`split` method but splits from the end of the string. (Contributed by Sean " "Reifschneider.) ::" msgstr "" #: whatsnew/2.4.rst:808 msgid "" "Three keyword parameters, *cmp*, *key*, and *reverse*, were added to the :" "meth:`sort` method of lists. These parameters make some common usages of :" "meth:`sort` simpler. All of these parameters are optional." msgstr "" #: whatsnew/2.4.rst:812 msgid "" "For the *cmp* parameter, the value should be a comparison function that " "takes two parameters and returns -1, 0, or +1 depending on how the " "parameters compare. This function will then be used to sort the list. " "Previously this was the only parameter that could be provided to :meth:" "`sort`." msgstr "" #: whatsnew/2.4.rst:817 msgid "" "*key* should be a single-parameter function that takes a list element and " "returns a comparison key for the element. The list is then sorted using the " "comparison keys. The following example sorts a list case-insensitively::" msgstr "" #: whatsnew/2.4.rst:834 msgid "" "The last example, which uses the *cmp* parameter, is the old way to perform " "a case-insensitive sort. It works but is slower than using a *key* " "parameter. Using *key* calls :meth:`lower` method once for each element in " "the list while using *cmp* will call it twice for each comparison, so using " "*key* saves on invocations of the :meth:`lower` method." msgstr "" #: whatsnew/2.4.rst:840 msgid "" "For simple key functions and comparison functions, it is often possible to " "avoid a :keyword:`lambda` expression by using an unbound method instead. " "For example, the above case-insensitive sort is best written as::" msgstr "" #: whatsnew/2.4.rst:848 msgid "" "Finally, the *reverse* parameter takes a Boolean value. If the value is " "true, the list will be sorted into reverse order. Instead of ``L.sort(); L." "reverse()``, you can now write ``L.sort(reverse=True)``." msgstr "" #: whatsnew/2.4.rst:852 msgid "" "The results of sorting are now guaranteed to be stable. This means that two " "entries with equal keys will be returned in the same order as they were " "input. For example, you can sort a list of people by name, and then sort the " "list by age, resulting in a list sorted by age where people with the same " "age are in name-sorted order." msgstr "" #: whatsnew/2.4.rst:858 msgid "(All changes to :meth:`sort` contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:860 msgid "" "There is a new built-in function ``sorted(iterable)`` that works like the in-" "place :meth:`list.sort` method but can be used in expressions. The " "differences are:" msgstr "" #: whatsnew/2.4.rst:864 msgid "the input may be any iterable;" msgstr "" #: whatsnew/2.4.rst:866 msgid "a newly formed copy is sorted, leaving the original intact; and" msgstr "" #: whatsnew/2.4.rst:868 msgid "the expression returns the new sorted copy" msgstr "" #: whatsnew/2.4.rst:919 whatsnew/2.4.rst:1212 msgid "(Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1519 msgid "" "Integer operations will no longer trigger an :exc:`OverflowWarning`. The :" "exc:`OverflowWarning` warning will disappear in Python 2.5." msgstr "" #: whatsnew/2.4.rst:896 msgid "" "The interpreter gained a new switch, :option:`-m`, that takes a name, " "searches for the corresponding module on ``sys.path``, and runs the module " "as a script. For example, you can now run the Python profiler with ``python " "-m profile``. (Contributed by Nick Coghlan.)" msgstr "" #: whatsnew/2.4.rst:901 msgid "" "The ``eval(expr, globals, locals)`` and ``execfile(filename, globals, " "locals)`` functions and the ``exec`` statement now accept any mapping type " "for the *locals* parameter. Previously this had to be a regular Python " "dictionary. (Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:906 msgid "" "The :func:`zip` built-in function and :func:`itertools.izip` now return an " "empty list if called with no arguments. Previously they raised a :exc:" "`TypeError` exception. This makes them more suitable for use with variable " "length argument lists::" msgstr "" #: whatsnew/2.4.rst:921 msgid "" "Encountering a failure while importing a module no longer leaves a partially " "initialized module object in ``sys.modules``. The incomplete module object " "left behind would fool further imports of the same module into succeeding, " "leading to confusing errors. (Fixed by Tim Peters.)" msgstr "" #: whatsnew/2.4.rst:926 msgid "" ":const:`None` is now a constant; code that binds a new value to the name " "``None`` is now a syntax error. (Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:933 #, fuzzy msgid "Optimizations" msgstr "Optimisation" #: whatsnew/2.4.rst:935 msgid "" "The inner loops for list and tuple slicing were optimized and now run about " "one-third faster. The inner loops for dictionaries were also optimized, " "resulting in performance boosts for :meth:`keys`, :meth:`values`, :meth:" "`items`, :meth:`iterkeys`, :meth:`itervalues`, and :meth:`iteritems`. " "(Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:941 msgid "" "The machinery for growing and shrinking lists was optimized for speed and " "for space efficiency. Appending and popping from lists now runs faster due " "to more efficient code paths and less frequent use of the underlying system :" "c:func:`realloc`. List comprehensions also benefit. :meth:`list.extend` " "was also optimized and no longer converts its argument into a temporary list " "before extending the base list. (Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:948 msgid "" ":func:`list`, :func:`tuple`, :func:`map`, :func:`filter`, and :func:`zip` " "now run several times faster with non-sequence arguments that supply a :meth:" "`__len__` method. (Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:952 msgid "" "The methods :meth:`list.__getitem__`, :meth:`dict.__getitem__`, and :meth:" "`dict.__contains__` are now implemented as :class:`method_descriptor` " "objects rather than :class:`wrapper_descriptor` objects. This form of " "access doubles their performance and makes them more suitable for use as " "arguments to functionals: ``map(mydict.__getitem__, keylist)``. (Contributed " "by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:959 msgid "" "Added a new opcode, ``LIST_APPEND``, that simplifies the generated bytecode " "for list comprehensions and speeds them up by about a third. (Contributed " "by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:963 msgid "" "The peephole bytecode optimizer has been improved to produce shorter, " "faster bytecode; remarkably, the resulting bytecode is more readable. " "(Enhanced by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:967 msgid "" "String concatenations in statements of the form ``s = s + \"abc\"`` and ``s " "+= \"abc\"`` are now performed more efficiently in certain circumstances. " "This optimization won't be present in other Python implementations such as " "Jython, so you shouldn't rely on it; using the :meth:`join` method of " "strings is still recommended when you want to efficiently glue a large " "number of strings together. (Contributed by Armin Rigo.)" msgstr "" #: whatsnew/2.4.rst:974 msgid "" "The net result of the 2.4 optimizations is that Python 2.4 runs the pystone " "benchmark around 5% faster than Python 2.3 and 35% faster than Python 2.2. " "(pystone is not a particularly good benchmark, but it's the most commonly " "used measurement of Python's performance. Your own applications may show " "greater or smaller benefits from Python 2.4.)" msgstr "" #: whatsnew/2.4.rst:990 msgid "New, Improved, and Deprecated Modules" msgstr "" #: whatsnew/2.4.rst:992 msgid "" "As usual, Python's standard library received a number of enhancements and " "bug fixes. 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 CVS " "logs for all the details." msgstr "" #: whatsnew/2.4.rst:997 msgid "" "The :mod:`asyncore` module's :func:`loop` function now has a *count* " "parameter that lets you perform a limited number of passes through the " "polling loop. The default is still to loop forever." msgstr "" #: whatsnew/2.4.rst:1001 msgid "" "The :mod:`base64` module now has more complete :rfc:`3548` support for " "Base64, Base32, and Base16 encoding and decoding, including optional case " "folding and optional alternative alphabets. (Contributed by Barry Warsaw.)" msgstr "" #: whatsnew/2.4.rst:1005 msgid "" "The :mod:`bisect` module now has an underlying C implementation for improved " "performance. (Contributed by Dmitry Vasiliev.)" msgstr "" #: whatsnew/2.4.rst:1008 msgid "" "The CJKCodecs collections of East Asian codecs, maintained by Hye-Shik " "Chang, was integrated into 2.4. The new encodings are:" msgstr "" #: whatsnew/2.4.rst:1011 msgid "Chinese (PRC): gb2312, gbk, gb18030, big5hkscs, hz" msgstr "Chinois (PRC) : *gb2312*, *gbk*, *gb18030*, *big5hkscs*, *hz*" #: whatsnew/2.4.rst:1013 msgid "Chinese (ROC): big5, cp950" msgstr "Chinois (ROC) : *big5*, *cp950*" #: whatsnew/2.4.rst:1017 msgid "Japanese: cp932, euc-jis-2004, euc-jp, euc-jisx0213, iso-2022-jp," msgstr "" "Japonais : *cp932*, *euc-jis-2004*, *euc-jp*, *euc-jisx0213*, *iso-2022-jp*," #: whatsnew/2.4.rst:1016 msgid "" "iso-2022-jp-1, iso-2022-jp-2, iso-2022-jp-3, iso-2022-jp-ext, iso-2022-" "jp-2004, shift-jis, shift-jisx0213, shift-jis-2004" msgstr "" "*iso-2022-jp-1*, *iso-2022-jp-2*, *iso-2022-jp-3*, *iso-2022-jp-ext*, " "*iso-2022-jp-2004*, *shift-jis*, *shift-jisx0213*, *shift-jis-2004*" #: whatsnew/2.4.rst:1019 msgid "Korean: cp949, euc-kr, johab, iso-2022-kr" msgstr "Coréen : *cp949*, *euc-kr*, *johab*, *iso-2022-kr*" #: whatsnew/2.4.rst:1021 msgid "" "Some other new encodings were added: HP Roman8, ISO_8859-11, ISO_8859-16, " "PCTP-154, and TIS-620." msgstr "" "D’autres encodages ont été ajoutés : HP Roman8, ISO_8859-11, ISO_8859-16, " "PCTP-154, et TIS-620." #: whatsnew/2.4.rst:1024 msgid "" "The UTF-8 and UTF-16 codecs now cope better with receiving partial input. " "Previously the :class:`StreamReader` class would try to read more data, " "making it impossible to resume decoding from the stream. The :meth:`read` " "method will now return as much data as it can and future calls will resume " "decoding where previous ones left off. (Implemented by Walter Dörwald.)" msgstr "" #: whatsnew/2.4.rst:1030 msgid "" "There is a new :mod:`collections` module for various specialized collection " "datatypes. Currently it contains just one type, :class:`deque`, a double-" "ended queue that supports efficiently adding and removing elements from " "either end::" msgstr "" #: whatsnew/2.4.rst:1050 msgid "" "Several modules, such as the :mod:`Queue` and :mod:`threading` modules, now " "take advantage of :class:`collections.deque` for improved performance. " "(Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1054 msgid "" "The :mod:`ConfigParser` classes have been enhanced slightly. The :meth:" "`read` method now returns a list of the files that were successfully parsed, " "and the :meth:`set` method raises :exc:`TypeError` if passed a *value* " "argument that isn't a string. (Contributed by John Belmonte and David " "Goodger.)" msgstr "" #: whatsnew/2.4.rst:1059 msgid "" "The :mod:`curses` module now supports the ncurses extension :func:" "`use_default_colors`. On platforms where the terminal supports " "transparency, this makes it possible to use a transparent background. " "(Contributed by Jörg Lehmann.)" msgstr "" #: whatsnew/2.4.rst:1064 msgid "" "The :mod:`difflib` module now includes an :class:`HtmlDiff` class that " "creates an HTML table showing a side by side comparison of two versions of a " "text. (Contributed by Dan Gass.)" msgstr "" #: whatsnew/2.4.rst:1068 msgid "" "The :mod:`email` package was updated to version 3.0, which dropped various " "deprecated APIs and removes support for Python versions earlier than 2.3. " "The 3.0 version of the package uses a new incremental parser for MIME " "messages, available in the :mod:`email.FeedParser` module. The new parser " "doesn't require reading the entire message into memory, and doesn't raise " "exceptions if a message is malformed; instead it records any problems in " "the :attr:`defect` attribute of the message. (Developed by Anthony Baxter, " "Barry Warsaw, Thomas Wouters, and others.)" msgstr "" #: whatsnew/2.4.rst:1077 msgid "" "The :mod:`heapq` module has been converted to C. The resulting tenfold " "improvement in speed makes the module suitable for handling high volumes of " "data. In addition, the module has two new functions :func:`nlargest` and :" "func:`nsmallest` that use heaps to find the N largest or smallest values in " "a dataset without the expense of a full sort. (Contributed by Raymond " "Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1083 msgid "" "The :mod:`httplib` module now contains constants for HTTP status codes " "defined in various HTTP-related RFC documents. Constants have names such " "as :const:`OK`, :const:`CREATED`, :const:`CONTINUE`, and :const:" "`MOVED_PERMANENTLY`; use pydoc to get a full list. (Contributed by Andrew " "Eland.)" msgstr "" #: whatsnew/2.4.rst:1089 msgid "" "The :mod:`imaplib` module now supports IMAP's THREAD command (contributed by " "Yves Dionne) and new :meth:`deleteacl` and :meth:`myrights` methods " "(contributed by Arnaud Mazin)." msgstr "" #: whatsnew/2.4.rst:1093 msgid "" "The :mod:`itertools` module gained a ``groupby(iterable[, *func*])`` " "function. *iterable* is something that can be iterated over to return a " "stream of elements, and the optional *func* parameter is a function that " "takes an element and returns a key value; if omitted, the key is simply the " "element itself. :func:`groupby` then groups the elements into subsequences " "which have matching values of the key, and returns a series of 2-tuples " "containing the key value and an iterator over the subsequence." msgstr "" #: whatsnew/2.4.rst:1101 msgid "" "Here's an example to make this clearer. The *key* function simply returns " "whether a number is even or odd, so the result of :func:`groupby` is to " "return consecutive runs of odd or even numbers. ::" msgstr "" #: whatsnew/2.4.rst:1117 msgid "" ":func:`groupby` is typically used with sorted input. The logic for :func:" "`groupby` is similar to the Unix ``uniq`` filter which makes it handy for " "eliminating, counting, or identifying duplicate elements::" msgstr "" #: whatsnew/2.4.rst:1140 msgid "(Contributed by Hye-Shik Chang.)" msgstr "(Contribution par Hye-Shik Chang.)" #: whatsnew/2.4.rst:1142 msgid "" ":mod:`itertools` also gained a function named ``tee(iterator, N)`` that " "returns *N* independent iterators that replicate *iterator*. If *N* is " "omitted, the default is 2. ::" msgstr "" #: whatsnew/2.4.rst:1155 msgid "" "Note that :func:`tee` has to keep copies of the values returned by the " "iterator; in the worst case, it may need to keep all of them. This should " "therefore be used carefully if the leading iterator can run far ahead of the " "trailing iterator in a long stream of inputs. If the separation is large, " "then you might as well use :func:`list` instead. When the iterators track " "closely with one another, :func:`tee` is ideal. Possible applications " "include bookmarking, windowing, or lookahead iterators. (Contributed by " "Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1164 msgid "" "A number of functions were added to the :mod:`locale` module, such as :func:" "`bind_textdomain_codeset` to specify a particular encoding and a family of :" "func:`l\\*gettext` functions that return messages in the chosen encoding. " "(Contributed by Gustavo Niemeyer.)" msgstr "" #: whatsnew/2.4.rst:1169 msgid "" "Some keyword arguments were added to the :mod:`logging` package's :func:" "`basicConfig` function to simplify log configuration. The default behavior " "is to log messages to standard error, but various keyword arguments can be " "specified to log to a particular file, change the logging format, or set the " "logging level. For example::" msgstr "" #: whatsnew/2.4.rst:1180 msgid "" "Other additions to the :mod:`logging` package include a ``log(level, msg)`` " "convenience method, as well as a :class:`TimedRotatingFileHandler` class " "that rotates its log files at a timed interval. The module already had :" "class:`RotatingFileHandler`, which rotated logs once the file exceeded a " "certain size. Both classes derive from a new :class:`BaseRotatingHandler` " "class that can be used to implement other rotating handlers." msgstr "" #: whatsnew/2.4.rst:1187 msgid "(Changes implemented by Vinay Sajip.)" msgstr "(Changements implémentés par Vinay Sajip.)" #: whatsnew/2.4.rst:1189 msgid "" "The :mod:`marshal` module now shares interned strings on unpacking a data " "structure. This may shrink the size of certain pickle strings, but the " "primary effect is to make :file:`.pyc` files significantly smaller. " "(Contributed by Martin von Löwis.)" msgstr "" #: whatsnew/2.4.rst:1194 msgid "" "The :mod:`nntplib` module's :class:`NNTP` class gained :meth:`description` " "and :meth:`descriptions` methods to retrieve newsgroup descriptions for a " "single group or for a range of groups. (Contributed by Jürgen A. Erhard.)" msgstr "" #: whatsnew/2.4.rst:1198 msgid "" "Two new functions were added to the :mod:`operator` module, " "``attrgetter(attr)`` and ``itemgetter(index)``. Both functions return " "callables that take a single argument and return the corresponding attribute " "or item; these callables make excellent data extractors when used with :func:" "`map` or :func:`sorted`. For example::" msgstr "" #: whatsnew/2.4.rst:1214 msgid "" "The :mod:`optparse` module was updated in various ways. The module now " "passes its messages through :func:`gettext.gettext`, making it possible to " "internationalize Optik's help and error messages. Help messages for options " "can now include the string ``'%default'``, which will be replaced by the " "option's default value. (Contributed by Greg Ward.)" msgstr "" #: whatsnew/2.4.rst:1220 msgid "" "The long-term plan is to deprecate the :mod:`rfc822` module in some future " "Python release in favor of the :mod:`email` package. To this end, the :func:" "`email.Utils.formatdate` function has been changed to make it usable as a " "replacement for :func:`rfc822.formatdate`. You may want to write new e-mail " "processing code with this in mind. (Change implemented by Anthony Baxter.)" msgstr "" #: whatsnew/2.4.rst:1226 msgid "" "A new ``urandom(n)`` function was added to the :mod:`os` module, returning a " "string containing *n* bytes of random data. This function provides access " "to platform-specific sources of randomness such as :file:`/dev/urandom` on " "Linux or the Windows CryptoAPI. (Contributed by Trevor Perrin.)" msgstr "" #: whatsnew/2.4.rst:1231 msgid "" "Another new function: ``os.path.lexists(path)`` returns true if the file " "specified by *path* exists, whether or not it's a symbolic link. This " "differs from the existing ``os.path.exists(path)`` function, which returns " "false if *path* is a symlink that points to a destination that doesn't " "exist. (Contributed by Beni Cherniavsky.)" msgstr "" #: whatsnew/2.4.rst:1237 msgid "" "A new :func:`getsid` function was added to the :mod:`posix` module that " "underlies the :mod:`os` module. (Contributed by J. Raynor.)" msgstr "" #: whatsnew/2.4.rst:1240 msgid "" "The :mod:`poplib` module now supports POP over SSL. (Contributed by Hector " "Urtubia.)" msgstr "" "Le module :mod:`poplib` supporte maintenant POP sur SSL. (Contribution par " "Hector Urtubia.)" #: whatsnew/2.4.rst:1243 msgid "" "The :mod:`profile` module can now profile C extension functions. " "(Contributed by Nick Bastin.)" msgstr "" #: whatsnew/2.4.rst:1246 msgid "" "The :mod:`random` module has a new method called ``getrandbits(N)`` that " "returns a long integer *N* bits in length. The existing :meth:`randrange` " "method now uses :meth:`getrandbits` where appropriate, making generation of " "arbitrarily large random numbers more efficient. (Contributed by Raymond " "Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1252 msgid "" "The regular expression language accepted by the :mod:`re` module was " "extended with simple conditional expressions, written as ``(?(group)A|B)``. " "*group* is either a numeric group ID or a group name defined with ``(?" "P...)`` earlier in the expression. If the specified group matched, " "the regular expression pattern *A* will be tested against the string; if the " "group didn't match, the pattern *B* will be used instead. (Contributed by " "Gustavo Niemeyer.)" msgstr "" #: whatsnew/2.4.rst:1259 msgid "" "The :mod:`re` module is also no longer recursive, thanks to a massive amount " "of work by Gustavo Niemeyer. In a recursive regular expression engine, " "certain patterns result in a large amount of C stack space being consumed, " "and it was possible to overflow the stack. For example, if you matched a " "30000-byte string of ``a`` characters against the expression ``(a|b)+``, one " "stack frame was consumed per character. Python 2.3 tried to check for stack " "overflow and raise a :exc:`RuntimeError` exception, but certain patterns " "could sidestep the checking and if you were unlucky Python could segfault. " "Python 2.4's regular expression engine can match this pattern without " "problems." msgstr "" #: whatsnew/2.4.rst:1269 msgid "" "The :mod:`signal` module now performs tighter error-checking on the " "parameters to the :func:`signal.signal` function. For example, you can't " "set a handler on the :const:`SIGKILL` signal; previous versions of Python " "would quietly accept this, but 2.4 will raise a :exc:`RuntimeError` " "exception." msgstr "" #: whatsnew/2.4.rst:1274 msgid "" "Two new functions were added to the :mod:`socket` module. :func:`socketpair` " "returns a pair of connected sockets and ``getservbyport(port)`` looks up the " "service name for a given port number. (Contributed by Dave Cole and Barry " "Warsaw.)" msgstr "" #: whatsnew/2.4.rst:1279 msgid "" "The :func:`sys.exitfunc` function has been deprecated. Code should be using " "the existing :mod:`atexit` module, which correctly handles calling multiple " "exit functions. Eventually :func:`sys.exitfunc` will become a purely " "internal interface, accessed only by :mod:`atexit`." msgstr "" #: whatsnew/2.4.rst:1284 msgid "" "The :mod:`tarfile` module now generates GNU-format tar files by default. " "(Contributed by Lars Gustäbel.)" msgstr "" #: whatsnew/2.4.rst:1287 msgid "" "The :mod:`threading` module now has an elegantly simple way to support " "thread-local data. The module contains a :class:`local` class whose " "attribute values are local to different threads. ::" msgstr "" #: whatsnew/2.4.rst:1297 msgid "" "Other threads can assign and retrieve their own values for the :attr:" "`number` and :attr:`url` attributes. You can subclass :class:`local` to " "initialize attributes or to add methods. (Contributed by Jim Fulton.)" msgstr "" #: whatsnew/2.4.rst:1301 msgid "" "The :mod:`timeit` module now automatically disables periodic garbage " "collection during the timing loop. This change makes consecutive timings " "more comparable. (Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1305 msgid "" "The :mod:`weakref` module now supports a wider variety of objects including " "Python functions, class instances, sets, frozensets, deques, arrays, files, " "sockets, and regular expression pattern objects. (Contributed by Raymond " "Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1310 msgid "" "The :mod:`xmlrpclib` module now supports a multi-call extension for " "transmitting multiple XML-RPC calls in a single HTTP operation. (Contributed " "by Brian Quinlan.)" msgstr "" #: whatsnew/2.4.rst:1314 msgid "" "The :mod:`mpz`, :mod:`rotor`, and :mod:`xreadlines` modules have been " "removed." msgstr "" #: whatsnew/2.4.rst:1323 msgid "cookielib" msgstr "cookielib" #: whatsnew/2.4.rst:1325 msgid "" "The :mod:`cookielib` library supports client-side handling for HTTP cookies, " "mirroring the :mod:`Cookie` module's server-side cookie support. Cookies are " "stored in cookie jars; the library transparently stores cookies offered by " "the web server in the cookie jar, and fetches the cookie from the jar when " "connecting to the server. As in web browsers, policy objects control whether " "cookies are accepted or not." msgstr "" #: whatsnew/2.4.rst:1332 msgid "" "In order to store cookies across sessions, two implementations of cookie " "jars are provided: one that stores cookies in the Netscape format so " "applications can use the Mozilla or Lynx cookie files, and one that stores " "cookies in the same format as the Perl libwww library." msgstr "" #: whatsnew/2.4.rst:1337 msgid "" ":mod:`urllib2` has been changed to interact with :mod:`cookielib`: :class:" "`HTTPCookieProcessor` manages a cookie jar that is used when accessing URLs." msgstr "" #: whatsnew/2.4.rst:1341 msgid "This module was contributed by John J. Lee." msgstr "" #: whatsnew/2.4.rst:1347 msgid "doctest" msgstr "doctest" #: whatsnew/2.4.rst:1349 msgid "" "The :mod:`doctest` module underwent considerable refactoring thanks to " "Edward Loper and Tim Peters. Testing can still be as simple as running :" "func:`doctest.testmod`, but the refactorings allow customizing the module's " "operation in various ways" msgstr "" #: whatsnew/2.4.rst:1354 msgid "" "The new :class:`DocTestFinder` class extracts the tests from a given " "object's docstrings::" msgstr "" #: whatsnew/2.4.rst:1370 msgid "" "The new :class:`DocTestRunner` class then runs individual tests and can " "produce a summary of the results::" msgstr "" #: whatsnew/2.4.rst:1379 msgid "The above example produces the following output::" msgstr "" #: whatsnew/2.4.rst:1387 msgid "" ":class:`DocTestRunner` uses an instance of the :class:`OutputChecker` class " "to compare the expected output with the actual output. This class takes a " "number of different flags that customize its behaviour; ambitious users can " "also write a completely new subclass of :class:`OutputChecker`." msgstr "" #: whatsnew/2.4.rst:1392 msgid "" "The default output checker provides a number of handy features. For example, " "with the :const:`doctest.ELLIPSIS` option flag, an ellipsis (``...``) in the " "expected output matches any substring, making it easier to accommodate " "outputs that vary in minor ways::" msgstr "" #: whatsnew/2.4.rst:1403 msgid "Another special string, ````, matches a blank line::" msgstr "" #: whatsnew/2.4.rst:1411 msgid "" "Another new capability is producing a diff-style display of the output by " "specifying the :const:`doctest.REPORT_UDIFF` (unified diffs), :const:" "`doctest.REPORT_CDIFF` (context diffs), or :const:`doctest.REPORT_NDIFF` " "(delta-style) option flags. For example::" msgstr "" #: whatsnew/2.4.rst:1427 msgid "" "Running the above function's tests with :const:`doctest.REPORT_UDIFF` " "specified, you get the following output:" msgstr "" #: whatsnew/2.4.rst:1448 msgid "Build and C API Changes" msgstr "" #: whatsnew/2.4.rst:1450 msgid "Some of the changes to Python's build process and to the C API are:" msgstr "" #: whatsnew/2.4.rst:1452 msgid "" "Three new convenience macros were added for common return values from " "extension functions: :c:macro:`Py_RETURN_NONE`, :c:macro:`Py_RETURN_TRUE`, " "and :c:macro:`Py_RETURN_FALSE`. (Contributed by Brett Cannon.)" msgstr "" #: whatsnew/2.4.rst:1456 msgid "" "Another new macro, :c:macro:`Py_CLEAR`, decreases the reference count of " "*obj* and sets *obj* to the null pointer. (Contributed by Jim Fulton.)" msgstr "" #: whatsnew/2.4.rst:1459 msgid "" "A new function, ``PyTuple_Pack(N, obj1, obj2, ..., objN)``, constructs " "tuples from a variable length argument list of Python objects. (Contributed " "by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1463 msgid "" "A new function, ``PyDict_Contains(d, k)``, implements fast dictionary " "lookups without masking exceptions raised during the look-up process. " "(Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1467 msgid "" "The :c:expr:`Py_IS_NAN(X)` macro returns 1 if its float or double argument " "*X* is a NaN. (Contributed by Tim Peters.)" msgstr "" #: whatsnew/2.4.rst:1470 msgid "" "C code can avoid unnecessary locking by using the new :c:func:" "`PyEval_ThreadsInitialized` function to tell if any thread operations have " "been performed. If this function returns false, no lock operations are " "needed. (Contributed by Nick Coghlan.)" msgstr "" #: whatsnew/2.4.rst:1475 msgid "" "A new function, :c:func:`PyArg_VaParseTupleAndKeywords`, is the same as :c:" "func:`PyArg_ParseTupleAndKeywords` but takes a :c:type:`va_list` instead of " "a number of arguments. (Contributed by Greg Chapman.)" msgstr "" #: whatsnew/2.4.rst:1479 msgid "" "A new method flag, :const:`METH_COEXISTS`, allows a function defined in " "slots to co-exist with a :c:type:`PyCFunction` having the same name. This " "can halve the access time for a method such as :meth:`set.__contains__`. " "(Contributed by Raymond Hettinger.)" msgstr "" #: whatsnew/2.4.rst:1484 msgid "" "Python can now be built with additional profiling for the interpreter " "itself, intended as an aid to people developing the Python core. Providing :" "option:`!--enable-profiling` to the :program:`configure` script will let you " "profile the interpreter with :program:`gprof`, and providing the :option:`!--" "with-tsc` switch enables profiling using the Pentium's Time-Stamp-Counter " "register. Note that the :option:`!--with-tsc` switch is slightly misnamed, " "because the profiling feature also works on the PowerPC platform, though " "that processor architecture doesn't call that register \"the TSC " "register\". (Contributed by Jeremy Hylton.)" msgstr "" #: whatsnew/2.4.rst:1494 msgid "" "The :c:type:`tracebackobject` type has been renamed to :c:type:" "`PyTracebackObject`." msgstr "" #: whatsnew/2.4.rst:1501 msgid "Port-Specific Changes" msgstr "" #: whatsnew/2.4.rst:1503 msgid "" "The Windows port now builds under MSVC++ 7.1 as well as version 6. " "(Contributed by Martin von Löwis.)" msgstr "" #: whatsnew/2.4.rst:1510 msgid "Porting to Python 2.4" msgstr "Portage vers Python 2.4" #: whatsnew/2.4.rst:1512 msgid "" "This section lists previously described changes that may require changes to " "your code:" msgstr "" #: whatsnew/2.4.rst:1515 msgid "" "Left shifts and hexadecimal/octal constants that are too large no longer " "trigger a :exc:`FutureWarning` and return a value limited to 32 or 64 bits; " "instead they return a long integer." msgstr "" #: whatsnew/2.4.rst:1522 msgid "" "The :func:`zip` built-in function and :func:`itertools.izip` now return an " "empty list instead of raising a :exc:`TypeError` exception if called with no " "arguments." msgstr "" #: whatsnew/2.4.rst:1526 msgid "" "You can no longer compare the :class:`date` and :class:`~datetime.datetime` " "instances provided by the :mod:`datetime` module. Two instances of " "different classes will now always be unequal, and relative comparisons " "(``<``, ``>``) will raise a :exc:`TypeError`." msgstr "" #: whatsnew/2.4.rst:1531 msgid "" ":func:`dircache.listdir` now passes exceptions to the caller instead of " "returning empty lists." msgstr "" #: whatsnew/2.4.rst:1534 msgid "" ":func:`LexicalHandler.startDTD` used to receive the public and system IDs in " "the wrong order. This has been corrected; applications relying on the wrong " "order need to be fixed." msgstr "" #: whatsnew/2.4.rst:1538 msgid "" ":func:`fcntl.ioctl` now warns if the *mutate* argument is omitted and " "relevant." msgstr "" #: whatsnew/2.4.rst:1541 msgid "" "The :mod:`tarfile` module now generates GNU-format tar files by default." msgstr "" #: whatsnew/2.4.rst:1543 msgid "" "Encountering a failure while importing a module no longer leaves a partially " "initialized module object in ``sys.modules``." msgstr "" #: whatsnew/2.4.rst:1546 msgid "" ":const:`None` is now a constant; code that binds a new value to the name " "``None`` is now a syntax error." msgstr "" #: whatsnew/2.4.rst:1549 msgid "" "The :func:`signals.signal` function now raises a :exc:`RuntimeError` " "exception for certain illegal values; previously these errors would pass " "silently. For example, you can no longer set a handler on the :const:" "`SIGKILL` signal." msgstr "" #: whatsnew/2.4.rst:1559 msgid "Acknowledgements" msgstr "Remerciements" #: whatsnew/2.4.rst:1561 msgid "" "The author would like to thank the following people for offering " "suggestions, corrections and assistance with various drafts of this article: " "Koray Can, Hye-Shik Chang, Michael Dyck, Raymond Hettinger, Brian Hurt, " "Hamish Lawson, Fredrik Lundh, Sean Reifschneider, Sadruddin Rejeb." msgstr ""