some new features
This commit is contained in:
49
.venv/lib/python3.12/site-packages/cmdstanpy/progress.py
Normal file
49
.venv/lib/python3.12/site-packages/cmdstanpy/progress.py
Normal file
@ -0,0 +1,49 @@
|
||||
"""
|
||||
Record tqdm progress bar fail during session
|
||||
"""
|
||||
import functools
|
||||
import logging
|
||||
|
||||
_SHOW_PROGRESS: bool = True
|
||||
|
||||
|
||||
def allow_show_progress() -> bool:
|
||||
"""Return False if any progressbar errors have occurred this session"""
|
||||
return _SHOW_PROGRESS
|
||||
|
||||
|
||||
def _disable_progress(e: Exception) -> None:
|
||||
"""Print an exception and disable progress bars for this session"""
|
||||
# pylint: disable=global-statement
|
||||
global _SHOW_PROGRESS
|
||||
if _SHOW_PROGRESS:
|
||||
_SHOW_PROGRESS = False
|
||||
logging.getLogger('cmdstanpy').error(
|
||||
'Error in progress bar initialization:\n'
|
||||
'\t%s\n'
|
||||
'Disabling progress bars for this session',
|
||||
str(e),
|
||||
)
|
||||
|
||||
|
||||
def wrap_callback(func): # type: ignore
|
||||
"""Wrap a callback generator so it fails safely"""
|
||||
|
||||
@functools.wraps(func)
|
||||
def safe_progress(*args, **kwargs): # type: ignore
|
||||
# pylint: disable=unused-argument
|
||||
def callback(*args, **kwargs): # type: ignore
|
||||
# totally empty callback
|
||||
return None
|
||||
|
||||
if not allow_show_progress():
|
||||
return callback
|
||||
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
# pylint: disable=broad-except
|
||||
except Exception as e:
|
||||
_disable_progress(e)
|
||||
return callback
|
||||
|
||||
return safe_progress
|
||||
Reference in New Issue
Block a user