このようなコンテキスト マネージャーがあるとします。これは Python 2.X で動作し、終了時にトレースバックを保持します。
class MyContextManager(object):
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
raise AssertionError("Failed :-/"), None, traceback
Python 3 では raise は構文エラーですが、パラメータを設定するだけでよいと思います__traceback__
。
def __exit__(self, exc_type, exc_value, traceback):
e = AssertionError("Failed :-/")
e.__traceback__ = traceback
raise e
Python 2 と Python 3 の両方と互換性のある (つまり、どちらでも構文エラーを生成しない) トレースバックを保持する方法はありますか? 私はこの時点でやや立ち往生しています。2.6、2.7、3.2、および 3.3 で動作する必要があります。目標は、ユーザーがまだ以前のトレースバックを確認できるようにすることです。