split functionality file across new module as was getting too long on its own. All functions remian the same, but imports will need to be updated.
This commit is contained in:
42
functionality/debug.py
Normal file
42
functionality/debug.py
Normal file
@ -0,0 +1,42 @@
|
||||
"""
|
||||
This file contains functions for debugging and logging.
|
||||
|
||||
Author(s): David Marchant
|
||||
"""
|
||||
|
||||
from typing import Any, Tuple
|
||||
|
||||
from core.correctness.validation import check_type
|
||||
from core.correctness.vars import DEBUG_INFO, DEBUG_WARNING
|
||||
|
||||
|
||||
def setup_debugging(print:Any=None, logging:int=0)->Tuple[Any,int]:
|
||||
"""Create a place for debug messages to be sent. Always returns a place,
|
||||
along with a logging level."""
|
||||
check_type(logging, int)
|
||||
if print is None:
|
||||
return None, 0
|
||||
else:
|
||||
if not isinstance(print, object):
|
||||
raise TypeError(f"Invalid print location provided")
|
||||
writeable = getattr(print, "write", None)
|
||||
if not writeable or not callable(writeable):
|
||||
raise TypeError(f"Print object does not implement required "
|
||||
"'write' function")
|
||||
|
||||
return print, logging
|
||||
|
||||
|
||||
def print_debug(print_target, debug_level, msg, level)->None:
|
||||
"""Function to print a message to the debug target, if its level exceeds
|
||||
the given one."""
|
||||
if print_target is None:
|
||||
return
|
||||
else:
|
||||
if level <= debug_level:
|
||||
status = "ERROR"
|
||||
if level == DEBUG_INFO:
|
||||
status = "INFO"
|
||||
elif level == DEBUG_WARNING:
|
||||
status = "WARNING"
|
||||
print(f"{status}: {msg}", file=print_target)
|
Reference in New Issue
Block a user