1__doc__ = u"""
2>>> def bar():
3...     try:
4...         foo()
5...     except ValueError:
6...         if IS_PY3:
7...             print(isinstance(sys.exc_info()[1].__cause__, TypeError))
8...         else:
9...             print(True)
10
11>>> bar()
12True
13
14>>> print(sys.exc_info())
15(None, None, None)
16
17>>> def bar2():
18...     try:
19...         foo2()
20...     except ValueError:
21...         if IS_PY3:
22...             cause = sys.exc_info()[1].__cause__
23...             print(isinstance(cause, TypeError))
24...             print(cause.args==('value',))
25...             pass
26...         else:
27...             print(True)
28...             print(True)
29
30>>> bar2()
31True
32True
33"""
34
35import sys
36IS_PY3 = sys.version_info[0] >= 3
37if not IS_PY3:
38    sys.exc_clear()
39
40def foo():
41    try:
42        raise TypeError
43    except TypeError:
44        raise ValueError from TypeError
45
46def foo2():
47    try:
48        raise TypeError
49    except TypeError:
50        raise ValueError() from TypeError('value')
51
52