U C^M@s4GdddeZGdddeZGdddeZdS)c@s:eZdZdZddZddZddZdd Zdd d Zd S) TransactionaFilesystem transaction write context Gathers files for deferred commit or discard, so that several write operations can be finalized semi-atomically. This works by having this instance as the ``.transaction`` attribute of the given filesystem cCs||_g|_dS)O Parameters ---------- fs: FileSystem instance N)fsfiles)selfrr6/tmp/pip-install-6_kvzl1k/fsspec/fsspec/transaction.py__init__ szTransaction.__init__cCs |dSN)startrrrr __enter__szTransaction.__enter__cCs$|j|dkdd|j_d|j_dS)z;End transaction and commit, if exit is not due to exceptionN)commitF)completer_intransZ _transaction)rexc_typeexc_valexc_tbrrr__exit__szTransaction.__exit__cCs d|j_dS)z&Start a transaction on this FileSystemTN)rrr rrrr szTransaction.startTcCs4|jD]}|r|q|qg|_d|j_dSz8Finish transaction: commit or discard all deferred filesFN)rr discardrr)rr frrrr s    zTransaction.completeN)T) __name__ __module__ __qualname____doc__rr rr rrrrrrs  rc@s,eZdZddZddZddZddZd S) FileActorcCs g|_dSr )rr rrrr,szFileActor.__init__cCs"|jD] }|q|jdSr )rr clearrrrrrr /s  zFileActor.commitcCs"|jD] }|q|jdSr )rrrrrrrr4s  zFileActor.discardcCs|j|dSr )rappendrrrrr9szFileActor.appendN)rrrrr rrrrrrr+srcs&eZdZfddZdddZZS)DaskTransactioncs4ddl}t||}|jtdd|_dS)rNT)Zactor) distributedsuperrZdefault_clientZsubmitrresultr)rrr!client __class__rrr>s zDaskTransaction.__init__TcCs.|r|jn|jd|j_dSr)rr r#rrr)rr rrrrJszDaskTransaction.complete)T)rrrrr __classcell__rrr%rr=s rN)objectrrrrrrrs*