
    "h                     B     G d  d      Z  G d d      Z G d de       Zy)c                   0    e Zd ZdZd Zd Zd Zd ZddZy)	Transactiona  Filesystem 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
    c                      || _         g | _        y)O
        Parameters
        ----------
        fs: FileSystem instance
        N)fsfiles)selfr   s     O/var/www/html/sandstorm/venv/lib/python3.12/site-packages/fsspec/transaction.py__init__zTransaction.__init__	   s     
    c                 $    | j                          y N)startr   s    r	   	__enter__zTransaction.__enter__   s    

r   c                 p    | j                  |du        d| j                  _        d| j                  _        y)z;End transaction and commit, if exit is not due to exceptionN)commitF)completer   _intrans_transaction)r   exc_typeexc_valexc_tbs       r	   __exit__zTransaction.__exit__   s/     	X-. #r   c                 4    g | _         d| j                  _        y)z&Start a transaction on this FileSystemTN)r   r   r   r   s    r	   r   zTransaction.start   s    
r   c                     | j                   D ]%  }|r|j                          |j                          ' g | _         d| j                  _        yz8Finish transaction: commit or discard all deferred filesFN)r   r   discardr   r   )r   r   fs      r	   r   zTransaction.complete!   s?     	A
				
 
 r   NT)	__name__
__module____qualname____doc__r
   r   r   r   r    r   r	   r   r      s     $ 
!r   r   c                   $    e Zd Zd Zd Zd Zd Zy)	FileActorc                     g | _         y r   )r   r   s    r	   r
   zFileActor.__init__-   s	    
r   c                 z    | j                   D ]  }|j                           | j                   j                          y r   )r   r   clearr   r   s     r	   r   zFileActor.commit0   s.     	AHHJ	

r   c                 z    | j                   D ]  }|j                           | j                   j                          y r   )r   r   r)   r*   s     r	   r   zFileActor.discard5   s.     	AIIK	

r   c                 :    | j                   j                  |       y r   )r   appendr*   s     r	   r-   zFileActor.append:   s    

!r   N)r    r!   r"   r
   r   r   r-   r$   r   r	   r&   r&   ,   s    

r   r&   c                   &     e Zd Z fdZddZ xZS )DaskTransactionc                     ddl }t        | 	  |       |j                         }|j	                  t
        d      j                         | _        y)r       NT)actor)distributedsuperr
   default_clientsubmitr&   resultr   )r   r   r3   client	__class__s       r	   r
   zDaskTransaction.__init__?   s@     	++-]]9D]9@@B
r   c                     |r)| j                   j                         j                          n(| j                   j                         j                          d| j                  _        yr   )r   r   r7   r   r   r   )r   r   s     r	   r   zDaskTransaction.completeK   sC    JJ&&(JJ '') r   r   )r    r!   r"   r
   r   __classcell__)r9   s   @r	   r/   r/   >   s    
C!r   r/   N)r   r&   r/   r$   r   r	   <module>r<      s&   (! (!V $!k !r   