Files
fluencyCAD/sdf/errors.py

43 lines
1.1 KiB
Python

import warnings
import functools
class SDFCADError(Exception):
pass
class SDFCADInfiniteObjectError(Exception):
"""
Error raised when an infinite object is encountered where not suitable.
"""
pass
class SDFCADWarning(Warning):
pass
class SDFCADAlphaQualityWarning(SDFCADWarning):
show = True
def alpha_quality(decorated_fun):
@functools.wraps(decorated_fun)
def wrapper(*args, **kwargs):
if SDFCADAlphaQualityWarning.show:
warnings.warn(
f"{decorated_fun.__name__}() is alpha quality "
f"and might give wrong results. Use with care. "
f"Hide this warning by setting sdf.errors.SDFCADAlphaQualityWarning.show=False.",
SDFCADAlphaQualityWarning,
)
with warnings.catch_warnings():
# Don't reissue nested alpha quality warnings
warnings.simplefilter("ignore", SDFCADAlphaQualityWarning)
return decorated_fun(*args, **kwargs)
else:
return decorated_fun(*args, **kwargs)
return wrapper