
    Dhk                     D   d Z ddlZddlZddlZddlmZ  ej                  dee      Z	 ej                  d      Z
 ej                  d      Z ej                  d      Z	 	 	 	 dd	e	d
e	dedej                  e	   dej                  e	   f
dZej                   dej"                  ej$                  e
   ej&                  dej$                  e
   f   f   dej(                  ej*                  e
df      dej*                  e
df   fd       Zej                   efdej"                  ej$                  e
   ej&                  dej$                  e
   f   f   dej(                  ej0                  e
      dej0                  e
   fd       Zej                   dej"                  ej$                  e
   ej&                  dej$                  e
   f   f   dej(                  ej2                  e
      dej2                  e
   fd       Zefdej"                  ej$                  e
   ej&                  dej$                  e
   f   f   dej&                  ej4                  e
   gej6                  e
   f   dej6                  e
   fdZefdej"                  ej$                  ej*                  eef      ej&                  dej$                  ej*                  eef      f   f   dej&                  ej4                  ej*                  eef      gej:                  eef   f   dej:                  eef   fdZy)z0Asyncio equivalents to regular Python functions.    N   )types_N_T_K_Vstartstepdelaystopreturnc                   K   t        j                  | |      D ]-  }|||k\  r y| t        j                  |       d{    / y7 w)z%Asyncio version of itertools.count().N)	itertoolscountasynciosleep)r	   r
   r   r   items        r/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/python_utils/aio.pyacountr      sM      t, #
mmE"""#
 	#s   A AA
Aiterable.	containerc                    K   y wN r   r   s     r   
acontainerr      s         c                    K   y wr   r   r   s     r   r   r   (   s      r   c                    K   y wr   r   r   s     r   r   r   2   s      r   c                    K   t        |       r |        }n| }g }|2 3 d{   }|j                  |       7 6  ||      S w)z
    Asyncio version of list()/set()/tuple()/etc() using an async for loop.

    So instead of doing `[item async for item in iterable]` you can do
    `await acontainer(iterable)`.

    Ncallableappendr   r   	iterable_itemsr   s        r   r   r   <   sS     " J		 E  dTi U   A979A9	Ac                    K   t        |       r |        }n| }g }|2 3 d{   }|j                  |       7 6  ||      S w)z
    Asyncio version of dict() using an async for loop.

    So instead of doing `{key: value async for key, value in iterable}` you
    can do `await adict(iterable)`.

    Nr!   r$   s        r   adictr)   Z   sS     " J		 .0E  dTi Ur'   )r   r   r   N)__doc__r   r   typing r   TypeVarintfloatr   r   r   r   OptionalAsyncIteratorr   overloadUnionAsyncIterableCallableTypeTupler   listListSetIterable
CollectiondictMappingr)   r       r   <module>r@      s   6    U]]4e$U]]4U]]4U]]4 #	##
# # ..
	#
 # kkBsE//334	6
 zz%++b#g./ [[S   -1kkBsE//334	6
 zz%**R.) ZZ^  kkBsE//334	6
 zz%))B-( YYr]   	kkBsE//334	6
 ~~		e..r22 bJ 	kkEKKB/0sE//BF0CDDE	G
 ~~	BF+	,-u}}RV/DD ]]2r6r?   