import sys
def exception_hook(exc_type, exc_value, tb):
- r'''Hacks the call stack message in case of RuntimeError to show all
- the local variables, and indicate for every tensor involved its
- shape, dtype and device.
+ r'''Hacks the call stack message to show all the local variables in
+ case of RuntimeError or ValueError, and prints tensors as shape,
+ dtype and device.
'''
print(f' File "{filename}", line {line_no}, in {name}')
print(open(filename, 'r').readlines()[line_no-1])
- if exc_type is RuntimeError:
+ if exc_type in { RuntimeError, ValueError }:
for n,v in tb.tb_frame.f_locals.items():
print(f' {n} -> {v}')