From 4e1c47aaf13ea865024f9cbf434f5580939f5f35 Mon Sep 17 00:00:00 2001 From: TAHRI Ahmed R Date: Thu, 25 Nov 2021 20:54:48 +0100 Subject: [PATCH] Fix wrong logging level applied when setting kwarg `explain` to True (#146) * :bug: Fix wrong logger level applied when `explain` toggle set to True * :pencil: Add CHANGELOG entry * :bug: Default to level WRN if not previously set (python default) * :wrench: logger.level could be None for some reason, fix type hint * :rewind: revert previous fix, fix tests instead, logger.level cannot be None --- CHANGELOG.md | 3 +++ charset_normalizer/api.py | 6 ++++++ tests/test_logging.py | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01050e1c..13f56b38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - [Short description of non-trivial change.] +### Fixed +- Wrong logging level applied when setting kwarg `explain` to True (PR #146) + ## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) ### Changed - Improvement over Vietnamese detection (PR #126) diff --git a/charset_normalizer/api.py b/charset_normalizer/api.py index 80e608b4..62ef1819 100644 --- a/charset_normalizer/api.py +++ b/charset_normalizer/api.py @@ -68,7 +68,9 @@ def from_bytes( ) if explain: + previous_logger_level = logger.level # type: int logger.addHandler(explain_handler) + logger.setLevel(logging.INFO) length = len(sequences) # type: int @@ -78,6 +80,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level or logging.WARNING) return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) if cp_isolation is not None: @@ -419,6 +422,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) return CharsetMatches([results[encoding_iana]]) if encoding_iana == sig_encoding: @@ -428,6 +432,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) return CharsetMatches([results[encoding_iana]]) if len(results) == 0: @@ -458,6 +463,7 @@ def from_bytes( if explain: logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) return results diff --git a/tests/test_logging.py b/tests/test_logging.py index c7ff069c..80d32112 100644 --- a/tests/test_logging.py +++ b/tests/test_logging.py @@ -10,7 +10,7 @@ def setup(self): self.logger = logging.getLogger("charset_normalizer") self.logger.handlers.clear() self.logger.addHandler(logging.NullHandler()) - self.logger.level = None + self.logger.level = logging.WARNING def test_explain_true_behavior(self, caplog): test_sequence = b'This is a test sequence of bytes that should be sufficient'