
    osj                       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	 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)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     B/root/.hermes/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)r7   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.   r/   r0   r>   r"   r&   r1   r#   r!   r3   r3   &   s    J9
$r#   r3   c                       e Zd ZdZddZddZy)AsyncIteratorByteStreamr4   c                T    || _         d| _        t        j                  |      | _        y r6   )r   r7   r8   
isasyncgenr:   r   s     r!   r"   z AsyncIteratorByteStream.__init__A   s$    #( $//7r#   c                 K   | j                   r| j                  r
t               d| _         t        | j                  d      rf| j                  j                  | j                         d {   }|r6| | j                  j                  | j                         d {   }|r5y y | j                  2 3 d {   }| 7 X7 &7 6 y w)NTaread)r7   r:   r   r=   r   rE   r>   )r   r?   parts      r!   r(   z!AsyncIteratorByteStream.__aiter__F   s     ##(:(: ""#' 4<<),,,,T__==E"ll00AA 
 #ll  d
 > BlsN   A(C*C+3CCC&C4C	8C9C	<CCC		CN)r    zAsyncIterable[bytes]r*   r+   r-   )r.   r/   r0   r>   r"   r(   r1   r#   r!   rA   rA   >   s    J8
r#   rA   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__^   s
    nr#   c                  K   t               wr   rJ   r%   s    r!   r(   zUnattachedStream.__aiter__a   s     ns   Nr,   r-   )r.   r/   r0   __doc__r&   r(   r1   r#   r!   rH   rH   W   s    r#   rH   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', )
isinstancer)   strencodelenr   r   dictr   r3   r   rA   	TypeErrortype)contentbodycontent_lengthheaderscontent_length_or_nones        r!   encode_contentr]   f   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)doseqrN   z!application/x-www-form-urlencodedrO   zContent-Type)itemsrQ   listtupleextendr   appendr   rS   rR   rT   r   )	data
plain_datakeyvalueitemrY   rZ   content_typer[   s	            r!   encode_urlencoded_datarl      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)rf   filesboundary)r   get_headers)rf   rn   ro   	multipartr[   s        r!   encode_multipart_datarr      s+      TJI##%GIr#   c                t    | j                  d      }t        t        |            }d}||d}|t        |      fS )NrN   ztext/plain; charset=utf-8r`   rS   rR   rT   r   )textrY   rZ   rk   r[   s        r!   encode_textrv      s<    ;;wDT^N.L!/NGJt$$$r#   c                t    | j                  d      }t        t        |            }d}||d}|t        |      fS )NrN   ztext/html; charset=utf-8r`   rt   )htmlrY   rZ   rk   r[   s        r!   encode_htmlry      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_nanrN   zapplication/jsonr`   )
json_dumpsrS   rR   rT   r   )jsonrY   rZ   rk   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#   )
rQ   r   warningswarnDeprecationWarningr]   rr   rl   r   r   )rX   rf   rn   r   ro   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]   rv   ry   r   r   )rX   ru   rx   r   s       r!   encode_responser      sW     g&&		4  		4  		4  z#r#   )rX   z4str | bytes | Iterable[bytes] | AsyncIterable[bytes]r*   7tuple[dict[str, str], SyncByteStream | AsyncByteStream])rf   r   r*   !tuple[dict[str, str], ByteStream])rf   r   rn   r   ro   bytes | Noner*   z&tuple[dict[str, str], MultipartStream])ru   rR   r*   r   )rx   rR   r*   r   )r   r
   r*   r   )NNNNN)rX   zRequestContent | Nonerf   zRequestData | Nonern   zRequestFiles | Noner   
Any | Nonero   r   r*   r   )NNNN)
rX   zResponseContent | Noneru   
str | Nonerx   r   r   r   r*   r   )-
__future__r   r8   r   collections.abcr   r   r   r   r   r   r	   r   typingr
   urllib.parser   _exceptionsr   r   
_multipartr   _typesr   r   r   r   r   r   _utilsr   r   __all__r   r3   rA   rH   r]   rl   rr   rv   ry   r   r   r   r1   r#   r!   <module>r      sS   "   U U $ # 5 '  A.. $ $0o 2 IAI<I:%
*6B+%%% &*#!%! " 
    	 
   = H '+	#
  	
 =r#   