Source code for gym_gridverse.debugging
from typing import Callable, Optional, Type
# library-level debugging flag
_gv_debug: Optional[bool] = None
[docs]def reset_gv_debug(debug: Optional[bool] = None) -> bool:
"""Sets the library-wide debugging boolean."""
global _gv_debug
_gv_debug = debug if debug is not None else __debug__
return _gv_debug
[docs]def gv_debug() -> bool:
"""Gets the library-wide debugging boolean.
Used to bypass expensive type and value checks at runtime. By default (if
:py:func:`~gym_gridverse.debugging.reset_gv_debug` was not called), the
value of `__debug__` is used.
"""
return reset_gv_debug() if _gv_debug is None else _gv_debug
[docs]def checkraise(
condition_f: Callable[[], bool],
error_type: Type[Exception],
error_message_fmt: str,
*args,
**kwargs
):
if gv_debug() and not condition_f():
raise error_type(error_message_fmt.format(*args, **kwargs))