-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tests: Improved tests by converting warnings to errors #4113
Conversation
with warnings.catch_warnings(): | ||
warnings.filterwarnings("ignore", "overflow encountered in scalar power", RuntimeWarning) | ||
precision = _biggest_float(10) ** nb_precision_digits * 1.2 | ||
previous_type = _biggest_float | ||
for numpy_type in _float_types: | ||
if numpy_type == _biggest_float: | ||
# value was already casted using the bigger type | ||
continue | ||
reduced_value = numpy_type(value) | ||
with warnings.catch_warnings(): | ||
warnings.filterwarnings("ignore", "overflow encountered in cast", RuntimeWarning) | ||
reduced_value = numpy_type(value) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having tests for raise those warnings, I expects that overflows were taken into accounts when writing the code 🤷
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docstring says "It has some known issues: precision loss." so I guess.
@@ -1530,6 +1530,7 @@ def testBoundingRectArguments(self): | |||
with self.assertRaises(Exception): | |||
item.setBounds((-1000, 1000, 2000, -2000)) | |||
|
|||
@pytest.mark.filterwarnings("ignore:Attempting to set identical low and high ylims makes transformation singular; automatically expanding.:UserWarning") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ignore warnings only during tests: Those 3 warnings are about erroneous conditions so thet are not ignored in silx code.
'ignore:tostring\(\) is deprecated. Use tobytes\(\) instead\.:DeprecationWarning:OpenGL', | ||
'ignore:Jupyter is migrating its paths to use standard platformdirs:DeprecationWarning', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Listing here general warnings from our dependencies
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the jupyter path warnings you do not specify the module but I guess there are several? I don't remember but in our CI I do this instead of ignoring the warnings:
test-3.11:
extends: .test-3.11_glx
variables:
JUPYTER_PLATFORM_DIRS: 1
I'm fine with it either way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIR, it occurs once through an import, during the test collections I think.
But indeed, the env var does the job
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll keep it like that for now: it's set at a single place instead of appveyor+github configs, and also works when running locally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That wasn't too bad. Nice!
'ignore:tostring\(\) is deprecated. Use tobytes\(\) instead\.:DeprecationWarning:OpenGL', | ||
'ignore:Jupyter is migrating its paths to use standard platformdirs:DeprecationWarning', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the jupyter path warnings you do not specify the module but I guess there are several? I don't remember but in our CI I do this instead of ignoring the warnings:
test-3.11:
extends: .test-3.11_glx
variables:
JUPYTER_PLATFORM_DIRS: 1
I'm fine with it either way.
with warnings.catch_warnings(): | ||
warnings.filterwarnings("ignore", "overflow encountered in scalar power", RuntimeWarning) | ||
precision = _biggest_float(10) ** nb_precision_digits * 1.2 | ||
previous_type = _biggest_float | ||
for numpy_type in _float_types: | ||
if numpy_type == _biggest_float: | ||
# value was already casted using the bigger type | ||
continue | ||
reduced_value = numpy_type(value) | ||
with warnings.catch_warnings(): | ||
warnings.filterwarnings("ignore", "overflow encountered in cast", RuntimeWarning) | ||
reduced_value = numpy_type(value) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docstring says "It has some known issues: precision loss." so I guess.
Checklist:
<Module or Topic>: <Action> <Summary>
(see contributing guidelines)This PR aim at running tests with stricter rules by raising errors for warnings (e.g. deprecation warnings).
This is done by configuring pytest, adding ignores on specific tests and silenting warnings in
silx.utils.number
Thanks @woutdenolf for the idea!