Mercurial > cpython-lru_cache-weakref
annotate Doc/lib/libfuture.tex @ 33091:48100a01ac7c 2.3
Ignore the locale's encoding if it is an empty string.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Thu, 12 Aug 2004 13:14:20 +0000 |
| parents | 5b1ddc4b49b9 |
| children | 562089a8678f |
| rev | line source |
|---|---|
|
29285
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
1 \section{\module{__future__} --- |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
2 Future statement definitions} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
3 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
4 \declaremodule[future]{standard}{__future__} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
5 \modulesynopsis{Future statement definitions} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
6 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
7 \module{__future__} is a real module, and serves three purposes: |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
8 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
9 \begin{itemize} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
10 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
11 \item To avoid confusing existing tools that analyze import statements |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
12 and expect to find the modules they're importing. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
13 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
14 \item To ensure that future_statements run under releases prior to 2.1 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
15 at least yield runtime exceptions (the import of |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
16 \module{__future__} will fail, because there was no module of |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
17 that name prior to 2.1). |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
18 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
19 \item To document when incompatible changes were introduced, and when they |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
20 will be --- or were --- made mandatory. This is a form of executable |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
21 documentation, and can be inspected programatically via importing |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
22 \module{__future__} and examining its contents. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
23 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
24 \end{itemize} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
25 |
| 30076 | 26 Each statement in \file{__future__.py} is of the form: |
|
29285
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
27 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
28 \begin{verbatim} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
29 FeatureName = "_Feature(" OptionalRelease "," MandatoryRelease "," |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
30 CompilerFlag ")" |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
31 \end{verbatim} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
32 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
33 where, normally, OptionalRelease is less then MandatoryRelease, and |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
34 both are 5-tuples of the same form as \code{sys.version_info}: |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
35 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
36 \begin{verbatim} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
37 (PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
38 PY_MINOR_VERSION, # the 1; an int |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
39 PY_MICRO_VERSION, # the 0; an int |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
40 PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
41 PY_RELEASE_SERIAL # the 3; an int |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
42 ) |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
43 \end{verbatim} |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
44 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
45 OptionalRelease records the first release in which the feature was |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
46 accepted. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
47 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
48 In the case of MandatoryReleases that have not yet occurred, |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
49 MandatoryRelease predicts the release in which the feature will become |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
50 part of the language. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
51 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
52 Else MandatoryRelease records when the feature became part of the |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
53 language; in releases at or after that, modules no longer need a |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
54 future statement to use the feature in question, but may continue to |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
55 use such imports. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
56 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
57 MandatoryRelease may also be \code{None}, meaning that a planned |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
58 feature got dropped. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
59 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
60 Instances of class \class{_Feature} have two corresponding methods, |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
61 \method{getOptionalRelease()} and \method{getMandatoryRelease()}. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
62 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
63 CompilerFlag is the (bitfield) flag that should be passed in the |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
64 fourth argument to the builtin function \function{compile()} to enable |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
65 the feature in dynamically compiled code. This flag is stored in the |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
66 \member{compiler_flag} attribute on \class{_Future} instances. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
67 |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
68 No feature description will ever be deleted from \module{__future__}. |
|
949f41829f36
Rename lib__future__.tex to libfuture.tex and add link in lib.tex.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
69 |
