
    OOId                     Z     G d  de           Z G d de           Z G d de          ZdS )c                   2    e Zd ZdZd Zd Zd Zd Zd	dZdS )
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 | _        dS )O
        Parameters
        ----------
        fs: FileSystem instance
        N)fsfiles)selfr   s     2lib/python3.11/site-packages/fsspec/transaction.py__init__zTransaction.__init__	   s     


    c                 .    |                                   d S N)startr   s    r	   	__enter__zTransaction.__enter__   s    

r   c                 f    |                      |du            d| j        _        d| j        _        dS )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__   s7     	X-... #r   c                 ,    g | _         d| j        _        dS )z&Start a transaction on this FileSystemTN)r   r   r   r   s    r	   r   zTransaction.start   s    
r   Tc                     | j         D ]-}|r|                                 |                                 .g | _         d| j        _        dS z8Finish transaction: commit or discard all deferred filesFN)r   r   discardr   r   )r   r   fs      r	   r   zTransaction.complete!   sP     	 	A 



		
 r   NT)	__name__
__module____qualname____doc__r
   r   r   r   r    r   r	   r   r      sn             $ $ $     
! ! ! ! ! !r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )	FileActorc                     g | _         d S r   )r   r   s    r	   r
   zFileActor.__init__-   s    


r   c                 t    | j         D ]}|                                 | j                                          d S r   )r   r   clearr   r   s     r	   r   zFileActor.commit0   s<     	 	AHHJJJJ
r   c                 t    | j         D ]}|                                 | j                                          d S r   )r   r   r)   r*   s     r	   r   zFileActor.discard5   s<     	 	AIIKKKK
r   c                 :    | j                             |           d S r   )r   appendr*   s     r	   r-   zFileActor.append:   s    
!r   N)r    r!   r"   r
   r   r   r-   r$   r   r	   r&   r&   ,   sP            
  
    r   r&   c                   &     e Zd Z fdZddZ xZS )DaskTransactionc                     ddl }t                                          |           |                                }|                    t
          d                                          | _        dS )r       NT)actor)distributedsuperr
   default_clientsubmitr&   resultr   )r   r   r3   client	__class__s       r	   r
   zDaskTransaction.__init__?   sa     	++--]]9D]99@@BB


r   Tc                     |r,| j                                                                          n+| j                                                                          d| j        _        dS r   )r   r   r7   r   r   r   )r   r   s     r	   r   zDaskTransaction.completeK   s]     	*J&&((((J  ''))) r   r   )r    r!   r"   r
   r   __classcell__)r9   s   @r	   r/   r/   >   sQ        
C 
C 
C 
C 
C! ! ! ! ! ! ! !r   r/   N)objectr   r&   r/   r$   r   r	   <module>r=      s   (! (! (! (! (!& (! (! (!V       $! ! ! ! !k ! ! ! ! !r   