[Python-Dev] PEP 377 - allow __enter__() methods to skip the statement body

James Pye lists at jwp.name
Tue Mar 17 04:36:26 CET 2009


On Mar 16, 2009, at 3:40 PM, Nick Coghlan wrote:
> Not wasted - I prefer having this as a recognised limitation of the
> semantics rather than as an accident of the implementation.

Well, I'm glad some good came from the issue report. =)

> Who knows, maybe somebody will come up with a real world use case some
> day and we can drag the PEP out and dust it off a bit :)


I don't expect this to be at all compelling, but FWIW:

The identification of this issue came from an *experiment* attempting  
to create a *single* "daemonized()" CM that would execute the with- 
statement's block in a new child process and, of course, not execute  
it in the parent. At first, I ran into the RuntimeError in the parent  
process, and then after rewriting the CMs as classes, I realized the  
futility.

with daemonized():
  run_some_subprocess()

Of course it was all possible if I used the component CMs directly:

with parent_trap():
  with fork_but_raise_in_parent():
   run_some_subprocess()

And thus:

def daemonized():
  return contextlib.nested(parent_trap(), fork_but_raise_in_parent())


More information about the Python-Dev mailing list