o
    m=8j(?                     @  s  U d dl mZ dZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZ d dlmZmZ d dlmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZmZmZ edZedZ e! Z"eddG dd de	e Z#dzddZ$eddG dd dee Z%eddG dd dee Z&G dd de	e Z'd{dd Z(e(fdd!d|d'd(Z)dd)d}d/d0Z*G d1d2 d2Z+e+ Z,d2e-d3< d~d5d6Z.d~d7d8Z/dd<d=Z0dddAdBZ1ddCdDZ2ddGdHZ3ddIdJZ4eddLdMZ5eddQdMZ5	dddTdMZ5eddWdXZ6e	dddYdXZ6dd[dXZ6dd]d^Z7	ddd_d`Z8ddaddddeZ9dddhdcZ:ddldmZ;	ndddpdqZ<ddrdsZ=ddtddxdyZ>dS )    )annotations)
accumulatebatchedChaincombinationscombinations_with_replacementcompresscountcycle	dropwhilefilterfalsegroupbyislicepairwisepermutationsproductrepeatstarmaptee	takewhilezip_longestN)AsyncGeneratorAsyncIterableAsyncIterator	AwaitableCallableIterableIterator)	dataclassfield)AnyGenericTypeVarcastoverload   )Lock)CancelScope)cancel_shielded_checkpoint
checkpointcheckpoint_if_cancelledTRF)eqc                   @  s    e Zd ZU ded< dddZdS )	_IterableAsyncIteratorzIterator[T]iteratorreturnr+   c                   sN   t  I d H  zt| j}W n ty   t I d H  td w t I d H  |S N)r*   nextr/   StopIterationr(   StopAsyncIteration)selfresult r7   V/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/anyio/itertools.py	__anext__6   s   z _IterableAsyncIterator.__anext__Nr0   r+   )__name__
__module____qualname____annotations__r9   r7   r7   r7   r8   r.   2   s   
 r.   iterableIterable[T] | AsyncIterable[T]r0   AsyncIterator[T]c                 C  s,   t | tr| S t | tr|  S tt| S r1   )
isinstancer   r   	__aiter__r.   iterr?   r7   r7   r8   _iterateB   s
   

rF   c                   @  s2   e Zd ZU dZded< dZded< dZded< dS )	_TeeLinkNzobject | Nonevaluez_TeeLink[T] | Noner2   Fboolfilled)r;   r<   r=   rH   r>   r2   rJ   r7   r7   r7   r8   rG   L   s   
 rG   c                   @  s2   e Zd ZU ded< eedZded< dd
dZdS )	_TeeStaterA   r/   )default_factoryr&   locklink_TeeLink[T]r0   rI   c              	     s   |j rdS | j4 I d H 2 |j r	 W d   I d H  dS t| jtI d H |_|jtur0t |_d|_ 	 W d   I d H  dS 1 I d H sEw   Y  d S NFT)rJ   rM   anextr/   _tee_endrH   rG   r2   )r5   rN   r7   r7   r8   fillX   s   
0z_TeeState.fillN)rN   rO   r0   rI   )r;   r<   r=   r>   r   r&   rM   rS   r7   r7   r7   r8   rK   S   s   
 rK   c                   @  s:   e Zd ZU ded< ded< ded< dddZdddZdS )_TeeAsyncIteratorz_TeeState[T]_staterO   _linkrI   _element_yieldedr?   5Iterable[T] | AsyncIterable[T] | _TeeAsyncIterator[T]r0   Nonec                 C  s<   t |tr|j| _|j| _ntt|| _t | _d| _d S )NF)rB   rT   rU   rV   rK   rF   rG   rW   )r5   r?   r7   r7   r8   __init__m   s   


z_TeeAsyncIterator.__init__r+   c                   s   | j | jI d H }| jjtu r| jst I d H  t|s$t I d H  d| _t	t
| jj}| jj}|d us8J || _|sCt I d H  |S )NT)rU   rS   rV   rH   rR   rW   r)   r4   r*   r#   r+   r2   r(   )r5   had_yieldpointrH   	next_linkr7   r7   r8   r9   y   s    z_TeeAsyncIterator.__anext__N)r?   rX   r0   rY   r:   )r;   r<   r=   r>   rZ   r9   r7   r7   r7   r8   rT   h   s   
 
rT   xyc                   s   t | |S r1   )operatoradd)r]   r^   r7   r7   r8   _operator_add   s   ra   )initialfunctionCallable[[T, T], Awaitable[T]]rb   T | NoneAsyncGenerator[T, None]c                C s   t | }|d u r#z	t|I d H }W n ty"   t I d H  Y d S w t I d H  |}t I d H  |V  |2 z3 d H W }|||I d H }|V  q66 d S r1   )rF   rQ   r4   r)   r*   r(   )r?   rc   rb   r/   totalelementr7   r7   r8   r      s"   r   )strictnintri   rI   #AsyncGenerator[tuple[T, ...], None]c             	   C s   |dk r	t dt| }	 g }t|D ]1}z|t|I d H  W q tyE   |s5t I d H  Y  d S |r<t dd t|V  Y  d S w t|V  q)Nr%   zn must be at least oneTzbatched(): incomplete batch)
ValueErrorrF   rangeappendrQ   r4   r)   tuple)r?   rj   ri   r/   batch_r7   r7   r8   r      s(   



r   c                   @  s    e Zd ZdddZddd	Zd
S )r   	iterablesr@   r0   rf   c                 G  s
   |  |S r1   )from_iterable)r5   rs   r7   r7   r8   __call__   s   
zChain.__call__XIterable[Iterable[T] | AsyncIterable[T]] | AsyncIterable[Iterable[T] | AsyncIterable[T]]c                 C s   d}t |}zB|2 z3 d H W }t |2 z3 d H W }d}|V  q6 q
6 W t|dd }|d urItdd | I d H  W d    n1 sDw   Y  n&t|dd }|d urotdd | I d H  W d    w 1 sjw   Y  w |szt I d H  d S d S )NFTaclose)shield)rF   getattrr'   r)   )r5   rs   element_yielded
outer_iterr?   rh   rw   r7   r7   r8   rt      s0   zChain.from_iterableN)rs   r@   r0   rf   )rs   rv   r0   rf   )r;   r<   r=   ru   rt   r7   r7   r7   r8   r      s    
r   chainrc                 C D   dd t | 2 I d H }t t||2 z	3 d H W }|V  q6 d S )Nc                      g | z3 d H W }|q6 S r1   r7   .0rh   r7   r7   r8   
<listcomp>       z combinations.<locals>.<listcomp>)rF   	itertoolsr   r?   r}   poolcombinationr7   r7   r8   r      
   r   c                 C r~   )Nc                   r   r1   r7   r   r7   r7   r8   r      r   z1combinations_with_replacement.<locals>.<listcomp>)rF   r   r   r   r7   r7   r8   r      r   r   data	selectors(Iterable[object] | AsyncIterable[object]c                 C sn   t | }t |}d}	 zt|I d H }t|I d H }W n ty.   |s+t I d H  Y d S w |r6d}|V  qrP   rF   rQ   r4   r)   )r   r   data_iteratorselector_iteratorrz   datumselectorr7   r7   r8   r      s"   r   startstepAsyncGenerator[int, None]c                 C s4   | }	 t  I d H  |}||7 }t I d H  |V  qr1   )r*   r(   )r   r   rj   rH   r7   r7   r8   r	     s   r	   c                 C sb   g }t | 2 z3 d H W }|| |V  q6 |s!t I d H  d S 	 |D ]}t I d H  |V  q$q"r1   )rF   ro   r)   )r?   savedrh   r7   r7   r8   r
     s   
r
   	predicate Callable[[T], Awaitable[object]]c                 C s\   d}d}t |2 z3 d H W }|r| |I d H rq	d}d}|V  q	6 |s,t I d H  d S d S rP   rF   r)   )r   r?   rz   droppingrh   r7   r7   r8   r   +  s   r   c                 C sN   d}t |2 z3 d H W }| |I d H sd}|V  q6 |s%t I d H  d S d S rP   r   r   r?   rz   rh   r7   r7   r8   r   >  s   r   'AsyncGenerator[tuple[T, list[T]], None]c                 C     d S r1   r7   rE   r7   r7   r8   r   M  s   r   keyCallable[[T], Awaitable[R]]'AsyncGenerator[tuple[R, list[T]], None]c                 C  r   r1   r7   )r?   r   r7   r7   r8   r   S  s   'Callable[[T], Awaitable[object]] | None,AsyncGenerator[tuple[object, list[T]], None]c                 C s   t | }z	t|I d H }W n ty   t I d H  Y d S w |d u r%|n||I d H }|g}|2 z)3 d H W }|d u r=|n||I d H }||krU||f}|}|g}|V  q1|| q16 ||fV  d S r1   )rF   rQ   r4   r)   ro   )r?   r   r/   rh   	group_keyvaluesnext_keycompleted_groupr7   r7   r8   r   Z  s(   
stop
int | Nonec                C  r   r1   r7   )r?   r   r7   r7   r8   r   u  s   r   c                C  r   r1   r7   )r?   r   r   r   r7   r7   r8   r   }  s   argsc                 G s  |st dt|dkrt dt|d  t| }d}d}d}ddd}|jd u r.dn||j|}|jd u r;d n||j|}|jd u rHdn||j|}	|	dkrVt||dks^||krft I d H  d S t| }
d}d}|d u sv||k rz	t	|
I d H }W n t
y   |st I d H  Y d S w ||kr|| |	 dkr|d7 }d}|V  n|d7 }|d u sv||k sv|st I d H  d S d S )Nz+islice expected at least 2 arguments, got 1   z)islice expected at most 4 arguments, got r%   zGIndices for islice() must be None or an integer: 0 <= x <= sys.maxsize.zMStop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.z5Step for islice() must be a positive integer or None.rH   objectmessagestrr0   rk   c                 S  sL   z
t tt| }W n ty   t|d w |dk s |tjkr$t||S )Nr   )r_   indexr#   r    	TypeErrorrm   sysmaxsize)rH   r   r   r7   r7   r8   normalize_index  s   
zislice.<locals>.normalize_indexr   FT)rH   r   r   r   r0   rk   )r   lenslicer   r   r   rm   r)   rF   rQ   r4   )r?   r   
slice_argsstart_messagestop_messagestep_messager   r   r   r   r/   r   rz   rh   r7   r7   r8   r     s^   




!AsyncGenerator[tuple[T, T], None]c                 C s   t | }z	t|I d H }W n ty   t I d H  Y d S w d}|2 z3 d H W }d}||f}|}|V  q#6 |s@t I d H  d S d S rP   r   )r?   r/   previousrz   rh   pairr7   r7   r8   r     s$   r   c                 C s|   dd t | 2 I d H }t|}|d u r|}nt|ts!td|dk r)tdt t||2 z	3 d H W }|V  q16 d S )Nc                   r   r1   r7   r   r7   r7   r8   r     r   z permutations.<locals>.<listcomp>zExpected int as rr   zr must be non-negative)rF   r   rB   rk   r   rm   r   r   )r?   r}   r   rj   permutationr7   r7   r8   r     s   
r   )r   rs   r   c                 G s~   t | } | dk rtdg }|D ]}dd t|2 I d H }|t| qttj|d| i2 z	3 d H W }|V  q26 d S )Nr   z"repeat argument cannot be negativec                   r   r1   r7   r   r7   r7   r8   r      r   zproduct.<locals>.<listcomp>r   )r_   r   rm   rF   ro   rp   r   r   )r   rs   poolsr?   r   rH   r7   r7   r8   r     s   
 r   rh   timesc                 C s   |d u r	 t  I d H  | V  qttt|}|dkr$t  I d H  d S |dkrAt I d H  |d8 }t I d H  | V  |dks(d S d S )NTr   r%   )r)   r_   r   r#   r    r*   r(   )rh   r   	remainingr7   r7   r8   r     s    Callable[..., Awaitable[R]]lIterable[Iterable[object] | AsyncIterable[object]] | AsyncIterable[Iterable[object] | AsyncIterable[object]]AsyncGenerator[R, None]c                 C sb   d}t |2 z3 d H W }dd t |2 I d H }d}| | I d H V  q6 |s/t I d H  d S d S )NFc                   r   r1   r7   r   r7   r7   r8   r   #  r   zstarmap.<locals>.<listcomp>Tr   )rc   r?   result_yieldedargs_iterabler   r7   r7   r8   r     s   r      tuple[AsyncIterator[T], ...]c                   sb   t tt|}|dk rtd|dkrdS t|   g}| fddt|d D  t|S )Nr   zn must be >= 0r7   c                 3  s    | ]}t  V  qd S r1   )rT   )r   rr   r/   r7   r8   	<genexpr>6  s    ztee.<locals>.<genexpr>r%   )	r_   r   r#   r    rm   rT   extendrn   rp   )r?   rj   	iteratorsr7   r   r8   r   +  s    r   c                 C sd   d}t |2 z3 d H W }| |I d H s|st I d H   d S d}|V  q6 |s0t I d H  d S d S rP   r   r   r7   r7   r8   r   :  s   
r   )	fillvaluer   r   (AsyncGenerator[tuple[object, ...], None]c           
   	   G s   dd |D }t |}|st I d H  d S dg| }d}	 g }t|D ]>\}}|| s2||  q$z	t|I d H }	W n! ty\   d||< |d8 }|sX|sTt I d H  Y  d S | }	Y nw ||	 q$d}t|V  q)Nc                 S  s   g | ]}t |qS r7   )rF   )r   r?   r7   r7   r8   r   R  s    zzip_longest.<locals>.<listcomp>TFr%   )r   r)   	enumeratero   rQ   r4   rp   )
r   rs   r   
num_activeactivetuple_yieldedr   r   r/   rH   r7   r7   r8   r   N  s:   


r   )r?   r@   r0   rA   )r]   r+   r^   r+   r0   r+   )r?   r@   rc   rd   rb   re   r0   rf   )r?   r@   rj   rk   ri   rI   r0   rl   )r?   r@   r}   rk   r0   rl   )r   r@   r   r   r0   rf   )r   r%   )r   rk   r   rk   r0   r   )r?   r@   r0   rf   )r   r   r?   r@   r0   rf   )r?   r@   r0   r   )r?   r@   r   r   r0   r   r1   )r?   r@   r   r   r0   r   )r?   r@   r   r   r0   rf   )r%   )
r?   r@   r   r   r   r   r   r   r0   rf   )r?   r@   r   r   r0   rf   )r?   r@   r0   r   )r?   r@   r}   r   r0   rl   )rs   r@   r   rk   r0   rl   )rh   r+   r   r   r0   rf   )rc   r   r?   r   r0   r   )r   )r?   r@   rj   rk   r0   r   )rs   r   r   r   r0   r   )?
__future__r   __all__r   r_   r   collections.abcr   r   r   r   r   r   r   dataclassesr   r   typingr    r!   r"   r#   r$   _core._synchronizationr&   _core._tasksr'   lowlevelr(   r)   r*   r+   r,   r   rR   r.   rF   rG   rK   rT   ra   r   r   r   r|   r>   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r7   r7   r7   r8   <module>   s|    $	


'







	
K

