[Python-Dev] Proposed resolutions for open PEP 343 issues
Phillip J. Eby
pje at telecommunity.com
Sun Oct 23 18:51:27 CEST 2005
At 09:19 AM 10/23/2005 -0700, Guido van Rossum wrote:
>On 10/23/05, Nick Coghlan <ncoghlan at gmail.com> wrote:
> > However, I'm still concerned about the fact that the following class has a
> > context manager that doesn't actually work:
> > class Broken(object):
> > def __context__(self):
> > print "This never gets executed"
> > yield
> > print "Neither does this"
>That's only because of your proposal to endow generators with a
>default __context__ manager. Drop that idea and you're golden.
>(As long as nobody snuck the proposal back in to let the
>with-statement silently ignore objects that don't have a __context__
>method -- that was rejected long ago on.)
Actually, you've just pointed out a new complication introduced by having
__context__. The return value of __context__ is supposed to have an
__enter__ and an __exit__. Is it a type error if it doesn't? How do we
handle that, exactly?
That is, assuming generators don't have enter/exit/context methods, then
the above code is broken because its __context__ returns an object without
enter/exit, sort of like an __iter__ that returns something without a 'next()'.
More information about the Python-Dev