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
This commit is contained in:
Darragh Bailey
2013-07-25 06:58:53 +01:00
parent 35756fbe1f
commit 8c83db470d

View File

@@ -104,29 +104,29 @@ class DedentLoggerMeta(type):
for levelalias in _levels: for levelalias in _levels:
level = levelalias[0] level = levelalias[0]
aliases = levelalias[1:] aliases = levelalias[1:]
setattr(obj, level, cls.wrap_level(getattr(obj, level))) setattr(obj, level, cls.wrap()(getattr(obj, level)))
for alias in aliases: for alias in aliases:
setattr(obj, alias, getattr(obj, level)) 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 return obj
@staticmethod @staticmethod
def wrap(func): def wrap(with_level=False):
def _dedent_log(self, level, msg, *args, **kwargs): def dedentlog(func):
dedent = kwargs.pop('dedent', True) if with_level:
if dedent: def _dedent_log(self, level, msg, *args, **kwargs):
msg = textwrap.dedent(msg) dedent = kwargs.pop('dedent', True)
func(self, level, msg, *args, **kwargs) if dedent:
return wraps(func)(_dedent_log) msg = textwrap.dedent(msg)
func(self, level, msg, *args, **kwargs)
@staticmethod else:
def wrap_level(func): def _dedent_log(self, msg, *args, **kwargs):
def _dedent_log(self, msg, *args, **kwargs): dedent = kwargs.pop('dedent', True)
dedent = kwargs.pop('dedent', True) if dedent:
if dedent: msg = textwrap.dedent(msg)
msg = textwrap.dedent(msg) func(self, msg, *args, **kwargs)
func(self, msg, *args, **kwargs) return wraps(func)(_dedent_log)
return wraps(func)(_dedent_log) return dedentlog
class DedentLogger(logging.Logger): class DedentLogger(logging.Logger):