ó
    §ZÇhÙ  ã                  óò   • S SK Jr  S SKrS SKrS SKrS SKrSSKJrJr  SSK	J
r
  SSKJr  \R                  (       a  S SKJr  S S	KJr  \R$                  " S
5      rS/rSS jr " S S\
5      r " S S\5      rg)é    )ÚannotationsNé   )ÚRequestÚResponse)ÚSyncByteStreamé   )ÚBaseTransport)Ú
OptExcInfo)ÚWSGIApplicationÚ_TÚWSGITransportc                óp   • [        U 5      n U  H$  nU(       d  M  [        R                  " U/U 5      s  $    / $ ©N)ÚiterÚ	itertoolsÚchain)ÚbodyÚchunks     ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/httpx/_transports/wsgi.pyÚ_skip_leading_empty_chunksr      s4   € Ü�‹:€DÛˆßˆ5Ü—?’? E 7¨DÓ1Ò1ñ ð €Ió    c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚWSGIByteStreamé   c                óH   • [        USS 5      U l        [        U5      U l        g )NÚclose)ÚgetattrÚ_closer   Ú_result)ÚselfÚresults     r   Ú__init__ÚWSGIByteStream.__init__   s   € Ü˜f g¨tÓ4ˆŒÜ1°&Ó9ˆ�r   c              #  ó:   #   • U R                    H  nUv •  M	     g 7fr   )r   )r    Úparts     r   Ú__iter__ÚWSGIByteStream.__iter__#   s   é € Ø—L”LˆDØŒJò !ùs   ‚c                ó@   • U R                   b  U R                  5         g g r   )r   )r    s    r   r   ÚWSGIByteStream.close'   s   € Ø�;‰;Ñ"Ø�K‰K�Mð #r   )r   r   N)r!   ztyping.Iterable[bytes]ÚreturnÚNone)r*   ztyping.Iterator[bytes])r*   r+   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r"   r&   r   Ú__static_attributes__© r   r   r   r      s   † ô:ô÷r   r   c                  óN   • \ rS rSrSr    S           SS jjrS	S jrSrg)
r   é,   aŸ  
A custom transport that handles sending requests directly to an WSGI app.
The simplest way to use this functionality is to use the `app` argument.

```
client = httpx.Client(app=app)
```

Alternatively, you can setup the transport instance explicitly.
This allows you to include any additional configuration arguments specific
to the WSGITransport class:

```
transport = httpx.WSGITransport(
    app=app,
    script_name="/submount",
    remote_addr="1.2.3.4"
)
client = httpx.Client(transport=transport)
```

Arguments:

* `app` - The WSGI application.
* `raise_app_exceptions` - Boolean indicating if exceptions in the application
   should be raised. Default to `True`. Can be set to `False` for use cases
   such as testing the content of a client 500 response.
* `script_name` - The root path on which the WSGI application should be mounted.
* `remote_addr` - A string indicating the client IP of incoming requests.
```
Nc                ó@   • Xl         X l        X0l        X@l        XPl        g r   )ÚappÚraise_app_exceptionsÚscript_nameÚremote_addrÚwsgi_errors)r    r5   r6   r7   r8   r9   s         r   r"   ÚWSGITransport.__init__M   s!   € ð ŒØ$8Ô!Ø&ÔØ&ÔØ&Õr   c                ó¶  ^^^• UR                  5         [        R                  " UR                  5      nUR                  R
                  =(       d    SSS.UR                  R                     nSUR                  R                  UU R                  =(       d    [        R                  SSSUR                  U R                  UR                  R                  UR                  R                  R                  S5      UR                  R                  [!        U5      SU R"                  S	.nUR$                  R&                   HR  u  pVUR                  S5      R)                  5       R+                  S
S5      nUS;  a  SU-   nUR                  S5      XG'   MT     S mS mS m S       SUUU4S jjjnU R-                  XH5      n	[/        U	5      n
Tc   eTc   eT(       a   TS   (       a  U R0                  (       a  TS   e[3        TR5                  5       S   5      nT VVs/ s H'  u  p|UR7                  S5      UR7                  S5      4PM)     nnn[9        X½U
S9$ s  snnf )NéP   i»  )ÚhttpÚhttps)r   r   TFÚasciizHTTP/1.1)zwsgi.versionzwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceÚREQUEST_METHODÚSCRIPT_NAMEÚ	PATH_INFOÚQUERY_STRINGÚSERVER_NAMEÚSERVER_PORTÚSERVER_PROTOCOLÚREMOTE_ADDRÚ-Ú_)ÚCONTENT_TYPEÚCONTENT_LENGTHÚHTTP_c                ó   >• U mUmUmS $ )Nc                ó   • g r   r1   )rI   s    r   Ú<lambda>ÚFWSGITransport.handle_request.<locals>.start_response.<locals>.<lambda>„   s   € ˜Tr   r1   )ÚstatusÚresponse_headersÚexc_infoÚseen_exc_infoÚseen_response_headersÚseen_statuss      €€€r   Ústart_responseÚ4WSGITransport.handle_request.<locals>.start_response{   s   ø€ ð !ˆKØ$4Ð!Ø$ˆMÙ!Ð!r   r   r   )ÚheadersÚstreamr   )rQ   ÚstrrR   zlist[tuple[str, str]]rS   zOptExcInfo | Noner*   z$typing.Callable[[bytes], typing.Any])ÚreadÚioÚBytesIOÚcontentÚurlÚportÚschemer9   ÚsysÚstderrÚmethodr7   ÚpathÚqueryÚdecodeÚhostr[   r8   rY   ÚrawÚupperÚreplacer5   r   r6   ÚintÚsplitÚencoder   )r    ÚrequestÚ
wsgi_inputra   ÚenvironÚ
header_keyÚheader_valueÚkeyrW   r!   rZ   Ústatus_codeÚvaluerY   rT   rU   rV   s                 @@@r   Úhandle_requestÚWSGITransport.handle_request[   s.  ú€ Ø�‰ŒÜ—Z’Z §¡Ó0ˆ
à�{‰{×Ñ×Q¨B¸Ñ#=¸g¿k¹k×>PÑ>PÑ#Qˆà"Ø&Ÿ{™{×1Ñ1Ø$Ø×+Ñ+×9¬s¯z©zØ $Ø!&Ø"Ø%Ÿn™nØ×+Ñ+Ø Ÿ™×)Ñ)Ø#ŸK™K×-Ñ-×4Ñ4°WÓ=Ø"Ÿ;™;×+Ñ+Ü˜t›9Ø)Ø×+Ñ+ñ
ˆð" )0¯©×(;Ô(;Ñ$ˆJØ×#Ñ# GÓ,×2Ñ2Ó4×<Ñ<¸SÀ#ÓFˆCØÐ<Ó<Ø ‘m�Ø'×.Ñ.¨wÓ7ˆG‹Lñ	 )<ð ˆØ $ÐØˆð
 +/ð		"Øð		"à3ð		"ð (ð		"ð 2÷			"ò 		"ð —‘˜'Ó2ˆä Ó'ˆàÑ&Ð&Ð&Ø$Ñ0Ð0Ð0Þ˜]¨1×-°$×2K×2KØ Ñ"Ð"ä˜+×+Ñ+Ó-¨aÑ0Ó1ˆñ 4ô
â3‘
�ð �Z‰Z˜Ó  %§,¡,¨wÓ"7Ó8Ù3ð 	ñ 
ô
 ˜¸VÑDÐDùó
s   È.I)r5   r6   r8   r7   r9   )TÚ z	127.0.0.1N)r5   r   r6   Úboolr7   r[   r8   r[   r9   ztyping.TextIO | Noner*   r+   )rp   r   r*   r   )r,   r-   r.   r/   Ú__doc__r"   rx   r0   r1   r   r   r   r   ,   s[   † ñðF &*ØØ&Ø,0ð'àð'ð #ð'ð ð	'ð
 ð'ð *ð'ð 
õ'÷:Er   )r   útyping.Iterable[_T]r*   r}   )Ú
__future__r   r]   r   rc   ÚtypingÚ_modelsr   r   Ú_typesr   Úbaser	   ÚTYPE_CHECKINGÚ	_typeshedr
   Ú_typeshed.wsgir   ÚTypeVarr   Ú__all__r   r   r   r1   r   r   Ú<module>rˆ      se   ðÝ "ã 	Û Û 
Û ç 'Ý #Ý à	××Ý$Ý.à‡^‚^�DÓ€ð Ð
€ôô�^ô ôiE�Mõ iEr   