§
     @gµ"  ã                  óÌ   — d dl m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mZm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)Úformat_form_paramÚguess_content_typeÚpeek_filelike_lengthÚprimitive_value_to_strÚto_bytesÚcontent_typeúbytes | NoneÚreturnc                ó^  — | 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)r   Úsections     úD/var/www/piapp/venv/lib/python3.11/site-packages/httpx/_multipart.pyÚ(get_multipart_boundary_from_content_typer      s¾   € ð ð ˜|×6Ò6Ð7MÑNÔNð Øˆtð ˆ|ÐÐØ#×)Ò)¨$Ñ/Ô/ð 	Hð 	HˆGØ�}Š}‰Œ×$Ò$Ñ&Ô&×1Ò1°,Ñ?Ô?ð HØ—}’}‘”¥s¨<Ñ'8Ô'8Ð':Ð':Ô;×AÒAÀ$ÑGÔGÐGÐGÐGðHàˆ4ó    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.
    ÚnameÚstrÚvalueú 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ÚtypeÚbytesÚintÚfloatr"   r   r$   )Úselfr"   r$   s      r   Ú__init__zDataField.__init__,   sÉ   € Ý˜$¥Ñ$Ô$ð 	ÝØR½DÀ¹J¼JÐRÐRÈ$ÐRÐRñô ð ð Ð¥Z°½½UÅCÍÐ7OÑ%PÔ%PÐÝð1Ý˜U™œð1ð 1Ø',ð1ð 1ñô ð ð ˆŒ	å ¥uÑ-Ô-ÐPˆEˆEÕ3IÈ%Ñ3PÔ3Pð 	Œ
ˆ
ˆ
r   r,   c                ó”   — t          | d¦  «        s2t          d| j        ¦  «        }d                     d|dg¦  «        | _        | j        S )NÚ_headersr"   r   ó    Content-Disposition: form-data; ó   

)Úhasattrr   r"   Újoinr2   )r/   r"   s     r   Úrender_headerszDataField.render_headers;   sN   € Ý�t˜ZÑ(Ô(ð 	Ý$ V¨T¬YÑ7Ô7ˆDØŸHšHØ4°d¸KÐHñô ˆDŒMð Œ}Ðr   c                ób   — t          | d¦  «        st          | j        ¦  «        | _        | j        S )NÚ_data)r5   r   r$   r9   ©r/   s    r   Úrender_datazDataField.render_dataD   s-   € Ý�t˜WÑ%Ô%ð 	.Ý! $¤*Ñ-Ô-ˆDŒJàŒzÐr   r-   c                ó�   — |                       ¦   «         }|                      ¦   «         }t          |¦  «        t          |¦  «        z   S ©N)r7   r;   r   )r/   ÚheadersÚdatas      r   Ú
get_lengthzDataField.get_lengthJ   s;   € Ø×%Ò%Ñ'Ô'ˆØ×ÒÑ!Ô!ˆÝ�7‰|Œ|�c $™iœiÑ'Ð'r   útyping.Iterator[bytes]c              #  ób   K  — |                       ¦   «         V — |                      ¦   «         V — d S r=   ©r7   r;   r:   s    r   ÚrenderzDataField.renderO   s<   è è € Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#Ø×ÒÑ Ô Ð Ð Ð Ð Ð r   N)r"   r#   r$   r%   r   r&   ©r   r,   )r   r-   ©r   rA   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r7   r;   r@   rD   © r   r   r!   r!   '   s‚   € € € € € ðð ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð(ð (ð (ð (ð
!ð !ð !ð !ð !ð !r   r!   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   r&   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)r   )Ú.0Úkeys     r   ú	<genexpr>z%FileField.__init__.<locals>.<genexpr>x   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"   r)   Útupler   r   r#   Úgetattrr   ÚanyÚioÚStringIOr*   Ú
TextIOBaseÚfilenameÚfiler>   )r/   r"   r$   r>   r   r]   ÚfileobjÚhas_content_type_headers           r   r0   zFileField.__init__[   sV  € ØˆŒ	ð #%ˆØ#'ˆõ �e�UÑ#Ô#ð 	Ý�5‰zŒz˜QŠˆð %*Ñ!�˜'˜'Ý�U‘”˜q’�Ø27Ñ/�˜' < <ð <AÑ8�˜' <°°å�C¥¨¨v°xÑ @Ô @ÑAÔAÑBÔBÔGˆHØˆGàÐÝ-¨hÑ7Ô7ˆLå"%Ð%WÐ%WÈwÐ%WÑ%WÔ%WÑ"WÔ"WÐØÐ#Ð,CÐ#ð '3ˆG�NÑ#å�g�rœ{Ñ+Ô+ð 	ÝØQñô ð õ �g�rœ}Ñ-Ô-ð 	ÝØVñô ð ð !ˆŒØˆŒ	ØˆŒˆˆr   ú
int | Nonec                ó"  — |                       ¦   «         }t          | j        t          t          f¦  «        r1t          |¦  «        t          t          | j        ¦  «        ¦  «        z   S t          | j        ¦  «        }|€d S t          |¦  «        |z   S r=   )r7   r)   r^   r#   r,   r   r   r   )r/   r>   Úfile_lengths      r   r@   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 ]H\  }}d|› d�                     ¦   «         |                     ¦   «         }}|                     ||g¦  «         ŒI|                     d¦  «         d	 	                    |¦  «        | _
        | j
        S )
Nr2   r3   r"   r]   s   ; z
r(   r4   r   )r5   r   r"   r]   Úextendr>   ÚitemsÚencodeÚappendr6   r2   )r/   Úpartsr]   Úheader_nameÚheader_valuerT   Úvals          r   r7   zFileField.render_headers›   só   € Ý�t˜ZÑ(Ô(ð 	,à3Ý! &¨$¬)Ñ4Ô4ðˆEð Œ}ð 0Ý,¨Z¸¼ÑGÔG�Ø—’˜e XÐ.Ñ/Ô/Ð/Ø-1¬\×-?Ò-?Ñ-AÔ-Að )ð )Ñ)�˜\Ø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   rA   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   )r)   r^   r#   r,   r   r5   rn   rZ   ÚUnsupportedOperationÚreadÚ
CHUNK_SIZE©r/   Ú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=   rC   r:   s    r   rD   zFileField.render¼   sH   è è € Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   N)r"   r#   r$   r   r   r&   ©r   ra   rE   rF   )
rG   rH   rI   rJ   rq   r0   r@   r7   r;   rD   rK   r   r   rM   rM   T   sŠ   € € € € € ðð ð €Jð/ð /ð /ð /ðb*ð *ð *ð *ðð ð ð ð"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   r&   c                ó  — |€9t          j        d¦  «                             ¦   «                              d¦  «        }|| _        d|                     d¦  «        z  | _        t          |                      ||¦  «        ¦  «        | _	        d S )Né   Úasciiz multipart/form-data; boundary=%s)
ÚosÚurandomÚhexrg   ry   Údecoder   ÚlistÚ_iter_fieldsÚfields)r/   r?   rx   ry   s       r   r0   zMultipartStream.__init__Æ   s   € ð ÐÝ”z "‘~”~×)Ò)Ñ+Ô+×2Ò2°7Ñ;Ô;ˆHà ˆŒØ>ÀÇÂØñB
ô B
ñ 
ˆÔõ ˜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$   )rf   r)   rW   r�   r!   ÚtypingÚMappingrM   )r/   r?   rx   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   rA   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ƒ   ry   rD   )r/   Úfields     r   Úiter_chunkszMultipartStream.iter_chunksã   sn   è è € Ø”[ð 	ð 	ˆEØ ¤Ñ-Ð-Ð-Ð-Ø—|’|‘~”~Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØˆMˆMˆMˆMØ˜dœmÑ+Ð+Ð+Ð+Ð+Ð+r   ra   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   é   )r   ry   rƒ   r@   )r/   Ú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-EncodingrV   )zContent-LengthrV   )r’   r   r#   )r/   Úcontent_lengthr   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  — |                       ¦   «         D ]}|V — Œd S r=   ©rŒ   rr   s     r   Ú__iter__zMultipartStream.__iter__  s6   è è € Ø×%Ò%Ñ'Ô'ð 	ð 	ˆEØˆKˆKˆKˆKð	ð 	r   útyping.AsyncIterator[bytes]c               óB   K  — |                       ¦   «         D ]}|W V — Œd S r=   r™   rr   s     r   Ú	__aiter__zMultipartStream.__aiter__  s8   è è € Ø×%Ò%Ñ'Ô'ð 	ð 	ˆEØˆKˆKˆKˆKˆKð	ð 	r   r=   )r?   r	   rx   r
   ry   r   r   r&   )r?   r	   rx   r
   r   r„   rF   ru   )r   r“   )r   r›   )rG   rH   rI   rJ   r0   r‚   rŒ   r’   r—   rš   r�   rK   r   r   rw   rw   Á   s¸   € € € € € ðð ð "&ð	;ð ;ð ;ð ;ð ;ð4ð 4ð 4ð 4ð,ð ,ð ,ð ,ðð ð ð ð,Uð Uð Uð Uðð ð ð ðð ð ð ð ð r   rw   )r   r   r   r   )Ú
__future__r   rZ   r}   r†   Úpathlibr   Ú_typesr   r   r   r	   r
   r   Ú_utilsr   r   r   r   r   r   r!   rM   rw   rK   r   r   ú<module>r¢      sˆ  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð*!ð *!ð *!ð *!ð *!ñ *!ô *!ð *!ðZj&ð j&ð j&ð j&ð j&ñ j&ô j&ð j&ðZLð Lð Lð Lð L�n oñ Lô Lð Lð Lð Lr   