o
    Ih[                     @  s  U d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
mZ ddlmZ er3ddlmZmZ g d	Ze	d
Ze	dZeegef Zded< e	dZe	dZeejdddFddZeejjdGddZee_eejdddHdd ZeejdddId#d$ZeejdddJd'd(Zejd)kreej dddKd+d,Z ed,g7 Zeej!dLdMd0d1Z!ed2d3dNd8d9Z"edOd=d9Z"ed2d3dPd?d9Z"edQdBd9Z"ed2d3dRdDd9Z"eej"dddd3dSdEd9Z"dS )Tz 
Python polyfills for itertools
    )annotationsN)CallableoverloadTYPE_CHECKINGTypeVar)	TypeAlias   )substitute_in_graph)IterableIterator)chainchain_from_iterablecompress	dropwhileisliceteezip_longest_T_Ur   
_Predicate_T1_T2T)is_embedded_type	iterablesIterable[_T]returnIterator[_T]c                  g  s    | D ]}|E d H  qd S N )r   iterabler   r   U/var/www/vscode/kcb/lib/python3.10/site-packages/torch/_dynamo/polyfills/itertools.pyr   &   s   r   r   Iterable[Iterable[_T]]c                C  s
   t j|  S r   )	itertoolsr   )r   r   r   r    r   ,   s   
r   data	selectorsIterable[_U]c                C  s   dd t | |D S )Nc                 s  s    | ]	\}}|r|V  qd S r   r   ).0datumselectorr   r   r    	<genexpr>7   s    zcompress.<locals>.<genexpr>)zip)r#   r$   r   r   r    r   5   s   r   	predicate_Predicate[_T]c                c  s4    t |}|D ]}| |s|V   nq|E d H  d S r   )iter)r+   r   iteratorxr   r   r    r   ;   s   r   args
int | Nonec          
      g  s    t | }|jd u rdn|j}|j}|jd u rdn|j}|dk s,|d ur(|dk s,|dkr0td|d u rL|}t| D ]\}}||krI|V  ||7 }q:d S tt||}	|}t|	| D ]\}}||kri|V  ||7 }qZd S )Nr      zGIndices for islice() must be None or an integer: 0 <= x <= sys.maxsize.)	slicestartstopstep
ValueError	enumeraterangemaxr*   )
r   r0   sr4   r5   r6   next_iielementindicesr   r   r    r   I   s2    r   )   
   Iterator[tuple[_T, _T]]c                c  s0    d }d}| D ]}|rd}n||fV  |}qd S )NTFr   )r   afirstbr   r   r    pairwiseh   s   
rF   ninttuple[Iterator[_T], ...]c                  s:   t | d d gdfdd t fddt|D S )Nr   r   c                 3  sN    z	 | d d u rt  | d< d d g| d< | \}} |V  q ty&   Y d S w )NTr2   r   )nextStopIteration)linkvalue)r.   r   r    _tee|   s   ztee.<locals>._teec                 3  s    | ]} V  qd S r   r   )r&   _)rN   shared_linkr   r    r)      s    ztee.<locals>.<genexpr>)r   r   )r-   tupler9   )r   rG   r   )rN   r.   rP   r    r   w   s   r   .)	fillvalueiter1Iterable[_T1]rR   Iterator[tuple[_T1]]c               C     d S r   r   )rS   rR   r   r   r    r      s   r   iter2Iterable[_T2]'Iterator[tuple[_T1 | None, _T2 | None]]c                C  rV   r   r   )rS   rW   r   r   r    r      s   #Iterator[tuple[_T1 | _U, _T2 | _U]]c               C  rV   r   r   )rS   rW   rR   r   r   r    r         iter3Iterator[tuple[_T | None, ...]]c                G  rV   r   r   )rS   rW   r\   r   r   r   r    r      r[   Iterator[tuple[_T | _U, ...]]c               G  rV   r   r   )rS   rW   r\   rR   r   r   r   r    r      s   c              	   g  s    t tt|}t|}|sd S 	 g }t|D ],\}}zt|}W n ty=   |d8 }|s2Y  d S t| ||< | }Y nw |	| qt
|V  q)NTr2   )listmapr-   lenr8   rJ   rK   r"   repeatappendrQ   )rR   r   	iterators
num_activevaluesr=   r.   rM   r   r   r    r      s(   
)r   r   r   r   )r   r!   r   r   )r#   r   r$   r%   r   r   )r+   r,   r   r   r   r   )r   r   r0   r1   r   r   )r   r   r   rB   )r   )r   r   rG   rH   r   rI   )rS   rT   rR   r   r   rU   )rS   rT   rW   rX   r   rY   )rS   rT   rW   rX   rR   r   r   rZ   )
rS   r   rW   r   r\   r   r   r   r   r]   )rS   r   rW   r   r\   r   r   r   rR   r   r   r^   )r   r   rR   r   r   r^   )#__doc__
__future__r   r"   systypingr   r   r   r   typing_extensionsr   
decoratorsr	   collections.abcr
   r   __all__r   r   objectr   __annotations__r   r   r   from_iterabler   r   r   r   version_inforF   r   r   r   r   r   r    <module>   s`    



		