
    mϞi                        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mZmZ  ej&                  ded	       dd
Z G d d      Z G d d      Zy)    )annotationsN)CallableMutableMapping)Any)ObjectReceiveStreamObjectSendStream)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.   )
stacklevelc                (   | j                  dd      j                  d      j                  d      }| d   j                  d      j                  d      }|j                  |      r|t	        |      d }| d   ||| d   j                  d	      d
| d    d| j                  dd      t        j                  |      t        j                  dddd}| j                  d      xs d}|d   |d<   |d   |d<   | j                  d      r| d   d   |d<   | j                  dg       D ]n  \  }}|j                  d      }|dk(  rd}n+|dk(  rd}n#d| j                         j                  d d!      }|j                  d      }||v r||   d"z   |z   }|||<   p |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)	scopebodyscript_name	path_infoenvironr    namevaluecorrected_names	            [/var/www/html/jploft-chatbot/venv/lib/python3.12/site-packages/starlette/middleware/wsgi.pybuild_environrB      s   
 ))K,33F;BB8LKf$$V,33H=IK(c+.01	  /"n-44W="5#8"9: 99Xv6jj&zz !G  YYx 5$5F#AYGM#AYGM yy!&x!3 yyB/ (e{{8$##-N^#+N$TF^113;;CEN X&W$N+c1E9E"'( N    c                      e Zd ZddZddZy)WSGIMiddlewarec                    || _         y N)app)selfrH   s     rA   __init__zWSGIMiddleware.__init__L   s	    rC   c                r   K   |d   dk(  sJ t        | j                  |      } |||       d {    y 7 w)Ntyper   )WSGIResponderrH   )rI   r9   receivesend	responders        rA   __call__zWSGIMiddleware.__call__O   s8     V}&&&!$((E2	&&&s   -757N)rH   Callable[..., Any]returnNone)r9   r
   rN   r	   rO   r   rS   rT   )__name__
__module____qualname__rJ   rQ    rC   rA   rE   rE   K   s    'rC   rE   c                  h    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y)rM   z*ObjectSendStream[MutableMapping[str, Any]]stream_sendz-ObjectReceiveStream[MutableMapping[str, Any]]stream_receivec                    || _         || _        d | _        d | _        t	        j
                  t        j                        \  | _        | _	        d| _
        d | _        y )NF)rH   r9   statusresponse_headersanyiocreate_memory_object_streammathinfrZ   r[   response_startedexc_info)rI   rH   r9   s      rA   rJ   zWSGIResponder.__init__Y   sP    
 $050Q0QRVRZRZ0[-$- %!rC   c                  K   d}d}|r9 |        d {   }||j                  dd      z  }|j                  dd      }|r9t        | j                  |      }t        j                         4 d {   }|j                  | j                  |       | j                  4 d {    t        j                  j                  | j                  || j                         d {    d d d       d {    d d d       d {    | j                  9| j                  d   j                  | j                  d   | j                  d         y 7 67 7 7 q7 c# 1 d {  7  sw Y   sxY w7 j# 1 d {  7  sw Y   zxY ww)	NrC   Tr:   	more_bodyFr   r   r   )r.   rB   r9   r_   create_task_group
start_soonsenderrZ   	to_threadrun_syncwsgistart_responserd   with_traceback)rI   rN   rO   r:   rf   messager=   
task_groups           rA   rQ   zWSGIResponder.__call__b   sd    	#IoGGKK,,DK7I   

D1**, 	X 	X
!!$++t4'' X Xoo..tyy'4CVCVWWWX X	X 	X ==$--"11$--2BDMMRSDTUU % &
	XXWX X X X	X 	X 	X 	Xs   F E	-F .F 0E1F 4-E+!E"E+%9EEE#E+.E/E+3F >E)?AF F E+EE+E&	EE&	"E+)F +E=1E42E=9F c                   K   | j                   4 d {    | j                   2 3 d {   } ||       d {    7 *7 7 	6 d d d       d {  7   y # 1 d {  7  sw Y   y xY wwrG   )r[   )rI   rO   ro   s      rA   ri   zWSGIResponder.senderr   si     && 	$ 	$!%!4!4 $ $g7m##	$$# "5	$ 	$ 	$ 	$ 	$sr   A,>A,AAA AAAAA, AAAA,AA,A)A A)%A,Nc                   || _         | j                  sd| _        |j                  dd      \  }}t        |      }|D cg c]Q  \  }}|j	                         j                  d      j                         |j	                         j                  d      fS }	}}t        j                  j                  | j                  j                  d||	d       y y c c}}w )NT r   r   zhttp.response.start)rL   r]   r'   )rd   rc   splitintstripr/   lowerr_   from_threadrunrZ   rO   )
rI   r]   r^   rd   status_code_stringr,   status_coder>   r?   r'   s
             rA   rm   zWSGIResponder.start_responsew   s     !$$$(D!$*LLa$8!01K $4D% $$W-335u{{}7K7KG7TUG  !!  %%1)& %s    ACc                   | j                  ||      D ]:  }t        j                  j                  | j                  j
                  d|dd       < t        j                  j                  | j                  j
                  ddd       y )Nzhttp.response.bodyT)rL   r:   rf   rC   )rL   r:   )rH   r_   rx   ry   rZ   rO   )rI   r=   rm   chunks       rA   rl   zWSGIResponder.wsgi   sv    
 XXg~6 	E!!  %%-u4P	 	d..33>R\_5`arC   )rH   rR   r9   r
   rS   rT   )rN   r	   rO   r   rS   rT   )rO   r   rS   rT   rG   )r]   strr^   zlist[tuple[str, str]]rd   r   rS   rT   )r=   dict[str, Any]rm   rR   rS   rT   )	rU   rV   rW   __annotations__rJ   rQ   ri   rm   rl   rX   rC   rA   rM   rM   U   ss    ;;AA"V $ 	 0 	
 
0bb +b 
	brC   rM   )r9   r
   r:   bytesrS   r   )
__future__r   r3   ra   r5   warningscollections.abcr   r   typingr   r_   	anyio.abcr   r   starlette.typesr	   r
   r   warnDeprecationWarningrB   rE   rM   rX   rC   rA   <module>r      s^    " 	  
  4   ; 0 0 N	1h' 'Eb EbrC   