On Tue, 11 May 2021, 7:57 pm Petr Viktorin, <encu...@gmail.com> wrote:

>
>
> On 11. 05. 21 11:08, Inada Naoki wrote:
> > On Tue, May 11, 2021 at 5:30 PM Petr Viktorin <encu...@gmail.com> wrote:
> >>
> >> Test tools should treat DeprecationWarning as error by default [0][1].
> >> So even if end users don't really see it, I don't consider it "hidden".
> >>
> >
> > *should* is not *do*. For example, nosetests don't show
> DeprecationWarning.
> > And there are many scripts without tests.
> >
> > So it is hidden for some people.
> >
>
> Sadly, there's not much we can do for users of nose. Nose itself is only
> tested with Python 3.5 and below.
>
> I'm aware that there are scripts without tests. But maybe letting them
> suddenly break is the right balance between letting people know and
> annyoing everyone with unactionable warnings.
>

Scripts (with or without tests) have gone back to showing deprecation
warnings by default since 3.7: https://www.python.org/dev/peps/pep-0565/

If DeprecationWarning is not enough, then we should be having a wider
> discussion, and PEP 387 should change. This particular issue should not
> be an exception to the process.
>


The limitations section of PEP 565 covers several known problems even with
the 3.7+ status quo:
https://www.python.org/dev/peps/pep-0565/#limitations-on-pep-scope

Most notably, unit test doesn't catch import time or compile time
deprecation warnings, and it doesn't catch deprecations in subprocesses.

Another case that came up in this thread was support libraries that are
tested with warnings treated as errors, but:

* the test runner still doesn't enable all warnings (e.g. nose projects
that never migrated to nose2)
* the project isn't covered as a dependency by any *other* project's test
suites that are stricter about avoiding deprecation warnings in their code
and the code they use

And, of course, projects that don't treat warnings as errors in their tests
will get a green tick from CI systems no matter how many warnings they emit.

If we wanted to go back to enabling DeprecationWarning by default across
the board, I think we could only reasonably do that if we provided an
easier to use "hide all warnings except the ones I specifically opt in to
seeing" API like the one mentioned at the end of PEP 565:
https://bugs.python.org/issue32229

As currently written, that API proposal would flip the ergonomics problem
though - while ensuring the warnings system was configured early enough to
capture compile time and import time warnings would be up to the
application, being able to easily propagate the config change to
subprocesses would need to be part of the new API design.

Cheers,
Nick.





>
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/NEXGBG6ERDVK6WMDZM6IHPDAQSB4ANIS/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to