From: Giacomo Travaglini Date: Wed, 10 Jun 2020 17:52:04 +0000 (+0100) Subject: ext: Avoid specifying empty interfaces and embrace duck typing X-Git-Tag: v20.1.0.0~578 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=60453334e38c7cfdbd0179c5f6686915eaacf882;p=gem5.git ext: Avoid specifying empty interfaces and embrace duck typing It turns out no handler is implementing prehandle() posthandle() JIRA: https://gem5.atlassian.net/projects/GEM5/issues/GEM5-533 Change-Id: Ie8d92027f29fc33192fcf0d495fd3c4f6e4075aa Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/30217 Maintainer: Bobby R. Bruce Tested-by: kokoro Reviewed-by: Hoa Nguyen --- diff --git a/ext/testlib/handlers.py b/ext/testlib/handlers.py index 3005e01ef..38f50c468 100644 --- a/ext/testlib/handlers.py +++ b/ext/testlib/handlers.py @@ -87,7 +87,7 @@ class _TestStreams(object): self.stdout.close() self.stderr.close() -class ResultHandler(log.Handler): +class ResultHandler(object): ''' Log handler which listens for test results and output saving data as it is reported. @@ -181,7 +181,7 @@ class ResultHandler(log.Handler): #TODO Change from a handler to an internal post processor so it can be used # to reprint results -class SummaryHandler(log.Handler): +class SummaryHandler(object): ''' A log handler which listens to the log for test results and reports the aggregate results when closed. @@ -250,7 +250,7 @@ class SummaryHandler(log.Handler): string, color=self.colormap[most_severe_outcome] + self.color.Bold) -class TerminalHandler(log.Handler): +class TerminalHandler(object): color = terminal.get_termcap() verbosity_mapping = { log.LogLevel.Warn: color.Yellow, @@ -330,22 +330,13 @@ class TerminalHandler(log.Handler): return self.mapping.get(record.type_id, lambda _:None)(record) - def set_verbosity(self, verbosity): - self.verbosity = verbosity - - -class PrintHandler(log.Handler): - def __init__(self): - pass - - def handle(self, record): - print(str(record).rstrip()) - def close(self): pass + def set_verbosity(self, verbosity): + self.verbosity = verbosity -class MultiprocessingHandlerWrapper(log.Handler): +class MultiprocessingHandlerWrapper(object): ''' A handler class which forwards log records to subhandlers, enabling logging across multiprocessing python processes. diff --git a/ext/testlib/log.py b/ext/testlib/log.py index cddb9217c..451ee1dc6 100644 --- a/ext/testlib/log.py +++ b/ext/testlib/log.py @@ -130,10 +130,8 @@ class Log(object): raise Exception('The log has been closed' ' and is no longer available.') - map(lambda handler:handler.prehandle(), self.handlers) for handler in self.handlers: handler.handle(record) - handler.posthandle() def add_handler(self, handler): if self._opened: @@ -144,28 +142,6 @@ class Log(object): handler.close() self.handlers.remove(handler) - -class Handler(object): - ''' - Empty implementation of the interface available to handlers which - is expected by the :class:`Log`. - ''' - def __init__(self): - pass - - def handle(self, record): - pass - - def close(self): - pass - - def prehandle(self): - pass - - def posthandle(self): - pass - - class LogWrapper(object): _result_typemap = { wrappers.LoadedLibrary.__name__: LibraryResult,