From 8c83db470d24cbbe65ee810528c8ccb0b6791aa4 Mon Sep 17 00:00:00 2001 From: Darragh Bailey Date: Thu, 25 Jul 2013 06:58:53 +0100 Subject: [PATCH] Convert similar decorators into single decorate that accepts an argument Convert the slightly confusing naming of the two decoratories for wrapping the different log methods to a single decorator than can accept an argument to return a different wrapper function as needed. Change-Id: Ifd3a694bc07573076b6e303f34a6ad0cc8f12989 --- ghp/log.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/ghp/log.py b/ghp/log.py index f26aa0b..2382a9a 100644 --- a/ghp/log.py +++ b/ghp/log.py @@ -104,29 +104,29 @@ class DedentLoggerMeta(type): for levelalias in _levels: level = levelalias[0] aliases = levelalias[1:] - setattr(obj, level, cls.wrap_level(getattr(obj, level))) + setattr(obj, level, cls.wrap()(getattr(obj, level))) for alias in aliases: setattr(obj, alias, getattr(obj, level)) - setattr(obj, 'log', cls.wrap(getattr(obj, 'log'))) + setattr(obj, 'log', cls.wrap(True)(getattr(obj, 'log'))) return obj @staticmethod - def wrap(func): - def _dedent_log(self, level, msg, *args, **kwargs): - dedent = kwargs.pop('dedent', True) - if dedent: - msg = textwrap.dedent(msg) - func(self, level, msg, *args, **kwargs) - return wraps(func)(_dedent_log) - - @staticmethod - def wrap_level(func): - def _dedent_log(self, msg, *args, **kwargs): - dedent = kwargs.pop('dedent', True) - if dedent: - msg = textwrap.dedent(msg) - func(self, msg, *args, **kwargs) - return wraps(func)(_dedent_log) + def wrap(with_level=False): + def dedentlog(func): + if with_level: + def _dedent_log(self, level, msg, *args, **kwargs): + dedent = kwargs.pop('dedent', True) + if dedent: + msg = textwrap.dedent(msg) + func(self, level, msg, *args, **kwargs) + else: + def _dedent_log(self, msg, *args, **kwargs): + dedent = kwargs.pop('dedent', True) + if dedent: + msg = textwrap.dedent(msg) + func(self, msg, *args, **kwargs) + return wraps(func)(_dedent_log) + return dedentlog class DedentLogger(logging.Logger):