ó
    °"³jG  ã                  óÔ  • S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	r	J
r
Jr  SSKJrJr  SSKJrJr  SSKJr  SSKJr  SS	KJr  SSKrSSKrSS
KJrJrJrJr  SSKJ r   \" S5      r!\" S5      r"\" S5      r#\$\%\&   S-  \&S-  \S-  4   r'SS jr(        SS jr)SS jr*SS jr+            SS jr,        SS jr-            S S jr.S!S jr/ " S S\\"   5      r0g)"aõ  Bridge async streaming context managers to synchronous code on the caller's event loop.

The synchronous streaming wrappers (`Agent.run_stream_sync` and `direct.model_request_stream_sync`) need
to drive an async stream from sync code. Pumping via repeated `loop.run_until_complete(anext(...))` runs
each step in a *different* asyncio task, so any cancel scope the async code enters and exits per step (e.g.
the agent graph's per-node scopes, or `group_by_temporal`'s debouncer) straddles tasks and raises
`RuntimeError: Attempted to exit cancel scope in a different task than it was entered in`. It also leaves
OpenTelemetry spans dangling, since the run span never closes in the task that opened it.

`SyncStreamBridge` instead keeps a long-lived task holding the async context manager open, and each
streaming pass runs its entire `async for` in another long-lived task. All tasks run on the caller's event
loop, preserving the event-loop affinity of async clients and other resources reused across sync calls.
é    )ÚannotationsN)ÚAsyncGeneratorÚAsyncIteratorÚ	AwaitableÚCallableÚIterator)ÚAbstractAsyncContextManagerÚsuppress)ÚContextÚcopy_context)Ú	get_ident)ÚTracebackType)ÚGeneric)ÚTypeIsÚTypeVarÚTypeVarTupleÚUnpacké   )Ú_utilsÚTÚStreamTÚ	_PosArgsTc                ó.   • [         R                  " U 5      $ )zMNarrow an optionally awaitable result without losing its generic return type.)ÚinspectÚisawaitable)Úvalues    ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/_sync_stream.pyÚ_is_awaitabler   (   s   € ä×Ò˜uÓ%Ð%ó    c              ƒ  óÊ  #   •  U R                  5       I Sh  v•N nUR                  U[        5       45         UI Sh  v•N nU R                  " U6 I Sh  v•N   g NB! [        [        4 a    e [         a  nUR	                  U5         SnAgSnAff = f NV NA! [         a>  nU R                  [        U5      XDR                  5      I Sh  v•N  (       d  e  SnAgSnAff = f7f)zZEnter and exit `cm` in one task, remaining parked while sync code uses the yielded stream.N)
Ú
__aenter__ÚKeyboardInterruptÚ
SystemExitÚBaseExceptionÚset_exceptionÚ
set_resultr   Ú	__aexit__ÚtypeÚ__traceback__)ÚcmÚenteredÚexit_requestedÚstreamÚexcÚ	exit_infos         r   Ú_hold_context_managerr0   -   sÊ   é € ð	Ø—}‘}“×&ˆð ×Ñ˜¤£Ð/Ô0ð'Ø(×(ˆ	ð �lŠl˜IÐ&×&Ñ&ñ+ 'øÜœzÐ*ó ð 	Üó Ø×Ñ˜cÔ"Üûðúñ )ñ 	'øô ó Ø—\‘\¤$ s£)¨S×2CÑ2CÓD×DÖDØô Eûðüs”   ‚C#„A —A˜A œC#¸B ½B¾B ÁC#ÁBÁC#ÁA ÁBÁ6BÂC#ÂBÂC#ÂB ÂC#Â
C Â"(CÃ
CÃCÃC#ÃC Ã C#c              ƒ  ó¸   #   • U R                  5       (       d  [        R                  " U 45      I Sh  v•N   [        R                  " S5      I Sh  v•N   g N# N7f)z`Wait for a task, then yield once so queued loop-stop callbacks run before this waiter completes.Nr   )ÚdoneÚasyncioÚwaitÚsleep)Útasks    r   Ú_wait_for_taskr7   L   s>   é € à�9‰9�;‰;Ü�lŠl˜D˜7Ó#×#Ð#Ü
�-Š-˜Ó
×Ññ 	$Ùùs!   ‚0A²A³AÁAÁAÁAc                ó|  • U R                  [        U5      5      n UR                  5       (       d)   U R                  U5        UR                  5       (       d  M)  UR                  5         g! [         aC    U R                  5       (       d*  U R                  5       (       d  UR                  5       (       a  e  Ntf = f! [         av    [        [        5         U R                  U5        SSS5        O! , (       d  f       O= f[        [        5         UR                  5         SSS5        e ! , (       d  f       e = ff = f)zODrive a task to completion despite stale `run_until_complete()` stop callbacks.N)Úcreate_taskr7   r2   Úrun_until_completeÚRuntimeErrorÚ	is_closedÚ
is_runningr$   r
   Ú	exceptionÚresult)Úloopr6   Úwaiters      r   Ú_run_task_to_completionrB   S   së   € à×Ñœn¨TÓ2Ó3€FðØ—+‘+—-‘-ðØ×'Ñ'¨Ô/ð —+‘+—-“-ð  	‡K�K…Møô  ó ð —>‘>×#Ñ# t§¡×'8Ñ'8¸F¿K¹K¿M¹MØñ =Jðûô
 ó ô ”mÕ$Ø×#Ñ# FÔ+÷ %×$Ö$úä”mÕ$Ø�N‰NÔ÷ %à÷ %Ô$àúðús_   œB; ²A+ ÁB; Á+A
B8Â5B; Â7B8Â8B; Â;D;ÃC/Ã&	D;Ã/
C=	Ã9D;ÄD)Ä 	D;Ä)
D7	Ä3D;c                óJ  • [        U5      nU H  nUR                  5         M     U H&  n[        [        5         [	        X5        SSS5        M(     UR                  5         UR                  5       (       d  UR                  U5        [	        X5        g! , (       d  f       M{  = f)z]Tell the owner task to exit the stream context manager, then drive its cleanup to completion.N)ÚtupleÚcancelr
   r$   rB   Úclearr2   r&   )r@   Ú
owner_taskr,   Ú
pump_tasksr/   Útasksr6   s          r   Ú_shutdown_looprJ   j   s   € ô �*Ó€EÛˆØ�‰Žñ ãˆÜ”mÕ$Ü# DÔ/÷ %Ñ$ñ ð ×ÑÔà×Ñ× Ñ Ø×!Ñ! )Ô,Ü˜DÕ-÷ %Ö$ús   ¹BÂ
B"	c              ƒ  óx  #   • [        U5      nU H  nUR                  5         M     U(       a  [        R                  " USS06I Sh  v•N   UR	                  5         UR                  5       (       d  UR                  S5        [        [        5         U I Sh  v•N   SSS5        g N] N! , (       d  f       g= f7f)zMCancel active stream pumps before allowing the context-manager owner to exit.Úreturn_exceptionsTN©NNN)	rD   rE   r3   ÚgatherrF   r2   r&   r
   r$   )rG   r,   rH   rI   r6   s        r   Ú_request_exitrO      s•   é € ô �*Ó€EÛˆØ�‰Žñ æÜ�nŠn˜eÐ<°tÑ<×<Ð<Ø×ÑÔØ×Ñ× Ñ Ø×!Ñ!Ð"4Ô5ô 
”-Õ	 Ø×Ð÷ 
!Ð	 ñ 	=ñ 	÷ 
!Õ	 üs=   ‚AB:ÁB%ÁA	B:ÂB)ÂB'ÂB)Â
B:Â'B)Â)
B7Â3B:c           	     óð  ^ ^^^• T R                  5       (       d  TR                  5       (       a  gSUU UU4S jjn[        5       U:X  a+  T R                  5       (       d   [        R
                  " 5         [        [        5         T R                  U5        SSS5        g! [         a<    [        [        5         [        T TTTS5        SSS5        O! , (       d  f       O= f gf = f! , (       d  f       g= f)zWBest-effort finalizer for callers that do not close the synchronous wrapper explicitly.Nc                 ó>   >• TR                  [        TT T5      5        g ©N)r9   rO   )r,   r@   rG   rH   s   €€€€r   Úrequest_exitÚ$_finalize_loop.<locals>.request_exitž   s   ø€ Ø×Ñœ z°>À:ÓNÕOr   rM   ©ÚreturnÚNone)r<   r2   r   r=   r3   Úget_running_loopr;   r
   r$   rJ   Úcall_soon_threadsafe)r@   rG   r,   rH   Úowner_thread_idrS   s   ````  r   Ú_finalize_loopr[   “   s¸   û€ ð ‡~�~×Ñ˜:Ÿ?™?×,Ñ,Ø÷Pò Pô ƒ{�oÓ%¨d¯o©o×.?Ñ.?ð	Ü×$Ò$Ô&ô 
”,Õ	Ø×!Ñ! ,Ô/÷ 
 Ð	øô ó 	Üœ-Õ(Ü˜t Z°ÀÐM_Ô`÷ )×(Ö(úáð	ú÷ 
 Õ	ús6   ÁB ÂC'ÂC$Â7CÃ	C$Ã
C	ÃC$Ã#C$Ã'
C5c              ƒ  ó”   #   •  U R                  5       I Sh  v•N $  N! [        R                   a    [        R                  s $ f = f7f)zQReceive one item without leaking `EndOfStream` through an asyncio task traceback.N)ÚreceiveÚanyioÚEndOfStreamr   ÚUNSET)Úreceive_streams    r   Ú_receive_onerb   ®   s=   é € ðØ#×+Ñ+Ó-×-Ð-Ñ-øÜ×Ñó Ü�|‰|Òðüs1   ‚A„ —˜ ›Aœ ž$AÁAÁAÁAc                  óš   • \ rS rSr% SrS\S'    SS jrSS jrSS jrSSS jjr	SS	 jr
SS
 jrSS jr\      SS j5       rSS jrSrg)ÚSyncStreamBridgeé¶   a  Runs an async streaming context manager on the caller's event loop and bridges it to sync.

Constructing the bridge enters `cm` in a long-lived owner task and exposes the yielded object as
[`stream`][pydantic_ai._sync_stream.SyncStreamBridge.stream]. Cancel scopes entered and exited by the
async code never straddle tasks, OpenTelemetry spans stay correctly nested, and async resources remain
on the same event loop across synchronous calls. The owning sync wrapper calls
[`shutdown`][pydantic_ai._sync_stream.SyncStreamBridge.shutdown] (from its own `__exit__`) to exit the
stream. A `weakref.finalize` fallback requests the same cleanup if the wrapper is dropped without
being closed, but callers should use the wrapper as a context manager for deterministic cleanup.
r   r-   c          	     ó‚  •  [         R                  " 5         [        SU S35      e! [         a     Of = f[        R                  " 5       n[        5       nUR                  5       nUR                  5       nUR                  [        XU5      5      n UR                  U5      u  p‰O¢! [         a•    UR                  5       (       d  UR                  5         [        [        5         [        X75        SSS5        O! , (       d  f       O= f[        [        5         UR                  5         SSS5        e ! , (       d  f       e = ff = fX€l        X0l        Xpl        X`l        X@l        X�l        [-        5       U l        [1        5       U l        [4        R6                  " U [8        X7X`R2                  U R.                  5      U l        g)a  Enter `cm` in a persistent task on the caller's event loop, capturing its context variables.

Args:
    cm: The async streaming context manager to run on the caller's event loop.
    async_alternative: How to name the async counterpart in error messages (e.g. `run_stream`).
zdCannot use a synchronous streaming method from within an async context or a running event loop; use z	 instead.N)r3   rX   r;   r   Úget_event_loopr   Úcreate_futurer9   r0   r:   r$   r2   rE   r
   rB   r?   r-   Ú_loopÚ_owner_taskÚ_exit_requestedÚ_caller_contextÚ_run_contextr   Ú_owner_thread_idÚsetÚ_pump_tasksÚweakrefÚfinalizer[   Ú
_finalizer)
Úselfr*   Úasync_alternativer@   Úcaller_contextr+   r,   rG   r-   Úrun_contexts
             r   Ú__init__ÚSyncStreamBridge.__init__Å   s|  € ð	Ü×$Ò$Ô&ô ð#Ø#4Ð"5°Yð@óð øô ó 	Ùð	úô ×$Ò$Ó&ˆÜ%›ˆØ;?×;MÑ;MÓ;OˆØ48×4FÑ4FÓ4HˆØ×%Ñ%Ô&;¸BÈÓ&XÓYˆ
ð	Ø"&×"9Ñ"9¸'Ó"BÑˆF�KøÜó 		Ø—?‘?×$Ñ$Ø×!Ñ!Ô#Üœ-Õ(Ü'¨Ô9÷ )×(Ö(úô œ-Õ(Ø—‘Ô ÷ )à÷ )Ô(àúð		úð ŒØŒ
Ø%ÔØ-ÔØ-ÔØ'ÔÜ )£ˆÔÜ47³EˆÔä!×*Ò*Ø”. $°N×DTÑDTÐVZ×VkÑVkó
ˆ�sH   ‚& ¦
3²3ÂB% Â%>EÃ#C8Ã/	EÃ8
D	ÄEÄD2Ä)	EÄ2
E 	Ä<Ec                óÜ   • [        5       nU R                   HQ  nU R                  U   nX R                  ;  d  U R                  U   ULd  M5  UR                  UR                  U5        MS     U$ )zGMerge run-owned context changes into the sync caller's current context.)r   rm   rl   Úrunro   )rt   ÚcontextÚvarr   s       r   Ú_task_contextÚSyncStreamBridge._task_contextõ   sa   € ä“.ˆØ×$Ô$ˆCØ×%Ñ% cÑ*ˆEØ×.Ñ.Ó.°$×2FÑ2FÀsÑ2KÐSXÔ2XØ—‘˜CŸG™G UÖ+ñ %ð ˆr   c                óª   • [        5       U R                  :w  a  [        S5      e [        R                  " 5         [        S5      e! [         a     g f = f)NzPA synchronous stream must be used and closed on the thread where it was created.zMA synchronous stream cannot be used or closed while an event loop is running.)r   rn   r;   r3   rX   )rt   s    r   Ú_check_owner_threadÚ$SyncStreamBridge._check_owner_threadþ   sQ   € Ü‹;˜$×/Ñ/Ó/ÜÐqÓrÐrð	Ü×$Ò$Ô&ô ÐjÓkÐkøô ó 	Ùð	ús   ¥A Á
AÁAc                óÊ   • U R                  5         U R                  R                  5       b8  [        U R                  U R
                  U R                  U R                  U5        gg)aQ  Exit the stream context manager, at most once.

`detach()` disarms the finalizer (returning true iff it was still live), guarding against a double
shutdown from the owning wrapper's `__exit__`, a Ctrl-C teardown, and a later GC. The `__exit__`
arguments are passed to the stream context manager so it can tear the stream down correctly.
N)r�   rs   ÚdetachrJ   ri   rj   rk   rp   )rt   r/   s     r   ÚshutdownÚSyncStreamBridge.shutdown  sO   € ð 	× Ñ Ô"Ø�?‰?×!Ñ!Ó#Ñ/Ü˜4Ÿ:™: t×'7Ñ'7¸×9MÑ9MÈt×O_ÑO_ÐajÕkð 0r   c                óâ  • U R                  5       R                  [        R                  XR                  S9nUR                  5       (       a  UR                  5       $  U R                  R                  U5      $ ! [         al    UR                  5       (       dU  UR                  5         [        [        5         U R                  R                  U5        SSS5        e ! , (       d  f       e = fe f = f)zZRun `awaitable` on the bridge's event loop and clean up its task if the caller interrupts.)r@   N)r~   r{   r3   Úensure_futureri   r2   r?   r:   r$   rE   r
   )rt   Ú	awaitabler6   s      r   Ú_runÚSyncStreamBridge._run  s°   € à×!Ñ!Ó#×'Ñ'¬×(=Ñ(=¸yÏzÉzÐ'ÐZˆð �9‰9�;‰;Ø—;‘;“=Ð ð	Ø—:‘:×0Ñ0°Ó6Ð6øÜó 	Ø—9‘9—;‘;Ø—‘”ÜœmÕ,Ø—J‘J×1Ñ1°$Ô7÷ -à÷ -Ô,àúˆEð	ús$   ÁA8 Á8>C.Â6CÃ	C.Ã
C)	Ã%	C.c              ‡  óP   #   • U" U6 n[        U5      (       a
  UI S h  v•N $ U$  N7frR   )r   )rt   ÚfuncÚargsr?   s       r   Ú_callÚSyncStreamBridge._call#  s+   é € Ù�t�ˆÜ˜× Ñ Ø—<ÐØˆñ  ùs   ‚&�$ž&c                ó2  • U R                   R                  (       d  [        S5      eU R                  5          U R	                  U R
                  " U/UQ76 5      $ ! [        [        4 a,  nU R                  [        U5      X3R                  45        e SnAff = f)ao  Run `func` on the bridge's event loop, tearing the run down if the caller is interrupted.

Without this, a `KeyboardInterrupt` (Ctrl-C) or `SystemExit` landing while we're blocked on the
event loop would unwind the caller while leaving the async code's pending tasks and open sockets
until garbage collection. See https://github.com/pydantic/pydantic-ai/issues/5975.
ú*This synchronous stream is already closed.N)rs   Úaliver;   r�   rŠ   r�   r"   r#   r…   r(   r)   )rt   r�   rŽ   r.   s       r   ÚcallÚSyncStreamBridge.call)  s~   € ð �‰×$×$ÜÐKÓLÐLØ× Ñ Ô"ð	Ø—9‘9˜TŸZšZ¨Ð4¨tÒ4Ó5Ð5øÜ!¤:Ð.ó 	Ø�M‰Mœ4 ›9 c×+<Ñ+<Ð=Ô>Øûð	ús   ¸!A ÁBÁ*'BÂBc              ƒ  ó¨  #   • U ISh  v•N   U " 5       n U  Sh  v•N nUR                  U5      I Sh  v•N   M$   N2 N! N

 [        U[        5      (       a  UR                  5       I Sh  v•N    O4! [        U[        5      (       a  UR                  5       I Sh  v•N    f f = fSSS5      ISh  v•N    g! , ISh  v•N  (       d  f       g= f7f)z÷Drive `make_aiter()` to completion in one task, forwarding items to `send_stream`.

Running the whole `async for` in one task keeps the source iterator's cancel scopes (e.g.
`group_by_temporal`'s) from being entered and exited in different tasks.
N)ÚsendÚ
isinstancer   Úaclose)Ú
make_aiterÚsend_streamÚaiterÚitems       r   Ú_pump_to_streamÚ SyncStreamBridge._pump_to_stream9  sš   é € ÷ ’;Ù“LˆEð)Ù"'÷ 1˜$Ø%×*Ñ*¨4Ó0×0Ò0ñ	 ñ1Ù0ð #(ô
 ˜e¤^×4Ñ4ØŸ,™,›.×(Ñ(ùô ˜e¤^×4Ñ4ØŸ,™,›.×(Ò(ð 5ú÷ —;—;—;—;�;üsŸ   ‚C‰<ŠC�B8–A2˜Aœ>�A A2µA ¶A2¼C¾AÁ A2ÁA2Á(B8Á+A.Á,B8Á2)B#ÂB
ÂB#Â#B8Â&CÂ1B4Â2CÂ8CÂ>CÂ?CÃCc              #  ó>  ^ ^^^	^
#   • T R                   R                  (       d  [        S5      eT R                  5         [        R
                  [           " SS9u  nm
T R                  5       R                  T R                  R                  T R                  X5      5      mT R                  m	T	R                  T5        S
U	4S jjnTR                  U5        SUU
4S jjmSUUU
U 4S jjnSn  T R                  [         T
5      n["        R$                  " U5      (       d  OUv •  M8  T R'                  T5         U(       d]   T R                  5         T" 5         [+        [,        5         T R'                  T5        S	S	S	5        T R                  R/                  T5        g	g	! [(         aº     T R                  5         e ! [         aš    U" 5         Sn  U(       d†   T R                  5         O! [         a	    U" 5         e f = fT" 5         [+        [,        5         T R'                  T5        S	S	S	5        O! , (       d  f       O= fT R                  R/                  T5        g	g	f = ff = f! [         a	    U" 5         e f = f! , (       d  f       GN	= f! U(       d†   T R                  5         O! [         a	    U" 5         e f = fT" 5         [+        [,        5         T R'                  T5        S	S	S	5        O! , (       d  f       O= fT R                  R/                  T5        f f = f7f)zVSynchronously iterate the items produced by `make_aiter()` on the bridge's event loop.r’   r   )Úmax_buffer_sizec                óš   >• TR                  U 5        [        [        5         U R                  5         S S S 5        g ! , (       d  f       g = frR   )Údiscardr
   r$   r>   )r6   rH   s    €r   Údiscard_pumpÚ2SyncStreamBridge.stream_sync.<locals>.discard_pumpW  s1   ø€ Ø×Ñ˜tÔ$ô œ-Õ(Ø—‘Ô ÷ )×(Ö(ús	   ¢<¼
A
c                 ór   >• TR                  5         T R                  5       (       d  T R                  5         g g rR   )Úcloser2   rE   )Ú	pump_taskra   s   €€r   Úcancel_pumpÚ1SyncStreamBridge.stream_sync.<locals>.cancel_pump`  s-   ø€ Ø× Ñ Ô"Ø—>‘>×#Ñ#Ø× Ñ Õ"ð $r   c                 óÚ   >• TR                  5       (       a  TR                  5         g [        [        5         TR                  R                  T 5        S S S 5        g ! , (       d  f       g = frR   )r2   r§   r
   r;   ri   rY   )r©   r¨   ra   rt   s   €€€€r   Údefer_pump_cleanupÚ8SyncStreamBridge.stream_sync.<locals>.defer_pump_cleanupe  sD   ø€ Ø�~‰~×Ñð ×$Ñ$Õ&äœlÕ+Ø—J‘J×3Ñ3°KÔ@÷ ,×+Ö+ús   ·AÁ
A*FTN©r6   úasyncio.Task[None]rV   rW   rU   )rs   r“   r;   r�   r^   Úcreate_memory_object_streamr   r~   r{   ri   r9   rž   rp   ÚaddÚadd_done_callbackr”   rb   r   Úis_setrŠ   ÚGeneratorExitr
   r$   r£   )rt   rš   r›   r¤   r¬   Úcleanup_deferredÚreceivedr©   r¨   rH   ra   s   `      @@@@r   Ústream_syncÚSyncStreamBridge.stream_syncM  s�  üé € à�‰×$×$ÜÐKÓLÐLØ× Ñ Ô"Ü&+×&GÑ&GÌÒ&JÐ[\Ñ&]Ñ#ˆ�^Ø×&Ñ&Ó(×,Ñ,¨T¯Z©Z×-CÑ-CÀT×EYÑEYÐZdÓErÓsˆ	Ø×%Ñ%ˆ
Ø�‰�yÔ!÷	!ð 	×#Ñ# LÔ1÷	#ð 	#÷
	Aò 	Að !Ðð"	4ØØŸ9™9¤\°>ÓB�Ü—}’} X×.Ñ.ØØ’ñ	 ð �I‰I�iÕ ö $ðØ×,Ñ,Ô.ñ ”ÜœmÕ,Ø—I‘I˜iÔ(÷ -à× Ñ ×(Ñ(¨Õ3ð $øô ó 		ðØ×(Ñ(Ô*ð
 øô	  ó Ù"Ô$Ø#'Ð Ùö $ðØ×,Ñ,Õ.øÜ#ó ñ 'Ô(Øð	úñ ”ÜœmÕ,Ø—I‘I˜iÔ(÷ -×,Ö,úà× Ñ ×(Ñ(¨Õ3ð $ðúð		ûô  $ó ñ 'Ô(Øð	ú÷ -Ö,ûö $ðØ×,Ñ,Õ.øÜ#ó ñ 'Ô(Øð	úñ ”ÜœmÕ,Ø—I‘I˜iÔ(÷ -×,Ö,úà× Ñ ×(Ñ(¨Õ3ð $üsë   ‡C$LÃ,A
F Ä7LÄ?I# ÅLÅ%I9Å7%LÆ
I Æ'F8Æ7I Æ8IÇI ÇJ ÇLÇG& Ç%LÇ&G9Ç9LÈH-È$	LÈ-
H;È7$LÉIÉI É J É#I6É6LÉ9
JÊLÊLÊJ%Ê$LÊ%J8Ê8LËK,Ë#	LË,
K:Ë6$LÌL)	rl   rk   rs   ri   rj   rn   rp   rm   r-   N)r*   ú$AbstractAsyncContextManager[StreamT]ru   ÚstrrV   rW   )rV   r   rU   )rM   )r/   Ú	_ExitInforV   rW   )r‰   zAwaitable[T]rV   r   )r�   z/Callable[[Unpack[_PosArgsT]], Awaitable[T] | T]rŽ   zUnpack[_PosArgsT]rV   r   )rš   úCallable[[], AsyncIterator[T]]r›   z.anyio.streams.memory.MemoryObjectSendStream[T]rV   rW   )rš   r¼   rV   zIterator[T])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__rx   r~   r�   r…   rŠ   r�   r”   Ústaticmethodrž   r·   Ú__static_attributes__© r   r   rd   rd   ¶   si   ‡ ñ	ð ƒOØ:ô.
ô`ôlö	lôô ôð  ð)Ø2ð)ØAoð)à	ó)ó ð)÷&D4r   rd   )r   zT | Awaitable[T]rV   zTypeIs[Awaitable[T]])r*   r¹   r+   z'asyncio.Future[tuple[StreamT, Context]]r,   úasyncio.Future[_ExitInfo]rV   rW   r®   )r@   úasyncio.AbstractEventLoopr6   r¯   rV   rW   )r@   rÇ   rG   r¯   r,   rÆ   rH   úset[asyncio.Task[None]]r/   r»   rV   rW   )rG   r¯   r,   rÆ   rH   rÈ   rV   rW   )r@   rÇ   rG   r¯   r,   rÆ   rH   rÈ   rZ   ÚintrV   rW   )ra   z1anyio.streams.memory.MemoryObjectReceiveStream[T]rV   zT | _utils.Unset)1rÁ   Ú
__future__r   r3   r   rq   Úcollections.abcr   r   r   r   r   Ú
contextlibr	   r
   Úcontextvarsr   r   Ú	threadingr   Útypesr   Útypingr   r^   Úanyio.streams.memoryÚtyping_extensionsr   r   r   r   Ú r   r   r   r   rD   r(   r$   r»   r   r0   r7   rB   rJ   rO   r[   rb   rd   rÅ   r   r   Ú<module>rÔ      sr  ðñõ #ã Û Û ß XÕ Xß <ß -Ý Ý Ý ã Û ß CÓ Cå áˆCƒL€Ù
�)Ó
€Ù˜Ó%€	à�$�}Ñ%¨Ñ,¨m¸dÑ.BÀMÐTXÑDXÐXÑY€	ô&ð
'Ø,ð'à4ð'ð .ð'ð 
ô	'ô>ôð..Ø
#ð.à"ð.ð .ð.ð (ð	.ð
 ð.ð 
ô.ð*Ø"ðà-ðð (ðð 
ô	ð(0Ø
#ð0à"ð0ð .ð0ð (ð	0ð
 ð0ð 
ô0ô6ô[4�w˜wÑ'õ [4r   