o
    wZh4                     @   s  d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	 g dZ
dd ZG dd	 d	ZG d
d deZg dZg dZG dd dZG dd deZG dd deZG dd dZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZd(d) ZG d*d+ d+eZG d,d- d-eZG d.d/ d/eZ ed0G d1d2 d2e e	Z!d3S )4    )AnyOptional)functional_datapipe)DataChunkDF)DFIterDataPipeIterDataPipe)CaptureCaptureA
CaptureAddCaptureCallCaptureControlCaptureDataFrameCaptureDataFrameWithDataPipeOpsCaptureFCaptureGetAttrCaptureGetItemCaptureInitialCaptureLikeMock
CaptureMulCaptureSetItem
CaptureSubCaptureVariableCaptureVariableAssignDataFrameTracerDataFrameTracedOpsdisable_captureget_valc                   C   s
   dt _d S )NT)r   disabled r   r   ^/var/www/auris/lib/python3.10/site-packages/torch/utils/data/datapipes/dataframe/dataframes.pyr   $   s   
r   c                   @   s   e Zd ZdZdS )r   FN)__name__
__module____qualname__r   r   r   r   r   r   (   s    r   c                   @      e Zd Zdd Zdd ZdS )r   c                 C   s   || _ || _d S N)source_datapipe
output_var)selfr%   r&   r   r   r   __init__-   s   
zDataFrameTracedOps.__init__c                 c   s     | j D ]	}| j|V  qd S r$   )r%   r&   	apply_ops)r'   itemr   r   r   __iter__1   s   
zDataFrameTracedOps.__iter__N)r    r!   r"   r(   r+   r   r   r   r   r   ,   s    r   )_dataframes_as_tuplesgroupby_dataframes_filtermapZto_datapipeshuffleconcatbatch_dataframes_per_row_dataframes_concat_dataframes_shuffle)__deepcopy____setstate__is_shardableZapply_shardingc                   @   s   e Zd Zd ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zedd Zdd ZdS )!r   Nc                 C   s   g g |d| _ d S )N
operations	variables	schema_dfctx)r'   r<   r   r   r   r(   K      zCapture.__init__c                 C   s   |   S r$   )_ops_strr'   r   r   r   __str__N      zCapture.__str__c                 C   s8   d}| j d D ]}t|dkr|d7 }|t|7 }q|S )N r:   r   
)r>   lenstr)r'   resopr   r   r   r@   Q   s   zCapture._ops_strc                 C   sB   d | j d< | j d D ]}d |_q
i }| jD ]	}t| |||< q|S )Nr<   r;   )r>   calculated_value__dict__getattr)r'   varstater*   r   r   r   __getstate__Y   s   

zCapture.__getstate__c                 C   s"   |  D ]
\}}t| || qd S r$   )itemssetattr)r'   rN   kvr   r   r   r7   c   s   zCapture.__setstate__c                 C   s8   |dks|dkrt d|dv rtt| || jd}|S )Nkwargkwargsz
no kwargs!)r6   r=   )RuntimeErrorAttributeErrorr   r>   )r'   attrnameresultr   r   r   __getattr__g   s   zCapture.__getattr__c                 C   s   t | || jdS )Nr=   )r   r>   )r'   keyr   r   r   __getitem__o      zCapture.__getitem__c                 C   s"   | j d t| ||| j d d S )Nr:   r=   )r>   appendr   )r'   r[   valuer   r   r   __setitem__r   s   "zCapture.__setitem__c                 C   >   t | || jd}t|| jd}| jd t||| jd |S Nr=   r:   variabler_   r>   )r
   r>   r   r^   r   r'   add_valrH   rM   r   r   r   __add__u      
zCapture.__add__c                 C   ra   rb   )r   r>   r   r^   r   re   r   r   r   __sub__}   rh   zCapture.__sub__c                 C   sB   t | || jd}t|| jd}t||| jd}| jd | |S )Nr=   rc   r:   )r   r>   r   r   r^   )r'   rf   rH   rM   tr   r   r   __mul__   s
   zCapture.__mul__c                 C   s$   t | jd dkot | jd dkS )Nr:   r   r;   )rF   r>   rA   r   r   r   _is_context_empty   s   $zCapture._is_context_emptyc                 C   s,   || j d d _| j d D ]}|  qd S Nr;   r   r:   r>   rJ   executer'   Z	dataframerI   r   r   r   apply_ops_2   s   
zCapture.apply_ops_2c                 C   s   |  | jd  |  }|jS )Nr<   )rq   r>   ro   columnsr'   r_   r   r   r   rr      s   zCapture.columnsc           	      O   s   |   rC|D ]}t|tr|  s|j| _ nq|   rC| D ]"\}}t|tr3|  s3|j| _ nt|trB|  sB|j| _ nq t| | j||d}td | jd}t| j||d}| jd | |S )N)r>   argsrU   r=   )r>   rd   r_   r:   )	rl   
isinstancer   r>   rP   r   r   r   r^   )	r'   rt   rU   argrR   rS   rH   rM   rj   r   r   r   __call__   s(   zCapture.__call__r$   )r    r!   r"   r(   rB   r@   rO   r7   rZ   r\   r`   rg   ri   rk   rl   rq   propertyrr   rw   r   r   r   r   r   H   s"    


r   c                   @   s   e Zd ZdddZdS )r   Nc                 K   s&   |d u rg g d| _ n|| _ || _d S N)r:   r;   )r>   rU   )r'   r>   rU   r   r   r   r(      s   
zCaptureF.__init__r$   )r    r!   r"   r(   r   r   r   r   r      s    r   c                   @   r#   )r	   c                 C   s   | j d  S )NnamerU   rA   r   r   r   rB         zCaptureA.__str__c                 C   s   | j d }|S )Nreal_attributer{   rs   r   r   r   ro      s   
zCaptureA.executeNr    r!   r"   rB   ro   r   r   r   r   r	      s    r	   c                   @   $   e Zd Zdd Zdd Zdd ZdS )r   c                 C   s0   dd l m} ||\}}|| _|| _|| _d S )Nr   )Zunittest.mockmockZ_get_target
get_target	attributerz   )r'   rz   r   r   r   r   r   r   r(      s
   
zCaptureLikeMock.__init__c                 C   s8   t |  | j| _t| j| jd}t|  | j| d S )N)rz   r}   )rL   r   r   saver	   rz   rQ   )r'   Zcaptr   r   r   	__enter__   s   zCaptureLikeMock.__enter__c                 G   s   t |  | j| j d S r$   )rQ   r   r   r   )r'   exc_infor   r   r   __exit__      zCaptureLikeMock.__exit__N)r    r!   r"   r(   r   r   r   r   r   r   r      s    	r   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	r   Nc                 K   s,   |d u rg g d| _ n|| _ || _|| _d S ry   )r>   rU   callable)r'   r   r>   rU   r   r   r   r(      s
   
zCaptureCall.__init__c                 C   s   dj dd| ji| jS )Nz{callable}({args},{kwargs})r   r   )formatr   rU   rA   r   r   r   rB      s
   zCaptureCall.__str__c                 C   sV   g }| j d D ]}t|tr||  q|| qt| j}||i | j d S )Nrt   rU   )rU   ru   r   r^   ro   r   r   )r'   Zexecuted_argsrv   leftr   r   r   ro      s   

zCaptureCall.executer$   r    r!   r"   r(   rB   ro   r   r   r   r   r      s    
r   c                   @   r#   )r   c                 C   s"   | j d }| j d }| d| S )Nrd   r_   z = r{   )r'   rd   r_   r   r   r   rB         

zCaptureVariableAssign.__str__c                 C   s   | j d  | j d _d S )Nr_   rd   )rU   ro   rJ   rA   r   r   r   ro      s   zCaptureVariableAssign.executeNr~   r   r   r   r   r      s    r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )r   r   c                 C   sJ   t jrtd|| _|| _dtj | _t jd7  _| jd |  d S )Nz6Attempting to create capture variable with capture offZvar_   r;   )	r   r   rV   r>   r_   r   	names_idxrz   r^   )r'   r_   r>   r   r   r   r(     s   zCaptureVariable.__init__c                 C      | j S r$   )rz   rA   r   r   r   rB        zCaptureVariable.__str__c                 C   r   r$   )rJ   rA   r   r   r   ro     r   zCaptureVariable.executec                 C   s.   || j d d _| j d D ]}|  q| jS rm   rn   rp   r   r   r   r)     s   
zCaptureVariable.apply_opsN)r    r!   r"   r   r(   rB   ro   r)   r   r   r   r   r      s    	r   c                   @   r   )r   c                 C      || _ || _|| _d S r$   )r>   r   r[   )r'   r   r[   r>   r   r   r   r(        
zCaptureGetItem.__init__c                 C   s   | j  dt| j dS )N[])r   r   r[   rA   r   r   r   rB      r   zCaptureGetItem.__str__c                 C   s   | j  }|| j S r$   )r   ro   r[   )r'   r   r   r   r   ro   #  s   

zCaptureGetItem.executeNr   r   r   r   r   r         r   c                   @   r   )r   c                 C   s   || _ || _|| _|| _d S r$   )r>   r   r[   r_   )r'   r   r[   r_   r>   r   r   r   r(   )  s   
zCaptureSetItem.__init__c                 C   s   | j  dt| j d| j S )Nr   z] = )r   r   r[   r_   rA   r   r   r   rB   /  s   zCaptureSetItem.__str__c                 C   s"   | j  }| j }||| j< d S r$   )r   ro   r_   r[   )r'   r   r_   r   r   r   ro   2  r   zCaptureSetItem.executeNr   r   r   r   r   r   (  s    r   c                   @   r   )r
   c                 C   r   r$   r>   r   rightr'   r   r   r>   r   r   r   r(   9  r   zCaptureAdd.__init__c                 C      | j  d| j S )Nz + r   r   rA   r   r   r   rB   >  r?   zCaptureAdd.__str__c                 C   s   t | jt | j S r$   r   r   r   rA   r   r   r   ro   A     zCaptureAdd.executeNr   r   r   r   r   r
   8  r   r
   c                   @   r   )r   c                 C   r   r$   r   r   r   r   r   r(   F  r   zCaptureMul.__init__c                 C   r   )Nz * r   rA   r   r   r   rB   K  r?   zCaptureMul.__str__c                 C   s   t | jt | j S r$   r   rA   r   r   r   ro   N  r   zCaptureMul.executeNr   r   r   r   r   r   E  r   r   c                   @   r   )r   c                 C   r   r$   r   r   r   r   r   r(   S  r   zCaptureSub.__init__c                 C   r   )Nz - r   rA   r   r   r   rB   X  r?   zCaptureSub.__str__c                 C   s   t | jt | j S r$   r   rA   r   r   r   ro   [  r   zCaptureSub.executeNr   r   r   r   r   r   R  r   r   c                   @   r   )r   c                 C   r   r$   )r>   srcrz   )r'   r   rz   r>   r   r   r   r(   `  r   zCaptureGetAttr.__init__c                 C   r   )N.)r   rz   rA   r   r   r   rB   e  r?   zCaptureGetAttr.__str__c                 C   s   t | j}t|| jS r$   )r   r   rL   rz   )r'   valr   r   r   ro   h  s   
zCaptureGetAttr.executeNr   r   r   r   r   r   _  r   r   c                 C   s,   t | tr	|  S t | trd|  dS | S )N")ru   r   ro   rG   )capturer   r   r   r   m  s
   

r   c                       s   e Zd Zd fdd	Z  ZS )r   Nc                    s,   g g |d}t  d | d| j | _d S )Nr9   Zinput_)superr(   rz   )r'   r<   Znew_ctx	__class__r   r   r(   w  s   zCaptureInitial.__init__r$   )r    r!   r"   r(   __classcell__r   r   r   r   r   v  s    r   c                   @   s   e Zd ZdS )r   N)r    r!   r"   r   r   r   r   r     s    r   c                       sv   e Zd Zdd Zdd Zdd Zddefd	efd
dZdddddddZ	dd Z
dd Zdd Z fddZ  ZS )r   c                 C   s   t | jd d j| S )Nr;   r   )r   r>   r%   rA   r   r   r   as_datapipe  s   z+CaptureDataFrameWithDataPipeOps.as_datapipec                 C   s   |    S r$   )r   r+   rA   r   r   r   raw_iterator  r|   z,CaptureDataFrameWithDataPipeOps.raw_iteratorc                 C   s   t |  S r$   )iterr,   rA   r   r   r   r+     r|   z(CaptureDataFrameWithDataPipeOps.__iter__
   F	drop_lastc                 C   s,   |   |}| jd||d}d|_|S )Nr   )r   wrapper_classT)r3   r4   r   r2   Z_dp_contains_dataframe)r'   Z
batch_sizer   r   dpr   r   r   r2     s   z%CaptureDataFrameWithDataPipeOps.batchi'  Nbuffer_size
group_sizeguaranteed_group_sizedrop_remainingc                C   s$   |   }| j|||||d}|S )Nr   )r3   r   r-   )r'   Zgroup_key_fnr   r   r   r   r   r   r   r   r-     s   	z'CaptureDataFrameWithDataPipeOps.groupbyc                 O      | j |i |S r$   )r5   r'   rt   rU   r   r   r   r0     r]   z'CaptureDataFrameWithDataPipeOps.shufflec                 O   r   r$   )r.   r   r   r   r   filter  r]   z&CaptureDataFrameWithDataPipeOps.filterc                 O   s   t d)Nz)Can't collate unbatched DataFrames stream)rV   r   r   r   r   collate  rC   z'CaptureDataFrameWithDataPipeOps.collatec                    s4   |t v r	td||tv r|  |S t |S )NzAttempting to get )UNIMPLEMENTED_ATTRrW   DATAPIPES_OPSr   rZ   r   )r'   rX   r   r   r   rZ     s
   
z+CaptureDataFrameWithDataPipeOps.__getattr__)r    r!   r"   r   r   r+   r   boolr2   r-   r0   r   r   rZ   r   r   r   r   r   r     s    
r   Ztrace_as_dataframec                       s@   e Zd ZU dZee ed< dd Zdd Zd	 fdd	Z	  Z
S )
r   Nr%   c                 O   s   d S r$   r   r   r   r   r   set_shuffle_settings     z$DataFrameTracer.set_shuffle_settingsc                 C   s   dS )NFr   rA   r   r   r   r8     r   zDataFrameTracer.is_shardablec                    s.   || _ |d u rtt| j }t j|d d S )N)r<   )r%   nextr   r   r(   )r'   r%   r<   r   r   r   r(     s   zDataFrameTracer.__init__r$   )r    r!   r"   r%   r   r   __annotations__r   r8   r(   r   r   r   r   r   r     s
   
 r   N)"typingr   r   Z%torch.utils.data.datapipes._decoratorr   Z/torch.utils.data.datapipes.dataframe.structuresr   Z#torch.utils.data.datapipes.datapiper   r   __all__r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:   n		
	4