File: //usr/local/CyberCP/lib/python3.10/site-packages/asgiref/__pycache__/compatibility.cpython-310.pyc
o
�hF � @ s0 d dl Z ddlmZ dd� Zdd� Zdd � ZdS )
� N� )�iscoroutinefunctionc C sP t | dd�rdS t | dd�rdS t�| �rdS t| d�r#t| j�r#dS 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�hasattrr r ��application� r
�H/usr/local/CyberCP/lib/python3.10/site-packages/asgiref/compatibility.py�is_double_callable s
r c s � fdd�}|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 | �rt| �} | 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 )r �syncr r r r r
r
r
r �<module> s