+
    ®¾jl  ã                   ó¤   € ^ RI t ^ RIHtHtHtHtHtHtHt ^ RI	H
t
HtHt ^ RIHt ]'       d   ^ RI Ht Rt. ROt ! R R4      t ! R	 R
]4      tR# )é    N)ÚTYPE_CHECKINGÚBinaryIOÚDictÚIterableÚListÚNoReturnÚOptional)ÚHashMismatchÚHashMissingÚInstallationError)Úread_chunks)Ú_HashÚsha256c                   ó
  a € ] tR t^t o RtRV 3R lR lltV 3R lR lt]V 3R lR l4       tV 3R	 lR
 lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )ÚHasheszYA wrapper that builds multiple hashes at once and checks them against
known-good values

Nc                óZ   <€ V ^8„  d   QhRS[ S[S[S[S[,          3,          ,          RR/# )é   ÚhashesÚreturnN)r	   r   Ústrr   )ÚformatÚ__classdict__s   "€ÚY/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.pyÚ__annotate__ÚHashes.__annotate__   s-   ø€ ÷ 
 ñ 
 ™x©©S±$±sµ)¨^Õ(<Õ=ð 
 Èñ 
 ó    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   ø€ ÷ ñ ˜Xð ¨(ñ 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S[ /# ©r   r   ©Úint)r   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!   r1   ©r"   s   &r   Údigest_countÚHashes.digest_count:   s    € äÑF¨t¯}©}×/CÑ/CÔ/EÓFÓFÐFr   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r   Ú	hash_nameÚ
hex_digestr   )r   Úbool)r   r   s   "€r   r   r   >   s"   ø€ ÷ >ñ >©ð >¹#ð >Á$ñ >r   c                ó>   € W P                   P                  V. 4      9   # )z/Return whether the given hex digest is allowed.)r!   Úget)r"   rE   rF   s   &&&r   Úis_hash_allowedÚHashes.is_hash_allowed>   s   € àŸ]™]×.Ñ.¨y¸"Ó=Ñ=Ð=r   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r   Úchunksr   N)r   Úbytes)r   r   s   "€r   r   r   B   s   ø€ ÷ ñ ©8±E­?ð ¸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%   Úhashlibr0   Ú
ValueErrorÚ	TypeErrorr   r1   Úupdater   Ú	hexdigestÚ_raise)r"   rM   ÚgotsrE   ÚchunkÚhashÚgots   &&     r   Úcheck_against_chunksÚHashes.check_against_chunksB   sÅ   € ð ˆØŸ™×+Ñ+Ö-ˆIðKÜ")§+¢+¨iÓ"8�“ñ .ó ˆEØŸ™ž�Ø—‘˜EÖ"ó &ñ ð #Ÿj™jžl‰NˆIØ�}‰}‹ $§-¡-°	Õ":Ö:Úñ +ð 	�‰�DÖøô ¤	Ð*ô KÜ'Ð*=¸i¸[Ð(IÓJÐJðKús   ¡CÃ C#c                ó8   <€ V ^8„  d   QhRS[ S[R3,          RR/# ©r   rV   r   r   r   ©r   r   )r   r   s   "€r   r   r   Y   s$   ø€ ÷ 0ñ 0™4¡ W Õ-ð 0°*ñ 0r   c                ó.   € \        V P                  V4      hr-   )r
   r!   ©r"   rV   s   &&r   rU   ÚHashes._raiseY   s   € Ü˜4Ÿ=™=¨$Ó/Ð/r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úfiler   N)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.

)rZ   r   )r"   rc   s   &&r   Úcheck_against_fileÚHashes.check_against_file\   s   € ð ×(Ñ(¬°TÓ):Ó;Ð;r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úpathr   N)r   )r   r   s   "€r   r   r   d   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)Úopenre   )r"   rh   rc   s   && r   Úcheck_against_pathÚHashes.check_against_pathd   s.   € Ü�$˜×Ô Ø×*Ñ*¨4Ó0÷ ××Óús	   •1±A	c                ó<   <€ V ^8„  d   QhRS[ S[S[3,          RS[/# )r   r   r   )r   r   rG   )r   r   s   "€r   r   r   h   s#   ø€ ÷ ñ ¡¡c©3 h¥ð ±Dñ 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   rJ   )r"   r   rE   rF   s   &&  r   Ú
has_one_ofÚHashes.has_one_ofh   s.   € à%+§\¡\¦^Ñ!ˆIØ×#Ñ# I×:Ô:Úñ &4ñ r   c                ó    <€ V ^8„  d   QhRS[ /# r6   )rG   )r   r   s   "€r   r   r   o   s   ø€ ÷ #ñ #™$ñ #r   c                ó,   € \        V P                  4      # )z,Return whether I know any known-good hashes.)rG   r!   rA   s   &r   Ú__bool__ÚHashes.__bool__o   s   € ä�D—M‘MÓ"Ð"r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r*   r   )ÚobjectrG   )r   r   s   "€r   r   r   s   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__s   s(   € Ü˜%¤×(Ò(Ü!Ð!Ø�}‰} §¡Ñ.Ð.r   c                ó    <€ V ^8„  d   QhRS[ /# r6   r7   )r   r   s   "€r   r   r   x   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)r<   r$   Údigest_listÚdigests   &   r   r>   Ú"Hashes.__hash__.<locals>.<genexpr>{   s5   é € ð á,AÑ(˜Û"-˜ð —H‘H˜c˜]×+Ð+á"-ñ ,Û,Aùs   ‚*,)rX   r€   r   r!   r   rA   s   &r   Ú__hash__ÚHashes.__hash__x   s=   € ÜØ�H‰HÜñ à,0¯M©M×,?Ñ,?Ô,Aóó óó
ð 	
r   )r!   r-   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r'   r3   ÚpropertyrB   rJ   rZ   rU   re   rl   rp   rt   ry   r„   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      sŽ   ø‡ € ñ÷

 ò 
 ÷ð ð& ÷Gó ðG÷>ð >÷ð ÷.0ð 0÷<ð <÷1ð 1÷ð ÷#ð #÷/ð /÷
	
ö 	
r   r   c                   óT   a a€ ] tR t^„t oRtV3R lV 3R lltV3R lR ltRtV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   Nr+   )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                ó8   <€ V ^8„  d   QhRS[ S[R3,          RR/# r]   r^   )r   r   s   "€r   r   r‘   ’   s$   ø€ ÷ ;ñ ;™4¡ W Õ-ð ;°*ñ ;r   c                óJ   € \        V\        ,          P                  4       4      hr-   )r   r”   rT   r`   s   &&r   rU   ÚMissingHashes._raise’   s   € Ü˜$œ}Õ-×7Ñ7Ó9Ó:Ð:r   r+   )
r†   r‡   rˆ   r‰   rŠ   r'   rU   rŒ   r�   Ú__classcell__)r•   r   s   @@r   r�   r�   „   s#   ù‡ € ñ÷5ó 5÷;÷ ;ð ;r   r�   )r   Úsha384Úsha512)rP   Útypingr   r   r   r   r   r   r	   Úpip._internal.exceptionsr
   r   r   Úpip._internal.utils.miscr   r   r”   ÚSTRONG_HASHESr   r�   r+   r   r   Ú<module>r¡      sG   ðÛ ß T× TÑ Tç QÑ QÝ 0çÝð
 €ò
 /€÷l
ñ l
ô^;�Fö ;r   