class TargetVersion(Enum):
- PY27 = 2
PY33 = 3
PY34 = 4
PY35 = 5
PY39 = 9
PY310 = 10
- def is_python2(self) -> bool:
- return self is TargetVersion.PY27
-
class Feature(Enum):
- # All string literals are unicode
- UNICODE_LITERALS = 1
F_STRINGS = 2
NUMERIC_UNDERSCORES = 3
TRAILING_COMMA_IN_CALL = 4
# __future__ flags
FUTURE_ANNOTATIONS = 51
- # temporary for Python 2 deprecation
- PRINT_STMT = 200
- EXEC_STMT = 201
- AUTOMATIC_PARAMETER_UNPACKING = 202
- COMMA_STYLE_EXCEPT = 203
- COMMA_STYLE_RAISE = 204
- LONG_INT_LITERAL = 205
- OCTAL_INT_LITERAL = 206
- BACKQUOTE_REPR = 207
-
FUTURE_FLAG_TO_FEATURE: Final = {
"annotations": Feature.FUTURE_ANNOTATIONS,
VERSION_TO_FEATURES: Dict[TargetVersion, Set[Feature]] = {
- TargetVersion.PY27: {
- Feature.ASYNC_IDENTIFIERS,
- Feature.PRINT_STMT,
- Feature.EXEC_STMT,
- Feature.AUTOMATIC_PARAMETER_UNPACKING,
- Feature.COMMA_STYLE_EXCEPT,
- Feature.COMMA_STYLE_RAISE,
- Feature.LONG_INT_LITERAL,
- Feature.OCTAL_INT_LITERAL,
- Feature.BACKQUOTE_REPR,
- },
- TargetVersion.PY33: {Feature.UNICODE_LITERALS, Feature.ASYNC_IDENTIFIERS},
- TargetVersion.PY34: {Feature.UNICODE_LITERALS, Feature.ASYNC_IDENTIFIERS},
- TargetVersion.PY35: {
- Feature.UNICODE_LITERALS,
- Feature.TRAILING_COMMA_IN_CALL,
- Feature.ASYNC_IDENTIFIERS,
- },
+ TargetVersion.PY33: {Feature.ASYNC_IDENTIFIERS},
+ TargetVersion.PY34: {Feature.ASYNC_IDENTIFIERS},
+ TargetVersion.PY35: {Feature.TRAILING_COMMA_IN_CALL, Feature.ASYNC_IDENTIFIERS},
TargetVersion.PY36: {
- Feature.UNICODE_LITERALS,
Feature.F_STRINGS,
Feature.NUMERIC_UNDERSCORES,
Feature.TRAILING_COMMA_IN_CALL,
Feature.ASYNC_IDENTIFIERS,
},
TargetVersion.PY37: {
- Feature.UNICODE_LITERALS,
Feature.F_STRINGS,
Feature.NUMERIC_UNDERSCORES,
Feature.TRAILING_COMMA_IN_CALL,
Feature.FUTURE_ANNOTATIONS,
},
TargetVersion.PY38: {
- Feature.UNICODE_LITERALS,
Feature.F_STRINGS,
Feature.NUMERIC_UNDERSCORES,
Feature.TRAILING_COMMA_IN_CALL,
Feature.ANN_ASSIGN_EXTENDED_RHS,
},
TargetVersion.PY39: {
- Feature.UNICODE_LITERALS,
Feature.F_STRINGS,
Feature.NUMERIC_UNDERSCORES,
Feature.TRAILING_COMMA_IN_CALL,
Feature.ANN_ASSIGN_EXTENDED_RHS,
},
TargetVersion.PY310: {
- Feature.UNICODE_LITERALS,
Feature.F_STRINGS,
Feature.NUMERIC_UNDERSCORES,
Feature.TRAILING_COMMA_IN_CALL,