
    çg^	                     b    d dl mZ  G d d          Z G d d          Z G d de          ZdS )	    )dequec                   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                 :    || _         t                      | _        dS )O
        Parameters
        ----------
        fs: FileSystem instance
        N)fsr   files)selfr   kwargss      N/var/www/html/ai-engine/env/lib/python3.11/site-packages/fsspec/transaction.py__init__zTransaction.__init__   s     WW


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

r   c                     |                      |du            | j        r!d| j        _        d| j        _        d| _        dS 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__   sP     	X-...7 	$DG#'DG DGGG	 	r   c                 D    t                      | _        d| j        _        dS )z&Start a transaction on this FileSystemTN)r   r	   r   r   r   s    r   r   zTransaction.start"   s    WW
r   Tc                     | j         rK| j                                         }|r|                                 n|                                 | j         Kd| j        _        d| j        _        d| _        dS z8Finish transaction: commit or discard all deferred filesFN)r	   popleftr   discardr   r   r   )r
   r   fs      r   r   zTransaction.complete'   sp    j 	
""$$A 



		 j 	 !#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__5   s    


r   c                 t    | j         D ]}|                                 | j                                          d S r   )r	   r   clearr
   r"   s     r   r   zFileActor.commit8   s<     	 	AHHJJJJ
r   c                 t    | j         D ]}|                                 | j                                          d S r   )r	   r!   r-   r.   s     r   r!   zFileActor.discard=   s<     	 	AIIKKKK
r   c                 :    | j                             |           d S r   )r	   appendr.   s     r   r1   zFileActor.appendB   s    
!r   N)r$   r%   r&   r   r   r!   r1   r(   r   r   r*   r*   4   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   r   NT)actor)distributedsuperr   default_clientsubmitr*   resultr	   )r
   r   r6   client	__class__s       r   r   zDaskTransaction.__init__G   sa     	++--]]9D]99@@BB


r   Tc                     |r,| j                                                                          n+| j                                                                          d| j        _        d| _        dS r   )r	   r   r:   r!   r   r   )r
   r   s     r   r   zDaskTransaction.completeS   sb     	*J&&((((J  ''))) r   r#   )r$   r%   r&   r   r   __classcell__)r<   s   @r   r3   r3   F   sQ        
C 
C 
C 
C 
C       r   r3   N)collectionsr   r   r*   r3   r(   r   r   <module>r@      s         - - - - - - - -`       $    k     r   