/ printer.py
printer.py
1 """ 2 Define a singleton that handles basic output 3 """ 4 import sys 5 import traceback 6 7 class Printer: 8 """A class for printing messages that respects verbosity levels""" 9 verbose_level = 0 10 11 @staticmethod 12 def verbose(message, verbose_level=1): 13 """Print a message only if it is within an acceptabe verbosity level""" 14 if Printer.verbose_level >= verbose_level: 15 sys.stdout.write(message) 16 sys.stdout.write('\n') 17 18 @staticmethod 19 def write(message): 20 """Write a message to stdout""" 21 sys.stdout.write(message) 22 sys.stdout.write('\n') 23 24 @staticmethod 25 def error(message): 26 """Write a message to stderr""" 27 sys.stderr.write(message) 28 sys.stderr.write('\n') 29 30 @staticmethod 31 def exception(e): 32 """Write a summary of an exception with a stack trace""" 33 Printer.error(repr(e)) 34 traceback.print_exc(file=sys.stderr) 35 36