2007-08-15 11:28:01 -03:00
|
|
|
:mod:`__future__` --- Future statement definitions
|
|
|
|
==================================================
|
|
|
|
|
|
|
|
.. module:: __future__
|
|
|
|
:synopsis: Future statement definitions
|
|
|
|
|
|
|
|
|
|
|
|
:mod:`__future__` is a real module, and serves three purposes:
|
|
|
|
|
|
|
|
* To avoid confusing existing tools that analyze import statements and expect to
|
|
|
|
find the modules they're importing.
|
|
|
|
|
Merged revisions 74492,74531,74545-74550,74553-74555,74588,74603,74608,74614,74616-74618,74631-74633,74652-74653,74666,74671,74737,74739,74779,74781-74782,74784,74791,74793,74818-74820,74822,74832 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74492 | r.david.murray | 2009-08-17 21:26:49 +0200 (Mo, 17 Aug 2009) | 2 lines
Issue 6685: 'toupper' -> 'upper' in cgi doc example explanation.
........
r74531 | vinay.sajip | 2009-08-21 00:04:32 +0200 (Fr, 21 Aug 2009) | 1 line
Added section on exceptions raised during logging.
........
r74545 | georg.brandl | 2009-08-24 19:14:29 +0200 (Mo, 24 Aug 2009) | 1 line
#6772: mention utf-8 as utf8 alias.
........
r74546 | georg.brandl | 2009-08-24 19:20:40 +0200 (Mo, 24 Aug 2009) | 1 line
#6725: spell "namespace" consistently.
........
r74547 | georg.brandl | 2009-08-24 19:22:05 +0200 (Mo, 24 Aug 2009) | 1 line
#6718: fix example.
........
r74548 | georg.brandl | 2009-08-24 19:24:27 +0200 (Mo, 24 Aug 2009) | 1 line
#6677: mention "deleting" as an alias for removing files.
........
r74549 | benjamin.peterson | 2009-08-24 19:42:36 +0200 (Mo, 24 Aug 2009) | 1 line
fix pdf building by teaching latex the right encoding package
........
r74550 | georg.brandl | 2009-08-24 19:48:40 +0200 (Mo, 24 Aug 2009) | 1 line
#6677: note that rmdir only removes empty directories.
........
r74553 | r.david.murray | 2009-08-27 03:04:59 +0200 (Do, 27 Aug 2009) | 2 lines
Remove leftover text from end of sentence.
........
r74554 | georg.brandl | 2009-08-27 20:59:02 +0200 (Do, 27 Aug 2009) | 1 line
Typo fix.
........
r74555 | georg.brandl | 2009-08-27 21:02:43 +0200 (Do, 27 Aug 2009) | 1 line
#6787: reference fix.
........
r74588 | georg.brandl | 2009-08-30 10:35:01 +0200 (So, 30 Aug 2009) | 1 line
#6803: fix old name.
........
r74603 | georg.brandl | 2009-08-31 08:38:29 +0200 (Mo, 31 Aug 2009) | 1 line
other -> others where multiple arguments are accepted.
........
r74608 | senthil.kumaran | 2009-08-31 18:40:27 +0200 (Mo, 31 Aug 2009) | 3 lines
Doc fix for the issue2637.
........
r74614 | georg.brandl | 2009-09-01 09:40:54 +0200 (Di, 01 Sep 2009) | 1 line
#6813: better documentation for numberless string formats.
........
r74616 | georg.brandl | 2009-09-01 09:46:26 +0200 (Di, 01 Sep 2009) | 1 line
#6808: clarification.
........
r74617 | georg.brandl | 2009-09-01 09:53:37 +0200 (Di, 01 Sep 2009) | 1 line
#6765: hint that log(x, base) is not very sophisticated.
........
r74618 | georg.brandl | 2009-09-01 10:00:47 +0200 (Di, 01 Sep 2009) | 1 line
#6810: add a link to the section about frame objects instead of just a description where to find it.
........
r74631 | georg.brandl | 2009-09-02 22:37:16 +0200 (Mi, 02 Sep 2009) | 1 line
#6821: fix signature of PyBuffer_Release().
........
r74632 | georg.brandl | 2009-09-03 09:27:26 +0200 (Do, 03 Sep 2009) | 1 line
#6828: fix wrongly highlighted blocks.
........
r74633 | georg.brandl | 2009-09-03 14:31:39 +0200 (Do, 03 Sep 2009) | 1 line
#6757: complete the list of types that marshal can serialize.
........
r74652 | georg.brandl | 2009-09-04 13:25:37 +0200 (Fr, 04 Sep 2009) | 1 line
#6756: add some info about the "acct" parameter.
........
r74653 | georg.brandl | 2009-09-04 13:32:18 +0200 (Fr, 04 Sep 2009) | 1 line
#6777: dont discourage usage of Exception.args or promote usage of Exception.message.
........
r74666 | georg.brandl | 2009-09-05 11:04:09 +0200 (Sa, 05 Sep 2009) | 1 line
#6841: remove duplicated word.
........
r74671 | georg.brandl | 2009-09-05 18:47:17 +0200 (Sa, 05 Sep 2009) | 1 line
#6843: add link from filterwarnings to where the meaning of the arguments is covered.
........
r74737 | georg.brandl | 2009-09-09 18:49:13 +0200 (Mi, 09 Sep 2009) | 1 line
Properly document copy and deepcopy as functions.
........
r74739 | georg.brandl | 2009-09-11 09:55:20 +0200 (Fr, 11 Sep 2009) | 1 line
Move function back to its section.
........
r74779 | michael.foord | 2009-09-13 18:13:36 +0200 (So, 13 Sep 2009) | 1 line
Change to tutorial wording for reading text / binary files on Windows. Issue #6301.
........
r74781 | michael.foord | 2009-09-13 18:46:19 +0200 (So, 13 Sep 2009) | 1 line
Note that sys._getframe is not guaranteed to exist in all implementations of Python, and a corresponding note in inspect.currentframe. Issue 6712.
........
r74782 | michael.foord | 2009-09-13 19:07:46 +0200 (So, 13 Sep 2009) | 1 line
Tutorial tweaks. Issue 6849.
........
r74784 | georg.brandl | 2009-09-13 20:15:07 +0200 (So, 13 Sep 2009) | 1 line
Typo fix.
........
r74791 | georg.brandl | 2009-09-14 16:08:54 +0200 (Mo, 14 Sep 2009) | 1 line
#6574: list the future features in a table.
........
r74793 | georg.brandl | 2009-09-14 16:50:47 +0200 (Mo, 14 Sep 2009) | 1 line
#6908: fix association of hashlib hash attributes.
........
r74818 | georg.brandl | 2009-09-16 11:23:04 +0200 (Mi, 16 Sep 2009) | 1 line
#6880: add reference to classes section in exceptions section, which comes earlier.
........
r74819 | georg.brandl | 2009-09-16 11:24:57 +0200 (Mi, 16 Sep 2009) | 1 line
#6876: fix base class constructor invocation in example.
........
r74820 | georg.brandl | 2009-09-16 11:30:48 +0200 (Mi, 16 Sep 2009) | 1 line
#6891: comment out dead link to Unicode article.
........
r74822 | georg.brandl | 2009-09-16 12:12:06 +0200 (Mi, 16 Sep 2009) | 1 line
#5621: refactor description of how class/instance attributes interact on a.x=a.x+1 or augassign.
........
r74832 | georg.brandl | 2009-09-16 17:57:46 +0200 (Mi, 16 Sep 2009) | 1 line
Rewrap long lines.
........
2009-10-27 11:50:20 -03:00
|
|
|
* To ensure that :ref:`future statements <future>` run under releases prior to
|
|
|
|
2.1 at least yield runtime exceptions (the import of :mod:`__future__` will
|
|
|
|
fail, because there was no module of that name prior to 2.1).
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
* To document when incompatible changes were introduced, and when they will be
|
|
|
|
--- or were --- made mandatory. This is a form of executable documentation, and
|
2008-07-12 17:16:19 -03:00
|
|
|
can be inspected programmatically via importing :mod:`__future__` and examining
|
2007-08-15 11:28:01 -03:00
|
|
|
its contents.
|
|
|
|
|
|
|
|
Each statement in :file:`__future__.py` is of the form::
|
|
|
|
|
2008-03-21 16:14:38 -03:00
|
|
|
FeatureName = _Feature(OptionalRelease, MandatoryRelease,
|
|
|
|
CompilerFlag)
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
|
|
|
|
where, normally, *OptionalRelease* is less than *MandatoryRelease*, and both are
|
|
|
|
5-tuples of the same form as ``sys.version_info``::
|
|
|
|
|
|
|
|
(PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int
|
|
|
|
PY_MINOR_VERSION, # the 1; an int
|
|
|
|
PY_MICRO_VERSION, # the 0; an int
|
|
|
|
PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string
|
|
|
|
PY_RELEASE_SERIAL # the 3; an int
|
|
|
|
)
|
|
|
|
|
|
|
|
*OptionalRelease* records the first release in which the feature was accepted.
|
|
|
|
|
|
|
|
In the case of a *MandatoryRelease* that has not yet occurred,
|
|
|
|
*MandatoryRelease* predicts the release in which the feature will become part of
|
|
|
|
the language.
|
|
|
|
|
|
|
|
Else *MandatoryRelease* records when the feature became part of the language; in
|
|
|
|
releases at or after that, modules no longer need a future statement to use the
|
|
|
|
feature in question, but may continue to use such imports.
|
|
|
|
|
|
|
|
*MandatoryRelease* may also be ``None``, meaning that a planned feature got
|
|
|
|
dropped.
|
|
|
|
|
|
|
|
Instances of class :class:`_Feature` have two corresponding methods,
|
|
|
|
:meth:`getOptionalRelease` and :meth:`getMandatoryRelease`.
|
|
|
|
|
|
|
|
*CompilerFlag* is the (bitfield) flag that should be passed in the fourth
|
2009-10-27 11:37:48 -03:00
|
|
|
argument to the built-in function :func:`compile` to enable the feature in
|
2007-08-15 11:28:01 -03:00
|
|
|
dynamically compiled code. This flag is stored in the :attr:`compiler_flag`
|
|
|
|
attribute on :class:`_Feature` instances.
|
|
|
|
|
Merged revisions 74492,74531,74545-74550,74553-74555,74588,74603,74608,74614,74616-74618,74631-74633,74652-74653,74666,74671,74737,74739,74779,74781-74782,74784,74791,74793,74818-74820,74822,74832 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74492 | r.david.murray | 2009-08-17 21:26:49 +0200 (Mo, 17 Aug 2009) | 2 lines
Issue 6685: 'toupper' -> 'upper' in cgi doc example explanation.
........
r74531 | vinay.sajip | 2009-08-21 00:04:32 +0200 (Fr, 21 Aug 2009) | 1 line
Added section on exceptions raised during logging.
........
r74545 | georg.brandl | 2009-08-24 19:14:29 +0200 (Mo, 24 Aug 2009) | 1 line
#6772: mention utf-8 as utf8 alias.
........
r74546 | georg.brandl | 2009-08-24 19:20:40 +0200 (Mo, 24 Aug 2009) | 1 line
#6725: spell "namespace" consistently.
........
r74547 | georg.brandl | 2009-08-24 19:22:05 +0200 (Mo, 24 Aug 2009) | 1 line
#6718: fix example.
........
r74548 | georg.brandl | 2009-08-24 19:24:27 +0200 (Mo, 24 Aug 2009) | 1 line
#6677: mention "deleting" as an alias for removing files.
........
r74549 | benjamin.peterson | 2009-08-24 19:42:36 +0200 (Mo, 24 Aug 2009) | 1 line
fix pdf building by teaching latex the right encoding package
........
r74550 | georg.brandl | 2009-08-24 19:48:40 +0200 (Mo, 24 Aug 2009) | 1 line
#6677: note that rmdir only removes empty directories.
........
r74553 | r.david.murray | 2009-08-27 03:04:59 +0200 (Do, 27 Aug 2009) | 2 lines
Remove leftover text from end of sentence.
........
r74554 | georg.brandl | 2009-08-27 20:59:02 +0200 (Do, 27 Aug 2009) | 1 line
Typo fix.
........
r74555 | georg.brandl | 2009-08-27 21:02:43 +0200 (Do, 27 Aug 2009) | 1 line
#6787: reference fix.
........
r74588 | georg.brandl | 2009-08-30 10:35:01 +0200 (So, 30 Aug 2009) | 1 line
#6803: fix old name.
........
r74603 | georg.brandl | 2009-08-31 08:38:29 +0200 (Mo, 31 Aug 2009) | 1 line
other -> others where multiple arguments are accepted.
........
r74608 | senthil.kumaran | 2009-08-31 18:40:27 +0200 (Mo, 31 Aug 2009) | 3 lines
Doc fix for the issue2637.
........
r74614 | georg.brandl | 2009-09-01 09:40:54 +0200 (Di, 01 Sep 2009) | 1 line
#6813: better documentation for numberless string formats.
........
r74616 | georg.brandl | 2009-09-01 09:46:26 +0200 (Di, 01 Sep 2009) | 1 line
#6808: clarification.
........
r74617 | georg.brandl | 2009-09-01 09:53:37 +0200 (Di, 01 Sep 2009) | 1 line
#6765: hint that log(x, base) is not very sophisticated.
........
r74618 | georg.brandl | 2009-09-01 10:00:47 +0200 (Di, 01 Sep 2009) | 1 line
#6810: add a link to the section about frame objects instead of just a description where to find it.
........
r74631 | georg.brandl | 2009-09-02 22:37:16 +0200 (Mi, 02 Sep 2009) | 1 line
#6821: fix signature of PyBuffer_Release().
........
r74632 | georg.brandl | 2009-09-03 09:27:26 +0200 (Do, 03 Sep 2009) | 1 line
#6828: fix wrongly highlighted blocks.
........
r74633 | georg.brandl | 2009-09-03 14:31:39 +0200 (Do, 03 Sep 2009) | 1 line
#6757: complete the list of types that marshal can serialize.
........
r74652 | georg.brandl | 2009-09-04 13:25:37 +0200 (Fr, 04 Sep 2009) | 1 line
#6756: add some info about the "acct" parameter.
........
r74653 | georg.brandl | 2009-09-04 13:32:18 +0200 (Fr, 04 Sep 2009) | 1 line
#6777: dont discourage usage of Exception.args or promote usage of Exception.message.
........
r74666 | georg.brandl | 2009-09-05 11:04:09 +0200 (Sa, 05 Sep 2009) | 1 line
#6841: remove duplicated word.
........
r74671 | georg.brandl | 2009-09-05 18:47:17 +0200 (Sa, 05 Sep 2009) | 1 line
#6843: add link from filterwarnings to where the meaning of the arguments is covered.
........
r74737 | georg.brandl | 2009-09-09 18:49:13 +0200 (Mi, 09 Sep 2009) | 1 line
Properly document copy and deepcopy as functions.
........
r74739 | georg.brandl | 2009-09-11 09:55:20 +0200 (Fr, 11 Sep 2009) | 1 line
Move function back to its section.
........
r74779 | michael.foord | 2009-09-13 18:13:36 +0200 (So, 13 Sep 2009) | 1 line
Change to tutorial wording for reading text / binary files on Windows. Issue #6301.
........
r74781 | michael.foord | 2009-09-13 18:46:19 +0200 (So, 13 Sep 2009) | 1 line
Note that sys._getframe is not guaranteed to exist in all implementations of Python, and a corresponding note in inspect.currentframe. Issue 6712.
........
r74782 | michael.foord | 2009-09-13 19:07:46 +0200 (So, 13 Sep 2009) | 1 line
Tutorial tweaks. Issue 6849.
........
r74784 | georg.brandl | 2009-09-13 20:15:07 +0200 (So, 13 Sep 2009) | 1 line
Typo fix.
........
r74791 | georg.brandl | 2009-09-14 16:08:54 +0200 (Mo, 14 Sep 2009) | 1 line
#6574: list the future features in a table.
........
r74793 | georg.brandl | 2009-09-14 16:50:47 +0200 (Mo, 14 Sep 2009) | 1 line
#6908: fix association of hashlib hash attributes.
........
r74818 | georg.brandl | 2009-09-16 11:23:04 +0200 (Mi, 16 Sep 2009) | 1 line
#6880: add reference to classes section in exceptions section, which comes earlier.
........
r74819 | georg.brandl | 2009-09-16 11:24:57 +0200 (Mi, 16 Sep 2009) | 1 line
#6876: fix base class constructor invocation in example.
........
r74820 | georg.brandl | 2009-09-16 11:30:48 +0200 (Mi, 16 Sep 2009) | 1 line
#6891: comment out dead link to Unicode article.
........
r74822 | georg.brandl | 2009-09-16 12:12:06 +0200 (Mi, 16 Sep 2009) | 1 line
#5621: refactor description of how class/instance attributes interact on a.x=a.x+1 or augassign.
........
r74832 | georg.brandl | 2009-09-16 17:57:46 +0200 (Mi, 16 Sep 2009) | 1 line
Rewrap long lines.
........
2009-10-27 11:50:20 -03:00
|
|
|
No feature description will ever be deleted from :mod:`__future__`. Since its
|
|
|
|
introduction in Python 2.1 the following features have found their way into the
|
|
|
|
language using this mechanism:
|
|
|
|
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| feature | optional in | mandatory in | effect |
|
|
|
|
+==================+=============+==============+=============================================+
|
|
|
|
| nested_scopes | 2.1.0b1 | 2.2 | :pep:`227`: |
|
|
|
|
| | | | *Statically Nested Scopes* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| generators | 2.2.0a1 | 2.3 | :pep:`255`: |
|
|
|
|
| | | | *Simple Generators* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| division | 2.2.0a2 | 3.0 | :pep:`238`: |
|
|
|
|
| | | | *Changing the Division Operator* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| absolute_import | 2.5.0a1 | 2.7 | :pep:`328`: |
|
|
|
|
| | | | *Imports: Multi-Line and Absolute/Relative* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| with_statement | 2.5.0a1 | 2.6 | :pep:`343`: |
|
|
|
|
| | | | *The "with" Statement* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| print_function | 2.6.0a2 | 3.0 | :pep:`3105`: |
|
|
|
|
| | | | *Make print a function* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
|
|
|
| unicode_literals | 2.6.0a2 | 3.0 | :pep:`3112`: |
|
|
|
|
| | | | *Bytes literals in Python 3000* |
|
|
|
|
+------------------+-------------+--------------+---------------------------------------------+
|
2007-08-15 11:28:01 -03:00
|
|
|
|
Merged revisions 71786-71787,71814-71817,71901-71903 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r71786 | georg.brandl | 2009-04-21 20:23:08 +0200 (Di, 21 Apr 2009) | 1 line
#5757: fix copy-paste error in notify().
........
r71787 | georg.brandl | 2009-04-21 20:24:34 +0200 (Di, 21 Apr 2009) | 1 line
#5751: fix escaping of \\n.
........
r71814 | georg.brandl | 2009-04-23 10:44:57 +0200 (Do, 23 Apr 2009) | 1 line
#5820: fix bug in usage of getreader().
........
r71815 | georg.brandl | 2009-04-23 10:49:39 +0200 (Do, 23 Apr 2009) | 1 line
Fix rewrapping accident.
........
r71816 | georg.brandl | 2009-04-23 10:49:56 +0200 (Do, 23 Apr 2009) | 1 line
#5813: add a reference to the "future statements" section.
........
r71817 | georg.brandl | 2009-04-23 10:52:03 +0200 (Do, 23 Apr 2009) | 1 line
Add link to PEP 236.
........
r71901 | georg.brandl | 2009-04-25 16:50:25 +0200 (Sa, 25 Apr 2009) | 1 line
#3320: fix spelling.
........
r71902 | georg.brandl | 2009-04-25 16:51:31 +0200 (Sa, 25 Apr 2009) | 1 line
#5834: use "failure" instead of "error" because the two have different meanings in unittest context.
........
r71903 | georg.brandl | 2009-04-25 17:05:04 +0200 (Sa, 25 Apr 2009) | 1 line
#5821: add some capabilities of TarFile's file-like object.
........
2009-04-28 15:18:53 -03:00
|
|
|
.. seealso::
|
|
|
|
|
|
|
|
:ref:`future`
|
|
|
|
How the compiler treats future imports.
|