You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add a new warnings.showwarnmsg() function taking a warnings.WarningMessage object #70755
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2018-09-19.23:13:07.080>created_at=<Date2016-03-15.14:32:00.604>labels= []
title='Add a new warnings.showwarnmsg() function taking a warnings.WarningMessage object'updated_at=<Date2018-09-19.23:13:07.079>user='https://github.com/vstinner'
Currently, the warnings.showformat() function take between 4 and 6 parameters and it's not possible to add new parameters.
warnings.showformat() calls warnings.formatwarnings() with 5 parameters. Again, it's not easy to pass new parameters.
I would like to add a new "source" parameter for ResourceWarning: see issue bpo-26567 "ResourceWarning: Use tracemalloc to display the traceback where an object was allocated when a ResourceWarning is emitted".
To make warnings extensible, I propose to:
Add new showmsg() and formatmsg() functions to the warnings module, these functions take a warnings.WarningMessage instance
The _warnings module calls warnings.showmsg() rather than warnings.showwarning()
For backward compatibility, warnings.showmsg() calls warnings.showwarning() if warnings.showwarning() was replaced. Same for warnings.formatmsg(): call warnings.formatwarning() if replaced.
Attached patch implements these changes.
With these changes, the warnings looks a little bit more like the logging module and its logging.LogRecord class.
The patch is incomplete, it doesn't add much tests yet and it doesn't touch the documentation. I would prefer to get the new API (and the whole idea) approved before going too far.
Note: If warnings.showwarning is deleted ("del warnings.showwarning"), showmsg() uses its own implementation. Same for formatmsg().
I'm not sure about the method names showmsg() and formatmsg().
Maybe: showwarnmsg() and formatwarnmsg()?
First I used warnings.show() and warnings.format(), but "format()" is already the name of a builtin function.
By the way, I would prefer to use underscore between names, like show_msg() or show_warn_msg(). But I don't know if it's ok to use a different naming scheme in an existing module :-/
changed the title [-]Add a new warnings.showmsg() function taking a warnings.WarningMessage object[/-][+]Add a new warnings.showwarnmsg() function taking a warnings.WarningMessage object[/+]on Mar 19, 2016
To make warning testing saner, in numpy we added basically my own version of catch_warnings on steroids, which needed/will need changing because of this.
Unless I missed it somewhere, this change should maybe put into the release notes to warn make it a bit easier to track down what is going on.
Activity
vstinner commentedon Mar 15, 2016
Currently, the warnings.showformat() function take between 4 and 6 parameters and it's not possible to add new parameters.
warnings.showformat() calls warnings.formatwarnings() with 5 parameters. Again, it's not easy to pass new parameters.
I would like to add a new "source" parameter for ResourceWarning: see issue bpo-26567 "ResourceWarning: Use tracemalloc to display the traceback where an object was allocated when a ResourceWarning is emitted".
To make warnings extensible, I propose to:
Attached patch implements these changes.
With these changes, the warnings looks a little bit more like the logging module and its logging.LogRecord class.
The patch is incomplete, it doesn't add much tests yet and it doesn't touch the documentation. I would prefer to get the new API (and the whole idea) approved before going too far.
Note: If warnings.showwarning is deleted ("del warnings.showwarning"), showmsg() uses its own implementation. Same for formatmsg().
vstinner commentedon Mar 15, 2016
I'm not sure about the method names showmsg() and formatmsg().
Maybe: showwarnmsg() and formatwarnmsg()?
First I used warnings.show() and warnings.format(), but "format()" is already the name of a builtin function.
By the way, I would prefer to use underscore between names, like show_msg() or show_warn_msg(). But I don't know if it's ok to use a different naming scheme in an existing module :-/
python-dev commentedon Mar 19, 2016
New changeset 79888b970cc4 by Victor Stinner in branch 'default':
Add _showwarnmsg() and _formatwarnmsg() to warnings
https://hg.python.org/cpython/rev/79888b970cc4
vstinner commentedon Mar 19, 2016
I pushed a change which adds a private _showwarnmsg(), but I'm still interested to make this new function public!
I pushed the change to unblock the issue bpo-26567.
[-]Add a new warnings.showmsg() function taking a warnings.WarningMessage object[/-][+]Add a new warnings.showwarnmsg() function taking a warnings.WarningMessage object[/+]python-dev commentedon Mar 19, 2016
New changeset 9c92352324e8 by Victor Stinner in branch 'default':
Fix test_logging
https://hg.python.org/cpython/rev/9c92352324e8
seberg commentedon Oct 19, 2016
To make warning testing saner, in numpy we added basically my own version of catch_warnings on steroids, which needed/will need changing because of this.
Unless I missed it somewhere, this change should maybe put into the release notes to warn make it a bit easier to track down what is going on.
vstinner commentedon Jun 30, 2017
New changeset 7eebeb8 by Victor Stinner in branch 'master':
bpo-30812: Fix test_warnings, restore _showwarnmsg (bpo-2504)
7eebeb8
vstinner commentedon Jun 30, 2017
New changeset d0aac5d by Victor Stinner in branch '3.6':
bpo-30812: Fix test_warnings, restore _showwarnmsg (bpo-2504) (bpo-2507)
d0aac5d