Ë
    ,Œ:j #  ã                   óè   — 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ej$                  e   dej$                  e   fd„Z G d	„ d
«      Z G d„ d«      Z G d„ dee«      Zy)é    N)ÚPathé   )ÚAsyncByteStreamÚFileContentÚ	FileTypesÚRequestDataÚRequestFilesÚSyncByteStream)Úformat_form_paramÚguess_content_typeÚpeek_filelike_lengthÚprimitive_value_to_strÚto_bytesÚcontent_typeÚreturnc                 ó  — | r| j                  d«      sy d| v rp| j                  d«      D ]\  }|j                  «       j                  «       j                  d«      sŒ1|j                  «       t	        d«      d  j                  d«      c S  y )Ns   multipart/form-dataó   ;s	   boundary=ó   ")Ú
startswithÚsplitÚstripÚlowerÚlen)r   Úsections     úR/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/httpx/_multipart.pyÚ(get_multipart_boundary_from_content_typer      s„   € ñ ˜|×6Ñ6Ð7MÔNØð ˆ|ÑØ#×)Ñ)¨$Ó/ò 	HˆGØ�}‰}‹×$Ñ$Ó&×1Ñ1°,Õ?Ø—}‘}“¤s¨<Ó'8Ð':Ð;×AÑAÀ$ÓGÒGð	Hð ó    c            	       ó’   — e Zd ZdZdedej                  eeee	df   ddfd„Z
defd„Zdefd„Zdefd	„Zdej                  e   fd
„Zy)Ú	DataFieldzB
    A single form field item, within a multipart form field.
    ÚnameÚvalueNr   c                 ó.  — t        |t        «      st        dt        |«      › d|›�«      ‚|�:t        |t        t        t
        t        f«      st        dt        |«      › d|›�«      ‚|| _        t        |t        «      r|| _	        y t        |«      | _	        y )Nz)Invalid type for name. Expected str, got ú: z5Invalid type for value. Expected primitive type, got )
Ú
isinstanceÚstrÚ	TypeErrorÚtypeÚbytesÚintÚfloatr    r   r!   )Úselfr    r!   s      r   Ú__init__zDataField.__init__*   s˜   € ô ˜$¤Ô$ÜØ;¼DÀ»J¸<ÀrÈ$ÈÐRóð ð Ð¤Z°¼¼UÄCÌÐ7OÔ%PÜØGÌÈUËÀ}ÐTVÐW\ÐV_Ð`óð ð ˆŒ	ä ¤uÔ-ˆEð 	�
Ü3IÈ%Ó3Pð 	�
r   c                 ó�   — t        | d«      s/t        d| j                  «      }dj                  d|dg«      | _        | j                  S )NÚ_headersr    r   ó    Content-Disposition: form-data; ó   

)Úhasattrr   r    Újoinr.   )r+   r    s     r   Úrender_headerszDataField.render_headers:   sB   € Ü�t˜ZÔ(Ü$ V¨T¯Y©YÓ7ˆDØŸH™HØ4°d¸KÐHóˆDŒMð �}‰}Ðr   c                 óf   — t        | d«      st        | j                  «      | _        | j                  S )NÚ_data)r1   r   r!   r5   ©r+   s    r   Úrender_datazDataField.render_dataC   s&   € Ü�t˜WÔ%Ü! $§*¡*Ó-ˆDŒJà�z‰zÐr   c                 óp   — | j                  «       }| j                  «       }t        |«      t        |«      z   S ©N)r3   r7   r   )r+   ÚheadersÚdatas      r   Ú
get_lengthzDataField.get_lengthI   s1   € Ø×%Ñ%Ó'ˆØ×ÑÓ!ˆÜ�7‹|œc $›iÑ'Ð'r   c              #   óT   K  — | j                  «       –— | j                  «       –— y ­wr9   ©r3   r7   r6   s    r   ÚrenderzDataField.renderN   s$   è ø€ Ø×!Ñ!Ó#Ò#Ø×ÑÓ Ó ùs   ‚&()Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   ÚtypingÚUnionr(   r)   r*   r,   r3   r7   r<   ÚIteratorr?   © r   r   r   r   %   sq   „ ñð
Øð
Ø &§¡¨S°%¸¸eÀTÐ-IÑ Jð
à	ó
ð  ó ð˜Uó ð(˜Có (ð
!˜Ÿ™¨Ñ.ô !r   r   c                   ó¦   — e Zd ZdZdZdededdfd„Zdej                  e
   fd„Zdefd	„Zdej                  e   fd
„Zdej                  e   fd„Zy)Ú	FileFieldzB
    A single file field item, within a multipart form field.
    i   r    r!   r   Nc           	      ó   — || _         i }d }t        |t        «      r1t        |«      dk(  r|\  }}nHt        |«      dk(  r|\  }}}n3|\  }}}}n+t	        t        t        |dd«      «      «      j                   }|}|€t        |«      }t        d„ |D «       «      }|�|s||d<   t        |t        j                  «      rt        d«      ‚t        |t        j                  «      rt        d«      ‚|| _        || _        || _        y )	Né   é   r    Úuploadc              3   ó@   K  — | ]  }d |j                  «       v –— Œ y­w)zcontent-typeN)r   )Ú.0Úkeys     r   ú	<genexpr>z%FileField.__init__.<locals>.<genexpr>u   s   è ø€ Ò%WÈ n¸¿	¹	»Ô&CÑ%Wùó   ‚ú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   rZ   ÚfileobjÚhas_content_type_headers           r   r,   zFileField.__init__Z   s  € ØˆŒ	ð *,ˆØ-1ˆô
 �eœUÔ#Ü�5‹z˜QŠà$)Ñ!�™'Ü�U“˜q’Ø27Ñ/�˜'¡<ð <AÑ8�˜' <±äœC¤¨¨v°xÓ @ÓAÓB×GÑGˆHØˆGàÐÜ-¨hÓ7ˆLä"%Ñ%WÈwÔ%WÓ"WÐØÐ#Ñ,Cð '3ˆG�NÑ#ä�gœrŸ{™{Ô+ÜØQóð ô �gœrŸ}™}Ô-ÜØVóð ð !ˆŒØˆŒ	Øˆ�r   c                 ó  — | j                  «       }t        | j                  t        t        f«      r*t        |«      t        t        | j                  «      «      z   S t        | j                  «      }|€y t        |«      |z   S r9   )r3   r$   r[   r%   r(   r   r   r   )r+   r:   Úfile_lengths      r   r<   zFileField.get_length‰   sg   € Ø×%Ñ%Ó'ˆä�d—i‘i¤#¤u Ô.Ü�w“<¤#¤h¨t¯y©yÓ&9Ó":Ñ:Ð:ä*¨4¯9©9Ó5ˆð ÐØä�7‹|˜kÑ)Ð)r   c                 óÌ  — t        | d«      sÍdt        d| j                  «      g}| j                  r)t        d| j                  «      }|j	                  d|g«       | j
                  j                  «       D ]<  \  }}d|› d�j                  «       |j                  «       }}|j	                  ||g«       Œ> |j                  d«       d	j                  |«      | _
        | j                  S )
Nr.   r/   r    rZ   s   ; z
r#   r0   r   )r1   r   r    rZ   Úextendr:   ÚitemsÚencodeÚappendr2   r.   )r+   ÚpartsrZ   Úheader_nameÚheader_valuerP   Úvals          r   r3   zFileField.render_headers˜   sÊ   € Ü�t˜ZÔ(à3Ü! &¨$¯)©)Ó4ðˆEð �}Š}Ü,¨Z¸¿¹ÓG�Ø—‘˜e XÐ.Ô/Ø-1¯\©\×-?Ñ-?Ó-Aò )Ñ)�˜\Ø! + ¨bÐ1×8Ñ8Ó:¸L×<OÑ<OÓ<Q�S�Ø—‘˜c 3˜ZÕ(ð)ð �L‰L˜Ô%ØŸH™H U›OˆDŒMà�}‰}Ðr   c              #   óÌ  K  — t        | j                  t        t        f«      rt	        | j                  «      –— y t        | j                  d«      r	 | j                  j                  d«       | j                  j                  | j                  «      }|r6t	        |«      –— | j                  j                  | j                  «      }|rŒ5y y # t        j                  $ r Y Œsw xY w­w)NÚseekr   )r$   r[   r%   r(   r   r1   rj   rW   ÚUnsupportedOperationÚreadÚ
CHUNK_SIZE©r+   Úchunks     r   r7   zFileField.render_data©   s¦   è ø€ Ü�d—i‘i¤#¤u Ô.Ü˜4Ÿ9™9Ó%Ò%Øä�4—9‘9˜fÔ%ðØ—	‘	—‘˜qÔ!ð —	‘	—‘˜tŸ™Ó/ˆÙÜ˜5“/Ò!Ø—I‘I—N‘N 4§?¡?Ó3ˆEô øô	 ×*Ñ*ò Ùðüs1   ‚AC$ÁC Á-AC$Ã	C$ÃC!ÃC$Ã C!Ã!C$c              #   ód   K  — | j                  «       –— | j                  «       E d {  –—†  y 7 Œ­wr9   r>   r6   s    r   r?   zFileField.render¹   s'   è ø€ Ø×!Ñ!Ó#Ò#Ø×#Ñ#Ó%×%Ò%ús   ‚&0¨.©0)r@   rA   rB   rC   rm   r%   r   r,   rD   ÚOptionalr)   r<   r(   r3   rF   r7   r?   rG   r   r   rI   rI   S   st   „ ñð €Jð-˜Sð -¨ð -°tó -ð^*˜FŸO™O¨CÑ0ó *ð ó ð"4˜VŸ_™_¨UÑ3ó 4ð &˜Ÿ™¨Ñ.ô &r   rI   c            	       óT  — e Zd ZdZ	 ddededej                  e   ddfd„Z	dededej                  ej                  eef      fd„Zdej                  e   fd	„Zdej                  e   fd
„Zdej$                  eef   fd„Zdej                  e   fd„Zdej,                  e   fd„Zy)ÚMultipartStreamzC
    Request content as streaming multipart encoded form data.
    Nr;   ÚfilesÚboundaryr   c                 óì   — |€2t        j                  d«      j                  «       j                  d«      }|| _        d|j                  d«      z  | _        t        | j                  ||«      «      | _	        y )Né   Úasciiz multipart/form-data; boundary=%s)
ÚosÚurandomÚhexrc   ru   Údecoder   ÚlistÚ_iter_fieldsÚfields)r+   r;   rt   ru   s       r   r,   zMultipartStream.__init__Ã   si   € ð ÐÜ—z‘z "“~×)Ñ)Ó+×2Ñ2°7Ó;ˆHà ˆŒØ>ÀÇÁØóB
ñ 
ˆÔô ˜4×,Ñ,¨T°5Ó9Ó:ˆ�r   c              #   ó>  K  — |j                  «       D ]A  \  }}t        |t        t        f«      r|D ]  }t	        ||¬«      –— Œ Œ3t	        ||¬«      –— ŒC t        |t
        j                  «      r|j                  «       n|}|D ]  \  }}t        ||¬«      –— Œ y ­w)N)r    r!   )rb   r$   rT   r}   r   rD   ÚMappingrI   )r+   r;   rt   r    r!   ÚitemÚ
file_itemss          r   r~   zMultipartStream._iter_fieldsÒ   s–   è ø€ ð  Ÿ:™:›<ò 	8‰KˆD�%Ü˜%¤%¬ Ô/Ø!ò ;�DÜ#¨°TÔ:Ó:ñ;ô   T°Ô7Ó7ð	8ô '1°¼¿¹Ô&G�U—[‘[”]ÈUˆ
Ø%ò 	4‰KˆD�%Ü ¨UÔ3Ó3ñ	4ùs   ‚BBc              #   ó®   K  — | j                   D ]/  }d| j                  z  –— |j                  «       E d {  –—†  d–— Œ1 d| j                  z  –— y 7 Œ­w)Ns   --%s
s   
s   --%s--
)r   ru   r?   )r+   Úfields     r   Úiter_chunkszMultipartStream.iter_chunksà   sR   è ø€ Ø—[‘[ò 	ˆEØ §¡Ñ-Ò-Ø—|‘|“~×%Ð%Ø‹Mð	ð ˜dŸm™mÑ+Ó+ð &ús   ‚4A¶A·Ac                 ó¾   — t        | j                  «      }d}| j                  D ]+  }|j                  «       }|€ y|d|z   dz   z  }||z  }|dz  }Œ- |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   NrK   é   )r   ru   r   r<   )r+   Úboundary_lengthÚlengthr…   Úfield_lengths        r   Úget_content_lengthz"MultipartStream.get_content_lengthç   sƒ   € ô
 ˜dŸm™mÓ,ˆØˆà—[‘[ò 	ˆEØ ×+Ñ+Ó-ˆLØÐ#Ùà�a˜/Ñ)¨AÑ-Ñ-ˆFØ�lÑ"ˆFØ�a‰K‰Fð	ð 	�!�oÑ%¨Ñ)Ñ)ˆØˆr   c                 ód   — | j                  «       }| j                  }|€d|dœS t        |«      |dœS )NÚchunked)zTransfer-EncodingrS   )zContent-LengthrS   )rŒ   r   r%   )r+   Úcontent_lengthr   s      r   Úget_headerszMultipartStream.get_headersý   s<   € Ø×0Ñ0Ó2ˆØ×(Ñ(ˆØÐ!Ø)2ÀLÑQÐQÜ"% nÓ"5À|ÑTÐTr   c              #   ó>   K  — | j                  «       D ]  }|–— Œ y ­wr9   ©r†   rn   s     r   Ú__iter__zMultipartStream.__iter__  s#   è ø€ Ø×%Ñ%Ó'ò 	ˆEØ‹Kñ	ùs   ‚c                ó@   K  — | j                  «       D ]  }|­–— Œ	 y ­wr9   r’   rn   s     r   Ú	__aiter__zMultipartStream.__aiter__  s#   è ø€ Ø×%Ñ%Ó'ò 	ˆEØŒKñ	ùrR   r9   )r@   rA   rB   rC   r   r	   rD   rq   r(   r,   rF   rE   rI   r   r~   r†   r)   rŒ   ÚDictr%   r�   r“   ÚAsyncIteratorr•   rG   r   r   rs   rs   ¾   så   „ ñð ,0ñ	;àð;ð ð;ð —/‘/ %Ñ(ð	;ð
 
ó;ð4Øð4Ø(4ð4à	�‰˜Ÿ™ i°Ð&:Ñ;Ñ	<ó4ð,˜VŸ_™_¨UÑ3ó ,ð F§O¡O°CÑ$8ó ð,U˜VŸ[™[¨¨c¨Ñ2ó Uð˜&Ÿ/™/¨%Ñ0ó ð ×!5Ñ!5°eÑ!<ô r   rs   )rW   ry   rD   Úpathlibr   Ú_typesr   r   r   r   r	   r
   Ú_utilsr   r   r   r   r   rq   r(   r   r   rI   rs   rG   r   r   ú<module>r›      st   ðÛ 	Û 	Û Ý ÷÷ ÷õ ðØ—/‘/ %Ñ(ðà‡_�_�UÑó÷+!ñ +!÷\h&ñ h&ôVL�n oõ Lr   