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 Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com