
    Yj!                       d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZmZmZ ddlmZm Z  dgZ! G d dee      Z" G d de      Z# G d de      Z$ G d dee      Z%	 	 	 	 ddZ&ddZ'	 	 	 	 	 	 	 	 ddZ(ddZ)d dZ*d!dZ+	 	 	 	 	 d"	 	 	 	 	 	 	 	 	 	 	 d#dZ,	 	 	 	 d$	 	 	 	 	 	 	 	 	 d%dZ-y)&    )annotationsN)AsyncGeneratorAsyncIterableAsyncIteratorIterableIteratorMapping)dumps)Any)	urlencode   )StreamClosedStreamConsumed)MultipartStream)AsyncByteStreamRequestContentRequestDataRequestFilesResponseContentSyncByteStream)peek_filelike_lengthprimitive_value_to_str
ByteStreamc                  $    e Zd ZddZddZddZy)r   c                    || _         y N_streamselfstreams     N/var/www/html/vmm-quimica/venv/lib/python3.12/site-packages/httpx2/_content.py__init__zByteStream.__init__   s	        c              #  (   K   | j                    y wr   r   r    s    r"   __iter__zByteStream.__iter__   s     lls   c               *   K   | j                    y wr   r   r&   s    r"   	__aiter__zByteStream.__aiter__"   s     lls   N)r!   bytesreturnNoner+   zIterator[bytes]r+   zAsyncIterator[bytes])__name__
__module____qualname__r#   r'   r)    r$   r"   r   r      s    r$   c                       e Zd ZdZddZddZy)IteratorByteStream   c                T    || _         d| _        t        j                  |      | _        y NF)r   _is_stream_consumedinspectisgenerator_is_generatorr   s     r"   r#   zIteratorByteStream.__init__)   s$    #( $008r$   c              #  `  K   | j                   r| j                  r
t               d| _         t        | j                  d      rU| j                  j                  | j                        }|r-| | j                  j                  | j                        }|r,y y | j                  E d {    y 7 w)NTread)r8   r;   r   hasattrr   r=   
CHUNK_SIZE)r    chunks     r"   r'   zIteratorByteStream.__iter__.   s     ##(:(: ""#' 4<<(LL%%doo6E))$//: 
 ||##s   BB.B.&B,'B.N)r!   zIterable[bytes]r+   r,   r-   )r/   r0   r1   r?   r#   r'   r2   r$   r"   r4   r4   &   s    J9
$r$   r4   c                       e Zd ZdZddZddZy)AsyncIteratorByteStreamr5   c                T    || _         d| _        t        j                  |      | _        y r7   )r   r8   r9   
isasyncgenr;   r   s     r"   r#   z AsyncIteratorByteStream.__init__A   s$    #( $//7r$   c               p  K   | j                   r| j                  r
t               d| _         t        | j                  d      rf| j                  j                  | j                         d {   }|r6| | j                  j                  | j                         d {   }|r5y y | j                  j                         }	 |2 3 d {   }| 7 i7 77 6 	 t        |t              r|j                          d {  7   y y # t        |t              r|j                          d {  7   w w xY ww)NTaread)r8   r;   r   r>   r   rF   r?   r)   
isinstancer   aclose)r    r@   r!   parts       r"   r)   z!AsyncIteratorByteStream.__aiter__F   s     ##(:(: ""#' 4<<),,,,T__==E"ll00AA  \\++-F*"(  $J > B& fn5 --/)) 6:fn5 --/)) 6s   A(D6*C+3D6CD6&D6D C	C
CD D6D6CD #D6?D D6$D3+D.,D33D6N)r!   zAsyncIterable[bytes]r+   r,   r.   )r/   r0   r1   r?   r#   r)   r2   r$   r"   rB   rB   >   s    J8
*r$   rB   c                       e Zd ZdZddZddZy)UnattachedStreamz
    If a request or response is serialized using pickle, then it is no longer
    attached to a stream for I/O purposes. Any stream operations should result
    in `httpx2.StreamClosed`.
    c                    t               r   r   r&   s    r"   r'   zUnattachedStream.__iter__d   s
    nr$   c                  K   t               wr   rM   r&   s    r"   r)   zUnattachedStream.__aiter__g   s     ns   Nr-   r.   )r/   r0   r1   __doc__r'   r)   r2   r$   r"   rK   rK   ]   s    r$   rK   c                   t        | t        t        f      rLt        | t              r| j                  d      n| }t	        |      }|rdt        |      ini }|t        |      fS t        | t              r<t        | t              s,t        |       }|ddi}ndt        |      i}|t        |       fS t        | t              rddi}|t        |       fS t        dt        |             )Nutf-8Content-LengthzTransfer-EncodingchunkedzUnexpected type for 'content', )rG   r*   strencodelenr   r   dictr   r4   r   rB   	TypeErrortype)contentbodycontent_lengthheaderscontent_length_or_nones        r"   encode_contentr_   l   s     'E3<(*4Wc*Bw~~g&T=A#S%89r
4(((	GX	&z'4/H
 "6g!>!)*I6G'-C)DEG*7333	G]	+&	2/888
5d7m5FG
HHr$   c           
        g }| j                         D ]b  \  }}t        |t        t        f      r+|j	                  |D cg c]  }|t        |      f c}       G|j                  |t        |      f       d t        |d      j                  d      }t        t        |            }d}||d}|t        |      fS c c}w )NT)doseqrQ   z!application/x-www-form-urlencodedrR   zContent-Type)itemsrG   listtupleextendr   appendr   rU   rT   rV   r   )	data
plain_datakeyvalueitemr[   r\   content_typer]   s	            r"   encode_urlencoded_datarn      s    (*Jjjl D
UedE]+uUt%;D%ABUVs$:5$ABC	D
 Zt,33G<DT^N6L!/NGJt$$$ Vs   B<
c                F    t        | ||      }|j                         }||fS )N)rh   filesboundary)r   get_headers)rh   rp   rq   	multipartr]   s        r"   encode_multipart_datart      s+      TJI##%GIr$   c                t    | j                  d      }t        t        |            }d}||d}|t        |      fS )NrQ   ztext/plain; charset=utf-8rb   rU   rT   rV   r   )textr[   r\   rm   r]   s        r"   encode_textrx      s<    ;;wDT^N.L!/NGJt$$$r$   c                t    | j                  d      }t        t        |            }d}||d}|t        |      fS )NrQ   ztext/html; charset=utf-8rb   rv   )htmlr[   r\   rm   r]   s        r"   encode_htmlr{      s<    ;;wDT^N-L!/NGJt$$$r$   c                    t        | ddd      j                  d      }t        t        |            }d}||d}|t	        |      fS )NF),:)ensure_ascii
separators	allow_nanrQ   zapplication/jsonrb   )
json_dumpsrU   rT   rV   r   )jsonr[   r\   rm   r]   s        r"   encode_jsonr      sK    d:QVW^^_fgDT^N%L!/NGJt$$$r$   c                   |9t        |t              s)d}t        j                  |t        d       t        |      S | t        |       S |rt        |xs i ||      S |rt        |      S |t        |      S i t        d      fS )z
    Handles encoding the given `content`, `data`, `files`, and `json`,
    returning a two-tuple of (<headers>, <stream>).
    z5Use 'content=<...>' to upload raw bytes/text content.   )
stacklevelr$   )
rG   r	   warningswarnDeprecationWarningr_   rt   rn   r   r   )rZ   rh   rp   r   rq   messages         r"   encode_requestr      s     
4 9 Jg1a@d##g&&	$TZRAA	%d++		4  z#r$   c                    | t        |       S |t        |      S |t        |      S |t        |      S i t	        d      fS )zc
    Handles encoding the given `content`, returning a two-tuple of
    (<headers>, <stream>).
    r$   )r_   rx   r{   r   r   )rZ   rw   rz   r   s       r"   encode_responser      sW     g&&		4  		4  		4  z#r$   )rZ   z4str | bytes | Iterable[bytes] | AsyncIterable[bytes]r+   7tuple[dict[str, str], SyncByteStream | AsyncByteStream])rh   r   r+   !tuple[dict[str, str], ByteStream])rh   r   rp   r   rq   bytes | Noner+   z&tuple[dict[str, str], MultipartStream])rw   rT   r+   r   )rz   rT   r+   r   )r   r   r+   r   )NNNNN)rZ   zRequestContent | Nonerh   zRequestData | Nonerp   zRequestFiles | Noner   
Any | Nonerq   r   r+   r   )NNNN)
rZ   zResponseContent | Nonerw   
str | Nonerz   r   r   r   r+   r   ).
__future__r   r9   r   collections.abcr   r   r   r   r   r	   r   r
   r   typingr   urllib.parser   _exceptionsr   r   
_multipartr   _typesr   r   r   r   r   r   _utilsr   r   __all__r   r4   rB   rK   r_   rn   rt   rx   r{   r   r   r   r2   r$   r"   <module>r      sS   "   e e $ # 5 '  A.. $ $0*o *> IAI<I:%
*6B+%%% &*#!%! " 
    	 
   = H '+	#
  	
 =r$   