fix: don't globally silence warnings on importing sklearn_tuner#123
Open
Nas01010101 wants to merge 1 commit into
Open
fix: don't globally silence warnings on importing sklearn_tuner#123Nas01010101 wants to merge 1 commit into
Nas01010101 wants to merge 1 commit into
Conversation
`sklearn_tuner.py` calls `warnings.filterwarnings('ignore')` at module
import time, which installs a process-wide 'ignore' filter at the front
of `warnings.filters`. Merely importing the module therefore silences
every warning in the host program, hiding the caller's own warnings.
Scope the suppression to the optimisation loop with
`warnings.catch_warnings()`, which restores the caller's filters on
exit. Adds regression tests asserting that import installs no global
'ignore' filter and that tuning does not leak filter changes.
97d28f0 to
4c3fc0e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
hebo/sklearn_tuner.pycallswarnings.filterwarnings('ignore')at module import time, which installs a process-wide'ignore'filter at the front ofwarnings.filters. Simply importing the module therefore silences warnings in the entire host program — including the caller's own warnings (related to #58).Fix
Remove the import-time global call and scope the suppression to the optimisation loop using
warnings.catch_warnings(), which restores the caller's filter state on exit:Tests
Adds
test/test_sklearn_tuner_warnings.py— two regression tests: (1) importing the module installs no global'ignore'filter; (2) running the tuner does not leak filters into the caller. Both fail before the fix, pass after.Relates to #58.