o
    0h4                     @   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   c/var/www/vscode/kcb/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mapto_datapipeshuffleconcatbatch_dataframes_per_row_dataframes_concat_dataframes_shuffle)__deepcopy____setstate__is_shardable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   rB   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'   rP   kvr   r   r   r8   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!)r7   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<   variablera   r@   )r
   r@   r   r`   r   r'   add_valrJ   rO   r   r   r   __add__u      
zCapture.__add__c                 C   rc   rd   )r   r@   r   r`   r   rg   r   r   r   __sub__}   rj   zCapture.__sub__c                 C   sB   t | || jd}t|| jd}t||| jd}| jd | |S )Nr?   re   r<   )r   r@   r   r   r`   )r'   rh   rJ   rO   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=   )rH   r@   rC   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@   rL   executer'   	dataframerK   r   r   r   apply_ops_2   s   
zCapture.apply_ops_2c                 C   s   |  | jd  |  }|jS )Nr>   )rt   r@   rq   columnsr'   ra   r   r   r   ru      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@   argsrW   r?   )r@   rf   ra   r<   )	rn   
isinstancer   r@   rR   r   r   r   r`   )	r'   rw   rW   argrT   rU   rJ   rO   rl   r   r   r   __call__   s(   zCapture.__call__r$   )r    r!   r"   r(   rD   rB   rQ   r8   r\   r^   rb   ri   rk   rm   rn   rt   propertyru   rz   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@   rW   )r'   r@   rW   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rW   rC   r   r   r   rD         zCaptureA.__str__c                 C   s   | j d }|S )Nreal_attributer~   rv   r   r   r   rq      s   
zCaptureA.executeNr    r!   r"   rD   rq   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   )unittest.mockmock_get_target
get_target	attributer}   )r'   r}   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)r}   r   )rN   r   r   saver	   r}   rS   )r'   captr   r   r   	__enter__   s   zCaptureLikeMock.__enter__c                 G   s   t |  | j| j d S r$   )rS   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 r|   )r@   rW   callable)r'   r   r@   rW   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   rW   rC   r   r   r   rD      s
   zCaptureCall.__str__c                 C   sV   g }| j d D ]}t|tr||  q|| qt| j}||i | j d S )Nrw   rW   )rW   rx   r   r`   rq   r   r   )r'   executed_argsry   leftr   r   r   rq      s   

zCaptureCall.executer$   r    r!   r"   r(   rD   rq   r   r   r   r   r      s    
r   c                   @   r#   )r   c                 C   s"   | j d }| j d }| d| S )Nrf   ra   z = r~   )r'   rf   ra   r   r   r   rD         

zCaptureVariableAssign.__str__c                 C   s   | j d  | j d _d S )Nra   rf   )rW   rq   rL   rC   r   r   r   rq      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 offvar_   r=   )	r   r   rX   r@   ra   r   	names_idxr}   r`   )r'   ra   r@   r   r   r   r(     s   zCaptureVariable.__init__c                 C      | j S r$   )r}   rC   r   r   r   rD        zCaptureVariable.__str__c                 C   r   r$   )rL   rC   r   r   r   rq     r   zCaptureVariable.executec                 C   s.   || j d d _| j d D ]}|  q| jS ro   rp   rr   r   r   r   r)     s   
zCaptureVariable.apply_opsN)r    r!   r"   r   r(   rD   rq   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]   rC   r   r   r   rD      r   zCaptureGetItem.__str__c                 C   s   | j  }|| j S r$   )r   rq   r]   )r'   r   r   r   r   rq   #  s   

zCaptureGetItem.executeNr   r   r   r   r   r         r   c                   @   r   )r   c                 C   s   || _ || _|| _|| _d S r$   )r@   r   r]   ra   )r'   r   r]   ra   r@   r   r   r   r(   )  s   
zCaptureSetItem.__init__c                 C   s   | j  dt| j d| j S )Nr   z] = )r   r   r]   ra   rC   r   r   r   rD   /  s   zCaptureSetItem.__str__c                 C   s"   | j  }| j }||| j< d S r$   )r   rq   ra   r]   )r'   r   ra   r   r   r   rq   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   rC   r   r   r   rD   >  rA   zCaptureAdd.__str__c                 C   s   t | jt | j S r$   r   r   r   rC   r   r   r   rq   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   rC   r   r   r   rD   K  rA   zCaptureMul.__str__c                 C   s   t | jt | j S r$   r   rC   r   r   r   rq   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   rC   r   r   r   rD   X  rA   zCaptureSub.__str__c                 C   s   t | jt | j S r$   r   rC   r   r   r   rq   [  r   zCaptureSub.executeNr   r   r   r   r   r   R  r   r   c                   @   r   )r   c                 C   r   r$   )r@   srcr}   )r'   r   r}   r@   r   r   r   r(   `  r   zCaptureGetAttr.__init__c                 C   r   )N.)r   r}   rC   r   r   r   rD   e  rA   zCaptureGetAttr.__str__c                 C   s   t | j}t|| jS r$   )r   r   rN   r}   )r'   valr   r   r   rq   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")rx   r   rq   rI   )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 )Nr;   input_)superr(   r}   )r'   r>   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%   rC   r   r   r   as_datapipe  s   z+CaptureDataFrameWithDataPipeOps.as_datapipec                 C   s   |    S r$   )r   r+   rC   r   r   r   raw_iterator  r   z,CaptureDataFrameWithDataPipeOps.raw_iteratorc                 C   s   t |  S r$   )iterr,   rC   r   r   r   r+     r   z(CaptureDataFrameWithDataPipeOps.__iter__
   F	drop_lastc                 C   s,   |   |}| jd||d}d|_|S )Nr   )r   wrapper_classT)r4   r5   r   r3   _dp_contains_dataframe)r'   
batch_sizer   r   dpr   r   r   r3     s   z%CaptureDataFrameWithDataPipeOps.batchi'  Nbuffer_size
group_sizeguaranteed_group_sizedrop_remainingc                C   s$   |   }| j|||||d}|S )Nr   )r4   r   r-   )r'   group_key_fnr   r   r   r   r   r   r   r   r-     s   	z'CaptureDataFrameWithDataPipeOps.groupbyc                 O      | j |i |S r$   )r6   r'   rw   rW   r   r   r   r1     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)rX   r   r   r   r   collate  rE   z'CaptureDataFrameWithDataPipeOps.collatec                    s4   |t v r	td||tv r|  |S t |S )NzAttempting to get )UNIMPLEMENTED_ATTRrY   DATAPIPES_OPSr   r\   r   )r'   rZ   r   r   r   r\     s
   
z+CaptureDataFrameWithDataPipeOps.__getattr__)r    r!   r"   r   r   r+   r   boolr3   r-   r1   r   r   r\   r   r   r   r   r   r     s    
r   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   rC   r   r   r   r9     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   r9   r(   r   r   r   r   r   r     s
   
 r   N)"typingr   r   %torch.utils.data.datapipes._decoratorr   /torch.utils.data.datapipes.dataframe.structuresr   #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