+
    BV-j°  ã                  ó¸   € ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHt ^ RI	H
t
HtHt ^ RIHt ]'       d   ^ RIHt ^ RIHt R	t. ROt ! R
 R4      t ! R R]4      tR# )é    )ÚannotationsN)ÚIterable)ÚTYPE_CHECKINGÚBinaryIOÚNoReturn)ÚHashMismatchÚHashMissingÚInstallationError)Úread_chunks)ÚMapping)Ú_HashÚsha256c                  ó¸   € ] tR t^tRtRR R lltR R lt]R R l4       tR	 R
 lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltRtR# )ÚHasheszYA wrapper that builds multiple hashes at once and checks them against
known-good values

Nc               ó    € V ^8„  d   QhRRRR/# )é   Úhasheszdict[str, list[str]] | NoneÚreturnÚNone© )Úformats   "Úk/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.pyÚ__annotate__ÚHashes.__annotate__   s   € ÷ 
 ñ 
 Ð:ð 
 Àdñ 
 ó    c                ó®   € / pVeD   VP                  4        F/  w  r4\        V4       Uu. uF  qUP                  4       NK  	  upW#&   K1  	  W n        R# u upi )zW
:param hashes: A dict of algorithm names pointing to lists of allowed
    hex digests
N)ÚitemsÚsortedÚlowerÚ_allowed)Úselfr   ÚallowedÚalgÚkeysÚks   &&    r   Ú__init__ÚHashes.__init__   sL   € ð
 ˆØÒØ#Ÿ\™\ž^‘	�ä39¸$´<Ó@±<¨a§¡¦	±<Ñ@�“ñ ,ð  Žùò  As   ©Ac               ó    € V ^8„  d   QhRRRR/# )r   Úotherr   r   r   )r   s   "r   r   r   *   s   € ÷ ñ ˜Vð ¨ñ r   c                	óJ  € \        V\        4      '       g   \        # V'       g   V # V '       g   V# / pVP                  P	                  4        FD  w  r4W0P                  9  d   K  V Uu. uF  qUV P                  V,          9   g   K  VNK   	  upW#&   KF  	  \        V4      # u upi ©N)Ú
isinstancer   ÚNotImplementedr    r   )r!   r)   Únewr#   ÚvaluesÚvs   &&    r   Ú__and__ÚHashes.__and__*   sŒ   € Ü˜%¤×(Ò(Ü!Ð!÷ ØˆKßØˆLð ˆØ Ÿ>™>×/Ñ/Ö1‰KˆCØŸ-™-Ô'ÙÙ#)ÓE¡6˜a°$·-±-ÀÕ2DÑ-DŸ˜¡6ÑEˆC‹Hñ 2ô �c‹{Ðùò Fs   Á(B ÂB c               ó   € V ^8„  d   QhRR/# ©r   r   Úintr   )r   s   "r   r   r   >   s   € ÷ Gñ G˜cñ Gr   c                	óV   € \        R  V P                  P                  4        4       4      # )c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir+   )Úlen)Ú.0Údigestss   & r   Ú	<genexpr>Ú&Hashes.digest_count.<locals>.<genexpr>?   s   é € ÐFÑ/E G”3�w—<�<Ó/Eùs   ‚)Úsumr    r/   ©r!   s   &r   Údigest_countÚHashes.digest_count=   s    € äÑF¨t¯}©}×/CÑ/CÔ/EÓFÓFÐFr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	hash_nameÚstrÚ
hex_digestr   Úboolr   )r   s   "r   r   r   A   s!   € ÷ >ñ >¨ð >¸#ð >À$ñ >r   c                ó>   € W P                   P                  V. 4      9   # )z/Return whether the given hex digest is allowed.)r    Úget)r!   rB   rD   s   &&&r   Úis_hash_allowedÚHashes.is_hash_allowedA   s   € àŸ]™]×.Ñ.¨y¸"Ó=Ñ=Ð=r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚchunkszIterable[bytes]r   r   r   )r   s   "r   r   r   E   s   € ÷ ñ ¨?ð ¸tñ r   c                óÌ  € / pV P                   P                  4        F  p \        P                  ! V4      W#&   K  	  V F+  pVP                  4        F  pVP                  V4       K  	  K-  	  VP                  4        F.  w  r6VP                  4       V P                   V,          9   g   K-   R# 	  V P                  V4       R#   \        \
        3 d    \        RT 24      hi ; i)zjCheck good hashes against ones built from iterable of chunks of
data.

Raise HashMismatch if none match.

zUnknown hash name: N)r    r$   Úhashlibr.   Ú
ValueErrorÚ	TypeErrorr
   r/   Úupdater   Ú	hexdigestÚ_raise)r!   rK   ÚgotsrB   ÚchunkÚhashÚgots   &&     r   Úcheck_against_chunksÚHashes.check_against_chunksE   sÅ   € ð ˆØŸ™×+Ñ+Ö-ˆIðKÜ")§+¢+¨iÓ"8�“ñ .ó ˆEØŸ™ž�Ø—‘˜EÖ"ó &ñ ð #Ÿj™jžl‰NˆIØ�}‰}‹ $§-¡-°	Õ":Ö:Úñ +ð 	�‰�DÖøô ¤	Ð*ô KÜ'Ð*=¸i¸[Ð(IÓJÐJðKús   ¡CÃ C#c               ó    € V ^8„  d   QhRRRR/# ©r   rS   zdict[str, _Hash]r   r   r   )r   s   "r   r   r   \   s   € ÷ 0ñ 0Ð+ð 0°ñ 0r   c                	ó.   € \        V P                  V4      hr+   )r   r    ©r!   rS   s   &&r   rR   ÚHashes._raise\   s   € Ü˜4Ÿ=™=¨$Ó/Ð/r   c               ó    € V ^8„  d   QhRRRR/# )r   Úfiler   r   r   r   )r   s   "r   r   r   _   s   € ÷ <ñ < xð <°Dñ <r   c                ó6   € V P                  \        V4      4      # )zQCheck good hashes against a file-like object

Raise HashMismatch if none match.

)rW   r   )r!   r_   s   &&r   Úcheck_against_fileÚHashes.check_against_file_   s   € ð ×(Ñ(¬°TÓ):Ó;Ð;r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚpathrC   r   r   r   )r   s   "r   r   r   g   s   € ÷ 1ñ 1 sð 1¨tñ 1r   c                	óŠ   € \        VR 4      ;_uu_ 4       pV P                  V4      uuRRR4       #   + '       g   i     R# ; i)ÚrbN)Úopenra   )r!   rd   r_   s   && r   Úcheck_against_pathÚHashes.check_against_pathg   s.   € Ü�$˜×Ô Ø×*Ñ*¨4Ó0÷ ××Óús	   •1±A	c               ó    € V ^8„  d   QhRRRR/# )r   r   zMapping[str, str]r   rE   r   )r   s   "r   r   r   k   s   € ÷ ñ Ð!2ð °tñ r   c                ól   € VP                  4        F  w  r#V P                  W#4      '       g   K   R# 	  R# )z3Return whether any of the given hashes are allowed.TF)r   rH   )r!   r   rB   rD   s   &&  r   Ú
has_one_ofÚHashes.has_one_ofk   s.   € à%+§\¡\¦^Ñ!ˆIØ×#Ñ# I×:Ô:Úñ &4ñ r   c               ó   € V ^8„  d   QhRR/# )r   r   rE   r   )r   s   "r   r   r   r   s   € ÷ #ñ #˜$ñ #r   c                ó,   € \        V P                  4      # )z,Return whether I know any known-good hashes.)rE   r    r>   s   &r   Ú__bool__ÚHashes.__bool__r   s   € ä�D—M‘MÓ"Ð"r   c               ó    € V ^8„  d   QhRRRR/# )r   r)   Úobjectr   rE   r   )r   s   "r   r   r   v   s   € ÷ /ñ /˜Fð / tñ /r   c                	ól   € \        V\        4      '       g   \        # V P                  VP                  8H  # r+   )r,   r   r-   r    )r!   r)   s   &&r   Ú__eq__ÚHashes.__eq__v   s(   € Ü˜%¤×(Ò(Ü!Ð!Ø�}‰} §¡Ñ.Ð.r   c               ó   € V ^8„  d   QhRR/# r4   r   )r   s   "r   r   r   {   s   € ÷ 	
ñ 	
˜#ñ 	
r   c           	     	ó†   € \        R P                  \        R V P                  P	                  4        4       4      4      4      # )Ú,c              3  ó\   "  € T F"  w  rV F  pR P                  W34      x € K  	  K$  	  R# 5i)Ú:N)Újoin)r9   r#   Údigest_listÚdigests   &   r   r;   Ú"Hashes.__hash__.<locals>.<genexpr>~   s5   é € ð á,AÑ(˜Û"-˜ð —H‘H˜c˜]×+Ð+á"-ñ ,Û,Aùs   ‚*,)rU   r|   r   r    r   r>   s   &r   Ú__hash__ÚHashes.__hash__{   s=   € ÜØ�H‰HÜñ à,0¯M©M×,?Ñ,?Ô,Aóó óó
ð 	
r   )r    r+   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   r1   Úpropertyr?   rH   rW   rR   ra   rh   rl   rp   ru   r€   Ú__static_attributes__r   r   r   r   r      sY   † ñ÷

 õð& ôGó ðGõ>õõ.0õ<õ1õõ#õ/÷
	
ñ 	
r   r   c                  ó>   a € ] tR t^‡tRtR V 3R lltR R ltRtV ;t# )ÚMissingHashesz´A workalike for Hashes used when we're missing a hash for a requirement

It computes the actual hash of the requirement and raises a HashMissing
exception showing it to the user.

c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   ÚMissingHashes.__annotate__�   s   € ÷ 5ñ 5˜$ñ 5r   c                ó4   <€ \         SV `  \        . /R7       R# )z!Don't offer the ``hashes`` kwarg.)r   N)Úsuperr&   ÚFAVORITE_HASH)r!   Ú	__class__s   &€r   r&   ÚMissingHashes.__init__�   s   ø€ ô 	‰Ñ¤°Ð 3ÐÖ4r   c               ó    € V ^8„  d   QhRRRR/# rZ   r   )r   s   "r   r   rŒ   •   s   € ÷ ;ñ ;Ð+ð ;°ñ ;r   c                	óJ   € \        V\        ,          P                  4       4      hr+   )r	   r�   rQ   r\   s   &&r   rR   ÚMissingHashes._raise•   s   € Ü˜$œ}Õ-×7Ñ7Ó9Ó:Ð:r   r   )	r‚   rƒ   r„   r…   r†   r&   rR   rˆ   Ú__classcell__)r�   s   @r   rŠ   rŠ   ‡   s   ø† ñ÷5ð 5÷;ó ;r   rŠ   )r   Úsha384Úsha512)Ú
__future__r   rM   Úcollections.abcr   Útypingr   r   r   Úpip._internal.exceptionsr   r	   r
   Úpip._internal.utils.miscr   r   r   r�   ÚSTRONG_HASHESr   rŠ   r   r   r   Ú<module>rž      sM   ðÝ "ã Ý $ß 4Ñ 4ç QÑ QÝ 0çÝ'Ýð €ò
 /€÷l
ñ l
ô^;�Fö ;r   