From bb5f6ca068d746570c41119dbf088835a2b75383 Mon Sep 17 00:00:00 2001 From: Ahmed TAHRI Date: Thu, 25 Nov 2021 20:38:33 +0100 Subject: [PATCH 1/5] :bug: Fix wrong logger level applied when `explain` toggle set to True --- charset_normalizer/api.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/charset_normalizer/api.py b/charset_normalizer/api.py index 80e608b4..4713a36d 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) 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 From f4c6cfcdd3ce7e7a16ee4cb2201481e114a76ac7 Mon Sep 17 00:00:00 2001 From: Ahmed TAHRI Date: Thu, 25 Nov 2021 20:40:00 +0100 Subject: [PATCH 2/5] :pencil: Add CHANGELOG entry --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) 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) From 9ed75e6daf9229424d600f0ef4007253fe326b6d Mon Sep 17 00:00:00 2001 From: Ahmed TAHRI Date: Thu, 25 Nov 2021 20:43:41 +0100 Subject: [PATCH 3/5] :bug: Default to level WRN if not previously set (python default) --- charset_normalizer/api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/charset_normalizer/api.py b/charset_normalizer/api.py index 4713a36d..f461814a 100644 --- a/charset_normalizer/api.py +++ b/charset_normalizer/api.py @@ -80,7 +80,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) + logger.setLevel(previous_logger_level or logging.WARNING) return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) if cp_isolation is not None: @@ -422,7 +422,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) + logger.setLevel(previous_logger_level or logging.WARNING) return CharsetMatches([results[encoding_iana]]) if encoding_iana == sig_encoding: @@ -432,7 +432,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) + logger.setLevel(previous_logger_level or logging.WARNING) return CharsetMatches([results[encoding_iana]]) if len(results) == 0: @@ -463,7 +463,7 @@ def from_bytes( if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) + logger.setLevel(previous_logger_level or logging.WARNING) return results From 3be824d8be47f01cf498282b06a15bf940476743 Mon Sep 17 00:00:00 2001 From: Ahmed TAHRI Date: Thu, 25 Nov 2021 20:46:11 +0100 Subject: [PATCH 4/5] :wrench: logger.level could be None for some reason, fix type hint --- charset_normalizer/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charset_normalizer/api.py b/charset_normalizer/api.py index f461814a..0dab2523 100644 --- a/charset_normalizer/api.py +++ b/charset_normalizer/api.py @@ -68,7 +68,7 @@ def from_bytes( ) if explain: - previous_logger_level = logger.level # type: int + previous_logger_level = logger.level # type: Optional[int] logger.addHandler(explain_handler) logger.setLevel(logging.INFO) From 15615863041207c7cf9dde5864807ba3dd54bdd5 Mon Sep 17 00:00:00 2001 From: Ahmed TAHRI Date: Thu, 25 Nov 2021 20:49:02 +0100 Subject: [PATCH 5/5] :rewind: revert previous fix, fix tests instead, logger.level cannot be None --- charset_normalizer/api.py | 8 ++++---- tests/test_logging.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/charset_normalizer/api.py b/charset_normalizer/api.py index 0dab2523..62ef1819 100644 --- a/charset_normalizer/api.py +++ b/charset_normalizer/api.py @@ -68,7 +68,7 @@ def from_bytes( ) if explain: - previous_logger_level = logger.level # type: Optional[int] + previous_logger_level = logger.level # type: int logger.addHandler(explain_handler) logger.setLevel(logging.INFO) @@ -422,7 +422,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level or logging.WARNING) + logger.setLevel(previous_logger_level) return CharsetMatches([results[encoding_iana]]) if encoding_iana == sig_encoding: @@ -432,7 +432,7 @@ def from_bytes( ) if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level or logging.WARNING) + logger.setLevel(previous_logger_level) return CharsetMatches([results[encoding_iana]]) if len(results) == 0: @@ -463,7 +463,7 @@ def from_bytes( if explain: logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level or logging.WARNING) + 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'