
    "d*                         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j
        de           dededefdZ G d d	          Z G 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                 z   | d         |                      dd                              d                              d          | d                             d                              d          | d                             d          d	| d
          d|                      dd          t          j        |          t
          j        dddd}|                      d          pd}|d         |d<   |d         |d<   |                      d          r| d         d         |d<   |                      dg           D ]\  }}|                    d          }|dk    rd}n4|dk    rd}n+d|                                                     dd           }|                    d          }||v r||         d!z   |z   }|||<   |S )"zE
    Builds a scope and request body into a WSGI environ object.
    method	root_path utf8latin1pathquery_stringasciizHTTP/http_version)   r   schemehttpTF)REQUEST_METHODSCRIPT_NAME	PATH_INFOQUERY_STRINGSERVER_PROTOCOLzwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceserver)	localhostP   r   SERVER_NAMEr   SERVER_PORTclientREMOTE_ADDRheaderszcontent-lengthCONTENT_LENGTHzcontent-typeCONTENT_TYPEHTTP_-_,)	getencodedecodeioBytesIOsysstdoutupperreplace)r   r   environr   namevaluecorrected_names          =D:\api_v1\venv\Lib\site-packages\starlette/middleware/wsgi.pybuild_environr7      s   
  /yyb1188@@GGQQ6]))&1188BBn-44W==:5#8:: 99Xv66j&&z ! G  YYx  5$5F#AYGM#AYGM yy 4!&x!3 yyB// ( (e{{8$$###-NN^##+NN+T^^1133;;CEEN X&&W$$N+c1E9E"'N    c                   @    e Zd Zdej        ddfdZdedededdfdZ	dS )	WSGIMiddlewareappr   Nc                     || _         d S N)r;   )selfr;   s     r6   __init__zWSGIMiddleware.__init__A   s    r8   r   receivesendc                 t   K   |d         dk    sJ t          | j        |          } |||           d {V  d S )Ntyper   )WSGIResponderr;   )r>   r   r@   rA   	responders        r6   __call__zWSGIMiddleware.__call__D   sV      V}&&&&!$(E22	i&&&&&&&&&&&r8   )
__name__
__module____qualname__typingCallabler?   r   r   r   rF    r8   r6   r:   r:   @   sh        FO     'E 'G '4 'D ' ' ' ' ' 'r8   r:   c            	           e Zd Zdej        deddfdZdededdfdZ	deddfd	Z
	 dd
edej        ej        eef                  dej        ddfdZdedej        ddfdZdS )rD   r;   r   r   Nc                     || _         || _        d | _        d | _        t	          j        t          j                  \  | _        | _	        d| _
        d | _        d S )NF)r;   r   statusresponse_headersanyiocreate_memory_object_streammathinfstream_sendstream_receiveresponse_startedexc_info)r>   r;   r   s      r6   r?   zWSGIResponder.__init__K   sV    
 $050QH1
 1
-$- !&$(r8   r@   rA   c                   K   d}d}|rA |             d {V }||                     dd          z  }|                     dd          }|At          | j        |          }t          j                    4 d {V }|                    | j        |           | j        4 d {V  t          j        	                    | j
        || j                   d {V  d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   | j        7| j        d                             | j        d         | j        d                   d S )	Nr8   Tr   	more_bodyFr   r      )r)   r7   r   rQ   create_task_group
start_soonsenderrU   	to_threadrun_syncwsgistart_responserX   with_traceback)r>   r@   rA   r   rZ   messager2   
task_groups           r6   rF   zWSGIResponder.__call__V   s     	 	8#GIIooooooGGKK,,,DK77I  	8  
D11*,, 	X 	X 	X 	X 	X 	X 	X
!!$+t444' X X X X X X X Xo..ty'4CVWWWWWWWWWX X X X X X X X X X X X X X X X X X X X X X X X X X X	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X =$-"11$-2BDMRSDTUUU %$s6   8)D!2C%D%
C/	/D2C/	3D
DDc                    K   | j         4 d {V  | j         2 3 d {V } ||           d {V  6 	 d d d           d {V  d S # 1 d {V swxY w Y   d S r=   )rV   )r>   rA   rd   s      r6   r^   zWSGIResponder.senderf   s#     & 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$!%!4 $ $ $ $ $ $ $gd7mm######## "5!4	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A1A
AArO   rP   rX   c                     || _         | j        skd| _        |                    dd          \  }}t          |          }d |D             }t          j                            | j        j        d||d           d S d S )NT r   c                     g | ]e\  }}|                                                     d                                           |                                                     d           ffS )r   )stripr*   lower).0r3   r4   s      r6   
<listcomp>z0WSGIResponder.start_response.<locals>.<listcomp>v   si       D% $$W--3355u{{}}7K7KG7T7TU  r8   zhttp.response.start)rC   rO   r"   )	rX   rW   splitintrQ   from_threadrunrU   rA   )r>   rO   rP   rX   status_code_stringr'   status_coder"   s           r6   rb   zWSGIResponder.start_responsek   s     !$ 	$(D!$*LLa$8$8!011K #3  G !! %1)&     	 	r8   r2   rb   c                     |                      ||          D ]0}t          j                            | j        j        d|dd           1t          j                            | j        j        ddd           d S )Nzhttp.response.bodyT)rC   r   rZ   r8   )rC   r   )r;   rQ   rp   rq   rU   rA   )r>   r2   rb   chunks       r6   ra   zWSGIResponder.wsgi   s    XXg~66 	 	E!! %-u4PP   
 	!,@##N#N	
 	
 	
 	
 	
r8   r=   )rG   rH   rI   rJ   rK   r   r?   r   r   rF   r^   strListTupleAnyrb   dictra   rL   r8   r6   rD   rD   J   s       	)FO 	)E 	)d 	) 	) 	) 	)Vg VT Vd V V V V $ $$ $ $ $ $  $	  !+fl38&<= *	
 
   0	
D 	
&/ 	
d 	
 	
 	
 	
 	
 	
r8   rD   )r,   rS   r.   rJ   warningsrQ   starlette.typesr   r   r   warnDeprecationWarningbytesrz   r7   r:   rD   rL   r8   r6   <module>r      s   				  



    0 0 0 0 0 0 0 0 0 0 N  + +e + + + + +\' ' ' ' ' ' ' 'B
 B
 B
 B
 B
 B
 B
 B
 B
 B
r8   