
    > /i]                     8   d dl Z d dlZddlmZmZ ddlmZ ddlmZ e j                  r-d dl
Z
d dlZe j                  e
j                  ej                  f   Ze j                  ee j                   f   Ze j$                  g e j&                  e   f   Ze j$                  e j                  ee j                   f   ge j*                  d   f   Ze j$                  e j                  ee j                   f   eege j*                  d   f   ZddZ G d	 d
e      Z G d de      Zy)    N   )RequestResponse)AsyncByteStream   )AsyncBaseTransport)NNNc                      t        j                         dk(  rdd l}  | j                         S dd l} |j                         S )Ntrior   )sniffiocurrent_async_libraryr
   Eventasyncio)r
   r   s     L/srv/sistema/bot/venv/lib/python3.12/site-packages/httpx/_transports/asgi.pycreate_eventr      s5    $$&&0tzz|w}}    c                   \    e Zd Zdej                  e   ddfdZdej                  e   fdZy)ASGIResponseStreambodyreturnNc                     || _         y N)_body)selfr   s     r   __init__zASGIResponseStream.__init__'   s	    
r   c                H   K   dj                  | j                         y w)Nr   )joinr   )r   s    r   	__aiter__zASGIResponseStream.__aiter__*   s     hhtzz""s    ")	__name__
__module____qualname__typingListbytesr   AsyncIteratorr    r   r   r   r   &   s5    V[[/ D #!5!5e!< #r   r   c                   b    e Zd ZdZ	 	 	 ddedededej                  ee	f   ddf
dZ
d	edefd
Zy)ASGITransporta  
    A custom AsyncTransport that handles sending requests directly to an ASGI app.
    The simplest way to use this functionality is to use the `app` argument.

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

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

    ```
    transport = httpx.ASGITransport(
        app=app,
        root_path="/submount",
        client=("1.2.3.4", 123)
    )
    client = httpx.AsyncClient(transport=transport)
    ```

    Arguments:

    * `app` - The ASGI 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.
    * `root_path` - The root path on which the ASGI application should be mounted.
    * `client` - A two-tuple indicating the client IP and port of incoming requests.
    ```
    appraise_app_exceptions	root_pathclientr   Nc                 <    || _         || _        || _        || _        y r   )r(   r)   r*   r+   )r   r(   r)   r*   r+   s        r   r   zASGITransport.__init__O   s!     $8!"r   requestc                 J  	
K   t        j                  t              sJ dddidj                  j                  j
                  D cg c]  \  }}|j                         |f c}}j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  j                  f| j                  | j                  d}j                  j!                         	d
d d g dt#               dt$        j&                  t(        t$        j*                  f   f	
fd}d	t$        j&                  t(        t$        j*                  f   dd ffd
}	 | j-                  |||       d {    j5                         sJ J J t7              }t9        |      S c c}}w 7 =# t.        $ r( | j0                  r j3                          di Y kw xY ww)Nhttpversionz3.0z1.1)typeasgihttp_versionmethodheadersschemepathraw_pathquery_stringserverr+   r*   Fr   c                     K   rj                          d {    ddiS 	 j                          d {   } d| ddS 7 '7 # t        $ r dddddcY S w xY ww)Nr1   zhttp.disconnectTzhttp.requestr   F)r1   r   	more_body)wait	__anext__StopAsyncIteration)r   request_body_chunksrequest_completeresponse_completes    r   receivez3ASGITransport.handle_async_request.<locals>.receive~   s~       ',,... 122Q0::<< +DtLL / =% Q#'  .%PPQsA   AAAA AA AA AAAAmessagec                 B  K   | d   dk(  rrJ | d   | j                  dg       dy | d   dk(  rlj                         rJ | j                  dd      }| j                  d	d
      }|r j                  dk7  rj                  |       |sj	                          y y y w)Nr1   zhttp.response.startstatusr5   Tzhttp.response.bodyr   r   r<   FHEAD)getis_setr4   appendset)	rD   r   r<   
body_partsr-   rB   response_headersresponse_startedstatus_codes	      r   sendz0ASGITransport.handle_async_request.<locals>.send   s      v"77+++%h/#*;;y"#= #' $88,33555{{63/#KKU;	GNNf4%%d+ %))+ ! 9s   BBi  )r5   stream)
isinstancerQ   r   r4   r5   rawlowerurlr6   r7   r8   queryhostportr+   r*   r   r   r!   DictstrAnyr(   	Exceptionr)   rK   rI   r   r   )r   r-   kvscoperC   rP   rQ   rL   r@   rA   rB   rM   rN   rO   s    `      @@@@@@@r   handle_async_requestz"ASGITransport.handle_async_request[   s     '../::: &!nn5<__5H5HI6AqAIkk((KK$$,,#KK--{{'')9)9:kk
  &nn668  
 (N	Mv{{3

?; 	M	,CO < 	, 	, 	,*
	&((5'4000 !'')))&&&+++#J/-=fMMY Jv 1 	&((!!#"!'#% 	&sI   AH#G',D,H#G/ /G-0G/ 49H#-G/ /.H H#H  H#)T )z	127.0.0.1{   )r   r   r    __doc___ASGIAppboolrZ   r!   Tupleintr   r   r   r`   r%   r   r   r'   r'   .   sr    F &*);

 #
 	

 S#X&
 

XNXN 
XNr   r'   )r   r   )r!   r   _modelsr   r   _typesr   baser   TYPE_CHECKINGr   r
   Unionr   rY   rZ   r[   _MessageCallable	Awaitable_Receive	Coroutine_Sendrd   r   r   r'   r%   r   r   <module>rs      s     ' $ $	LL

23E ;;sFJJ'??2v//99:[[fjj!"F$4$45E$FF	 ??[[fjj!8U3V5E5EFV5WW
# #EN& ENr   