There's a lot of boilerplate code there. Using your suggestion, I could write that something like this:
def transaction(): begin_transaction() try: continue except: abort_transaction() raise else: commit_transaction()
with transaction(): changestuff() changemorestuff()
For that to work, the behaviour would need to differ slightly from what I envisioned (which was that the 'continue' would be behaviourally equivalent to a 'yield None').
Alternatively, something equivalent to the above could be written as:
def transaction():
begin_transaction()
continue
ex = sys.exc_info()
if ex[0] is not None:
abort_transaction():
else:
commit_transaction():Note that you could do this with a normal resource, too:
class transaction(object):
def __enter__():
begin_transaction() def __exit__():
ex = sys.exc_info()
if ex[0] is not None:
abort_transaction():
else:
commit_transaction():Cheers, Nick.
--
Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.skystorm.net
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
