Show More
Commit Description:
merge latest feature to master branch
Commit Description:
merge latest feature to master branch
References:
File last commit:
Show/Diff file:
Action:
lib/assets/Lib/__future__.py
| 134 lines
| 4.6 KiB
| text/x-python
| PythonLexer
|
r584 | """Record of phased-in incompatible language changes. | |||
Each line is of the form: | ||||
FeatureName = "_Feature(" OptionalRelease "," MandatoryRelease "," | ||||
CompilerFlag ")" | ||||
where, normally, OptionalRelease < 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 | ||||
from __future__ import FeatureName | ||||
was accepted. | ||||
In the case of MandatoryReleases that have 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 | ||||
from __future__ import FeatureName | ||||
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 _Feature have two corresponding methods, | ||||
.getOptionalRelease() and .getMandatoryRelease(). | ||||
CompilerFlag is the (bitfield) flag that should be passed in the fourth | ||||
argument to the builtin function compile() to enable the feature in | ||||
dynamically compiled code. This flag is stored in the .compiler_flag | ||||
attribute on _Future instances. These values must match the appropriate | ||||
#defines of CO_xxx flags in Include/compile.h. | ||||
No feature line is ever to be deleted from this file. | ||||
""" | ||||
all_feature_names = [ | ||||
"nested_scopes", | ||||
"generators", | ||||
"division", | ||||
"absolute_import", | ||||
"with_statement", | ||||
"print_function", | ||||
"unicode_literals", | ||||
"barry_as_FLUFL", | ||||
] | ||||
__all__ = ["all_feature_names"] + all_feature_names | ||||
# The CO_xxx symbols are defined here under the same names used by | ||||
# compile.h, so that an editor search will find them here. However, | ||||
# they're not exported in __all__, because they don't really belong to | ||||
# this module. | ||||
CO_NESTED = 0x0010 # nested_scopes | ||||
CO_GENERATOR_ALLOWED = 0 # generators (obsolete, was 0x1000) | ||||
CO_FUTURE_DIVISION = 0x2000 # division | ||||
CO_FUTURE_ABSOLUTE_IMPORT = 0x4000 # perform absolute imports by default | ||||
CO_FUTURE_WITH_STATEMENT = 0x8000 # with statement | ||||
CO_FUTURE_PRINT_FUNCTION = 0x10000 # print function | ||||
CO_FUTURE_UNICODE_LITERALS = 0x20000 # unicode string literals | ||||
CO_FUTURE_BARRY_AS_BDFL = 0x40000 | ||||
class _Feature: | ||||
def __init__(self, optionalRelease, mandatoryRelease, compiler_flag): | ||||
self.optional = optionalRelease | ||||
self.mandatory = mandatoryRelease | ||||
self.compiler_flag = compiler_flag | ||||
def getOptionalRelease(self): | ||||
"""Return first release in which this feature was recognized. | ||||
This is a 5-tuple, of the same form as sys.version_info. | ||||
""" | ||||
return self.optional | ||||
def getMandatoryRelease(self): | ||||
"""Return release in which this feature will become mandatory. | ||||
This is a 5-tuple, of the same form as sys.version_info, or, if | ||||
the feature was dropped, is None. | ||||
""" | ||||
return self.mandatory | ||||
def __repr__(self): | ||||
return "_Feature" + repr((self.optional, | ||||
self.mandatory, | ||||
self.compiler_flag)) | ||||
nested_scopes = _Feature((2, 1, 0, "beta", 1), | ||||
(2, 2, 0, "alpha", 0), | ||||
CO_NESTED) | ||||
generators = _Feature((2, 2, 0, "alpha", 1), | ||||
(2, 3, 0, "final", 0), | ||||
CO_GENERATOR_ALLOWED) | ||||
division = _Feature((2, 2, 0, "alpha", 2), | ||||
(3, 0, 0, "alpha", 0), | ||||
CO_FUTURE_DIVISION) | ||||
absolute_import = _Feature((2, 5, 0, "alpha", 1), | ||||
(3, 0, 0, "alpha", 0), | ||||
CO_FUTURE_ABSOLUTE_IMPORT) | ||||
with_statement = _Feature((2, 5, 0, "alpha", 1), | ||||
(2, 6, 0, "alpha", 0), | ||||
CO_FUTURE_WITH_STATEMENT) | ||||
print_function = _Feature((2, 6, 0, "alpha", 2), | ||||
(3, 0, 0, "alpha", 0), | ||||
CO_FUTURE_PRINT_FUNCTION) | ||||
unicode_literals = _Feature((2, 6, 0, "alpha", 2), | ||||
(3, 0, 0, "alpha", 0), | ||||
CO_FUTURE_UNICODE_LITERALS) | ||||
barry_as_FLUFL = _Feature((3, 1, 0, "alpha", 2), | ||||
(3, 9, 0, "alpha", 0), | ||||
CO_FUTURE_BARRY_AS_BDFL) | ||||