o
    r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   BD:\Projects\ConvertPro\env\Lib\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u 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   "   | j D ]}|  q| j   d S r	   )r   r   clearr   r   r   r   r   r   0      

zFileActor.commitc                 C   r   r	   )r   r   r   r   r   r   r   r   5   r    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.completer   )r   r   r   r   r   __classcell__r   r   r)   r   r"   >   s    r"   N)objectr   r   r"   r   r   r   r   <module>   s    +