a
    h[                  	   @  sL  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rfd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dddddZeejjdddddZee_eejddddddddZeejdddddd d!d"Zeejdddd#dd$d%d&Zejd'krxeej dddd(dd)d*Z ed*g7 Zeej!dFdd+d,d-d.d/Z!ed0d1d2dd3d4d5d6Z"ed2d7d8d9d:d6Z"ed0d1d2d7dd;d<d=d6Z"eddddd>d?d@d6Z"ed0d1ddddddAdBdCd6Z"eej"dddd1dddAdDdEd6Z"dS )Gz 
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_typezIterable[_T]Iterator[_T])	iterablesreturnc                  g  s   | D ]}|E d H  qd S N )r   iterabler   r   O/var/www/auris/lib/python3.9/site-packages/torch/_dynamo/polyfills/itertools.pyr   &   s    r   zIterable[Iterable[_T]])r   r   c                C  s
   t j|  S r   )	itertoolsr   )r   r   r   r   r   ,   s    r   zIterable[_U])data	selectorsr   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       zcompress.<locals>.<genexpr>)zip)r    r!   r   r   r   r   5   s    r   z_Predicate[_T])	predicater   r   c                c  s2   t |}|D ]}| |s|V   q$q|E d H  d S r   )iter)r'   r   iteratorxr   r   r   r   ;   s    r   z
int | None)r   argsr   c          
      g  s   t | }|jd u rdn|j}|j}|jd u r0dn|j}|dk sV|d urN|dk sV|dkr^td|d u r|}t| D ]\}}||krr|V  ||7 }qrn<tt||}	|}t|	| D ]\}}||kr|V  ||7 }qd 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+   sr.   r/   r0   Znext_iielementindicesr   r   r   r   I   s(     r   )   
   zIterator[tuple[_T, _T]]c                c  s.   d }d}| D ]}|rd}n
||fV  |}qd S )NTFr   )r   afirstbr   r   r   pairwiseh   s    
r>   intztuple[Iterator[_T], ...])r   nr   c                  s>   t | d d gddfdd t fddt|D S )Nr   )r   c                 3  sR   z8| d d u r&t  | d< d d g| d< | \}} |V  qW n tyL   Y d S 0 d S )Nr,   r   )nextStopIteration)linkvalue)r)   r   r   _tee|   s    ztee.<locals>._teec                 3  s   | ]} V  qd S r   r   )r"   _)rE   shared_linkr   r   r$      r%   ztee.<locals>.<genexpr>)r(   tupler3   )r   r@   r   )rE   r)   rG   r   r   w   s    r   .)	fillvaluezIterable[_T1]zIterator[tuple[_T1]])iter1rI   r   c               C  s   d S r   r   )rJ   rI   r   r   r   r      s    r   zIterable[_T2]z'Iterator[tuple[_T1 | None, _T2 | None]])rJ   iter2r   c                C  s   d S r   r   )rJ   rK   r   r   r   r      s    z#Iterator[tuple[_T1 | _U, _T2 | _U]])rJ   rK   rI   r   c               C  s   d S r   r   )rJ   rK   rI   r   r   r   r      s    zIterator[tuple[_T | None, ...]])rJ   rK   iter3r   r   c                G  s   d S r   r   )rJ   rK   rL   r   r   r   r   r      s    zIterator[tuple[_T | _U, ...]])rJ   rK   rL   r   rI   r   c               G  s   d S r   r   )rJ   rK   rL   rI   r   r   r   r   r      s    )r   rI   r   c              	   g  s   t tt|}t|}|sd S g }t|D ]X\}}zt|}W n8 tyv   |d8 }|s`Y  d S t| ||< | }Y n0 |	| q*t
|V  qd S )Nr,   )listmapr(   lenr2   rA   rB   r   repeatappendrH   )rI   r   	iteratorsZ
num_activevaluesr6   r)   rD   r   r   r   r      s     
)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_infor>   r   r   r   r   r   r   <module>   s^   


		