-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
gh-93343: Expand warning filter examples #106618
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -214,6 +214,34 @@ Some examples:: | |||||
ignore,default:::mymodule # Only report warnings triggered by "mymodule" | ||||||
error:::mymodule # Convert warnings to errors in "mymodule" | ||||||
|
||||||
.. _warning-filter-examples: | ||||||
|
||||||
Warning Filter Examples | ||||||
~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|
||||||
Here are some complex examples for filtering warnings. | ||||||
|
||||||
Note that :func:`filterwarnings` filters have subtle differences | ||||||
from :option:`-W` and :envvar:`PYTHONWARNINGS` regarding the *message* and *module* | ||||||
parts of the filter (as described in :ref:`warning-filter`). | ||||||
|
||||||
:: | ||||||
|
||||||
filterwarnings("ignore", message=".*generic", module=r"yourmodule\.submodule") | ||||||
# Ignore warnings in "yourmodule.submodule" which contain "generic" | ||||||
filterwarnings("ignore", message="generic", module=r"yourmodule\.submodule") | ||||||
# Ignore warnings in "yourmodule.submodule" which START with "generic" | ||||||
filterwarnings("ignore", module="yourmodule.*") | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
I think this should be escaped too. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, instead of using comments, would it be clearer (formatting wise) to use multiple code blocks? (Goes for the change below as well) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No because here we actually want to catch all characters after 'yourmodule' and not only dot There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||
# Ignore all warnings in "yourmodule" and its submodules | ||||||
|
||||||
-W "ignore:generic::yourmodule.submodule:" | ||||||
# Ignore warnings in "yourmodule.submodule" which START with "generic" | ||||||
# (but not those containing it). | ||||||
# Also note that the '.' in the module does not need to be escaped | ||||||
daniel-shimon marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
# since it is not a regex. | ||||||
-W "ignore:::yourmodule:" | ||||||
# Ignore all warnings in "yourmodule", but NOT in its submodules | ||||||
|
||||||
|
||||||
.. _default-warning-filter: | ||||||
|
||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Add examples of warning filters and the difference between programmatic and | ||
environmental filters. |
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.
Shouldn't this be escaped as well? The
r
here is not necessary, and its usage should be consistent between the two args (assuming they are both regexes).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.
No since the first arg wants to capture strings that contain 'generic' so that the '.' catches everything, while the first arg want to capture 'yourmodule.submodule' specifically, meaning that the '.' actually captures dot and should be escaped
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.
Well, it sounds to me you should put that explanation into the docs, @daniel-shimon; if it is unclear for a reviewer, it is not going to be clear for the average docs reader ;)