On Tue, Sep 5, 2017 at 10:54 AM Guido van Rossum <gu...@python.org> wrote:
> On Tue, Sep 5, 2017 at 7:42 AM, Neil Girdhar <mistersh...@gmail.com> > wrote: > >> I think you really should add a context manager to PEP 550 since it is >> better than calling "set", which leaks state. Nathaniel is right that you >> need set to support legacy numpy methods like seterr. Had there been a way >> of setting context variables using a context manager, then numpy would only >> have had to implement the "errstate" context manager on top of it. There >> would have been no need for seterr, which leaks state between code blocks >> and is error-prone. >> > > There is nothing in current Python to prevent numpy to use a context > manager for seterr; it's easy enough to write your own context manager that > saves and restores thread-local state (decimal shows how). In fact with PEP > 550 it's so easy that it's really not necessary for the PEP to define this > as a separate API -- whoever needs it can just write their own. > Don't you want to encourage people to use the context manager form and discourage calls to set/discard? I recognize that seterr has to be supported and has to sit on top of some method in the execution context. However, if we were starting from scratch, I don't see why we would have seterr at all. We should just have errstate. seterr can leak state, which might not seem like a big deal in a small program, but in a large program, it can mean that a minor change in one module can cause bugs in a totally different part of the program. These kinds of bugs can be very hard to debug. > -- > --Guido van Rossum (python.org/~guido) >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/