§
    ‹Yæi5  ã                  ó–   — d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
Z
d dlZd dlZ
 ed¦  «        Z e	d¦  «        Zdd„Zdd„ZdS )é    )ÚannotationsN)ÚTypeVarÚCallableÚ	Awaitable)Ú	ParamSpecÚT_RetvalÚT_ParamSpecÚfuncúCallable[T_ParamSpec, T_Retval]ÚargsúT_ParamSpec.argsÚkwargsúT_ParamSpec.kwargsÚreturnc             �  óÚ   K  — t          j        ¦   «         dk    rt          j        | g|¢R i |¤Žƒ d {V —†S t          j                             t          j        | g|¢R i |¤Ž¦  «        ƒ d {V —†S )NÚasyncio)ÚsniffioÚcurrent_async_libraryr   Ú	to_threadÚanyioÚrun_syncÚ	functoolsÚpartial)r
   r   r   s      úV/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/groq/_utils/_sync.pyr   r      s¥   è è € õ Ô$Ñ&Ô&¨)Ò3Ð3ÝÔ& tÐ=¨dÐ=Ð=Ð=°fÐ=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=å”×)Ò)ÝÔ˜$Ð0 Ð0Ð0Ð0¨Ð0Ð0ñô ð ð ð ð ð ð ð ó    Úfunctionú*Callable[T_ParamSpec, Awaitable[T_Retval]]c                ó   ‡ — dˆ fd„}|S )	ac  
    Take a blocking function and create an async one that receives the same
    positional and keyword arguments.

    Usage:

    ```python
    def blocking_func(arg1, arg2, kwarg1=None):
        # blocking code
        return result


    result = asyncify(blocking_function)(arg1, arg2, kwarg1=value1)
    ```

    ## Arguments

    `function`: a blocking regular callable (e.g. a function)

    ## Return

    An async function that takes the same positional and keyword arguments as the
    original one, that when called runs the same original function in a thread worker
    and returns the result.
    r   r   r   r   r   r   c               Ÿ  ó4   •K  — t          ‰g| ¢R i |¤Žƒ d {V —†S )N)r   )r   r   r   s     €r   Úwrapperzasyncify.<locals>.wrapper7   s7   øè è € Ý˜xÐ9¨$Ð9Ð9Ð9°&Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r   )r   r   r   r   r   r   © )r   r    s   ` r   Úasyncifyr"      s(   ø€ ð6:ð :ð :ð :ð :ð :ð €Nr   )r
   r   r   r   r   r   r   r   )r   r   r   r   )Ú
__future__r   r   r   Útypingr   r   r   Útyping_extensionsr   r   r   Úanyio.to_threadr   r	   r   r"   r!   r   r   ú<module>r'      sÊ   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø €€€Ø Ð Ð Ð àˆ7�:ÑÔ€Øˆi˜Ñ&Ô&€ðð ð ð ðð ð ð ð ð r   