author rgbecker
Wed, 04 Apr 2001 17:44:10 +0000
changeset 811 92db8fedcd77
parent 494 54257447cfe9
child 1677 1450177dd19e
permissions -rw-r--r--
Added enable attribute to the WarnOnce class

#!/bin/env python
#copyright ReportLab Inc. 2000
#see license.txt for license details
#$Header: /tmp/reportlab/reportlab/lib/,v 1.3 2001/04/04 17:44:10 rgbecker Exp $
__version__=''' $Id:,v 1.3 2001/04/04 17:44:10 rgbecker Exp $ '''

from sys import stderr
class Logger:
	An extended file type thing initially equivalent to sys.stderr
	You can add/remove file type things; it has a write method
	def __init__(self):
		self._fps = [stderr]
		self._fns = {}

	def add(self,fp):
		'''add the file/string fp to the destinations'''
		if type(fp) is StringType:
			if fp in self._fns: return
			fp = open(fn,'wb')
			self._fns[fn] = fp

	def remove(self,fp):
		'''remove the file/string fp from the destinations'''
		if type(fp) is StringType:
			if fp not in self._fns: return
			fn = fp
			fp = self._fns[fn]
			del self.fns[fn]
		if fp in self._fps:
			del self._fps[self._fps.index(fp)]

	def write(self,text):
		'''write text to all the destinations'''
		if text[-1]!='\n': text=text+'\n'
		map(lambda fp,t=text: fp.write(t),self._fps)

	def __call__(self,text):


class WarnOnce:

	def __init__(self,kind='Warn'):
		self.uttered = {}
		self.pfx = '%s: '%kind
		self.enabled = 1

	def once(self,warning):
		if not self.uttered.has_key(warning):
			if self.enabled: logger.write(self.pfx + warning)
			self.uttered[warning] = 1

	def __call__(self,warning):