
    Ej}                        d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlZd dlmZmZ d dlmZ d dlmZ d dlmZmZmZ  ej        d	ed
           ddZ G d d          Z G d d          ZdS )    )annotationsN)CallableMutableMapping)Any)ObjectReceiveStreamObjectSendStream)create_collapsing_task_group)StarletteDeprecationWarning)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.   )
stacklevelscoper   bodybytesreturndict[str, Any]c                   |                      dd                              d                              d          }| d                             d                              d          }|                    |          r|t	          |          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.
    	root_path utf8latin1pathNmethod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
startswithlenioBytesIOsysstdoutupperreplace)	r   r   script_name	path_infoenvironr'   namevaluecorrected_names	            S/wd/license_services/venv/lib/python3.11/site-packages/starlette/middleware/wsgi.pybuild_environrG      s   
 ))K,,33F;;BB8LLKf$$V,,33H==IK(( 2c+..001	  /"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dZddZdS )WSGIMiddlewareappCallable[..., Any]r   Nonec                    || _         d S N)rK   )selfrK   s     rF   __init__zWSGIMiddleware.__init__N   s    rH   r   r   receiver   sendr   c                t   K   |d         dk    sJ t          | j        |          } |||           d {V  d S )Ntyper!   )WSGIResponderrK   )rP   r   rR   rS   	responders        rF   __call__zWSGIMiddleware.__call__Q   sV      V}&&&&!$(E22	i&&&&&&&&&&&rH   N)rK   rL   r   rM   )r   r   rR   r   rS   r   r   rM   )__name__
__module____qualname__rQ   rX    rH   rF   rJ   rJ   M   s<           ' ' ' ' ' 'rH   rJ   c                  P    e Zd ZU ded<   ded<   ddZddZd dZ	 d!d"dZd#dZdS )$rV   z*ObjectSendStream[MutableMapping[str, Any]]stream_sendz-ObjectReceiveStream[MutableMapping[str, Any]]stream_receiverK   rL   r   r   r   rM   c                    || _         || _        d | _        d | _        t	          j        t          j                  \  | _        | _	        d| _
        d | _        d S )NF)rK   r   statusresponse_headersanyiocreate_memory_object_streammathinfr^   r_   response_startedexc_info)rP   rK   r   s      rF   rQ   zWSGIResponder.__init__[   sQ    
 $050QRVRZ0[0[-$- %!rH   rR   r   rS   r   c                  K   d}d}|rA |             d {V }||                     dd          z  }|                     dd          }|At          | j        |          }t                      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 )	NrH   Tr   	more_bodyFr   r   r   )r5   rG   r   r	   
start_soonsenderr^   rc   	to_threadrun_syncwsgistart_responserh   with_traceback)rP   rR   rS   r   rj   messagerB   
task_groups           rF   rX   zWSGIResponder.__call__d   s     	 	8#GIIooooooGGKK,,,DK77I  	8  
D11/11 	X 	X 	X 	X 	X 	X 	XZ!!$+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   3)D2C D 
C*	*D-C*	.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 rO   )r_   )rP   rS   rr   s      rF   rl   zWSGIResponder.sendert   s#     & 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$!%!4 $ $ $ $ $ $ $gd7mm######## "5!4	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A1A
AANra   strrb   list[tuple[str, str]]rh   r   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   )stripr6   lower).0rC   rD   s      rF   
<listcomp>z0WSGIResponder.start_response.<locals>.<listcomp>   si       D% $$W--3355u{{}}7K7KG7T7TU  rH   zhttp.response.start)rU   ra   r.   )	rh   rg   splitintrc   from_threadrunr^   rS   )rP   ra   rb   rh   status_code_stringr3   status_coder.   s           rF   rp   zWSGIResponder.start_responsey   s     !$ 	$(D!$*LLa$8$8!011K #3  G !! %1)&     	 	rH   rB   r   rp   c                    |                      ||          D ]0}t          j                            | j        j        d|dd           1t          j                            | j        j        ddd           d S )Nzhttp.response.bodyT)rU   r   rj   rH   )rU   r   )rK   rc   r   r   r^   rS   )rP   rB   rp   chunks       rF   ro   zWSGIResponder.wsgi   s    
 XXg~66 	 	E!! %-u4PP   
 	d.3>R\_5`5`aaaaarH   )rK   rL   r   r   r   rM   )rR   r   rS   r   r   rM   )rS   r   r   rM   rO   )ra   ru   rb   rv   rh   r   r   rM   )rB   r   rp   rL   r   rM   )	rY   rZ   r[   __annotations__rQ   rX   rl   rp   ro   r\   rH   rF   rV   rV   W   s         ;;;;AAAA" " " "V V V V $ $ $ $ 	    0b b b b b brH   rV   )r   r   r   r   r   r   )
__future__r   r:   re   r<   warningscollections.abcr   r   typingr   rc   	anyio.abcr   r   starlette._utilsr	   starlette.exceptionsr
   starlette.typesr   r   r   warnrG   rJ   rV   r\   rH   rF   <module>r      sr   " " " " " " 				  



  4 4 4 4 4 4 4 4        ; ; ; ; ; ; ; ; 9 9 9 9 9 9 < < < < < < 0 0 0 0 0 0 0 0 0 0 N	   1 1 1 1h' ' ' ' ' ' ' 'Eb Eb Eb Eb Eb Eb Eb Eb Eb EbrH   