§
    ïŽ’j>(  ã                  óü  — d dl mZ d dlZd dlZd dlZ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 ddlmZmZmZ ddd	œZe                     d
„  ed¦  «        D ¦   «         ¦  «          ej        d                     d„ e                     ¦   «         D ¦   «         ¦  «        ¦  «        Z ej        d¦  «        Z ej        d¦  «        Zd"d„Zd#d„Zd$d„Z G d„ d¦  «        Z  G d„ d¦  «        Z! G d „ d!ee
¦  «        Z"dS )%é    )ÚannotationsN)ÚPathé   )ÚAsyncByteStreamÚFileContentÚ	FileTypesÚRequestDataÚRequestFilesÚSyncByteStream)Úpeek_filelike_lengthÚprimitive_value_to_strÚto_bytesz%22z\\)ú"ú\c                óB   — i | ]}|d k    ¯t          |¦  «        d|d›�“ŒS )é   ú%Ú02X)Úchr©Ú.0Úcs     ú?C:\Projects\DSCons\.venv\Lib\site-packages\httpx2\_multipart.pyú
<dictcomp>r      s4   € Ð)dÐ)dÐ)dÀ!ÐZ[Ð_cÒZcÐZc­#¨a©&¬&°+°a°+°+°+ÐZcÐZcÐZcó    é    ú|c                ó6   — g | ]}t          j        |¦  «        ‘ŒS © )ÚreÚescaper   s     r   ú
<listcomp>r"      s    € Ð/oÐ/oÐ/oÀµ´	¸!±´Ð/oÐ/oÐ/or   z[!#$%&'*+\-.^_`|~0-9A-Za-z]+z[\x00-\x08\x0a-\x1f\x7f]ÚnameÚstrÚvalueÚreturnÚbytesc                ót   — dd„}t                                ||¦  «        }| › d|› d�                     ¦   «         S )	z;
    Encode a name/value pair within a multipart form.
    Úmatchútyping.Match[str]r&   r$   c                óB   — t           |                      d¦  «                 S )Nr   )Ú!_HTML5_FORM_ENCODING_REPLACEMENTSÚgroup)r)   s    r   Úreplacerz$_format_form_param.<locals>.replacer$   s   € Ý0°·²¸Q±´Ô@Ð@r   z="r   )r)   r*   r&   r$   )Ú_HTML5_FORM_ENCODING_REÚsubÚencode)r#   r%   r.   s      r   Ú_format_form_paramr2      sT   € ð
Að Að Að Aõ $×'Ò'¨°%Ñ8Ô8€EØÐÐ�eÐÐÐ×%Ò%Ñ'Ô'Ð'r   Úfilenameú
str | Nonec                óB   — | rt          j        | ¦  «        d         pdS dS )z‘
    Guesses the mimetype based on a filename. Defaults to `application/octet-stream`.

    Returns `None` if `filename` is `None` or empty.
    r   zapplication/octet-streamN)Ú	mimetypesÚ
guess_type)r3   s    r   Ú_guess_content_typer8   +   s.   € ð ð OÝÔ# HÑ-Ô-¨aÔ0ÐNÐ4NÐNØˆ4r   Úcontent_typeúbytes | Nonec                ó^  — | r|                       d¦  «        sd S d| v r�|                      d¦  «        D ]y}|                     ¦   «                              ¦   «                               d¦  «        r>|                     ¦   «         t	          d¦  «        d …                              d¦  «        c S Œzd S )Ns   multipart/form-dataó   ;s	   boundary=ó   ")Ú
startswithÚsplitÚstripÚlowerÚlen)r9   Úsections     r   Ú(get_multipart_boundary_from_content_typerD   6   s¾   € ð ð ˜|×6Ò6Ð7MÑNÔNð Øˆtð ˆ|ÐÐØ#×)Ò)¨$Ñ/Ô/ð 	Hð 	HˆGØ�}Š}‰Œ×$Ò$Ñ&Ô&×1Ò1°,Ñ?Ô?ð HØ—}’}‘”¥s¨<Ñ'8Ô'8Ð':Ð':Ô;×AÒAÀ$ÑGÔGÐGÐGÐGðHàˆ4r   c                  ó:   — e Zd ZdZdd„Zdd
„Zdd„Zdd„Zdd„ZdS )Ú	DataFieldzB
    A single form field item, within a multipart form field.
    r#   r$   r%   ú str | bytes | int | float | Noner&   ÚNonec                óp  — t          |t          ¦  «        s"t          dt          |¦  «        › d|›�¦  «        ‚|�Jt          |t          t          t
          t          f¦  «        s"t          dt          |¦  «        › d|›�¦  «        ‚|| _        t          |t          ¦  «        r|nt          |¦  «        | _	        d S )Nz)Invalid type for name. Expected str, got ú: z5Invalid type for value. Expected primitive type, got )
Ú
isinstancer$   Ú	TypeErrorÚtyper'   ÚintÚfloatr#   r   r%   )Úselfr#   r%   s      r   Ú__init__zDataField.__init__I   s²   € Ý˜$¥Ñ$Ô$ð 	`ÝÐ^ÍÈTÉ
Ì
Ð^Ð^ÐVZÐ^Ð^Ñ_Ô_Ð_ØÐ¥Z°½½UÅCÍÐ7OÑ%PÔ%PÐÝÐlÕTXÐY^ÑT_ÔT_ÐlÐlÐchÐlÐlÑmÔmÐmØˆŒ	Ý+5°e½UÑ+CÔ+CÐ"f % %ÕI_Ð`eÑIfÔIfˆŒ
ˆ
ˆ
r   r'   c                ó”   — t          | d¦  «        s2t          d| j        ¦  «        }d                     d|dg¦  «        | _        | j        S )NÚ_headersr#   r   ó    Content-Disposition: form-data; ó   

)Úhasattrr2   r#   ÚjoinrS   )rP   r#   s     r   Úrender_headerszDataField.render_headersQ   sJ   € Ý�t˜ZÑ(Ô(ð 	_Ý% f¨d¬iÑ8Ô8ˆDØŸHšHÐ&IÈ4ÐQ\Ð%]Ñ^Ô^ˆDŒMàŒ}Ðr   c                ób   — t          | d¦  «        st          | j        ¦  «        | _        | j        S )NÚ_data)rV   r   r%   rZ   ©rP   s    r   Úrender_datazDataField.render_dataX   s-   € Ý�t˜WÑ%Ô%ð 	.Ý! $¤*Ñ-Ô-ˆDŒJàŒzÐr   rN   c                ó�   — |                       ¦   «         }|                      ¦   «         }t          |¦  «        t          |¦  «        z   S ©N)rX   r\   rB   )rP   ÚheadersÚdatas      r   Ú
get_lengthzDataField.get_length^   s;   € Ø×%Ò%Ñ'Ô'ˆØ×ÒÑ!Ô!ˆÝ�7‰|Œ|�c $™iœiÑ'Ð'r   útyping.Iterator[bytes]c              #  ób   K  — |                       ¦   «         V — |                      ¦   «         V — d S r^   ©rX   r\   r[   s    r   ÚrenderzDataField.renderc   s<   è è € Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#Ø×ÒÑ Ô Ð Ð Ð Ð Ð r   N)r#   r$   r%   rG   r&   rH   ©r&   r'   )r&   rN   ©r&   rb   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   rX   r\   ra   re   r   r   r   rF   rF   D   s†   € € € € € ðð ðgð gð gð gðð ð ð ðð ð ð ð(ð (ð (ð (ð
!ð !ð !ð !ð !ð !r   rF   c                  ó>   — e Zd ZdZdZdd	„Zdd„Zdd„Zdd„Zdd„Z	dS )Ú	FileFieldzB
    A single file field item, within a multipart form field.
    i   r#   r$   r%   r   r&   rH   c           	     óT  — || _         i }d }t          |t          ¦  «        r;t          |¦  «        dk    r|\  }}nTt          |¦  «        dk    r|\  }}}n:|\  }}}}n2t	          t          t          |dd¦  «        ¦  «        ¦  «        j         }|}|€t          |¦  «        }t          d„ |D ¦   «         ¦  «        }|�|s||d<   t          |t          j
        ¦  «        rt          d¦  «        ‚t          |t          j        ¦  «        rt          d¦  «        ‚|| _        || _        || _        d S )	Né   é   r#   Úuploadc              3  óB   K  — | ]}d |                      ¦   «         v V — ŒdS )zcontent-typeN)rA   )r   Úkeys     r   ú	<genexpr>z%FileField.__init__.<locals>.<genexpr>Œ   s/   è è € Ð%WÐ%WÈ n¸¿	º	¹¼Ð&CÐ%WÐ%WÐ%WÐ%WÐ%WÐ%Wr   úContent-Typez?Multipart file uploads require 'io.BytesIO', not 'io.StringIO'.zDMultipart file uploads must be opened in binary mode, not text mode.)r#   rK   ÚtuplerB   r   r$   Úgetattrr8   ÚanyÚioÚStringIOrL   Ú
TextIOBaser3   Úfiler_   )rP   r#   r%   r_   r9   r3   ÚfileobjÚhas_content_type_headers           r   rQ   zFileField.__init__o   sH  € ØˆŒ	ð #%ˆØ#'ˆõ �e�UÑ#Ô#ð 	Ý�5‰zŒz˜QŠˆð %*Ñ!�˜'˜'Ý�U‘”˜q’�Ø27Ñ/�˜' < <ð <AÑ8�˜' <°°å�C¥¨¨v°xÑ @Ô @ÑAÔAÑBÔBÔGˆHØˆGàÐÝ.¨xÑ8Ô8ˆLå"%Ð%WÐ%WÈwÐ%WÑ%WÔ%WÑ"WÔ"WÐØÐ#Ð,CÐ#ð '3ˆG�NÑ#å�g�rœ{Ñ+Ô+ð 	_ÝÐ]Ñ^Ô^Ð^Ý�g�rœ}Ñ-Ô-ð 	dÝÐbÑcÔcÐcà ˆŒØˆŒ	ØˆŒˆˆr   ú
int | Nonec                ó"  — |                       ¦   «         }t          | j        t          t          f¦  «        r1t          |¦  «        t          t          | j        ¦  «        ¦  «        z   S t          | j        ¦  «        }|€d S t          |¦  «        |z   S r^   )rX   rK   r|   r$   r'   rB   r   r   )rP   r_   Úfile_lengths      r   ra   zFileField.get_lengthœ   s{   € Ø×%Ò%Ñ'Ô'ˆå�d”i¥#¥u Ñ.Ô.ð 	;Ý�w‘<”<¥#¥h¨t¬yÑ&9Ô&9Ñ":Ô":Ñ:Ð:å*¨4¬9Ñ5Ô5ˆð ÐØ�4å�7‰|Œ|˜kÑ)Ð)r   r'   c                óŒ  — t          | d¦  «        �s-dt          d| j        ¦  «        g}| j        r,t          d| j        ¦  «        }|                     d|g¦  «         | j                             ¦   «         D ]š\  }}t                               |¦  «        €t          d¦  «        ‚t                               |¦  «        �t          d¦  «        ‚d|› d	�                     ¦   «         |                     ¦   «         }}|                     ||g¦  «         Œ›|                     d
¦  «         d                     |¦  «        | _        | j        S )NrS   rT   r#   r3   s   ; zInvalid multipart header name.z4Invalid control character in multipart header value.z
rJ   rU   r   )rV   r2   r#   r3   Úextendr_   ÚitemsÚ_HEADER_NAME_REÚ	fullmatchÚ
ValueErrorÚ _FORBIDDEN_HEADER_VALUE_CHARS_REÚsearchr1   ÚappendrW   rS   )rP   Úpartsr3   Úheader_nameÚheader_valuers   Úvals          r   rX   zFileField.render_headers«   s9  € Ý�t˜ZÑ(Ô(ñ 	,à3Ý" 6¨4¬9Ñ5Ô5ðˆEð Œ}ð 0Ý-¨j¸$¼-ÑHÔH�Ø—’˜e XÐ.Ñ/Ô/Ð/Ø-1¬\×-?Ò-?Ñ-AÔ-Að )ð )Ñ)�˜\Ý"×,Ò,¨[Ñ9Ô9ÐAÝ$Ð%EÑFÔFÐFÝ3×:Ò:¸<ÑHÔHÐTÝ$Ð%[Ñ\Ô\Ð\Ø1 +Ð1Ð1Ð1×8Ò8Ñ:Ô:¸L×<OÒ<OÑ<QÔ<Q�S�Ø—’˜c 3˜ZÑ(Ô(Ð(Ð(Ø�LŠL˜Ñ%Ô%Ð%ØŸHšH U™OœOˆDŒMàŒ}Ðr   rb   c              #  ó²  K  — t          | j        t          t          f¦  «        rt	          | j        ¦  «        V — d S t          | j        d¦  «        r1	 | j                             d¦  «         n# t          j        $ r Y nw xY w| j         	                    | j
        ¦  «        }|r4t	          |¦  «        V — | j         	                    | j
        ¦  «        }|°2d S d S )NÚseekr   )rK   r|   r$   r'   r   rV   r�   ry   ÚUnsupportedOperationÚreadÚ
CHUNK_SIZE©rP   Úchunks     r   r\   zFileField.render_dataÀ   sð   è è € Ý�d”i¥#¥u Ñ.Ô.ð 	Ý˜4œ9Ñ%Ô%Ð%Ð%Ð%ØˆFå�4”9˜fÑ%Ô%ð 	ðØ”	—’˜qÑ!Ô!Ð!Ð!øÝÔ*ð ð ð Ø�ðøøøð ”	—’˜tœÑ/Ô/ˆØð 	4Ý˜5‘/”/Ð!Ð!Ð!Ø”I—N’N 4¤?Ñ3Ô3ˆEð ð 	4ð 	4ð 	4ð 	4ð 	4s   ÁA- Á-A?Á>A?c              #  ój   K  — |                       ¦   «         V — |                      ¦   «         E d {V —† d S r^   rd   r[   s    r   re   zFileField.renderÐ   sH   è è € Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   N)r#   r$   r%   r   r&   rH   ©r&   r   rf   rg   )
rh   ri   rj   rk   r“   rQ   ra   rX   r\   re   r   r   r   rm   rm   h   sŠ   € € € € € ðð ð €Jð+ð +ð +ð +ðZ*ð *ð *ð *ðð ð ð ð*4ð 4ð 4ð 4ð &ð &ð &ð &ð &ð &r   rm   c                  óN   — e Zd ZdZ	 ddd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )ÚMultipartStreamzC
    Request content as streaming multipart encoded form data.
    Nr`   r	   Úfilesr
   Úboundaryr:   r&   rH   c                ó  — |€9t          j        d¦  «                             ¦   «                              d¦  «        }|| _        d|                     d¦  «        › �| _        t          |                      ||¦  «        ¦  «        | _	        d S )Né   Úasciizmultipart/form-data; boundary=)
ÚosÚurandomÚhexr1   r›   Údecoder9   ÚlistÚ_iter_fieldsÚfields)rP   r`   rš   r›   s       r   rQ   zMultipartStream.__init__Ú   sw   € ð ÐÝ”z "‘~”~×)Ò)Ñ+Ô+×2Ò2°7Ñ;Ô;ˆHà ˆŒØW¸X¿_º_ÈWÑ=UÔ=UÐWÐWˆÔÝ˜4×,Ò,¨T°5Ñ9Ô9Ñ:Ô:ˆŒˆˆr   ú&typing.Iterator[FileField | DataField]c              #  ód  K  — |                      ¦   «         D ]M\  }}t          |t          t          f¦  «        r|D ]}t	          ||¬¦  «        V — ŒŒ:t	          ||¬¦  «        V — ŒNt          |t
          j        ¦  «        r|                      ¦   «         n|}|D ]\  }}t          ||¬¦  «        V — Œd S )N)r#   r%   )r„   rK   rv   r£   rF   ÚtypingÚMappingrm   )rP   r`   rš   r#   r%   ÚitemÚ
file_itemss          r   r¤   zMultipartStream._iter_fieldsç   sà   è è € ØŸ:š:™<œ<ð 	8ð 	8‰KˆD�%Ý˜%¥%­ Ñ/Ô/ð 8Ø!ð ;ð ;�DÝ#¨°TÐ:Ñ:Ô:Ð:Ð:Ð:Ð:ð;õ   T°Ð7Ñ7Ô7Ð7Ð7Ð7Ð7å&0°½¼Ñ&GÔ&GÐR�U—[’[‘]”]�]ÈUˆ
Ø%ð 	4ð 	4‰KˆD�%Ý ¨UÐ3Ñ3Ô3Ð3Ð3Ð3Ð3ð	4ð 	4r   rb   c              #  óŠ   K  — | j         D ],}d| j        z  V — |                     ¦   «         E d {V —† dV — Œ-d| j        z  V — d S )Ns   --%s
s   
s   --%s--
)r¥   r›   re   )rP   Úfields     r   Úiter_chunkszMultipartStream.iter_chunksó   sn   è è € Ø”[ð 	ð 	ˆEØ ¤Ñ-Ð-Ð-Ð-Ø—|’|‘~”~Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØˆMˆMˆMˆMØ˜dœmÑ+Ð+Ð+Ð+Ð+Ð+r   r   c                ó¸   — t          | j        ¦  «        }d}| j        D ]0}|                     ¦   «         }|€ dS |d|z   dz   z  }||z  }|dz  }Œ1|d|z   dz   z  }|S )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   Nro   é   )rB   r›   r¥   ra   )rP   Úboundary_lengthÚlengthr­   Úfield_lengths        r   Úget_content_lengthz"MultipartStream.get_content_lengthú   s‰   € õ
 ˜dœmÑ,Ô,ˆØˆà”[ð 	ð 	ˆEØ ×+Ò+Ñ-Ô-ˆLØÐ#Ø�t�tà�a˜/Ñ)¨AÑ-Ñ-ˆFØ�lÑ"ˆFØ�a‰KˆFˆFà�!�oÑ%¨Ñ)Ñ)ˆØˆr   údict[str, str]c                ój   — |                       ¦   «         }| j        }|€d|dœS t          |¦  «        |dœS )NÚchunked)zTransfer-Encodingru   )zContent-Lengthru   )r´   r9   r$   )rP   Úcontent_lengthr9   s      r   Úget_headerszMultipartStream.get_headers  sE   € Ø×0Ò0Ñ2Ô2ˆØÔ(ˆØÐ!Ø)2ÀLÐQÐQÐQÝ"% nÑ"5Ô"5À|ÐTÐTÐTr   c              #  ó>   K  — |                       ¦   «         E d {V —† d S r^   ©r®   r[   s    r   Ú__iter__zMultipartStream.__iter__  s0   è è € Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   útyping.AsyncIterator[bytes]c               óB   K  — |                       ¦   «         D ]}|W V — Œd S r^   r»   r”   s     r   Ú	__aiter__zMultipartStream.__aiter__  s8   è è € Ø×%Ò%Ñ'Ô'ð 	ð 	ˆEØˆKˆKˆKˆKˆKð	ð 	r   r^   )r`   r	   rš   r
   r›   r:   r&   rH   )r`   r	   rš   r
   r&   r¦   rg   r—   )r&   rµ   )r&   r½   )rh   ri   rj   rk   rQ   r¤   r®   r´   r¹   r¼   r¿   r   r   r   r™   r™   Õ   s¸   € € € € € ðð ð "&ð	;ð ;ð ;ð ;ð ;ð
4ð 
4ð 
4ð 
4ð,ð ,ð ,ð ,ðð ð ð ð,Uð Uð Uð Uð&ð &ð &ð &ðð ð ð ð ð r   r™   )r#   r$   r%   r$   r&   r'   )r3   r4   r&   r4   )r9   r:   r&   r:   )#Ú
__future__r   ry   r6   rŸ   r    r¨   Úpathlibr   Ú_typesr   r   r   r	   r
   r   Ú_utilsr   r   r   r,   ÚupdateÚrangeÚcompilerW   Úkeysr/   r…   rˆ   r2   r8   rD   rF   rm   r™   r   r   r   ú<module>rÈ      sK  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð +0°vÐ$>Ð$>Ð !Ø !× (Ò (Ð)dÐ)dÀuÀuÈXÁÄÐ)dÑ)dÔ)dÑ eÔ eÐ eØ$˜"œ* T§Y¢YÐ/oÐ/oÐFg×FlÒFlÑFnÔFnÐ/oÑ/oÔ/oÑ%pÔ%pÑqÔqÐ Ø�"”*Ð<Ñ=Ô=€Ø#- 2¤:Ð.IÑ#JÔ#JÐ  ð	(ð 	(ð 	(ð 	(ðð ð ð ðð ð ð ð!!ð !!ð !!ð !!ð !!ñ !!ô !!ð !!ðHj&ð j&ð j&ð j&ð j&ñ j&ô j&ð j&ðZGð Gð Gð Gð G�n oñ Gô Gð Gð Gð Gr   