U
    -e                     @   s4   G d d de ZG dd de ZG dd deZdS )c                   @   s:   e Zd ZdZdd Zdd Zdd Zdd	 Zd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                 C   s   || _ g | _dS )O
        Parameters
        ----------
        fs: FileSystem instance
        N)fsfiles)selfr    r   S/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/fsspec/transaction.py__init__	   s    zTransaction.__init__c                 C   s   |    d S N)startr   r   r   r   	__enter__   s    zTransaction.__enter__c                 C   s$   | j |dkd d| j_d| j_dS )z;End transaction and commit, if exit is not due to exceptionN)commitF)completer   _intransZ_transaction)r   exc_typeexc_valexc_tbr   r   r   __exit__   s    zTransaction.__exit__c                 C   s   g | _ d| j_dS )z&Start a transaction on this FileSystemTN)r   r   r   r   r   r   r   r
      s    zTransaction.startTc                 C   s4   | j D ]}|r|  q|  qg | _ d| j_dS z8Finish transaction: commit or discard all deferred filesFN)r   r   discardr   r   )r   r   fr   r   r   r   !   s    


zTransaction.completeN)T)	__name__
__module____qualname____doc__r   r   r   r
   r   r   r   r   r   r      s   	r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	FileActorc                 C   s
   g | _ d S r	   )r   r   r   r   r   r   -   s    zFileActor.__init__c                 C   s"   | j D ]}|  q| j   d S r	   )r   r   clearr   r   r   r   r   r   0   s    

zFileActor.commitc                 C   s"   | j D ]}|  q| j   d S r	   )r   r   r   r   r   r   r   r   5   s    

zFileActor.discardc                 C   s   | j | d S r	   )r   appendr   r   r   r   r   :   s    zFileActor.appendN)r   r   r   r   r   r   r   r   r   r   r   r   ,   s   r   c                       s&   e Zd Z fddZdddZ  ZS )DaskTransactionc                    s4   ddl }t | | }|jtdd | _dS )r       NT)Zactor)distributedsuperr   Zdefault_clientsubmitr   resultr   )r   r   r!   client	__class__r   r   r   ?   s    zDaskTransaction.__init__Tc                 C   s.   |r| j    n| j    d| j_dS r   )r   r   r$   r   r   r   )r   r   r   r   r   r   K   s    zDaskTransaction.complete)T)r   r   r   r   r   __classcell__r   r   r&   r   r   >   s   r   N)objectr   r   r   r   r   r   r   <module>   s   +