
    g                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr  S SKJrJrJrJrJrJrJrJrJrJrJrJr  SS jr " S S5      r " S	 S
5      r S SKJr  g! \ a    \r gf = f)    )annotationsN)deque)Iterable)ASGIReceiveCallableASGIReceiveEventASGISendCallableASGISendEventEnvironExcInfoHTTPRequestEventHTTPResponseBodyEventHTTPResponseStartEvent	HTTPScopeStartResponseWSGIAppc                D   U R                  SS5      R                  S5      R                  S5      nU S   R                  S5      R                  S5      nUR                  U5      (       a  U[	        U5      S nU S   UUU S   R                  S	5      S
U S   -  SU R                  SS5      U[
        R                  SSSS.nU R                  S5      nUc  SnUS   US'   US   US'   U R                  S5      nUb  US   US'   U R                  S/ 5       H  u  pUR                  S5      n
U
S:X  a  SnO,U
S:X  a  SnO#SU
R                  5       R                  S S!5      -  nU	R                  S5      nX;   a#  X[   n[        U[        5      (       d   eUS"-   U-   nXU'   M     U$ )#z@
Builds a scope and request message into a WSGI environ object.
	root_path utf8latin1pathNmethodquery_stringasciizHTTP/%s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_TYPEzHTTP_%s-_,)getencodedecode
startswithlensysstdoutupperreplace
isinstancestr)scopemessagebodyscript_name	path_infoenvironr$   r)   namevaluename_strcorrected_name	value_strcorrected_name_environs                 P/home/matz/Project1/venv/lib/python3.13/site-packages/uvicorn/middleware/wsgi.pybuild_environrI      s    ))K,33F;BB8LKf$$V,33H=IK((c+.01	/"n-44W=$u^'<< 99Xv6zz !G  YYx F~"#AYGM#AYGM YYx F!' yyB/H-''-N'+N&)9)A)A#s)KKN h/	$%,%<"4c::::.4y@I"+ 0  N    c                  <    \ rS rSrSSS jjr        SS jrSrg)	_WSGIMiddlewareR   c                    [         R                  " S[        5        Xl        [        R
                  R                  US9U l        g )NzgUvicorn's native WSGI implementation is deprecated, you should switch to a2wsgi (`pip install a2wsgi`).)max_workers)warningswarnDeprecationWarningapp
concurrentfuturesThreadPoolExecutorexecutor)selfrS   workerss      rH   __init___WSGIMiddleware.__init__S   s8    >	

 "**=='=RrJ   c                   #    US   S:X  d   e[        U R                  U R                  U5      nU" X#5      I S h  vN   g  N7f)Ntyper   )WSGIResponderrS   rW   )rX   r<   receivesendinstances        rH   __call___WSGIMiddleware.__call__\   s=      V}&&& 4==%@w%%%s   8AA A)rS   rW   N)
   )rS   r   rY   int)r<   r   r_   r   r`   r   returnNone)__name__
__module____qualname____firstlineno__rZ   rb   __static_attributes__ rJ   rH   rL   rL   R   s3    S&& %& 	&
 
&rJ   rL   c                  f    \ rS rSr      S	S jrS
S jrSS jr S       SS jjrSS jrSr	g)r^   g   c                    Xl         X l        X0l        S U l        S U l        [
        R                  " 5       U l        [        5       U l	        [
        R                  " 5       U l        SU l        S U l        g )NF)rS   rW   r<   statusresponse_headersasyncioEvent
send_eventr   
send_queueget_event_looploopresponse_startedexc_info)rX   rS   rW   r<   s       rH   rZ   WSGIResponder.__init__h   sW      
 $!--/7<w/6/E/E/G	 %(,rJ   c                  #    U" 5       I S h  vN n[         R                  " UR                  SS5      5      nUR                  SS5      nU(       a  UR                  S[         R                  5        U(       aK  U" 5       I S h  vN nUR                  UR                  SS5      5        UR                  SS5      nU(       a  MK  UR                  S5        [        U R                  X45      n[        R                  " 5       U l
        U R                  R                  U R                  U R                  XpR                  5      nU R                  R                  U R!                  U5      5      n	 [        R"                  " US 5      I S h  vN   U R$                  R'                  S 5        U R(                  R+                  5         [        R"                  " U	S 5      I S h  vN   U R,                  b9  U R,                  S   R/                  U R,                  S   U R,                  S   5      eg  GN GN N NS! U R$                  R'                  S 5        U R(                  R+                  5         [        R"                  " U	S 5      I S h  vN    f = f7f)Nr>   rJ   	more_bodyFr   r      )ioBytesIOr1   seekSEEK_ENDwriterI   r<   rs   rw   rx   run_in_executorrW   wsgistart_responsecreate_tasksenderwait_forrv   appendru   setrz   with_traceback)
rX   r_   r`   r=   r>   r}   body_messagerA   r   r   s
             rH   rb   WSGIResponder.__call__y   s    *1)Ozz'++fc23KKU3	IIa%!)O  

<++FC89(,,[%@	 ) IIaL

G:**,	yy((		7L_L_`&&t{{4'89	1""4...OO""4(OO!""64000==$--"11$--2BDMMRSDTUU %- %4 $ / 1 OO""4(OO!""64000st   JH$A4JH'>JB&J*H. H*H. 	AJH,AJ'J*H. ,J.AJ>J?JJc                  #     U R                   (       a/  U R                   R                  5       nUc  g U" U5      I S h  vN   O<U R                  R                  5       I S h  vN   U R                  R	                  5         M~   NC N"7fN)rv   popleftru   waitclear)rX   r`   r=   s      rH   r   WSGIResponder.sender   si     //113?7m##oo**,,,%%' 
 $,s!   <BB"B!B"!BBNc                   X0l         U R                  (       d  SU l        UR                  SS5      u  pE[        U5      nU VVs/ s H'  u  pxUR	                  S5      UR	                  S5      4PM)     n	nnSUU	S.n
U R
                  R                  U
5        U R                  R                  U R                  R                  5        g g s  snnf )NT r   r   zhttp.response.start)r]   rq   r+   )rz   ry   splitre   r2   rv   r   rx   call_soon_threadsaferu   r   )rX   rq   rr   rz   status_code_strr/   status_coderB   rC   r+   http_response_start_events              rH   r   WSGIResponder.start_response   s     !$$$(D!!'c1!5Oo.KXhiXhG,ell7.CDXhGi-%"A%
 OO""#<=II**4??+>+>? % js   .Cc                t   U R                  X5       HS  nSUSS.nU R                  R                  U5        U R                  R	                  U R
                  R                  5        MU     SSSS.nU R                  R                  U5        U R                  R	                  U R
                  R                  5        g )Nzhttp.response.bodyT)r]   r>   r}   rJ   F)rS   rv   r   rx   r   ru   r   )rX   rA   r   chunkresponse_body
empty_bodys         rH   r   WSGIResponder.wsgi   s    XXg6E,!4M
 OO""=1II**4??+>+>? 7 )-


 	z*		&&t':':;rJ   )
rS   rz   rW   rx   rr   ry   r<   ru   rv   rq   )rS   r   rW   z%concurrent.futures.ThreadPoolExecutorr<   r   )r_   r   r`   r   rf   rg   )r`   r   rf   rg   r   )rq   r;   rr   zIterable[tuple[str, str]]rz   zExcInfo | Nonerf   rg   )rA   r
   r   r   rf   rg   )
rh   ri   rj   rk   rZ   rb   r   r   r   rl   rm   rJ   rH   r^   r^   g   sh    -- 8- 	-"V4	( $(	@@ 4@ !	@
 
@(<rJ   r^   )WSGIMiddleware)r<   r   r=   r   r>   z
io.BytesIOrf   r
   )
__future__r   rs   concurrent.futuresrT   r   r6   rP   collectionsr   collections.abcr   uvicorn._typesr   r   r   r	   r
   r   r   r   r   r   r   r   rI   rL   r^   a2wsgir   ModuleNotFoundErrorrm   rJ   rH   <module>r      sj    "   	 
   $    4n& &*[< [<|%% %$N%s   A$ $A/.A/