
    -2i5                        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      R/var/www/html/pixcura-vrs/venv/lib/python3.11/site-packages/openai/_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   