[Python-3000] [Python-Dev] warnings.showwarning (was Re: Reminder: last alphas next Wednesday 07-May-2008)
Brett Cannon
brett at python.org
Fri May 2 23:27:48 CEST 2008
On Fri, May 2, 2008 at 6:47 AM, Jean-Paul Calderone <exarkun at divmod.com> wrote:
[SNIP]
> > Hi Brett,
> >
> > I'm still seeing some strange behavior from the warnings module, This
> > can be observed on the community buildbot for Twisted, for example:
> >
> >
> http://python.org/dev/buildbot/community/trunk/x86%20Ubuntu%20Hardy%20trunk/builds/171
> /step-Twisted.zope.stable/0
> >
> > The log ends with basically all of the warning-related tests in Twisted
> > failing, reporting that no warnings happened.
> >
>
> Just to follow up on this part, the failures are due to the tests expecting
> to be able to override a different function in the warnings module, not
> showwarning (warn_explicit). We used warn_explicit because there's no way
> to clear way to disable the filtering that gets applied to showwarning.
> warn_explicit doesn't claim to be a public hook, so I guess I won't
> complain
> about this. :)
>
Yeah, you guys are being naughty by replacing that and expecting stuff
still to work. =)
> The below behavior still seems wrong to me, though.
>
>
> > There is also some strange behavior that can be easily observed in the
> REPL:
> >
> > exarkun at boson:~/Projects/python/trunk$ ./python
> /home/exarkun/Projects/Divmod/trunk/Combinator/combinator/xsite.py:7:
> DeprecationWarning: the sets module is deprecated
> > from sets import Set
> > Python 2.6a2+ (trunk:62636M, May 2 2008, 09:19:41) [GCC 4.1.3
> 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
> > Type "help", "copyright", "credits" or "license" for more information.
> > >>> import warnings
> > >>> warnings.warn("foo")
> > :1: UserWarning: foo # Where'd the module name go?
> > >>> def f(*a):
> > ... print a
> > ...
> > >>> warnings.showwarning = f
> > >>> warnings.warn("foo")
> > >>> # Where'd the warning go?
> >
> > Any ideas on this?
If you run this in a stock 2.5 interpreter I get something similar
except the missing '__main__'. If I run it with PYTHONSTARTUP set it
actually uses that module for some reason as the source.
I created issue2743 to fix the output at the interpreter, but I made
it a critical bug since it is only at the interpreter (and thus
breaking people's code will be small), but it should still be fixed
since 'warnings' is a core piece of infrastructure.
-Brett
-Brett
More information about the Python-3000
mailing list