python-docs-fr/whatsnew/3.0.po

1323 lines
44 KiB
Plaintext

# 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: 2017-09-22 10:11+0200\n"
"Last-Translator: \n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\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 2.0.4\n"
#: whatsnew/3.0.rst:3
msgid "What's New In Python 3.0"
msgstr "Nouveautés de Python 3.0"
#: whatsnew/3.0.rst:0
msgid "Author"
msgstr "Auteur"
#: whatsnew/3.0.rst:7
msgid "Guido van Rossum"
msgstr "Guido van Rossum"
#: whatsnew/3.0.rst:54
msgid ""
"This article explains the new features in Python 3.0, compared to 2.6. "
"Python 3.0, also known as \"Python 3000\" or \"Py3K\", is the first ever "
"*intentionally backwards incompatible* Python release. Python 3.0 was "
"released on December 3, 2008. There are more changes than in a typical "
"release, and more that are important for all Python users. Nevertheless, "
"after digesting the changes, you'll find that Python really hasn't changed "
"all that much -- by and large, we're mostly fixing well-known annoyances and "
"warts, and removing a lot of old cruft."
msgstr ""
#: whatsnew/3.0.rst:63
msgid ""
"This article doesn't attempt to provide a complete specification of all new "
"features, but instead tries to give a convenient overview. For full details, "
"you should refer to the documentation for Python 3.0, and/or the many PEPs "
"referenced in the text. If you want to understand the complete "
"implementation and design rationale for a particular feature, PEPs usually "
"have more details than the regular documentation; but note that PEPs usually "
"are not kept up-to-date once a feature has been fully implemented."
msgstr ""
#: whatsnew/3.0.rst:72
msgid ""
"Due to time constraints this document is not as complete as it should have "
"been. As always for a new release, the ``Misc/NEWS`` file in the source "
"distribution contains a wealth of detailed information about every small "
"thing that was changed."
msgstr ""
#: whatsnew/3.0.rst:89
msgid "Common Stumbling Blocks"
msgstr ""
#: whatsnew/3.0.rst:91
msgid ""
"This section lists those few changes that are most likely to trip you up if "
"you're used to Python 2.5."
msgstr ""
#: whatsnew/3.0.rst:95
msgid "Print Is A Function"
msgstr ""
#: whatsnew/3.0.rst:97
msgid ""
"The ``print`` statement has been replaced with a :func:`print` function, "
"with keyword arguments to replace most of the special syntax of the old "
"``print`` statement (:pep:`3105`). Examples::"
msgstr ""
#: whatsnew/3.0.rst:116
msgid "You can also customize the separator between items, e.g.::"
msgstr ""
#: whatsnew/3.0.rst:120
msgid "which produces:"
msgstr ""
#: whatsnew/3.0.rst:126
msgid "Note:"
msgstr ""
#: whatsnew/3.0.rst:128
msgid ""
"The :func:`print` function doesn't support the \"softspace\" feature of the "
"old ``print`` statement. For example, in Python 2.x, ``print \"A\\n\", "
"\"B\"`` would write ``\"A\\nB\\n\"``; but in Python 3.0, ``print(\"A\\n\", "
"\"B\")`` writes ``\"A\\n B\\n\"``."
msgstr ""
#: whatsnew/3.0.rst:133
msgid ""
"Initially, you'll be finding yourself typing the old ``print x`` a lot in "
"interactive mode. Time to retrain your fingers to type ``print(x)`` instead!"
msgstr ""
#: whatsnew/3.0.rst:137
msgid ""
"When using the ``2to3`` source-to-source conversion tool, all ``print`` "
"statements are automatically converted to :func:`print` function calls, so "
"this is mostly a non-issue for larger projects."
msgstr ""
#: whatsnew/3.0.rst:143
msgid "Views And Iterators Instead Of Lists"
msgstr ""
#: whatsnew/3.0.rst:145
msgid "Some well-known APIs no longer return lists:"
msgstr ""
#: whatsnew/3.0.rst:147
msgid ""
":class:`dict` methods :meth:`dict.keys`, :meth:`dict.items` and :meth:`dict."
"values` return \"views\" instead of lists. For example, this no longer "
"works: ``k = d.keys(); k.sort()``. Use ``k = sorted(d)`` instead (this "
"works in Python 2.5 too and is just as efficient)."
msgstr ""
#: whatsnew/3.0.rst:153
msgid ""
"Also, the :meth:`dict.iterkeys`, :meth:`dict.iteritems` and :meth:`dict."
"itervalues` methods are no longer supported."
msgstr ""
#: whatsnew/3.0.rst:156
msgid ""
":func:`map` and :func:`filter` return iterators. If you really need a list "
"and the input sequences are all of equal length, a quick fix is to wrap :"
"func:`map` in :func:`list`, e.g. ``list(map(...))``, but a better fix is "
"often to use a list comprehension (especially when the original code uses :"
"keyword:`lambda`), or rewriting the code so it doesn't need a list at all. "
"Particularly tricky is :func:`map` invoked for the side effects of the "
"function; the correct transformation is to use a regular :keyword:`for` loop "
"(since creating a list would just be wasteful)."
msgstr ""
#: whatsnew/3.0.rst:167
msgid ""
"If the input sequences are not of equal length, :func:`map` will stop at the "
"termination of the shortest of the sequences. For full compatibility with :"
"func:`map` from Python 2.x, also wrap the sequences in :func:`itertools."
"zip_longest`, e.g. ``map(func, *sequences)`` becomes ``list(map(func, "
"itertools.zip_longest(*sequences)))``."
msgstr ""
#: whatsnew/3.0.rst:173
msgid ""
":func:`range` now behaves like :func:`xrange` used to behave, except it "
"works with values of arbitrary size. The latter no longer exists."
msgstr ""
#: whatsnew/3.0.rst:177
msgid ":func:`zip` now returns an iterator."
msgstr ":func:`zip` renvoie maintenant un itérateur."
#: whatsnew/3.0.rst:180
msgid "Ordering Comparisons"
msgstr ""
#: whatsnew/3.0.rst:182
msgid "Python 3.0 has simplified the rules for ordering comparisons:"
msgstr ""
#: whatsnew/3.0.rst:184
msgid ""
"The ordering comparison operators (``<``, ``<=``, ``>=``, ``>``) raise a "
"TypeError exception when the operands don't have a meaningful natural "
"ordering. Thus, expressions like ``1 < ''``, ``0 > None`` or ``len <= len`` "
"are no longer valid, and e.g. ``None < None`` raises :exc:`TypeError` "
"instead of returning ``False``. A corollary is that sorting a heterogeneous "
"list no longer makes sense -- all the elements must be comparable to each "
"other. Note that this does not apply to the ``==`` and ``!=`` operators: "
"objects of different incomparable types always compare unequal to each other."
msgstr ""
#: whatsnew/3.0.rst:195
msgid ""
":meth:`builtin.sorted` and :meth:`list.sort` no longer accept the *cmp* "
"argument providing a comparison function. Use the *key* argument instead. N."
"B. the *key* and *reverse* arguments are now \"keyword-only\"."
msgstr ""
#: whatsnew/3.0.rst:200
msgid ""
"The :func:`cmp` function should be treated as gone, and the :meth:`__cmp__` "
"special method is no longer supported. Use :meth:`__lt__` for sorting, :"
"meth:`__eq__` with :meth:`__hash__`, and other rich comparisons as needed. "
"(If you really need the :func:`cmp` functionality, you could use the "
"expression ``(a > b) - (a < b)`` as the equivalent for ``cmp(a, b)``.)"
msgstr ""
#: whatsnew/3.0.rst:207
msgid "Integers"
msgstr ""
#: whatsnew/3.0.rst:209
msgid ""
":pep:`237`: Essentially, :class:`long` renamed to :class:`int`. That is, "
"there is only one built-in integral type, named :class:`int`; but it behaves "
"mostly like the old :class:`long` type."
msgstr ""
#: whatsnew/3.0.rst:213
msgid ""
":pep:`238`: An expression like ``1/2`` returns a float. Use ``1//2`` to get "
"the truncating behavior. (The latter syntax has existed for years, at least "
"since Python 2.2.)"
msgstr ""
#: whatsnew/3.0.rst:217
msgid ""
"The :data:`sys.maxint` constant was removed, since there is no longer a "
"limit to the value of integers. However, :data:`sys.maxsize` can be used as "
"an integer larger than any practical list or string index. It conforms to "
"the implementation's \"natural\" integer size and is typically the same as :"
"data:`sys.maxint` in previous releases on the same platform (assuming the "
"same build options)."
msgstr ""
#: whatsnew/3.0.rst:224
msgid ""
"The :func:`repr` of a long integer doesn't include the trailing ``L`` "
"anymore, so code that unconditionally strips that character will chop off "
"the last digit instead. (Use :func:`str` instead.)"
msgstr ""
#: whatsnew/3.0.rst:228
msgid ""
"Octal literals are no longer of the form ``0720``; use ``0o720`` instead."
msgstr ""
#: whatsnew/3.0.rst:232
msgid "Text Vs. Data Instead Of Unicode Vs. 8-bit"
msgstr ""
#: whatsnew/3.0.rst:234
msgid ""
"Everything you thought you knew about binary data and Unicode has changed."
msgstr ""
#: whatsnew/3.0.rst:237
msgid ""
"Python 3.0 uses the concepts of *text* and (binary) *data* instead of "
"Unicode strings and 8-bit strings. All text is Unicode; however *encoded* "
"Unicode is represented as binary data. The type used to hold text is :class:"
"`str`, the type used to hold data is :class:`bytes`. The biggest difference "
"with the 2.x situation is that any attempt to mix text and data in Python "
"3.0 raises :exc:`TypeError`, whereas if you were to mix Unicode and 8-bit "
"strings in Python 2.x, it would work if the 8-bit string happened to contain "
"only 7-bit (ASCII) bytes, but you would get :exc:`UnicodeDecodeError` if it "
"contained non-ASCII values. This value-specific behavior has caused "
"numerous sad faces over the years."
msgstr ""
#: whatsnew/3.0.rst:250
msgid ""
"As a consequence of this change in philosophy, pretty much all code that "
"uses Unicode, encodings or binary data most likely has to change. The "
"change is for the better, as in the 2.x world there were numerous bugs "
"having to do with mixing encoded and unencoded text. To be prepared in "
"Python 2.x, start using :class:`unicode` for all unencoded text, and :class:"
"`str` for binary or encoded data only. Then the ``2to3`` tool will do most "
"of the work for you."
msgstr ""
#: whatsnew/3.0.rst:258
msgid ""
"You can no longer use ``u\"...\"`` literals for Unicode text. However, you "
"must use ``b\"...\"`` literals for binary data."
msgstr ""
#: whatsnew/3.0.rst:261
msgid ""
"As the :class:`str` and :class:`bytes` types cannot be mixed, you must "
"always explicitly convert between them. Use :meth:`str.encode` to go from :"
"class:`str` to :class:`bytes`, and :meth:`bytes.decode` to go from :class:"
"`bytes` to :class:`str`. You can also use ``bytes(s, encoding=...)`` and "
"``str(b, encoding=...)``, respectively."
msgstr ""
#: whatsnew/3.0.rst:268
msgid ""
"Like :class:`str`, the :class:`bytes` type is immutable. There is a "
"separate *mutable* type to hold buffered binary data, :class:`bytearray`. "
"Nearly all APIs that accept :class:`bytes` also accept :class:`bytearray`. "
"The mutable API is based on :class:`collections.MutableSequence`."
msgstr ""
#: whatsnew/3.0.rst:274
msgid ""
"All backslashes in raw string literals are interpreted literally. This means "
"that ``'\\U'`` and ``'\\u'`` escapes in raw strings are not treated "
"specially. For example, ``r'\\u20ac'`` is a string of 6 characters in "
"Python 3.0, whereas in 2.6, ``ur'\\u20ac'`` was the single \"euro\" "
"character. (Of course, this change only affects raw string literals; the "
"euro character is ``'\\u20ac'`` in Python 3.0.)"
msgstr ""
#: whatsnew/3.0.rst:281
msgid ""
"The built-in :class:`basestring` abstract type was removed. Use :class:"
"`str` instead. The :class:`str` and :class:`bytes` types don't have "
"functionality enough in common to warrant a shared base class. The ``2to3`` "
"tool (see below) replaces every occurrence of :class:`basestring` with :"
"class:`str`."
msgstr ""
#: whatsnew/3.0.rst:287
msgid ""
"Files opened as text files (still the default mode for :func:`open`) always "
"use an encoding to map between strings (in memory) and bytes (on disk). "
"Binary files (opened with a ``b`` in the mode argument) always use bytes in "
"memory. This means that if a file is opened using an incorrect mode or "
"encoding, I/O will likely fail loudly, instead of silently producing "
"incorrect data. It also means that even Unix users will have to specify the "
"correct mode (text or binary) when opening a file. There is a platform-"
"dependent default encoding, which on Unixy platforms can be set with the "
"``LANG`` environment variable (and sometimes also with some other platform-"
"specific locale-related environment variables). In many cases, but not all, "
"the system default is UTF-8; you should never count on this default. Any "
"application reading or writing more than pure ASCII text should probably "
"have a way to override the encoding. There is no longer any need for using "
"the encoding-aware streams in the :mod:`codecs` module."
msgstr ""
#: whatsnew/3.0.rst:304
msgid ""
"The initial values of :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys."
"stderr` are now unicode-only text files (i.e., they are instances of :class:"
"`io.TextIOBase`). To read and write bytes data with these streams, you need "
"to use their :data:`io.TextIOBase.buffer` attribute."
msgstr ""
#: whatsnew/3.0.rst:310
msgid ""
"Filenames are passed to and returned from APIs as (Unicode) strings. This "
"can present platform-specific problems because on some platforms filenames "
"are arbitrary byte strings. (On the other hand, on Windows filenames are "
"natively stored as Unicode.) As a work-around, most APIs (e.g. :func:`open` "
"and many functions in the :mod:`os` module) that take filenames accept :"
"class:`bytes` objects as well as strings, and a few APIs have a way to ask "
"for a :class:`bytes` return value. Thus, :func:`os.listdir` returns a list "
"of :class:`bytes` instances if the argument is a :class:`bytes` instance, "
"and :func:`os.getcwdb` returns the current working directory as a :class:"
"`bytes` instance. Note that when :func:`os.listdir` returns a list of "
"strings, filenames that cannot be decoded properly are omitted rather than "
"raising :exc:`UnicodeError`."
msgstr ""
#: whatsnew/3.0.rst:325
msgid ""
"Some system APIs like :data:`os.environ` and :data:`sys.argv` can also "
"present problems when the bytes made available by the system is not "
"interpretable using the default encoding. Setting the ``LANG`` variable and "
"rerunning the program is probably the best approach."
msgstr ""
#: whatsnew/3.0.rst:330
msgid ""
":pep:`3138`: The :func:`repr` of a string no longer escapes non-ASCII "
"characters. It still escapes control characters and code points with non-"
"printable status in the Unicode standard, however."
msgstr ""
#: whatsnew/3.0.rst:334
msgid ":pep:`3120`: The default source encoding is now UTF-8."
msgstr ""
#: whatsnew/3.0.rst:336
msgid ""
":pep:`3131`: Non-ASCII letters are now allowed in identifiers. (However, the "
"standard library remains ASCII-only with the exception of contributor names "
"in comments.)"
msgstr ""
#: whatsnew/3.0.rst:340
msgid ""
"The :mod:`StringIO` and :mod:`cStringIO` modules are gone. Instead, import "
"the :mod:`io` module and use :class:`io.StringIO` or :class:`io.BytesIO` for "
"text and data respectively."
msgstr ""
#: whatsnew/3.0.rst:344
msgid "See also the :ref:`unicode-howto`, which was updated for Python 3.0."
msgstr ""
#: whatsnew/3.0.rst:348
msgid "Overview Of Syntax Changes"
msgstr ""
#: whatsnew/3.0.rst:350
msgid ""
"This section gives a brief overview of every *syntactic* change in Python "
"3.0."
msgstr ""
#: whatsnew/3.0.rst:354
msgid "New Syntax"
msgstr ""
#: whatsnew/3.0.rst:356
msgid ""
":pep:`3107`: Function argument and return value annotations. This provides "
"a standardized way of annotating a function's parameters and return value. "
"There are no semantics attached to such annotations except that they can be "
"introspected at runtime using the :attr:`__annotations__` attribute. The "
"intent is to encourage experimentation through metaclasses, decorators or "
"frameworks."
msgstr ""
#: whatsnew/3.0.rst:363
msgid ""
":pep:`3102`: Keyword-only arguments. Named parameters occurring after "
"``*args`` in the parameter list *must* be specified using keyword syntax in "
"the call. You can also use a bare ``*`` in the parameter list to indicate "
"that you don't accept a variable-length argument list, but you do have "
"keyword-only arguments."
msgstr ""
#: whatsnew/3.0.rst:369
msgid ""
"Keyword arguments are allowed after the list of base classes in a class "
"definition. This is used by the new convention for specifying a metaclass "
"(see next section), but can be used for other purposes as well, as long as "
"the metaclass supports it."
msgstr ""
#: whatsnew/3.0.rst:374
msgid ""
":pep:`3104`: :keyword:`nonlocal` statement. Using ``nonlocal x`` you can "
"now assign directly to a variable in an outer (but non-global) scope. :"
"keyword:`!nonlocal` is a new reserved word."
msgstr ""
#: whatsnew/3.0.rst:378
msgid ""
":pep:`3132`: Extended Iterable Unpacking. You can now write things like "
"``a, b, *rest = some_sequence``. And even ``*rest, a = stuff``. The "
"``rest`` object is always a (possibly empty) list; the right-hand side may "
"be any iterable. Example::"
msgstr ""
#: whatsnew/3.0.rst:385
msgid "This sets *a* to ``0``, *b* to ``4``, and *rest* to ``[1, 2, 3]``."
msgstr ""
#: whatsnew/3.0.rst:387
msgid ""
"Dictionary comprehensions: ``{k: v for k, v in stuff}`` means the same thing "
"as ``dict(stuff)`` but is more flexible. (This is :pep:`274` vindicated. :-)"
msgstr ""
#: whatsnew/3.0.rst:391
msgid ""
"Set literals, e.g. ``{1, 2}``. Note that ``{}`` is an empty dictionary; use "
"``set()`` for an empty set. Set comprehensions are also supported; e.g., "
"``{x for x in stuff}`` means the same thing as ``set(stuff)`` but is more "
"flexible."
msgstr ""
#: whatsnew/3.0.rst:396
msgid ""
"New octal literals, e.g. ``0o720`` (already in 2.6). The old octal literals "
"(``0720``) are gone."
msgstr ""
#: whatsnew/3.0.rst:399
msgid ""
"New binary literals, e.g. ``0b1010`` (already in 2.6), and there is a new "
"corresponding built-in function, :func:`bin`."
msgstr ""
#: whatsnew/3.0.rst:402
msgid ""
"Bytes literals are introduced with a leading ``b`` or ``B``, and there is a "
"new corresponding built-in function, :func:`bytes`."
msgstr ""
#: whatsnew/3.0.rst:406
msgid "Changed Syntax"
msgstr ""
#: whatsnew/3.0.rst:408
msgid ""
":pep:`3109` and :pep:`3134`: new :keyword:`raise` statement syntax: :samp:"
"`raise [{expr} [from {expr}]]`. See below."
msgstr ""
#: whatsnew/3.0.rst:411
msgid ""
":keyword:`!as` and :keyword:`with` are now reserved words. (Since 2.6, "
"actually.)"
msgstr ""
#: whatsnew/3.0.rst:414
msgid ""
"``True``, ``False``, and ``None`` are reserved words. (2.6 partially "
"enforced the restrictions on ``None`` already.)"
msgstr ""
#: whatsnew/3.0.rst:417
msgid ""
"Change from :keyword:`except` *exc*, *var* to :keyword:`!except` *exc* :"
"keyword:`!as` *var*. See :pep:`3110`."
msgstr ""
#: whatsnew/3.0.rst:420
msgid ":pep:`3115`: New Metaclass Syntax. Instead of::"
msgstr ""
#: whatsnew/3.0.rst:426
msgid "you must now use::"
msgstr ""
#: whatsnew/3.0.rst:431
msgid ""
"The module-global :data:`__metaclass__` variable is no longer supported. "
"(It was a crutch to make it easier to default to new-style classes without "
"deriving every class from :class:`object`.)"
msgstr ""
#: whatsnew/3.0.rst:436
msgid ""
"List comprehensions no longer support the syntactic form :samp:`[... for "
"{var} in {item1}, {item2}, ...]`. Use :samp:`[... for {var} in ({item1}, "
"{item2}, ...)]` instead. Also note that list comprehensions have different "
"semantics: they are closer to syntactic sugar for a generator expression "
"inside a :func:`list` constructor, and in particular the loop control "
"variables are no longer leaked into the surrounding scope."
msgstr ""
#: whatsnew/3.0.rst:444
msgid ""
"The *ellipsis* (``...``) can be used as an atomic expression anywhere. "
"(Previously it was only allowed in slices.) Also, it *must* now be spelled "
"as ``...``. (Previously it could also be spelled as ``. . .``, by a mere "
"accident of the grammar.)"
msgstr ""
#: whatsnew/3.0.rst:450
msgid "Removed Syntax"
msgstr ""
#: whatsnew/3.0.rst:452
msgid ""
":pep:`3113`: Tuple parameter unpacking removed. You can no longer write "
"``def foo(a, (b, c)): ...``. Use ``def foo(a, b_c): b, c = b_c`` instead."
msgstr ""
#: whatsnew/3.0.rst:456
msgid "Removed backticks (use :func:`repr` instead)."
msgstr ""
#: whatsnew/3.0.rst:458
msgid "Removed ``<>`` (use ``!=`` instead)."
msgstr ""
#: whatsnew/3.0.rst:460
msgid ""
"Removed keyword: :func:`exec` is no longer a keyword; it remains as a "
"function. (Fortunately the function syntax was also accepted in 2.x.) Also "
"note that :func:`exec` no longer takes a stream argument; instead of "
"``exec(f)`` you can use ``exec(f.read())``."
msgstr ""
#: whatsnew/3.0.rst:465
msgid "Integer literals no longer support a trailing ``l`` or ``L``."
msgstr ""
#: whatsnew/3.0.rst:467
msgid "String literals no longer support a leading ``u`` or ``U``."
msgstr ""
#: whatsnew/3.0.rst:469
msgid ""
"The :keyword:`from` *module* :keyword:`import` ``*`` syntax is only allowed "
"at the module level, no longer inside functions."
msgstr ""
#: whatsnew/3.0.rst:472
msgid ""
"The only acceptable syntax for relative imports is :samp:`from .[{module}] "
"import {name}`. All :keyword:`import` forms not starting with ``.`` are "
"interpreted as absolute imports. (:pep:`328`)"
msgstr ""
#: whatsnew/3.0.rst:476
msgid "Classic classes are gone."
msgstr ""
#: whatsnew/3.0.rst:480
msgid "Changes Already Present In Python 2.6"
msgstr ""
#: whatsnew/3.0.rst:482
msgid ""
"Since many users presumably make the jump straight from Python 2.5 to Python "
"3.0, this section reminds the reader of new features that were originally "
"designed for Python 3.0 but that were back-ported to Python 2.6. The "
"corresponding sections in :ref:`whats-new-in-2.6` should be consulted for "
"longer descriptions."
msgstr ""
#: whatsnew/3.0.rst:488
msgid ""
":ref:`pep-0343`. The :keyword:`with` statement is now a standard feature "
"and no longer needs to be imported from the :mod:`__future__`. Also check "
"out :ref:`new-26-context-managers` and :ref:`new-module-contextlib`."
msgstr ""
#: whatsnew/3.0.rst:493
msgid ""
":ref:`pep-0366`. This enhances the usefulness of the :option:`-m` option "
"when the referenced module lives in a package."
msgstr ""
#: whatsnew/3.0.rst:496
msgid ":ref:`pep-0370`."
msgstr ":ref:`pep-0370`."
#: whatsnew/3.0.rst:498
msgid ":ref:`pep-0371`."
msgstr ":ref:`pep-0371`."
#: whatsnew/3.0.rst:500
msgid ""
":ref:`pep-3101`. Note: the 2.6 description mentions the :meth:`format` "
"method for both 8-bit and Unicode strings. In 3.0, only the :class:`str` "
"type (text strings with Unicode support) supports this method; the :class:"
"`bytes` type does not. The plan is to eventually make this the only API for "
"string formatting, and to start deprecating the ``%`` operator in Python 3.1."
msgstr ""
#: whatsnew/3.0.rst:507
msgid ""
":ref:`pep-3105`. This is now a standard feature and no longer needs to be "
"imported from :mod:`__future__`. More details were given above."
msgstr ""
#: whatsnew/3.0.rst:510
msgid ""
":ref:`pep-3110`. The :keyword:`except` *exc* :keyword:`!as` *var* syntax is "
"now standard and :keyword:`!except` *exc*, *var* is no longer supported. "
"(Of course, the :keyword:`!as` *var* part is still optional.)"
msgstr ""
#: whatsnew/3.0.rst:515
msgid ""
":ref:`pep-3112`. The ``b\"...\"`` string literal notation (and its variants "
"like ``b'...'``, ``b\"\"\"...\"\"\"``, and ``br\"...\"``) now produces a "
"literal of type :class:`bytes`."
msgstr ""
#: whatsnew/3.0.rst:519
msgid ""
":ref:`pep-3116`. The :mod:`io` module is now the standard way of doing file "
"I/O. The built-in :func:`open` function is now an alias for :func:`io.open` "
"and has additional keyword arguments *encoding*, *errors*, *newline* and "
"*closefd*. Also note that an invalid *mode* argument now raises :exc:"
"`ValueError`, not :exc:`IOError`. The binary file object underlying a text "
"file object can be accessed as :attr:`f.buffer` (but beware that the text "
"object maintains a buffer of itself in order to speed up the encoding and "
"decoding operations)."
msgstr ""
#: whatsnew/3.0.rst:529
msgid ""
":ref:`pep-3118`. The old builtin :func:`buffer` is now really gone; the new "
"builtin :func:`memoryview` provides (mostly) similar functionality."
msgstr ""
#: whatsnew/3.0.rst:533
msgid ""
":ref:`pep-3119`. The :mod:`abc` module and the ABCs defined in the :mod:"
"`collections` module plays a somewhat more prominent role in the language "
"now, and built-in collection types like :class:`dict` and :class:`list` "
"conform to the :class:`collections.MutableMapping` and :class:`collections."
"MutableSequence` ABCs, respectively."
msgstr ""
#: whatsnew/3.0.rst:539
msgid ""
":ref:`pep-3127`. As mentioned above, the new octal literal notation is the "
"only one supported, and binary literals have been added."
msgstr ""
#: whatsnew/3.0.rst:543
msgid ":ref:`pep-3129`."
msgstr ":ref:`pep-3129`."
#: whatsnew/3.0.rst:545
msgid ""
":ref:`pep-3141`. The :mod:`numbers` module is another new use of ABCs, "
"defining Python's \"numeric tower\". Also note the new :mod:`fractions` "
"module which implements :class:`numbers.Rational`."
msgstr ""
#: whatsnew/3.0.rst:551
msgid "Library Changes"
msgstr ""
#: whatsnew/3.0.rst:553
msgid ""
"Due to time constraints, this document does not exhaustively cover the very "
"extensive changes to the standard library. :pep:`3108` is the reference for "
"the major changes to the library. Here's a capsule review:"
msgstr ""
#: whatsnew/3.0.rst:558
msgid ""
"Many old modules were removed. Some, like :mod:`gopherlib` (no longer used) "
"and :mod:`md5` (replaced by :mod:`hashlib`), were already deprecated by :pep:"
"`4`. Others were removed as a result of the removal of support for various "
"platforms such as Irix, BeOS and Mac OS 9 (see :pep:`11`). Some modules "
"were also selected for removal in Python 3.0 due to lack of use or because a "
"better replacement exists. See :pep:`3108` for an exhaustive list."
msgstr ""
#: whatsnew/3.0.rst:566
msgid ""
"The :mod:`bsddb3` package was removed because its presence in the core "
"standard library has proved over time to be a particular burden for the core "
"developers due to testing instability and Berkeley DB's release schedule. "
"However, the package is alive and well, externally maintained at https://www."
"jcea.es/programacion/pybsddb.htm."
msgstr ""
#: whatsnew/3.0.rst:572
msgid ""
"Some modules were renamed because their old name disobeyed :pep:`8`, or for "
"various other reasons. Here's the list:"
msgstr ""
#: whatsnew/3.0.rst:576
msgid "Old Name"
msgstr ""
#: whatsnew/3.0.rst:576
msgid "New Name"
msgstr ""
#: whatsnew/3.0.rst:578
msgid "_winreg"
msgstr ""
#: whatsnew/3.0.rst:578
msgid "winreg"
msgstr ""
#: whatsnew/3.0.rst:579
msgid "ConfigParser"
msgstr "ConfigParser"
#: whatsnew/3.0.rst:579
msgid "configparser"
msgstr "configparser"
#: whatsnew/3.0.rst:580
msgid "copy_reg"
msgstr ""
#: whatsnew/3.0.rst:580
msgid "copyreg"
msgstr ""
#: whatsnew/3.0.rst:581
msgid "Queue"
msgstr ""
#: whatsnew/3.0.rst:581
msgid "queue"
msgstr ""
#: whatsnew/3.0.rst:582
msgid "SocketServer"
msgstr ""
#: whatsnew/3.0.rst:582
msgid "socketserver"
msgstr ""
#: whatsnew/3.0.rst:583
msgid "markupbase"
msgstr ""
#: whatsnew/3.0.rst:583
msgid "_markupbase"
msgstr ""
#: whatsnew/3.0.rst:584
msgid "repr"
msgstr ""
#: whatsnew/3.0.rst:584
msgid "reprlib"
msgstr ""
#: whatsnew/3.0.rst:585
msgid "test.test_support"
msgstr ""
#: whatsnew/3.0.rst:585
msgid "test.support"
msgstr ""
#: whatsnew/3.0.rst:588
msgid ""
"A common pattern in Python 2.x is to have one version of a module "
"implemented in pure Python, with an optional accelerated version implemented "
"as a C extension; for example, :mod:`pickle` and :mod:`cPickle`. This "
"places the burden of importing the accelerated version and falling back on "
"the pure Python version on each user of these modules. In Python 3.0, the "
"accelerated versions are considered implementation details of the pure "
"Python versions. Users should always import the standard version, which "
"attempts to import the accelerated version and falls back to the pure Python "
"version. The :mod:`pickle` / :mod:`cPickle` pair received this treatment. "
"The :mod:`profile` module is on the list for 3.1. The :mod:`StringIO` "
"module has been turned into a class in the :mod:`io` module."
msgstr ""
#: whatsnew/3.0.rst:602
msgid ""
"Some related modules have been grouped into packages, and usually the "
"submodule names have been simplified. The resulting new packages are:"
msgstr ""
#: whatsnew/3.0.rst:606
msgid ""
":mod:`dbm` (:mod:`anydbm`, :mod:`dbhash`, :mod:`dbm`, :mod:`dumbdbm`, :mod:"
"`gdbm`, :mod:`whichdb`)."
msgstr ""
#: whatsnew/3.0.rst:609
msgid ":mod:`html` (:mod:`HTMLParser`, :mod:`htmlentitydefs`)."
msgstr ""
#: whatsnew/3.0.rst:611
msgid ""
":mod:`http` (:mod:`httplib`, :mod:`BaseHTTPServer`, :mod:`CGIHTTPServer`, :"
"mod:`SimpleHTTPServer`, :mod:`Cookie`, :mod:`cookielib`)."
msgstr ""
#: whatsnew/3.0.rst:615
msgid ""
":mod:`tkinter` (all :mod:`Tkinter`-related modules except :mod:`turtle`). "
"The target audience of :mod:`turtle` doesn't really care about :mod:"
"`tkinter`. Also note that as of Python 2.6, the functionality of :mod:"
"`turtle` has been greatly enhanced."
msgstr ""
#: whatsnew/3.0.rst:620
msgid ""
":mod:`urllib` (:mod:`urllib`, :mod:`urllib2`, :mod:`urlparse`, :mod:"
"`robotparse`)."
msgstr ""
#: whatsnew/3.0.rst:623
msgid ""
":mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`, :mod:"
"`SimpleXMLRPCServer`)."
msgstr ""
#: whatsnew/3.0.rst:626
msgid ""
"Some other changes to standard library modules, not covered by :pep:`3108`:"
msgstr ""
#: whatsnew/3.0.rst:629
msgid "Killed :mod:`sets`. Use the built-in :func:`set` class."
msgstr ""
#: whatsnew/3.0.rst:631
msgid ""
"Cleanup of the :mod:`sys` module: removed :func:`sys.exitfunc`, :func:`sys."
"exc_clear`, :data:`sys.exc_type`, :data:`sys.exc_value`, :data:`sys."
"exc_traceback`. (Note that :data:`sys.last_type` etc. remain.)"
msgstr ""
#: whatsnew/3.0.rst:636
msgid ""
"Cleanup of the :class:`array.array` type: the :meth:`read` and :meth:`write` "
"methods are gone; use :meth:`fromfile` and :meth:`tofile` instead. Also, "
"the ``'c'`` typecode for array is gone -- use either ``'b'`` for bytes or "
"``'u'`` for Unicode characters."
msgstr ""
#: whatsnew/3.0.rst:642
msgid ""
"Cleanup of the :mod:`operator` module: removed :func:`sequenceIncludes` and :"
"func:`isCallable`."
msgstr ""
#: whatsnew/3.0.rst:645
msgid ""
"Cleanup of the :mod:`thread` module: :func:`acquire_lock` and :func:"
"`release_lock` are gone; use :func:`acquire` and :func:`release` instead."
msgstr ""
#: whatsnew/3.0.rst:649
msgid "Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API."
msgstr ""
#: whatsnew/3.0.rst:651
msgid "The :mod:`new` module is gone."
msgstr ""
#: whatsnew/3.0.rst:653
msgid ""
"The functions :func:`os.tmpnam`, :func:`os.tempnam` and :func:`os.tmpfile` "
"have been removed in favor of the :mod:`tempfile` module."
msgstr ""
#: whatsnew/3.0.rst:657
msgid ""
"The :mod:`tokenize` module has been changed to work with bytes. The main "
"entry point is now :func:`tokenize.tokenize`, instead of generate_tokens."
msgstr ""
#: whatsnew/3.0.rst:661
msgid ""
":data:`string.letters` and its friends (:data:`string.lowercase` and :data:"
"`string.uppercase`) are gone. Use :data:`string.ascii_letters` etc. "
"instead. (The reason for the removal is that :data:`string.letters` and "
"friends had locale-specific behavior, which is a bad idea for such "
"attractively named global \"constants\".)"
msgstr ""
#: whatsnew/3.0.rst:668
msgid ""
"Renamed module :mod:`__builtin__` to :mod:`builtins` (removing the "
"underscores, adding an 's'). The :data:`__builtins__` variable found in "
"most global namespaces is unchanged. To modify a builtin, you should use :"
"mod:`builtins`, not :data:`__builtins__`!"
msgstr ""
#: whatsnew/3.0.rst:675
msgid ":pep:`3101`: A New Approach To String Formatting"
msgstr ""
#: whatsnew/3.0.rst:677
msgid ""
"A new system for built-in string formatting operations replaces the ``%`` "
"string formatting operator. (However, the ``%`` operator is still "
"supported; it will be deprecated in Python 3.1 and removed from the "
"language at some later time.) Read :pep:`3101` for the full scoop."
msgstr ""
#: whatsnew/3.0.rst:685
msgid "Changes To Exceptions"
msgstr ""
#: whatsnew/3.0.rst:687
msgid ""
"The APIs for raising and catching exception have been cleaned up and new "
"powerful features added:"
msgstr ""
#: whatsnew/3.0.rst:690
msgid ""
":pep:`352`: All exceptions must be derived (directly or indirectly) from :"
"exc:`BaseException`. This is the root of the exception hierarchy. This is "
"not new as a recommendation, but the *requirement* to inherit from :exc:"
"`BaseException` is new. (Python 2.6 still allowed classic classes to be "
"raised, and placed no restriction on what you can catch.) As a consequence, "
"string exceptions are finally truly and utterly dead."
msgstr ""
#: whatsnew/3.0.rst:698
msgid ""
"Almost all exceptions should actually derive from :exc:`Exception`; :exc:"
"`BaseException` should only be used as a base class for exceptions that "
"should only be handled at the top level, such as :exc:`SystemExit` or :exc:"
"`KeyboardInterrupt`. The recommended idiom for handling all exceptions "
"except for this latter category is to use :keyword:`except` :exc:`Exception`."
msgstr ""
#: whatsnew/3.0.rst:705
msgid ":exc:`StandardError` was removed."
msgstr ""
#: whatsnew/3.0.rst:707
msgid ""
"Exceptions no longer behave as sequences. Use the :attr:`args` attribute "
"instead."
msgstr ""
#: whatsnew/3.0.rst:710
msgid ""
":pep:`3109`: Raising exceptions. You must now use :samp:`raise {Exception}"
"({args})` instead of :samp:`raise {Exception}, {args}`. Additionally, you "
"can no longer explicitly specify a traceback; instead, if you *have* to do "
"this, you can assign directly to the :attr:`__traceback__` attribute (see "
"below)."
msgstr ""
#: whatsnew/3.0.rst:716
msgid ""
":pep:`3110`: Catching exceptions. You must now use :samp:`except "
"{SomeException} as {variable}` instead of :samp:`except {SomeException}, "
"{variable}`. Moreover, the *variable* is explicitly deleted when the :"
"keyword:`except` block is left."
msgstr ""
#: whatsnew/3.0.rst:722
msgid ""
":pep:`3134`: Exception chaining. There are two cases: implicit chaining and "
"explicit chaining. Implicit chaining happens when an exception is raised in "
"an :keyword:`except` or :keyword:`finally` handler block. This usually "
"happens due to a bug in the handler block; we call this a *secondary* "
"exception. In this case, the original exception (that was being handled) is "
"saved as the :attr:`__context__` attribute of the secondary exception. "
"Explicit chaining is invoked with this syntax::"
msgstr ""
#: whatsnew/3.0.rst:733
msgid ""
"(where *primary_exception* is any expression that produces an exception "
"object, probably an exception that was previously caught). In this case, the "
"primary exception is stored on the :attr:`__cause__` attribute of the "
"secondary exception. The traceback printed when an unhandled exception "
"occurs walks the chain of :attr:`__cause__` and :attr:`__context__` "
"attributes and prints a separate traceback for each component of the chain, "
"with the primary exception at the top. (Java users may recognize this "
"behavior.)"
msgstr ""
#: whatsnew/3.0.rst:742
msgid ""
":pep:`3134`: Exception objects now store their traceback as the :attr:"
"`__traceback__` attribute. This means that an exception object now contains "
"all the information pertaining to an exception, and there are fewer reasons "
"to use :func:`sys.exc_info` (though the latter is not removed)."
msgstr ""
#: whatsnew/3.0.rst:748
msgid ""
"A few exception messages are improved when Windows fails to load an "
"extension module. For example, ``error code 193`` is now ``%1 is not a "
"valid Win32 application``. Strings now deal with non-English locales."
msgstr ""
#: whatsnew/3.0.rst:755
msgid "Miscellaneous Other Changes"
msgstr ""
#: whatsnew/3.0.rst:758
msgid "Operators And Special Methods"
msgstr ""
#: whatsnew/3.0.rst:760
msgid ""
"``!=`` now returns the opposite of ``==``, unless ``==`` returns :data:"
"`NotImplemented`."
msgstr ""
#: whatsnew/3.0.rst:763
msgid ""
"The concept of \"unbound methods\" has been removed from the language. When "
"referencing a method as a class attribute, you now get a plain function "
"object."
msgstr ""
#: whatsnew/3.0.rst:767
msgid ""
":meth:`__getslice__`, :meth:`__setslice__` and :meth:`__delslice__` were "
"killed. The syntax ``a[i:j]`` now translates to ``a.__getitem__(slice(i, "
"j))`` (or :meth:`__setitem__` or :meth:`__delitem__`, when used as an "
"assignment or deletion target, respectively)."
msgstr ""
#: whatsnew/3.0.rst:773
msgid ""
":pep:`3114`: the standard :meth:`next` method has been renamed to :meth:"
"`~iterator.__next__`."
msgstr ""
#: whatsnew/3.0.rst:776
msgid ""
"The :meth:`__oct__` and :meth:`__hex__` special methods are removed -- :func:"
"`oct` and :func:`hex` use :meth:`__index__` now to convert the argument to "
"an integer."
msgstr ""
#: whatsnew/3.0.rst:780
msgid "Removed support for :attr:`__members__` and :attr:`__methods__`."
msgstr ""
#: whatsnew/3.0.rst:782
msgid ""
"The function attributes named :attr:`func_X` have been renamed to use the :"
"data:`__X__` form, freeing up these names in the function attribute "
"namespace for user-defined attributes. To wit, :attr:`func_closure`, :attr:"
"`func_code`, :attr:`func_defaults`, :attr:`func_dict`, :attr:`func_doc`, :"
"attr:`func_globals`, :attr:`func_name` were renamed to :attr:`__closure__`, :"
"attr:`__code__`, :attr:`__defaults__`, :attr:`~object.__dict__`, :attr:"
"`__doc__`, :attr:`__globals__`, :attr:`~definition.__name__`, respectively."
msgstr ""
#: whatsnew/3.0.rst:792
msgid ":meth:`__nonzero__` is now :meth:`__bool__`."
msgstr ""
#: whatsnew/3.0.rst:795
msgid "Builtins"
msgstr ""
#: whatsnew/3.0.rst:797
msgid ""
":pep:`3135`: New :func:`super`. You can now invoke :func:`super` without "
"arguments and (assuming this is in a regular instance method defined inside "
"a :keyword:`class` statement) the right class and instance will "
"automatically be chosen. With arguments, the behavior of :func:`super` is "
"unchanged."
msgstr ""
#: whatsnew/3.0.rst:803
msgid ""
":pep:`3111`: :func:`raw_input` was renamed to :func:`input`. That is, the "
"new :func:`input` function reads a line from :data:`sys.stdin` and returns "
"it with the trailing newline stripped. It raises :exc:`EOFError` if the "
"input is terminated prematurely. To get the old behavior of :func:`input`, "
"use ``eval(input())``."
msgstr ""
#: whatsnew/3.0.rst:809
msgid ""
"A new built-in function :func:`next` was added to call the :meth:`~iterator."
"__next__` method on an object."
msgstr ""
#: whatsnew/3.0.rst:812
msgid ""
"The :func:`round` function rounding strategy and return type have changed. "
"Exact halfway cases are now rounded to the nearest even result instead of "
"away from zero. (For example, ``round(2.5)`` now returns ``2`` rather than "
"``3``.) ``round(x[, n])`` now delegates to ``x.__round__([n])`` instead of "
"always returning a float. It generally returns an integer when called with "
"a single argument and a value of the same type as ``x`` when called with two "
"arguments."
msgstr ""
#: whatsnew/3.0.rst:821
msgid "Moved :func:`intern` to :func:`sys.intern`."
msgstr ""
#: whatsnew/3.0.rst:823
msgid ""
"Removed: :func:`apply`. Instead of ``apply(f, args)`` use ``f(*args)``."
msgstr ""
#: whatsnew/3.0.rst:826
msgid ""
"Removed :func:`callable`. Instead of ``callable(f)`` you can use "
"``isinstance(f, collections.Callable)``. The :func:`operator.isCallable` "
"function is also gone."
msgstr ""
#: whatsnew/3.0.rst:830
msgid ""
"Removed :func:`coerce`. This function no longer serves a purpose now that "
"classic classes are gone."
msgstr ""
#: whatsnew/3.0.rst:833
msgid ""
"Removed :func:`execfile`. Instead of ``execfile(fn)`` use ``exec(open(fn)."
"read())``."
msgstr ""
#: whatsnew/3.0.rst:836
msgid ""
"Removed the :class:`file` type. Use :func:`open`. There are now several "
"different kinds of streams that open can return in the :mod:`io` module."
msgstr ""
#: whatsnew/3.0.rst:839
msgid ""
"Removed :func:`reduce`. Use :func:`functools.reduce` if you really need it; "
"however, 99 percent of the time an explicit :keyword:`for` loop is more "
"readable."
msgstr ""
#: whatsnew/3.0.rst:843
msgid "Removed :func:`reload`. Use :func:`imp.reload`."
msgstr ""
#: whatsnew/3.0.rst:845
msgid ""
"Removed. :meth:`dict.has_key` -- use the :keyword:`in` operator instead."
msgstr ""
#: whatsnew/3.0.rst:852
msgid "Build and C API Changes"
msgstr ""
#: whatsnew/3.0.rst:854
msgid ""
"Due to time constraints, here is a *very* incomplete list of changes to the "
"C API."
msgstr ""
#: whatsnew/3.0.rst:857
msgid ""
"Support for several platforms was dropped, including but not limited to Mac "
"OS 9, BeOS, RISCOS, Irix, and Tru64."
msgstr ""
#: whatsnew/3.0.rst:860
msgid ":pep:`3118`: New Buffer API."
msgstr ""
#: whatsnew/3.0.rst:862
msgid ":pep:`3121`: Extension Module Initialization & Finalization."
msgstr ""
#: whatsnew/3.0.rst:864
msgid ":pep:`3123`: Making :c:macro:`PyObject_HEAD` conform to standard C."
msgstr ""
#: whatsnew/3.0.rst:866
msgid "No more C API support for restricted execution."
msgstr ""
#: whatsnew/3.0.rst:868
msgid ""
":c:func:`PyNumber_Coerce`, :c:func:`PyNumber_CoerceEx`, :c:func:"
"`PyMember_Get`, and :c:func:`PyMember_Set` C APIs are removed."
msgstr ""
#: whatsnew/3.0.rst:871
msgid ""
"New C API :c:func:`PyImport_ImportModuleNoBlock`, works like :c:func:"
"`PyImport_ImportModule` but won't block on the import lock (returning an "
"error instead)."
msgstr ""
#: whatsnew/3.0.rst:875
msgid ""
"Renamed the boolean conversion C-level slot and method: ``nb_nonzero`` is "
"now ``nb_bool``."
msgstr ""
#: whatsnew/3.0.rst:878
msgid ""
"Removed :c:macro:`METH_OLDARGS` and :c:macro:`WITH_CYCLE_GC` from the C API."
msgstr ""
#: whatsnew/3.0.rst:884
msgid "Performance"
msgstr "Performances"
#: whatsnew/3.0.rst:886
msgid ""
"The net result of the 3.0 generalizations is that Python 3.0 runs the "
"pystone benchmark around 10% slower than Python 2.5. Most likely the "
"biggest cause is the removal of special-casing for small integers. There's "
"room for improvement, but it will happen after 3.0 is released!"
msgstr ""
#: whatsnew/3.0.rst:896
msgid "Porting To Python 3.0"
msgstr "Portage vers Python 3.0"
#: whatsnew/3.0.rst:898
msgid ""
"For porting existing Python 2.5 or 2.6 source code to Python 3.0, the best "
"strategy is the following:"
msgstr ""
#: whatsnew/3.0.rst:901
msgid "(Prerequisite:) Start with excellent test coverage."
msgstr ""
#: whatsnew/3.0.rst:903
msgid ""
"Port to Python 2.6. This should be no more work than the average port from "
"Python 2.x to Python 2.(x+1). Make sure all your tests pass."
msgstr ""
#: whatsnew/3.0.rst:907
msgid ""
"(Still using 2.6:) Turn on the :option:`!-3` command line switch. This "
"enables warnings about features that will be removed (or change) in 3.0. "
"Run your test suite again, and fix code that you get warnings about until "
"there are no warnings left, and all your tests still pass."
msgstr ""
#: whatsnew/3.0.rst:913
msgid ""
"Run the ``2to3`` source-to-source translator over your source code tree. "
"(See :ref:`2to3-reference` for more on this tool.) Run the result of the "
"translation under Python 3.0. Manually fix up any remaining issues, fixing "
"problems until all tests pass again."
msgstr ""
#: whatsnew/3.0.rst:918
msgid ""
"It is not recommended to try to write source code that runs unchanged under "
"both Python 2.6 and 3.0; you'd have to use a very contorted coding style, e."
"g. avoiding ``print`` statements, metaclasses, and much more. If you are "
"maintaining a library that needs to support both Python 2.6 and Python 3.0, "
"the best approach is to modify step 3 above by editing the 2.6 version of "
"the source code and running the ``2to3`` translator again, rather than "
"editing the 3.0 version of the source code."
msgstr ""
#: whatsnew/3.0.rst:927
msgid ""
"For porting C extensions to Python 3.0, please see :ref:`cporting-howto`."
msgstr ""