Source code for logquacious.utils
import logging
from itertools import chain
from ._compat import ContextDecorator
[docs]def get_logger(name_or_logger):
if isinstance(name_or_logger, logging.Logger):
return name_or_logger
return logging.getLogger(name_or_logger)
[docs]def is_string(value):
return hasattr(value, 'strip')
[docs]def is_sequence(value):
"""Return True if value is a non-string sequence.
See https://stackoverflow.com/a/1835259/260303
"""
return (
not is_string(value) and (
hasattr(value, '__getitem__') or
hasattr(value, '__iter__')
)
)
[docs]class HandleException(ContextDecorator):
handled_exceptions = ()
def __init__(self, handled_exceptions, on_exception):
self.handled_exceptions = handled_exceptions
self.on_exception = on_exception
def __enter__(self):
pass
def __exit__(self, exc_type, exc_value, traceback):
if isinstance(exc_value, self.handled_exceptions):
return self.on_exception()
[docs] def on_exception(self):
raise NotImplementedError()