
     j"                        S SK Jr  S SKrS SKrS SKrS SKJr  SSKJrJ	r	J
r
JrJrJr  SSKJrJrJrJrJr      SS jr " S S	5      r " S
 S5      r " S S\\5      rg)    )annotationsN)Path   )AsyncByteStreamFileContent	FileTypesRequestDataRequestFilesSyncByteStream)format_form_paramguess_content_typepeek_filelike_lengthprimitive_value_to_strto_bytesc                :   U (       a  U R                  S5      (       d  g SU ;   aw  U R                  S5       Hb  nUR                  5       R                  5       R                  S5      (       d  M7  UR                  5       [	        S5      S  R                  S5      s  $    g )Ns   multipart/form-data   ;s	   boundary=   ")
startswithsplitstriplowerlen)content_typesections     Z/home/ubuntu/second-brain/public-api/venv/lib/python3.13/site-packages/httpx/_multipart.py(get_multipart_boundary_from_content_typer      s     |667MNN |#))$/G}}$$&11,??}}s<'8':;AA$GG 0     c                  J    \ rS rSrSrS
S jrSS jrSS jrSS jrSS jr	Sr
g	)	DataField'   z:
A single form field item, within a multipart form field.
c                P   [        U[        5      (       d  [        S[        U5       SU< 35      eUb@  [        U[        [        [
        [        45      (       d  [        S[        U5       SU< 35      eXl        [        U[        5      (       a  UU l	        g [        U5      U l	        g )Nz)Invalid type for name. Expected str, got : z5Invalid type for value. Expected primitive type, got )

isinstancestr	TypeErrortypebytesintfloatnamer   value)selfr*   r+   s      r   __init__DataField.__init__,   s    $$$;DJ<r$R  ZUC7O%P%PU}Bui1  	u--E 	
3I%3P 	
r   c                    [        U S5      (       d/  [        SU R                  5      nSR                  SUS/5      U l        U R                  $ )N_headersr*   r       Content-Disposition: form-data;    

)hasattrr   r*   joinr0   )r,   r*   s     r   render_headersDataField.render_headers;   sE    tZ(($VTYY7DHH4dKHDM }}r   c                p    [        U S5      (       d  [        U R                  5      U l        U R                  $ )N_data)r3   r   r+   r8   r,   s    r   render_dataDataField.render_dataD   s)    tW%%!$**-DJzzr   c                p    U R                  5       nU R                  5       n[        U5      [        U5      -   $ N)r5   r:   r   )r,   headersdatas      r   
get_lengthDataField.get_lengthJ   s1    %%'!7|c$i''r   c              #  T   #    U R                  5       v   U R                  5       v   g 7fr=   r5   r:   r9   s    r   renderDataField.renderO   s#     !!##  s   &()r8   r0   r*   r+   N)r*   r$   r+   z str | bytes | int | float | NonereturnNonerF   r'   )rF   r(   rF   ztyping.Iterator[bytes])__name__
__module____qualname____firstlineno____doc__r-   r5   r:   r@   rD   __static_attributes__ r   r   r   r   '   s     
(
!r   r   c                  N    \ rS rSrSrSrSS jrSS jrSS jrSS jr	SS jr
S	rg
)	FileFieldT   z:
A single file field item, within a multipart form field.
i   c           	        Xl         0 nS n[        U[        5      (       a/  [        U5      S:X  a  Uu  pVOF[        U5      S:X  a  Uu  pVnO1Uu  pVpCO+[	        [        [        USS5      5      5      R                   nUnUc  [        U5      n[        S U 5       5      nUb  U(       d  XCS'   [        U[        R                  5      (       a  [        S5      e[        U[        R                  5      (       a  [        S5      eXPl        X`l        X0l        g )	N      r*   uploadc              3  H   #    U  H  nS UR                  5       ;   v   M     g7f)zcontent-typeN)r   ).0keys     r   	<genexpr>%FileField.__init__.<locals>.<genexpr>x   s     %Wwn		&Cws    "Content-Typez?Multipart file uploads require 'io.BytesIO', not 'io.StringIO'.zDMultipart file uploads must be opened in binary mode, not text mode.)r*   r#   tupler   r   r$   getattrr   anyioStringIOr%   
TextIOBasefilenamefiler>   )r,   r*   r+   r>   r   rd   fileobjhas_content_type_headers           r   r-   FileField.__init__[   s	   	 #%#' eU##5zQ %*!'Uq27/< <A8<Cvx @ABGGHG-h7L"%%Ww%W"W#,C '3N#gr{{++Q  gr}}--V  !	r   c                   U R                  5       n[        U R                  [        [        45      (       a*  [        U5      [        [        U R                  5      5      -   $ [        U R                  5      nUc  g [        U5      U-   $ r=   )r5   r#   re   r$   r'   r   r   r   )r,   r>   file_lengths      r   r@   FileField.get_length   sj    %%'dii#u..w<#htyy&9":::*4995 7|k))r   c                   [        U S5      (       d  S[        SU R                  5      /nU R                  (       a)  [        SU R                  5      nUR	                  SU/5        U R
                  R                  5        H:  u  p4SU S3R                  5       UR                  5       peUR	                  XV/5        M<     UR                  S5        S	R                  U5      U l
        U R                  $ )
Nr0   r1   r*   rd   s   ; z
r"   r2   r   )r3   r   r*   rd   extendr>   itemsencodeappendr4   r0   )r,   partsrd   header_nameheader_valuerZ   vals          r   r5   FileField.render_headers   s    tZ((3!&$))4E }},ZGeX./-1\\-?-?-A)!+b188:L<O<O<QScZ( .B LL%HHUODM}}r   c              #    #    [        U R                  [        [        45      (       a  [	        U R                  5      v   g [        U R                  S5      (       a   U R                  R                  S5        U R                  R                  U R                  5      nU(       a<  [	        U5      v   U R                  R                  U R                  5      nU(       a  M;  g g ! [        R                   a     Nf = f7f)Nseekr   )r#   re   r$   r'   r   r3   rw   ra   UnsupportedOperationread
CHUNK_SIZEr,   chunks     r   r:   FileField.render_data   s     dii#u..499%%499f%%		q! 		t/5/!IINN4??3E e	 ** s1   AC:C  7A%C:C: C74C:6C77C:c              #  d   #    U R                  5       v   U R                  5        S h  vN   g  N7fr=   rC   r9   s    r   rD   FileField.render   s&     !!####%%%s   &0.0)r0   re   rd   r>   r*   N)r*   r$   r+   r   rF   rG   rF   z
int | NonerH   rI   )rJ   rK   rL   rM   rN   rz   r-   r@   r5   r:   rD   rO   rP   r   r   rR   rR   T   s(     J/b*"4 &r   rR   c                  ~    \ rS rSrSr S       SS jjr      SS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSrg)MultipartStream   z;
Request content as streaming multipart encoded form data.
Nc                    Uc3  [         R                  " S5      R                  5       R                  S5      nX0l        SUR                  S5      -  U l        [        U R                  X5      5      U l	        g )N   asciiz multipart/form-data; boundary=%s)
osurandomhexro   boundarydecoder   list_iter_fieldsfields)r,   r?   filesr   s       r   r-   MultipartStream.__init__   se     zz"~))+227;H >B
 
 4,,T9:r   c              #  D  #    UR                  5        HA  u  p4[        U[        [        45      (       a  U H  n[	        X5S9v   M     M6  [	        X4S9v   MC     [        U[
        R                  5      (       a  UR                  5       OUnU H  u  p4[        X4S9v   M     g 7f)N)r*   r+   )rn   r#   r^   r   r   typingMappingrR   )r,   r?   r   r*   r+   item
file_itemss          r   r   MultipartStream._iter_fields   s       ::<KD%%//!D#:: "  T77 ( '1&G&GU[[]U
%KD33 &s   BB c              #     #    U R                    H0  nSU R                  -  v   UR                  5        S h  vN   Sv   M2     SU R                  -  v   g  N7f)Ns   --%s
s   
s   --%s--
)r   r   rD   )r,   fields     r   iter_chunksMultipartStream.iter_chunks   sL     [[E--||~%%M ! dmm++ &s   4AAAc                    [        U R                  5      nSnU R                   H,  nUR                  5       nUc    gUSU-   S-   -  nX$-  nUS-  nM.     USU-   S-   -  nU$ )z
Return the length of the multipart encoded content, or `None` if
any of the files have a length that cannot be determined upfront.
r   NrU      )r   r   r   r@   )r,   boundary_lengthlengthr   field_lengths        r   get_content_length"MultipartStream.get_content_length   s|    
 dmm,[[E ++-L#a/)A--F"FaKF ! 	!o%))r   c                f    U R                  5       nU R                  nUc  SUS.$ [        U5      US.$ )Nchunked)zTransfer-Encodingr]   )zContent-Lengthr]   )r   r   r$   )r,   content_lengthr   s      r   get_headersMultipartStream.get_headers   s<    002((!)2LQQ"%n"5|TTr   c              #  B   #    U R                  5        H  nUv   M	     g 7fr=   r   r{   s     r   __iter__MultipartStream.__iter__  s     %%'EK (s   c               D   #    U R                  5        H  nU7v   M
     g 7fr=   r   r{   s     r   	__aiter__MultipartStream.__aiter__  s     %%'EK (s    )r   r   r   r=   )r?   r	   r   r
   r   bytes | NonerF   rG   )r?   r	   r   r
   rF   z&typing.Iterator[FileField | DataField]rI   r   )rF   zdict[str, str])rF   ztyping.AsyncIterator[bytes])rJ   rK   rL   rM   rN   r-   r   r   r   r   r   r   rO   rP   r   r   r   r      sn     "&	;; ; 	;
 
;44(44	/4,,Ur   r   )r   r   rF   r   )
__future__r   ra   r   r   pathlibr   _typesr   r   r   r	   r
   r   _utilsr   r   r   r   r   r   r   rR   r   rP   r   r   <module>r      se    " 	 	    *! *!Zj& j&ZLno Lr   