Blame lib/dbtexmf/core/error.py.enable-python3

Packit 5164a5
#
Packit 5164a5
# Dblatex Error Handler wrapper providing:
Packit 5164a5
# - The ErrorHandler class definition, that must be the parent of any actual
Packit 5164a5
#   error handler.
Packit 5164a5
# - A general API.
Packit 5164a5
#
Packit 5164a5
import sys
Packit 5164a5
import traceback
Packit 5164a5
Packit 5164a5
class ErrorHandler(object):
Packit 5164a5
    """
Packit 5164a5
    Object in charge to handle any error occured during the dblatex
Packit 5164a5
    transformation process. The first mandatory argument is the <object>
Packit 5164a5
    that signaled the error.
Packit 5164a5
    """
Packit 5164a5
    def __init__(self):
Packit 5164a5
        pass
Packit 5164a5
Packit 5164a5
    def signal(self, object, *args, **kwargs):
Packit 5164a5
        failure_track("Unexpected error occured")
Packit 5164a5
Packit 5164a5
Packit 5164a5
_current_handler = None
Packit 5164a5
_dump_stack = False
Packit 5164a5
Packit 5164a5
Packit 5164a5
#
Packit 5164a5
# Dblatex Error Handler API
Packit 5164a5
#
Packit 5164a5
# In a complex use of the API, a locking mechanism (thread.lock) should
Packit 5164a5
# be used. The current implementation assumes that setup is done before
Packit 5164a5
# any get().
Packit 5164a5
#
Packit 5164a5
def get_errhandler():
Packit 5164a5
    global _current_handler
Packit 5164a5
    # If nothing set, use a default handler that does nothing
Packit 5164a5
    if not(_current_handler):
Packit 5164a5
        _current_handler = ErrorHandler()
Packit 5164a5
    return _current_handler
Packit 5164a5
Packit 5164a5
def set_errhandler(handler):
Packit 5164a5
    global _current_handler
Packit 5164a5
    if not(isinstance(handler, ErrorHandler)):
Packit 5164a5
        raise ValueError("%s is not an ErrorHandler" % handler)
Packit 5164a5
    _current_handler = handler
Packit 5164a5
Packit 5164a5
def signal_error(*args, **kwargs):
Packit 5164a5
    get_errhandler().signal(*args, **kwargs)
Packit 5164a5
Packit 5164a5
def failure_track(msg):
Packit 5164a5
    global _dump_stack
Packit 5164a5
    print >>sys.stderr, (msg)
Packit 5164a5
    if _dump_stack:
Packit 5164a5
        traceback.print_exc()
Packit 5164a5
Packit 5164a5
def failed_exit(msg, rc=1):
Packit 5164a5
    failure_track(msg)
Packit 5164a5
    sys.exit(rc)
Packit 5164a5
Packit 5164a5
def dump_stack():
Packit 5164a5
    global _dump_stack
Packit 5164a5
    _dump_stack = True
Packit 5164a5