[Python-checkins] cpython: logging: replace codecs.open with builtins.open, remove '_encoded' sort, add

florent.xicluna python-checkins at python.org
Mon Nov 7 19:43:34 CET 2011


http://hg.python.org/cpython/rev/bbcba237bd51
changeset: 73433:bbcba237bd51
user: Florent Xicluna <florent.xicluna at gmail.com>
date: Mon Nov 07 19:43:05 2011 +0100
summary:
 logging: replace codecs.open with builtins.open, remove '_encoded' sort, add some tests.
files:
 Lib/logging/__init__.py | 13 +------------
 Lib/logging/config.py | 12 ++++--------
 Lib/logging/handlers.py | 12 ++----------
 Lib/test/test_logging.py | 23 ++++++++++++++++++-----
 4 files changed, 25 insertions(+), 35 deletions(-)
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -36,11 +36,6 @@
 'getLogRecordFactory', 'setLogRecordFactory', 'lastResort']
 
 try:
- import codecs
-except ImportError: #pragma: no cover
- codecs = None
-
-try:
 import threading
 except ImportError: #pragma: no cover
 threading = None
@@ -954,8 +949,6 @@
 """
 #keep the absolute path, otherwise derived classes which use this
 #may come a cropper when the current directory changes
- if codecs is None: #pragma: no cover
- encoding = None
 self.baseFilename = os.path.abspath(filename)
 self.mode = mode
 self.encoding = encoding
@@ -983,11 +976,7 @@
 Open the current base file with the (original) mode and encoding.
 Return the resulting stream.
 """
- if self.encoding is None:
- stream = open(self.baseFilename, self.mode)
- else:
- stream = codecs.open(self.baseFilename, self.mode, self.encoding)
- return stream
+ return open(self.baseFilename, self.mode, encoding=self.encoding)
 
 def emit(self, record):
 """
diff --git a/Lib/logging/config.py b/Lib/logging/config.py
--- a/Lib/logging/config.py
+++ b/Lib/logging/config.py
@@ -24,8 +24,8 @@
 To use, simply 'import logging' and log away!
 """
 
-import sys, logging, logging.handlers, socket, struct, os, traceback, re
-import types, io
+import sys, logging, logging.handlers, socket, struct, traceback, re
+import io
 
 try:
 import _thread as thread
@@ -98,9 +98,6 @@
 def _strip_spaces(alist):
 return map(lambda x: x.strip(), alist)
 
-def _encoded(s):
- return s if isinstance(s, str) else s.encode('utf-8')
-
 def _create_formatters(cp):
 """Create and return formatters"""
 flist = cp["formatters"]["keys"]
@@ -215,7 +212,7 @@
 #avoid disabling child loggers of explicitly
 #named loggers. With a sorted list it is easier
 #to find the child loggers.
- existing.sort(key=_encoded)
+ existing.sort()
 #We'll keep the list of existing loggers
 #which are children of named loggers here...
 child_loggers = []
@@ -588,7 +585,7 @@
 #avoid disabling child loggers of explicitly
 #named loggers. With a sorted list it is easier
 #to find the child loggers.
- existing.sort(key=_encoded)
+ existing.sort()
 #We'll keep the list of existing loggers
 #which are children of named loggers here...
 child_loggers = []
@@ -804,7 +801,6 @@
 struct.pack(">L", n), followed by the config file.
 Uses fileConfig() to do the grunt work.
 """
- import tempfile
 try:
 conn = self.connection
 chunk = conn.recv(4)
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -25,6 +25,7 @@
 """
 
 import logging, socket, os, pickle, struct, time, re
+from codecs import BOM_UTF8
 from stat import ST_DEV, ST_INO, ST_MTIME
 import queue
 try:
@@ -32,11 +33,6 @@
 except ImportError: #pragma: no cover
 threading = None
 
-try:
- import codecs
-except ImportError: #pragma: no cover
- codecs = None
-
 #
 # Some constants...
 #
@@ -60,8 +56,6 @@
 """
 Use the specified filename for streamed logging
 """
- if codecs is None: #pragma: no cover
- encoding = None
 logging.FileHandler.__init__(self, filename, mode, encoding, delay)
 self.mode = mode
 self.encoding = encoding
@@ -793,9 +787,7 @@
 prio = prio.encode('utf-8')
 # Message is a string. Convert to bytes as required by RFC 5424
 msg = msg.encode('utf-8')
- if codecs:
- msg = codecs.BOM_UTF8 + msg
- msg = prio + msg
+ msg = prio + BOM_UTF8 + msg
 try:
 if self.unixsocket:
 try:
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -49,6 +49,7 @@
 try:
 import threading
 # The following imports are needed only for tests which
+ # require threading
 import asynchat
 import asyncore
 import errno
@@ -95,9 +96,7 @@
 finally:
 logging._releaseLock()
 
- # Set two unused loggers: one non-ASCII and one Unicode.
- # This is to test correct operation when sorting existing
- # loggers in the configuration code. See issue 8201.
+ # Set two unused loggers
 self.logger1 = logging.getLogger("\xab\xd7\xbb")
 self.logger2 = logging.getLogger("\u013f\u00d6\u0047")
 
@@ -310,8 +309,6 @@
 ('INF.BADPARENT', 'INFO', '4'),
 ])
 
- def test_invalid_name(self):
- self.assertRaises(TypeError, logging.getLogger, any)
 
 class BasicFilterTest(BaseTest):
 
@@ -3514,6 +3511,22 @@
 self.addCleanup(setattr, self.logger.manager, 'disable', old_disable)
 self.assertFalse(self.logger.isEnabledFor(22))
 
+ def test_root_logger_aliases(self):
+ root = logging.getLogger()
+ self.assertIs(root, logging.root)
+ self.assertIs(root, logging.getLogger(None))
+ self.assertIs(root, logging.getLogger(''))
+ self.assertIs(root, logging.getLogger('foo').root)
+ self.assertIs(root, logging.getLogger('foo.bar').root)
+ self.assertIs(root, logging.getLogger('foo').parent)
+
+ self.assertIsNot(root, logging.getLogger('0円'))
+ self.assertIsNot(root, logging.getLogger('foo.bar').parent)
+
+ def test_invalid_names(self):
+ self.assertRaises(TypeError, logging.getLogger, any)
+ self.assertRaises(TypeError, logging.getLogger, b'foo')
+
 
 class BaseFileTest(BaseTest):
 "Base class for handler tests that write log files"
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /