U
    ½){fÑ  ã                   @  s²   d dl mZ d dlZd dlmZ d dlmZmZmZ ddl	m
Z
 ddlmZmZmZmZ dZeeegee f ZG d	d
„ d
eƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZdS )é    )ÚannotationsN)Úpartial)ÚAnyÚCallableÚIterableé   )ÚWSGIWrapper)ÚASGIReceiveCallableÚASGISendCallableÚScopeÚWSGIFrameworki   c                   @  s   e Zd ZdS )ÚInvalidPathErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   úX/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/hypercorn/middleware/wsgi.pyr      s   r   c                   @  s6   e Zd Zefddddœdd„Zddd	dd
œdd„ZdS )Ú_WSGIMiddlewarer   ÚintÚNone)Úwsgi_appÚmax_body_sizeÚreturnc                 C  s   t ||ƒ| _|| _d S ©N)r   r   r   )Úselfr   r   r   r   r   Ú__init__   s    z_WSGIMiddleware.__init__r   r	   r
   ©ÚscopeÚreceiveÚsendr   c                 Ã  s   d S r   r   )r   r   r   r   r   r   r   Ú__call__   s    z_WSGIMiddleware.__call__N)r   r   r   ÚMAX_BODY_SIZEr   r    r   r   r   r   r      s   r   c                   @  s    e Zd Zdddddœdd„ZdS )	ÚAsyncioWSGIMiddlewarer   r	   r
   r   r   c                 ƒ  sB   t  ¡ ‰ ddddœ‡ fdd„}|  |||tˆ jd ƒ|¡I d H  d S )Nr   r   )ÚfuncÚargsr   c                   s   t  | |Ž ˆ ¡}| ¡ S r   )ÚasyncioÚrun_coroutine_threadsafeÚresult)r#   r$   Úfuture©Úloopr   r   Ú
_call_soon$   s    z2AsyncioWSGIMiddleware.__call__.<locals>._call_soon)r%   Úget_event_loopr   r   Úrun_in_executor)r   r   r   r   r+   r   r)   r   r       s    zAsyncioWSGIMiddleware.__call__N©r   r   r   r    r   r   r   r   r"      s   r"   c                   @  s    e Zd Zdddddœdd„ZdS )	ÚTrioWSGIMiddlewarer   r	   r
   r   r   c                 Ã  s,   dd l }|  ||||jj|jj¡I d H  d S )Nr   )Útrior   Z	to_threadZrun_syncZfrom_threadÚrun)r   r   r   r   r0   r   r   r   r    ,   s    zTrioWSGIMiddleware.__call__Nr.   r   r   r   r   r/   +   s   r/   )Ú
__future__r   r%   Ú	functoolsr   Útypingr   r   r   Zapp_wrappersr   r	   r
   r   r   r!   ÚdictÚbytesZWSGICallableÚ	Exceptionr   r   r"   r/   r   r   r   r   Ú<module>   s   