+
    SjV                     R    ^ RI t ^ RIHt ^ RIHtHt  ! R R4      t ! R R4      tR# )    N)SpooledTemporaryFile)AsyncToSyncsync_to_asyncc                   0   a  ] tR t^t o RtR tR tRtV tR# )
WsgiToAsgiz?
Wraps a WSGI application to make it into an ASGI application.
c                    Wn         R # Nwsgi_applicationselfr   s   &&A/var/www/idalgo/venv/lib/python3.14/site-packages/asgiref/wsgi.py__init__WsgiToAsgi.__init__   s     0    c                Z   "   \        V P                  4      ! WV4      G Rj  xL
  R#  L5i)z
ASGI application instantiation point.
We return a new WsgiToAsgiInstance here with the WSGI app
and the scope, ready to respond when it is __call__ed.
N)WsgiToAsgiInstancer   )r   scopereceivesends   &&&&r   __call__WsgiToAsgi.__call__   s"      !!6!67MMMs    +)+r
   N)	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s     1N Nr   r   c                   P   a  ] tR t^t o RtR tR tR tR	R lt]	R 4       t
RtV tR# )
r   z3
Per-socket instance of a wrapped WSGI application
c                .    Wn         R V n        RV n        R# )FN)r   response_startedresponse_content_lengthr   s   &&r   r   WsgiToAsgiInstance.__init__   s     0 %'+$r   c                  "   VR ,          R8w  d   \        R4      hWn        \        RR7      ;_uu_ 4       p V! 4       G Rj  xL
 pVR ,          R8w  d   \        R4      hVP                  VP	                  RR	4      4       VP	                  R
4      '       d   Kc   TP                  ^ 4       \        T4      T n        T P                  T4      G Rj  xL
  RRR4       R#  L L  + '       g   i     R# ; i5i)typehttpz&WSGI wrapper received a non-HTTP scopei   )max_sizeNzhttp.requestz0WSGI wrapper received a non-HTTP-request messagebodyr   	more_body)	
ValueErrorr   r   writegetseekr   	sync_sendrun_wsgi_app)r   r   r   r   r+   messages   &&&&  r   r   WsgiToAsgiInstance.__call__"   s     =F"EFF
!511T '	/6?n4$%WXX

7;;vs34{{;//IIaL(.DN##D))) 21 * * 211sG   4C7C#CAC#6C#C!C#
C7C#!C##C4	.	C7c                   VP                  RR4      P                  R4      P                  R4      pVR,          P                  R4      P                  R4      pVP                  V4      '       d   V\	        V4      R pRVR,          R	VR
VRVR,          P                  R4      RRVR,          ,          RR,RVP                  RR4      RVR\
        P                  RRRRRR/pRV9   d1   VR,          ^ ,          VR&   \        VR,          ^,          4      VR&   M
RVR&   R VR&   VP                  R!4      e   VR!,          ^ ,          VR"&   V P                  P                  R#. 4       F  w  rgVP                  R4      pVR$8X  d   R%pM1VR&8X  d   R'pM'R(VP                  4       P                  R)R*4      ,          pVP                  R4      pW9   d   WX,          R+,           V,           pWuV&   K  	  V# )-z=
Builds a scope and request body into a WSGI environ object.
	root_path utf8latin1pathNREQUEST_METHODmethodSCRIPT_NAME	PATH_INFOQUERY_STRINGquery_stringasciiSERVER_PROTOCOLzHTTP/%shttp_versionzwsgi.versionzwsgi.url_schemeschemer)   z
wsgi.inputzwsgi.errorszwsgi.multithreadTzwsgi.multiprocesszwsgi.run_onceFserverSERVER_NAMESERVER_PORT	localhost80clientREMOTE_ADDRheaderscontent-lengthCONTENT_LENGTHzcontent-typeCONTENT_TYPEzHTTP_%s-_,)   r   )r/   encodedecode
startswithlensysstderrstrr   upperreplace)	r   r   r+   script_name	path_infoenvironnamevaluecorrected_names	   &&&      r   build_environ WsgiToAsgiInstance.build_environ5   s    iiR077?FFxP&M((077A	,,!#k"2"45IeHo;E.188Ay5+@@Fuyy6:$3::U
 u%*8_Q%7GM"%(x);%<GM"%0GM"%)GM"99X*%*8_Q%7GM"  ::>>)R8KD;;x(D''!1'!/!*TZZ\-A-A#s-K!KLL*E(/#5=&+N# 9 r   Nc                   V P                   '       d    V^,          P                  V^,          4      h\        V R4      '       d   Vf   \        R4      hVP	                  R^4      w  rE\        V4      pV UUu. uF5  w  rgVP                  4       P                  R4      VP                  R4      3NK7  	  pppRV n        V F,  w  rgVP                  4       R8X  g   K  \        V4      V n        K.  	  RRR	VR
V/V n	        R# u uppi )z
WSGI start_response callable.
response_startNz=You cannot call start_response a second time without exc_info rA   rM   r(   zhttp.response.startstatusrL   )
r$   with_tracebackhasattrr-   splitintlowerrT   r%   rf   )	r   rh   response_headersexc_infostatus_coderQ   r`   ra   rL   s	   &&&&     r   start_response!WsgiToAsgiInstance.start_responsef   s    
    1+,,Xa[994)**x/?O   c1-+&  0
/ ZZ\  )5<<+@A/ 	 

 (,$+KDzz|///25z, ,
 )kw

s   7;C=c           	     ^   V P                  V P                  V4      p^ pV P                  W P                  4       F  pV P                  '       g#   RV n        V P                  V P                  4       V P                  e)   V P                  V,
          p\        V4      V8  d   VRV pV P                  RRRVRR/4       V\        V4      ,          pW0P                  8X  g   K   M	  V P                  '       g#   RV n        V P                  V P                  4       V P                  RR/4       R# )z
Called in a subthread to run the WSGI app. We encapsulate like
this so that the start_response callable is called in the same thread.
TNr(   zhttp.response.bodyr+   r,   )	rc   r   r   rq   r$   r1   rf   r%   rW   )r   r+   r_   
bytes_sentoutputbytes_alloweds   &&    r   r2   WsgiToAsgiInstance.run_wsgi_app   s    $$TZZ6
++G5H5HIF((((,%t223++7 $ < <z Iv;.#N]3FNN-vv{DQ #f+%J999# J& $$$$(D!NN4../ 456r   )r%   rf   r$   r   r1   r   r	   )r   r   r   r   r   r   r   rc   rq   r   r2   r   r   r    s   @r   r   r      s4     ,
*&/b
@ 7 7r   r   )rX   tempfiler   asgiref.syncr   r   r   r    r   r   <module>r{      s&    
 ) 3N N"N7 N7r   