Ñò 4äKc@stdZddkZddklZddklZeƒZd„Zdefd„ƒYZ de fd „ƒYZ dS( sĤA TransactionManager controls transaction boundaries. It coordinates application code and resource managers, so that they are associated with the right transaction. i˙˙˙˙N(tWeakSet(t Transactioncs%|o|i‡fd†ƒndS(Ncs |iˆƒS((tnewTransaction(ts(ttxn(s8/usr/lib/python2.6/site-packages/transaction/_manager.pyt1s(tmap(Rtsynchs((Rs8/usr/lib/python2.6/site-packages/transaction/_manager.pyt_new_transaction/stTransactionManagercBsneZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z e d „Z RS( cCsd|_tƒ|_dS(N(tNonet_txnRt_synchs(tself((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyt__init__<s cCsN|idj o|iiƒnt|i|ƒ}|_t||iƒ|S(N(R R tabortRR R(R R((s8/usr/lib/python2.6/site-packages/transaction/_manager.pytbegin@s cCs0|idjot|i|ƒ|_n|iS(N(R R RR (R ((s8/usr/lib/python2.6/site-packages/transaction/_manager.pytgetGscCs$||ijpt‚d|_dS(N(R tAssertionErrorR (R R((s8/usr/lib/python2.6/site-packages/transaction/_manager.pytfreeLscCs|ii|ƒdS(N(R tadd(R tsynch((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyt registerSynchPscCs|ii|ƒdS(N(R tremove(R R((s8/usr/lib/python2.6/site-packages/transaction/_manager.pytunregisterSynchSscCs|iƒiƒS(N(RtisDoomed(R ((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyRVscCs|iƒiƒS(N(Rtdoom(R ((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyRYscCs|iƒiƒS(N(Rtcommit(R ((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyR\scCs|iƒiƒS(N(RR(R ((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyR_scCs|iƒi|ƒS(N(Rt savepoint(R t optimistic((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyRbs(t__name__t __module__RRRRRRRRRRtFalseR(((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyR :s          tThreadTransactionManagercBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s`Thread-aware transaction manager. Each thread is associated with a unique transaction. cCsh|_h|_dS(N(t_txnsR (R ((s8/usr/lib/python2.6/site-packages/transaction/_manager.pyRks cCs›tiƒ}|ii|ƒ}|dj o|iƒn|ii|ƒ}|djotƒ}|i|s   +