aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/misc/loggingTools.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/misc/loggingTools.py')
-rw-r--r--Lib/fontTools/misc/loggingTools.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/Lib/fontTools/misc/loggingTools.py b/Lib/fontTools/misc/loggingTools.py
index ebc0d0a7..aacc0858 100644
--- a/Lib/fontTools/misc/loggingTools.py
+++ b/Lib/fontTools/misc/loggingTools.py
@@ -8,7 +8,10 @@ import sys
import logging
import timeit
from functools import wraps
-import collections
+try:
+ from collections.abc import Mapping, Callable
+except ImportError: # python < 3.3
+ from collections import Mapping, Callable
import warnings
try:
@@ -64,7 +67,7 @@ class LevelFormatter(logging.Formatter):
if isinstance(fmt, basestring):
default_format = fmt
custom_formats = {}
- elif isinstance(fmt, collections.Mapping):
+ elif isinstance(fmt, Mapping):
custom_formats = dict(fmt)
default_format = custom_formats.pop("*", None)
else:
@@ -360,7 +363,7 @@ class Timer(object):
Timer instance, referencing the same logger.
A 'level' keyword can also be passed to override self.level.
"""
- if isinstance(func_or_msg, collections.Callable):
+ if isinstance(func_or_msg, Callable):
func = func_or_msg
# use the function name when no explicit 'msg' is provided
if not self.msg:
@@ -431,8 +434,8 @@ class ChannelsFilter(logging.Filter):
class CapturingLogHandler(logging.Handler):
def __init__(self, logger, level):
+ super(CapturingLogHandler, self).__init__(level=level)
self.records = []
- self.level = logging._checkLevel(level)
if isinstance(logger, basestring):
self.logger = logging.getLogger(logger)
else:
@@ -441,35 +444,35 @@ class CapturingLogHandler(logging.Handler):
def __enter__(self):
self.original_disabled = self.logger.disabled
self.original_level = self.logger.level
+ self.original_propagate = self.logger.propagate
self.logger.addHandler(self)
- self.logger.level = self.level
+ self.logger.setLevel(self.level)
self.logger.disabled = False
+ self.logger.propagate = False
return self
def __exit__(self, type, value, traceback):
self.logger.removeHandler(self)
- self.logger.level = self.original_level
- self.logger.disabled = self.logger.disabled
- return self
+ self.logger.setLevel(self.original_level)
+ self.logger.disabled = self.original_disabled
+ self.logger.propagate = self.original_propagate
- def handle(self, record):
- self.records.append(record)
+ return self
def emit(self, record):
- pass
-
- def createLock(self):
- self.lock = None
+ self.records.append(record)
- def assertRegex(self, regexp):
+ def assertRegex(self, regexp, msg=None):
import re
pattern = re.compile(regexp)
for r in self.records:
if pattern.search(r.getMessage()):
return True
- assert 0, "Pattern '%s' not found in logger records" % regexp
+ if msg is None:
+ msg = "Pattern '%s' not found in logger records" % regexp
+ assert 0, msg
class LogMixin(object):