o
    j9:jQ&                     @  s  U d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
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ddddZeejdd	ded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ejdddjd.d/Zedkd4d5Z edld8d5Z edmd;d5Z ednd>d5Z eej dddodAd5Z eej!dddpdBdCZ!eej"dddqdFdGZ"eej#dddrdIdJZ#eej$dsdtdNdOZ$edPdQdudVdWZ%edvd[dWZ%edPdQdwd]dWZ%edxd`dWZ%edPdQdydbdWZ%eej%ddddQdzdcdWZ%dS ){z 
Python polyfills for itertools
    )annotationsN)Callable)overloadTYPE_CHECKING	TypeAliasTypeVar   )substitute_in_graph)IterableIterator)
accumulatechainchain_from_iterablecompresscycle	dropwhilefilterfalseislicepairwisestarmap	takewhileteezip_longest_T_Ur   
_Predicate_T1_T2T)is_embedded_type	iterablesIterable[_T]returnIterator[_T]c                  g      | D ]}|E d H  qd S N )r   iterabler%   r%   h/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/torch/_dynamo/polyfills/itertools.pyr   ,   s   r   )initialr&   funcCallable[[_T, _T], _T] | Noner(   	_T | Nonec                  s.   t | } d u rtj d fdd}||S )Niteratorr"   r!   c                 3  sT    }|d u rzt | }W n
 ty   Y d S w |V  | D ]
} ||}|V  qd S r$   nextStopIteration)r,   totalelementr)   r(   r%   r'   _accumulate?   s   
zaccumulate.<locals>._accumulater,   r"   r!   r"   )iteroperatoradd)r&   r)   r(   r,   r3   r%   r2   r'   r   3   s
   r   Iterable[Iterable[_T]]c                c  r#   r$   r%   )r&   itr%   r%   r'   r   O   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>^   s    zcompress.<locals>.<genexpr>)zip)r:   r;   r%   r%   r'   r   \   s   r   c                   s   t  }d fdd}||S )Nr,   r"   r!   c                 3  s@    g } D ]
}|V  | | q|r|D ]}|V  q|sd S d S r$   )append)r,   savedr1   r&   r%   r'   _cyclef   s   zcycle.<locals>._cycler4   )r5   )r&   r,   rE   r%   rD   r'   r   b   s   r   	predicate_Predicate[_T]c                c  sR    t | stdt| j dt|}|D ]}| |s!|V   nq|E d H  d S N'z' object is not callable)callable	TypeErrortype__name__r5   )rF   r&   r,   xr%   r%   r'   r   u   s   r   c                c  sB    t | stdt| j d|D ]}| |s d S |V  qd S rH   rJ   rK   rL   rM   )rF   r&   rN   r%   r%   r'   r      s   r   functionCallable[[], _U]Iterable[tuple[()]]itertools.starmap[_U]c                C     d S r$   r%   rP   r&   r%   r%   r'   r         r   Callable[[_T], _U]Iterable[tuple[_T]]c                C  rT   r$   r%   rU   r%   r%   r'   r      rV   Callable[[_T, _T1], _U]Iterable[tuple[_T, _T1]]c                C  rT   r$   r%   rU   r%   r%   r'   r      rV   Callable[[_T, _T1, _T2], _U]Iterable[tuple[_T, _T1, _T2]]c                C  rT   r$   r%   rU   r%   r%   r'   r      rV   Callable[..., _T]r
   c                c  s8    t | stdt| j d|D ]}| | V  qd S rH   rO   )rP   r&   argsr%   r%   r'   r      s   c                  s.   t |} d u rttj|S t fdd|S )Nc                   s
    |  S r$   r%   )rN   rP   r%   r'   <lambda>   s   
 zfilterfalse.<locals>.<lambda>)r5   filterr6   not_)rP   r&   r9   r%   r_   r'   r      s   r   r^   
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maxrA   )
r&   r^   srf   rg   rh   next_iir1   indicesr%   r%   r'   r      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'   r      s   
r   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 )NTrd   r   r-   )linkvalue)r,   r%   r'   _tee   s   ztee.<locals>._teec                 3  s    | ]} V  qd S r$   r%   )r=   _)rz   shared_linkr%   r'   r@     s    ztee.<locals>.<genexpr>)r!   r"   )r5   tuplerk   )r&   ru   r%   )rz   r,   r|   r'   r      s   r   .)	fillvalueiter1Iterable[_T1]r~   Iterator[tuple[_T1]]c               C  rT   r$   r%   )r   r~   r%   r%   r'   r     s   r   iter2Iterable[_T2]'Iterator[tuple[_T1 | None, _T2 | None]]c                C  rT   r$   r%   )r   r   r%   r%   r'   r     s   #Iterator[tuple[_T1 | _U, _T2 | _U]]c               C  rT   r$   r%   )r   r   r~   r%   r%   r'   r        iter3Iterator[tuple[_T | None, ...]]c                G  rT   r$   r%   )r   r   r   r   r%   r%   r'   r   "  r   Iterator[tuple[_T | _U, ...]]c               G  rT   r$   r%   )r   r   r   r~   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)NTrd   )listmapr5   lenrj   r.   r/   	itertoolsrepeatrB   r}   )r~   r   	iterators
num_activevaluesro   r,   ry   r%   r%   r'   r   :  s(   
)r   r    r!   r"   r$   )r&   r    r)   r*   r(   r+   r!   r"   )r&   r8   r!   r"   )r:   r    r;   r<   r!   r"   )r&   r    r!   r"   )rF   rG   r&   r    r!   r"   )rP   rQ   r&   rR   r!   rS   )rP   rW   r&   rX   r!   rS   )rP   rY   r&   rZ   r!   rS   )rP   r[   r&   r\   r!   rS   )rP   r]   r&   r
   r!   r    )rP   rG   r&   r    r!   r"   )r&   r    r^   rc   r!   r"   )r&   r    r!   rq   )r   )r&   r    ru   rv   r!   rw   )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   r    r   r    r   r    r~   r   r!   r   )r   r    r~   r   r!   r   )&__doc__
__future__r   r   r6   collections.abcr   typingr   r   r   r   
decoratorsr	   r
   r   __all__r   r   objectr   __annotations__r   r   r   r   from_iterabler   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r'   <module>   s    
				