o
    Zh[                     @  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)Zis_embedded_type	iterablesIterable[_T]returnIterator[_T]c                  g  s    | D ]}|E d H  qd S N )r   iterabler   r   P/var/www/auris/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   ).0Z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   r.   sr2   r3   r4   Z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   
rC   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 )NTr0   r   )nextStopIteration)linkvalue)r,   r   r   _tee|   s   ztee.<locals>._teec                 3  s    | ]} V  qd S r   r   )r%   _)rK   shared_linkr   r   r'      s    ztee.<locals>.<genexpr>)r   r   )r+   tupler7   )r   rD   r   )rK   r,   rM   r   r   w   s   r   .)	fillvalueiter1Iterable[_T1]rO   Iterator[tuple[_T1]]c               C     d S r   r   )rP   rO   r   r   r   r      s   r   iter2Iterable[_T2]'Iterator[tuple[_T1 | None, _T2 | None]]c                C  rS   r   r   )rP   rT   r   r   r   r      s   #Iterator[tuple[_T1 | _U, _T2 | _U]]c               C  rS   r   r   )rP   rT   rO   r   r   r   r         iter3Iterator[tuple[_T | None, ...]]c                G  rS   r   r   )rP   rT   rY   r   r   r   r   r      rX   Iterator[tuple[_T | _U, ...]]c               G  rS   r   r   )rP   rT   rY   rO   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)NTr0   )listmapr+   lenr6   rG   rH   r!   repeatappendrN   )rO   r   	iteratorsZ
num_activevaluesr:   r,   rJ   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   r.   r/   r   r   )r   r   r   r?   )r   )r   r   rD   rE   r   rF   )rP   rQ   rO   r   r   rR   )rP   rQ   rT   rU   r   rV   )rP   rQ   rT   rU   rO   r   r   rW   )
rP   r   rT   r   rY   r   r   r   r   rZ   )rP   r   rT   r   rY   r   r   r   rO   r   r   r[   )r   r   rO   r   r   r[   )#__doc__
__future__r   r!   systypingr   r   r   r   Ztyping_extensionsr   Z
decoratorsr	   collections.abcr
   r   __all__r   r   objectr   __annotations__r   r   r   from_iterabler   r   r   r   version_inforC   r   r   r   r   r   r   <module>   s`    



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