/ 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