How to imitate Python 3's raise ... from in Python 2? How to imitate Python 3's raise ... from in Python 2? python-3.x python-3.x

How to imitate Python 3's raise ... from in Python 2?


There's a raise_from in python-future; simply install it

pip install future

and import to use

from future.utils import raise_from# or: from six import raise_fromclass FileDatabase:    def __init__(self, filename):        try:            self.file = open(filename)        except IOError as exc:            raise_from(DatabaseError('failed to open'), exc)

UPDATE

The compatibility package six also supports raise_from, from version 1.9 (released in 2015). It is used in the same manner as above.


Instead of using six.raise_from, try to use six.reraise, as explained in this page:

http://python-future.org/compatible_idioms.html

from six import reraise as raise_ # or from future.utils import raise_traceback = sys.exc_info()[2]raise_(ValueError, "dodgy value", traceback)