[Python-Dev] Warnings behave differently in Python 2 and Python 3?

2016-11-14 Thread Christoph Groth
(I assume that this list is appropriate for this topic, but if it 
isn't, I will be grateful for being redirected to the appropriate 
place.)


It seems that warnings behave differently in Python 2 and Python 
3.  Consider the following script.



def func():
   warnings.warn("Blabla", RuntimeWarning)

warnings.simplefilter("ignore")
func()
warnings.simplefilter("always")
func()


When run with CPython 2.7, there is no output, when run with 
CPython 3.5, there is the following output:



/tmp/test.py:4: RuntimeWarning: Blabla
 warnings.warn("Blabla", RuntimeWarning)


Was there indeed a change of how warnings behave in Python 3?  I 
searched, but couldn't find any documentation for this.


Understanding how warnings work is especially important when 
testing for them.
This is how I stumbled across this, in case anyone is interested: 
https://gitlab.kwant-project.org/kwant/kwant/issues/1#note_2608


I also note that the current documentation still uses 
DeprecationWarning in the example of how to suppress a warning: 
https://docs.python.org/dev/library/warnings.html#temporarily-suppressing-warnings. 
Since DeprecationWarning is disabled by default in modern Python, 
perhaps a different warning would provide a better example?

___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Warnings behave differently in Python 2 and Python 3?

2016-11-14 Thread Victor Stinner
You are looking for the bug fix http://bugs.python.org/issue4180:

"warnings.simplefilter("always") does not make warnings always show up"

Python 2.7 has a bug, Python 3.4.3+ behaves correctly.

It is surprising that Python 3.4.0 and Python 3.4.3 behaves
differently :-) (Ubuntu 14.04 uses Python 3.4.0..

Victor

2016-11-14 14:58 GMT+01:00 Christoph Groth :
> (I assume that this list is appropriate for this topic, but if it isn't, I
> will be grateful for being redirected to the appropriate place.)
>
> It seems that warnings behave differently in Python 2 and Python 3.
> Consider the following script.
>
> 
> def func():
>warnings.warn("Blabla", RuntimeWarning)
>
> warnings.simplefilter("ignore")
> func()
> warnings.simplefilter("always")
> func()
> 
>
> When run with CPython 2.7, there is no output, when run with CPython 3.5,
> there is the following output:
>
> 
> /tmp/test.py:4: RuntimeWarning: Blabla
>  warnings.warn("Blabla", RuntimeWarning)
> 
>
> Was there indeed a change of how warnings behave in Python 3?  I searched,
> but couldn't find any documentation for this.
>
> Understanding how warnings work is especially important when testing for
> them.
> This is how I stumbled across this, in case anyone is interested:
> https://gitlab.kwant-project.org/kwant/kwant/issues/1#note_2608
>
> I also note that the current documentation still uses DeprecationWarning in
> the example of how to suppress a warning:
> https://docs.python.org/dev/library/warnings.html#temporarily-suppressing-warnings.
> Since DeprecationWarning is disabled by default in modern Python, perhaps a
> different warning would provide a better example?
> ___
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Warnings behave differently in Python 2 and Python 3?

2016-11-14 Thread Christoph Groth
Thanks, Victor, for the link to the bug fix!  I suspected that the 
original mechanism was something like that, but I believed that it 
was so by design.


I find it a bit surprising that CPython gets changed between 
versions in backwards-incompatible ways (even if it’s a bug fix) 
without a notice in "what's new"...


Christoph
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Warnings behave differently in Python 2 and Python 3?

2016-11-14 Thread Terry Reedy

On 11/14/2016 4:44 PM, Christoph Groth wrote:

Thanks, Victor, for the link to the bug fix!  I suspected that the
original mechanism was something like that, but I believed that it was
so by design.

I find it a bit surprising that CPython gets changed between versions in
backwards-incompatible ways (even if it’s a bug fix) without a notice in
"what's new"...


It doesn't.  What's New proper only lists new features, which only 
appear in x.y.0.  But is includes a link to an updated 'changelog', 
which includes bug fixes, listed in separate sections for each release, 
including release candidates.  "See the changelog for a full list of 
changes.": 2nd line of What's New in Python 3.5.



--
Terry Jan Reedy


___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com