§
    ÇÁ³g  ã                   óª   — d dl mZ d dlmZ d dlZd dlZ edd¬¦  «        Z G d„ dej        ¦  «        Z e¦   «         Z	 G d„ d	e
¦  «        Zd
efd„ZdS )é    )Ú
ContextVar)ÚOptionalNÚcurrent_async_library_cvar)Údefaultc                   ó   — e Zd ZdZdS )Ú_ThreadLocalN)Ú__name__Ú
__module__Ú__qualname__Úname© ó    úK/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/sniffio/_impl.pyr   r      s   € € € € € ð €D€D€Dr   r   c                   ó   — e Zd ZdS )ÚAsyncLibraryNotFoundErrorN)r	   r
   r   r   r   r   r   r      s   € € € € € Ø€Dr   r   Úreturnc                  ód  — t           j        } | �| S t                               ¦   «         } | �| S dt          j        v rGddl}	 |j        }n# t          $ r |j	        j        }Y nw xY w	  |¦   «         �dS n# t          $ r Y nw xY wdt          j        v rddlm}  |¦   «         rdS t          d¦  «        ‚)ae  Detect which async library is currently running.

    The following libraries are currently supported:

    ================   ===========  ============================
    Library             Requires     Magic string
    ================   ===========  ============================
    **Trio**            Trio v0.6+   ``"trio"``
    **Curio**           -            ``"curio"``
    **asyncio**                      ``"asyncio"``
    **Trio-asyncio**    v0.8.2+     ``"trio"`` or ``"asyncio"``,
                                    depending on current mode
    ================   ===========  ============================

    Returns:
      A string like ``"trio"``.

    Raises:
      AsyncLibraryNotFoundError: if called from synchronous context,
        or if the current async library was not recognized.

    Examples:

        .. code-block:: python3

           from sniffio import current_async_library

           async def generic_sleep(seconds):
               library = current_async_library()
               if library == "trio":
                   import trio
                   await trio.sleep(seconds)
               elif library == "asyncio":
                   import asyncio
                   await asyncio.sleep(seconds)
               # ... and so on ...
               else:
                   raise RuntimeError(f"Unsupported library {library!r}")

    NÚasyncior   Úcurio)Úcurio_runningz.unknown async library, or not in async context)Úthread_localr   r   ÚgetÚsysÚmodulesr   Úcurrent_taskÚAttributeErrorÚTaskÚRuntimeErrorÚ
curio.metar   r   )Úvaluer   r   r   s       r   Úcurrent_async_libraryr!      s  € õR Ô€EØÐØˆå&×*Ò*Ñ,Ô,€EØÐØˆð •C”KÐÐØˆˆˆð	5Ø"Ô/ˆLˆLøÝð 	5ð 	5ð 	5Ø"œ<Ô4ˆLˆLˆLð	5øøøð	Øˆ|‰~Œ~Ð)Ø �yð *øåð 	ð 	ð 	ØˆDð	øøøð •#”+ÐÐØ,Ð,Ð,Ð,Ð,Ð,Øˆ=‰?Œ?ð 	Ø�7å
#Ø8ñô ð s$   ÁA	 Á	A"Á!A"Á&
A3 Á3
B Á?B )Úcontextvarsr   Útypingr   r   Ú	threadingr   Úlocalr   r   r   r   Ústrr!   r   r   r   ú<module>r'      sé   ðØ "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð à'˜ZØ ¨$ðñ ô Ð ð
ð ð ð ð �9”?ñ ô ð ð ˆ|‰~Œ~€ð	ð 	ð 	ð 	ð 	 ñ 	ô 	ð 	ðF˜sð Fð Fð Fð Fð Fð Fr   