a
     d*                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	 e
de eeedddZG dd dZG d	d
 d
ZdS )    N)ReceiveScopeSendzstarlette.middleware.wsgi is deprecated and will be removed in a future release. Please refer to https://github.com/abersheeran/a2wsgi as a replacement.)scopebodyreturnc                 C   s,  | d |  dddd| d dd| d dd	| d
  d|  ddt|tjdddd}|  dpvd}|d |d< |d |d< |  dr| d d |d< |  dg D ]p\}}|d}|dkrd}n$|dkrd}nd|  dd }|d}||v r|| d! | }|||< q|S )"zE
    Builds a scope and request body into a WSGI environ object.
    method	root_path utf8latin1pathZquery_stringasciizHTTP/http_version)   r   schemehttpTF)REQUEST_METHODZSCRIPT_NAMEZ	PATH_INFOQUERY_STRINGZSERVER_PROTOCOLzwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceserver)	localhostP   r   ZSERVER_NAMEr   ZSERVER_PORTclientZREMOTE_ADDRheaderszcontent-lengthCONTENT_LENGTHzcontent-typeCONTENT_TYPEZHTTP_-_,)	getencodedecodeioBytesIOsysstdoutupperreplace)r   r   environr   namevalueZcorrected_name r+   b/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/starlette/middleware/wsgi.pybuild_environ   s<    





r-   c                   @   s2   e Zd ZejddddZeeeddddZ	dS )WSGIMiddlewareN)appr   c                 C   s
   || _ d S N)r/   )selfr/   r+   r+   r,   __init__A   s    zWSGIMiddleware.__init__)r   receivesendr   c                    s0   |d dksJ t | j|}|||I d H  d S )Ntyper   )WSGIResponderr/   )r1   r   r3   r4   Z	responderr+   r+   r,   __call__D   s    zWSGIMiddleware.__call__)
__name__
__module____qualname__typingCallabler2   r   r   r   r7   r+   r+   r+   r,   r.   @   s   r.   c                   @   s~   e Zd ZejeddddZeeddddZ	eddd	d
Z
deejejeef  ejddddZeejddddZdS )r6   N)r/   r   r   c                 C   s<   || _ || _d | _d | _ttj\| _| _	d| _
d | _d S )NF)r/   r   statusresponse_headersanyioZcreate_memory_object_streammathinfstream_sendstream_receiveresponse_startedexc_info)r1   r/   r   r+   r+   r,   r2   K   s    zWSGIResponder.__init__)r3   r4   r   c              
      s  d}d}|r6| I d H }|| dd7 }| dd}qt| j|}t 4 I d H x}|| j| | j4 I d H 0 tj	| j
|| jI d H  W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  | jd ur
| jd | jd | jd d S )	N    Tr   	more_bodyFr   r      )r   r-   r   r?   Zcreate_task_groupZ
start_soonsenderrB   Z	to_threadZrun_syncwsgistart_responserE   with_traceback)r1   r3   r4   r   rG   messager(   Z
task_groupr+   r+   r,   r7   V   s    nzWSGIResponder.__call__)r4   r   c              	      sb   | j 4 I d H : | j 2 z3 d H W }||I d H  q6 W d   I d H  q^1 I d H sT0    Y  d S r0   )rC   )r1   r4   rM   r+   r+   r,   rI   f   s    zWSGIResponder.sender)r=   r>   rE   r   c                 C   sV   || _ | jsRd| _|dd\}}t|}dd |D }tj| jjd||d d S )NT r   c                 S   s0   g | ](\}}|  d  |  d fqS )r   )stripr    lower).0r)   r*   r+   r+   r,   
<listcomp>v   s   z0WSGIResponder.start_response.<locals>.<listcomp>zhttp.response.start)r5   r=   r   )	rE   rD   splitintr?   from_threadrunrB   r4   )r1   r=   r>   rE   Zstatus_code_stringr   status_coder   r+   r+   r,   rK   k   s    zWSGIResponder.start_response)r(   rK   r   c                 C   sH   |  ||D ]}tj| jjd|dd qtj| jjddd d S )Nzhttp.response.bodyT)r5   r   rG   rF   )r5   r   )r/   r?   rU   rV   rB   r4   )r1   r(   rK   chunkr+   r+   r,   rJ      s    
zWSGIResponder.wsgi)N)r8   r9   r:   r;   r<   r   r2   r   r   r7   rI   strListTupleAnyrK   dictrJ   r+   r+   r+   r,   r6   J   s   	 r6   )r"   r@   r$   r;   warningsr?   Zstarlette.typesr   r   r   warnDeprecationWarningbytesr]   r-   r.   r6   r+   r+   r+   r,   <module>   s   .
