[Python-Dev] PEP 377 - allow __enter__() methods to skip the statement body
glyph at divmod.com
glyph at divmod.com
Sun Mar 15 19:37:52 CET 2009
On 12:56 pm, ncoghlan at gmail.com wrote:
>PEP 377 is a proposal to allow context manager __enter__() methods to
>skip the body of the with statement by raising a specific (new) flow
>control exception.
>
>Since there is a working reference implementation now, I thought it was
>time to open it up for broader discussion.
Why not allow a context manager to implement some other method, for the
sake of argument let's say "__start__", which was invoked with a
callable object and could choose to evaluate or not evaluate the
statement body by simply not calling that object (or perhaps iterable,
in the case of a generator)?
This PEP proposes that we have two ways to deal with the body of a
'with' statement: either the body is run or not. I have always wanted
to have another option: run the body later.
Passing around an object representing the body of the with statement
would allow for this use-case, as well as removing the ugly protrusion
of yet another control-flow exception (which, as has already been noted,
creates difficulties for some other python implementations).
More information about the Python-Dev
mailing list