Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,041 Bytes
3aba902 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
from functools import wraps
import warnings
def suppress_traceback(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
try:
return fn(*args, **kwargs)
except Exception as e:
e.__traceback__ = e.__traceback__.tb_next.tb_next
raise
return wrapper
class no_warnings:
def __init__(self, action: str = 'ignore', **kwargs):
self.action = action
self.filter_kwargs = kwargs
def __call__(self, fn):
@wraps(fn)
def wrapper(*args, **kwargs):
with warnings.catch_warnings():
warnings.simplefilter(self.action, **self.filter_kwargs)
return fn(*args, **kwargs)
return wrapper
def __enter__(self):
self.warnings_manager = warnings.catch_warnings()
self.warnings_manager.__enter__()
warnings.simplefilter(self.action, **self.filter_kwargs)
def __exit__(self, exc_type, exc_val, exc_tb):
self.warnings_manager.__exit__(exc_type, exc_val, exc_tb)
|