Setting many types of values to `category` argument of `warnings.simplefilter()` doesn't get any error
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Bug report
Bug description:
Setting Warning to category argument of warnings.filterwarnings() works, then setting the str type value "Hello World" to category argument of warnings.filterwarnings() gets the error message as shown below. *This is an understandable behavior:
import warnings
warnings.resetwarnings()
warnings.filterwarnings(action="ignore", category=Warning)
print(warnings.filters)
# [('ignore', None, <class 'Warning'>, None, 0)]
warnings.filterwarnings(action="ignore", category="Hello World") # Error
print(warnings.filters)
AssertionError: category must be a class
But, setting many types of values to category argument of warnings.simplefilter() doesn't get any error as shown below. *This isn't an understandable behavior:
import warnings
warnings.simplefilter(action="default", category=Warning) # Understandable
warnings.simplefilter(action="default", category="Hello World") # Not understandable
warnings.simplefilter(action="default", category=100) # Not understandable
warnings.simplefilter(action="default", category=3.14) # Not understandable
warnings.simplefilter(action="default", category=3.14+0.j) # Not understandable
warnings.simplefilter(action="default", category=True) # Not understandable
print(warnings.filters)
# [('default', None, True, None, 0),
# ('default', None, (3.14+0j), None, 0),
# ('default', None, 100, None, 0),
# ('default', None, 'Hello World', None, 0),
# ('default', None, <class 'Warning'>, None, 0)]
So, category argument of warnings.simplefilter() should also return the error message as shown below:
AssertionError: category must be a class
CPython versions tested on:
3.12
Operating systems tested on:
Windows
Linked PRs
- gh-136303
- gh-136305
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the warnings.simplefilter() and warnings.filterwarnings() entry points shown in the report, comparing how each validates its category argument. Reproduce the examples with invalid values and confirm that simplefilter() raises the same category validation error as filterwarnings().
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100