ó
    OÎh]  ã                  óò   • % S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
  SSKJrJrJrJrJr  SSKJr  S	S
/r\" S\\S4   S9r\    SS j5       rSrS\S'   \" S5      r " S S5      r\4     SS jjrg)z&
Implementation for async generators.
é    )Úannotations)Úget_running_loop)Úasynccontextmanager)ÚEmptyÚFullÚQueue)ÚAnyÚAsyncGeneratorÚCallableÚIterableÚTypeVaré   )Úrun_in_executor_with_contextÚaclosingÚgenerator_to_async_generatorÚ_T_GeneratorN)Úboundc               óˆ   #   •  U 7v •  U R                  5       I Sh  v•N   g N! U R                  5       I Sh  v•N    f = f7f)z1Similar to `contextlib.aclosing`, in Python 3.10.N)Úaclose)Úthings    Úe/home/mande/repo/quber/.venv/lib/python3.13/site-packages/prompt_toolkit/eventloop/async_generator.pyr   r      s-   é € ð
Ø‹à�l‰l‹n×Óøˆe�l‰l‹n×Òüs(   ‚A„$ ‰Aœ"�A¤?¸;¹?¿Aiè  ÚintÚDEFAULT_BUFFER_SIZEÚ_Tc                  ó   • \ rS rSrSrg)Ú_Doneé1   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    r   r   r   1   s   † Úr$   r   c               óp  ^ ^^#   • Sm[        US9m[        5       nSU UU4S jjn[        U5      n   TR                  5       n[        U[        5      (       a  OU7v •  M.  SmUI Sh  v•N   g! [         a(    UR                  STR                  5      I Sh  v•N  n N[f = f N:! SmUI Sh  v•N    f = f7f)aA  
Turn a generator or iterable into an async generator.

This works by running the generator in a background thread.

:param get_iterable: Function that returns a generator or iterable when
    called.
:param buffer_size: Size of the queue between the async consumer and the
    synchronous generator that produces items.
F)Úmaxsizec                 ó>  >•  T" 5        H8  n T(       a      TR                  [        5       SS9  g  TR                  U SS9  M:       TR                  [        5       SS9  g! [         a    T(       a   g Mb  f = f! [         aB    T(       a7       TR                  [        5       SS9  g! [         a    T(       a   g M1  f = f M–  f = f! [         a    T(       a   g Mš  f = f!   TR                  [        5       SS9  f ! [         a    T(       a      g M3  f = f= f)zf
Consume the generator in background thread.
When items are received, they'll be pushed to the queue.
r   )ÚtimeoutN)Úputr   r   )ÚitemÚget_iterableÚqÚquittings    €€€r   ÚrunnerÚ,generator_to_async_generator.<locals>.runnerH   sA  ø€ ð
	Ù$ž�ö Øð ðØ—E‘Eœ%›'¨1�EÑ-ð ð' ðØŸ™˜d¨A˜Ñ.ñ ñ 'ð" ðØ—E‘Eœ%›'¨1�EÑ-ð øô ó ÞÙÚðûô  ó !Þ#Ù"ð ðØ—E‘Eœ%›'¨1�EÑ-ð øô ó ÞÙÚðúò !ð!ûô ó ÞÙÚðûð ðØ—E‘Eœ%›'¨1�EÑ-ð øô ó ÞÛÚðýs˜   ƒC$ —A! °C$ ²A;ÁC$ ÁC
 Á!A8Á7A8Á;CÂC$ ÂB) Â)C Â?C ÃC$ ÃCÃC$ Ã
C!Ã C!Ã$DÃ'D Ã?DÄ DÄDÄDÄDÄDTN)ÚreturnÚNone)	r   r   r   Ú
get_nowaitr   Úrun_in_executorÚgetÚ
isinstancer   )r+   Úbuffer_sizeÚloopr.   Úrunner_fr*   r,   r-   s   `     @@r   r   r   5   s½   úé € ð €Hä ¨Ñ5€AÜÓ€D÷ñ ôD ,¨FÓ3€HðØð?Ø—|‘|“~�ô ˜$¤×&Ñ&Øà“
ñ ð ˆð �‰øô ó ?Ø!×1Ñ1°$¸¿¹Ó>×>Ð>’ð?úñ 	øð	 ˆð �Šüsi   …+B6±B$ ³A- ÁB$ Á B6Á'B"Á(B6Á-)BÂBÂBÂB$ ÂBÂB$ Â"B6Â$B3Â,B/Â-B3Â3B6)r   r   r0   z"AsyncGenerator[_T_Generator, None])r+   zCallable[[], Iterable[_T]]r6   r   r0   zAsyncGenerator[_T, None])Ú__doc__Ú
__future__r   Úasyncior   Ú
contextlibr   Úqueuer   r   r   Útypingr	   r
   r   r   r   Úutilsr   Ú__all__r   r   r   Ú__annotations__r   r   r   r   r$   r   Ú<module>rB      s¶   ðòõ #å $Ý *ß $Ñ $ß CÕ Cå /ð Ø"ð€ñ
 �~¨^¸CÀ¸IÑ-FÑG€ð ðØðà'óó ðð*  Ð �SÓ áˆTƒ]€÷	ñ 	ð +ðHØ,ðHàðHð öHr$   