
    =h                        d dl Z d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZ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   G d
 dee      Z! G d de      Z" G d de      Z# G d dee      Z$dee%e&e
e&   ee&   f   dee	e%e%f   eeef   f   fdZ'dedee	e%e%f   e!f   fdZ(dededee&   dee	e%e%f   ef   fdZ)de%dee	e%e%f   e!f   fdZ*de%dee	e%e%f   e!f   fdZ+dedee	e%e%f   e!f   fdZ,	 	 	 	 	 d"dee   dee   dee   dee   dee&   dee	e%e%f   eeef   f   fd Z-	 	 	 	 d#dee   dee%   dee%   dee   dee	e%e%f   eeef   f   f
d!Z.y)$    N)dumps)
AnyAsyncIterableAsyncIteratorDictIterableIteratorMappingOptionalTupleUnion)	urlencode   )StreamClosedStreamConsumed)MultipartStream)AsyncByteStreamRequestContentRequestDataRequestFilesResponseContentSyncByteStream)peek_filelike_lengthprimitive_value_to_strc                   @    e Zd ZdeddfdZdee   fdZdee   fdZy)
ByteStreamstreamreturnNc                     || _         y N_streamselfr   s     ^/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/httpx/_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   )	__name__
__module____qualname__bytesr&   r	   r*   r   r,    r'   r%   r   r      s6    u  (5/ u!5 r'   r   c                   4    e Zd ZdZdee   fdZdee   fdZy)IteratorByteStream   r   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'   r   c              #   ^  K   | j                   r| j                  r
t               d| _         t        | j                  d      rU| j                  j                  | j                        }|r-| | j                  j                  | j                        }|r,y y | j                  D ]  }|  y w)NTread)r7   r:   r   hasattrr"   r<   
CHUNK_SIZEr$   chunkparts      r%   r*   zIteratorByteStream.__iter__2   s     ##(:(: ""#' 4<<(LL%%doo6E))$//: 
 
 %s   BB-B-N)	r-   r.   r/   r>   r   r0   r&   r	   r*   r1   r'   r%   r3   r3   *   s'    J9x 9
(5/ r'   r3   c                   4    e Zd ZdZdee   fdZdee   fdZy)AsyncIteratorByteStreamr4   r   c                 T    || _         d| _        t        j                  |      | _        y r6   )r"   r7   r8   
isasyncgenr:   r#   s     r%   r&   z AsyncIteratorByteStream.__init__F   s$    #( $//7r'   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"   rG   r>   r?   s      r%   r,   z!AsyncIteratorByteStream.__aiter__K   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-   r.   r/   r>   r   r0   r&   r   r,   r1   r'   r%   rC   rC   C   s)    J8}U3 8
u!5 r'   rC   c                   4    e Zd ZdZdee   fdZdee   f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 `httpx.StreamClosed`.
    r   c                     t               r    r   r)   s    r%   r*   zUnattachedStream.__iter__c   s
    nr'   c                   K   t               wr    rK   r)   s    r%   r,   zUnattachedStream.__aiter__f   s     ns   N)	r-   r.   r/   __doc__r	   r0   r*   r   r,   r1   r'   r%   rI   rI   \   s(    (5/ u!5 r'   rI   contentr   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', )
isinstancer0   strencodelenr   r   dictr   r3   r   rC   	TypeErrortype)rN   bodycontent_lengthheaderscontent_length_or_nones        r%   encode_contentr^   k   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'   datac           
         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)doseqrP   z!application/x-www-form-urlencodedrQ   zContent-Type)itemsrS   listtupleextendr   appendr   rU   rT   rV   r   )	r_   
plain_datakeyvalueitemrZ   r[   content_typer\   s	            r%   encode_urlencoded_datarm      s     Jjjl
UedE]+uUut%;D%ABuUVs$:5$ABC	 #
 Zt,33G<DT^N6L!/NGJt$$$ Vs   B<
filesboundaryc                 F    t        | ||      }|j                         }||fS )N)r_   rn   ro   )r   get_headers)r_   rn   ro   	multipartr\   s        r%   encode_multipart_datars      s+      TJI##%GIr'   textc                 t    | j                  d      }t        t        |            }d}||d}|t        |      fS )NrP   ztext/plain; charset=utf-8rb   rU   rT   rV   r   )rt   rZ   r[   rl   r\   s        r%   encode_textrw      s<    ;;wDT^N.L!/NGJt$$$r'   htmlc                 t    | j                  d      }t        t        |            }d}||d}|t        |      fS )NrP   ztext/html; charset=utf-8rb   rv   )rx   rZ   r[   rl   r\   s        r%   encode_htmlrz      s<    ;;wDT^N-L!/NGJt$$$r'   jsonc                     t        |       j                  d      }t        t        |            }d}||d}|t	        |      fS )NrP   zapplication/jsonrb   )
json_dumpsrU   rT   rV   r   )r{   rZ   r[   rl   r\   s        r%   encode_jsonr~      sC    d""7+DT^N%L!/NGJt$$$r'   c                    |7t        |t              s'd}t        j                  |t               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.r'   )
rS   r
   warningswarnDeprecationWarningr^   rs   rm   r~   r   )rN   r_   rn   r{   ro   messages         r%   encode_requestr      s     
4 9 Jg12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^   rw   rz   r~   r   )rN   rt   rx   r{   s       r%   encode_responser      sW     g&&		4  		4  		4  z#r'   )NNNNN)NNNN)/r8   r   r{   r   r}   typingr   r   r   r   r   r	   r
   r   r   r   urllib.parser   _exceptionsr   r   
_multipartr   _typesr   r   r   r   r   r   _utilsr   r   r   r3   rC   rI   rT   r0   r^   rm   rs   rw   rz   r~   r   r   r1   r'   r%   <module>r      sx     $   # 5 '  A.  2o 2 I3xe0DDEI
4S>5!@AABI:%
%
4S>:%&% 
*6>uo
4S>?*+%c %eDcNJ$>? %%c %eDcNJ$>? %%c %eDcNJ$>? % )-"&$( $ n% 
;
  L!  3-	 
 uo  4S>5!@AAB H *.	o&
3- 3- 3-	
 4S>5!@AABr'   