__future__ は実際にモジュールであり、3つの役割があります。
__future__.py の各ステートメントは次のような形をしています:
FeatureName = "_Feature(" OptionalRelease "," MandatoryRelease "," CompilerFlag ")"
ここで、普通は、OptionalRelease は MandatoryRelease より小さく、2つとも
sys.version_info
と同じフォーマットの5つのタプルからなります。
(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 はその機能が導入された最初のリリースを記録します。
まだ時期が来ていない MandatoryRelease の場合、MandatoryRelease は その機能が言語の一部となるリリースを記します。
その他の場合、MandatoryRelease はその機能がいつ言語の一部になったのかを 記録します。 そのリリースから、あるいはそれ以降のリリースでは、この機能を使う際に future ステートメントは必要ではありませんが、future ステートメントを 使い続けても構いません。
MandatoryRelease は None
になるかもしれません。つまり、予定された機能が
破棄されたということです。
_Feature クラスのインスタンスには対応する2つのメソッド、 getOptionalRelease() と getMandatoryRelease() があります。
CompilerFlag は動的にコンパイルされるコードでその機能を有効にするために、 組み込み関数 compile() の第4引数に渡されなければならない (ビットフィールド)フラグです。 このフラグは _Future インスタンスの compilier_flag 属性に 保存されています。
__future__ で解説されている機能のうち、削除されたものはまだ ありません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。