o
    ]"<f                     @   sh   d dl Z d dlZd dlZdd Zdd Zdd Zejdkr(e jZe jZ	e j
Z
dS e jZe jZ	d	d
 Z
dS )    Nc                 C   sT   t | ddrdS t | ddrdS t| rdS t| dr$t| jr$dS t|  S )zY
    Tests to see if an application is a legacy-style (double-callable) application.
    _asgi_single_callableF_asgi_double_callableT__call__)getattrinspectisclasshasattrasyncioiscoroutinefunctionr   application r   L/var/www/html/kck/venv/lib/python3.10/site-packages/asgiref/compatibility.pyis_double_callable   s   

r   c                    s    fdd}|S )zS
    Transforms a double-callable ASGI application into a single-callable one.
    c                    s    | }|||I d H S Nr   )scopereceivesendinstancer   r   r   new_application!   s   z2double_to_single_callable.<locals>.new_applicationr   )r   r   r   r   r   double_to_single_callable   s   r   c                 C   s   t | rt| } | S )z
    Takes either a single- or double-callable application and always returns it
    in single-callable style. Use this to add backwards compatibility for ASGI
    2.0 applications to your server/test harness/etc.
    )r   r   r   r   r   r   guarantee_single_callable(   s   r   )      c                 C   s   | S r   r   )taskr   r   r   <lambda>=   s    r   )r	   r   sysr   r   r   version_infoget_running_looprun
run_futurecreate_taskget_event_loopensure_futurer   r   r   r   <module>   s    

