[Python-Dev] PEP 343 and __with__
Jason Orendorff
jason.orendorff at gmail.com
Tue Oct 4 16:51:11 CEST 2005
Right after I sent the preceding message I got a funny feeling I'm
wasting everybody's time here. I apologize. Guido's original concern
about speedy C implementation for locks stands. I don't see a good
way around it.
By the way, my expansion of 'with' using coroutines (in previous
message) was incorrect. The corrected version is shorter; see below.
-j
This:
with EXPR as VAR:
BLOCK
would expand to this under PEP 342 and my proposal:
_cm = (EXPR).__with__()
VAR = _cm.next()
try:
BLOCK
except:
_cm.throw(*sys.exc_info())
finally:
try:
_cm.next()
except (StopIteration, GeneratorExit):
pass
else:
raise RuntimeError("coroutine didn't finish")
More information about the Python-Dev
mailing list