From d1d4fbff6335cc638201a5d011b1c93d9d306b6b Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Thu, 11 Sep 2014 23:06:09 +0100 Subject: [PATCH] Issue #22386: fixed regression. --- Doc/library/logging.rst | 4 ++-- Lib/logging/__init__.py | 3 ++- Lib/test/test_logging.py | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index a3e2770c899..99837116443 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -1052,8 +1052,8 @@ functions. .. versionchanged:: 3.4 In Python versions earlier than 3.4, this function could also be passed a text level, and would return the corresponding numeric value of the level. - This undocumented behaviour was a mistake, and has been removed in Python - 3.4. + This undocumented behaviour was considered a mistake, and was removed in + Python 3.4, but reinstated in 3.4.2 due to retain backward compatibility. .. function:: makeLogRecord(attrdict) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index a61c2b07c9d..7fb3a352e59 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -129,7 +129,8 @@ def getLevelName(level): Otherwise, the string "Level %s" % level is returned. """ - return _levelToName.get(level, ("Level %s" % level)) + # See Issue #22386 for the reason for this convoluted expression + return _levelToName.get(level, _nameToLevel.get(level, ("Level %s" % level))) def addLevelName(level, levelName): """ diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 6f6dd18d800..d5aec9ae443 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -313,6 +313,10 @@ class BuiltinLevelsTest(BaseTest): ('INF.BADPARENT', 'INFO', '4'), ]) + def test_regression_22386(self): + """See issue #22386 for more information.""" + self.assertEqual(logging.getLevelName('INFO'), logging.INFO) + self.assertEqual(logging.getLevelName(logging.INFO), 'INFO') class BasicFilterTest(BaseTest):