§ ]<ˆjlãó¤—ddlZddlmZmZmZmZmZmZmZddl m Z m Z m Z ddl mZerddlmZdZgd¢ZGd„d ¦«ZGd „d e¦«ZdS) éN)Ú TYPE_CHECKINGÚBinaryIOÚDictÚIterableÚListÚNoReturnÚOptional)Ú HashMismatchÚ HashMissingÚInstallationError)Ú read_chunks)Ú_HashÚsha256)rÚsha384Úsha512có(—eZdZdZddeeeeefddfd„Zdd„Z e de fd„¦«Z d ed ede fd „Zd eeddfd „Zdeedfddfd„Zdeddfd„Zdeddfd„Zdeeefde fd„Zde fd„Zdede fd„Zde fd„ZdS)ÚHasheszaA wrapper that builds multiple hashes at once and checks them against known-good values NÚhashesÚreturncóˆ—i}|�6| ¦«D]!\}}d„t|¦«D¦«||<Œ"||_dS)zo :param hashes: A dict of algorithm names pointing to lists of allowed hex digests Ncó6—g|]}| ¦«‘ŒS©)Úlower)Ú.0Úks úl/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/pip/_internal/utils/hashes.pyú z#Hashes.__init__..$s €Ð@Ð@Ð@¨a §¢¡ ¤ Ð@Ð@Ð@ó)ÚitemsÚsortedÚ_allowed)ÚselfrÚallowedÚalgÚkeyss rÚ__init__zHashes.__init__sV€ð ˆØ Ð Ø#Ÿ\š\™^œ^ð Að A‘ ��Tà@Ð@µ6¸$±<´<Ð@Ñ@Ô@�˜‘ � ؈Œ ˆ ˆ rÚotherc󿇇—t|t¦«stS|s‰S‰s|Si}|j ¦«D]!\Š}‰‰jvrŒˆˆfd„|D¦«|‰<Œ"t|¦«S)Ncó2•—g|]}|‰j‰v¯|‘ŒSr)r!)rÚvr$r"s €€rrz"Hashes.__and__..7s*ø€ÐEÐEÐE˜a¨Q°$´-ÀÔ2DÐ-DÐ-D˜Ð-DÐ-DÐ-Dr)Ú isinstancerÚNotImplementedr!r)r"r'ÚnewÚvaluesr$s` @rÚ__and__zHashes.__and__'s øø€Ý˜%¥Ñ(Ô(ð "Ý!Ð !ðð ØˆKØð ؈LðˆØ œ>×/Ò/Ñ1Ô1ð Fð F‰KˆC�ؘ$œ-Ð'Ð'ØØEÐEÐEÐEÐE 6ÐEÑEÔEˆC�‰HˆHÝ�c‰{Œ{Ðrcób—td„|j ¦«D¦«¦«S)Nc3ó4K—|]}t|¦«V—ŒdS©N)Úlen)rÚdigestss rú z&Hashes.digest_count..<s(èè€ÐFÐF G•3�w‘<”<ÐFÐFÐFÐFÐFÐFr)Úsumr!r.©r"s rÚ digest_countzHashes.digest_count:s-€åÐFÐF¨t¬}×/CÒ/CÑ/EÔ/EÐFÑFÔFÑFÔFÐFrÚ hash_nameÚ hex_digestcó<—||j |g¦«vS)z/Return whether the given hex digest is allowed.)r!Úget)r"r9r:s rÚis_hash_allowedzHashes.is_hash_allowed>s€à˜Tœ]×.Ò.¨y¸"Ñ=Ô=Ð=Ð=rÚchunkscóÈ—i}|j ¦«D]A} tj|¦«||<Œ#tt f$rt d|›�¦«‚wxYw|D].}| ¦«D]}| |¦«ŒŒ/|  ¦«D])\}}|  ¦«|j|vrdSŒ*|  |¦«dS)z‚Check good hashes against ones built from iterable of chunks of data. Raise HashMismatch if none match. zUnknown hash name: N) r!r%Úhashlibr-Ú ValueErrorÚ TypeErrorr r.ÚupdaterÚ hexdigestÚ_raise)r"r>Úgotsr9ÚchunkÚhashÚgots rÚcheck_against_chunkszHashes.check_against_chunksBs€ðˆØœ×+Ò+Ñ-Ô-ð Kð KˆIð KÝ")¤+¨iÑ"8Ô"8��Y‘�øÝ¥ Ð*ð Kð Kð KÝ'Ð(I¸iÐ(IÐ(IÑJÔJÐJð Køøøðð #ð #ˆEØŸ š ™ œ ð #ð #�Ø— ’ ˜EÑ"Ô"Ð"Ð"ð #ð#Ÿjšj™lœlð ð ‰NˆI�sØ�}Š}‰Œ $¤-° Ô":Ð:Ð:Ø��ð;à � Š �DÑÔÐÐÐs Ÿ7·$ArFrrcó,—t|j|¦«‚r2)r r!©r"rFs rrEz Hashes._raiseYs€Ý˜4œ=¨$Ñ/Ô/Ð/rÚfilecóF—| t|¦«¦«S)zaCheck good hashes against a file-like object Raise HashMismatch if none match. )rJr )r"rMs rÚcheck_against_filezHashes.check_against_file\s €ð ×(Ò(­°TÑ):Ô):Ñ;Ô;Ð;rÚpathcó€—t|d¦«5}| |¦«cddd¦«S#1swxYwYdS)NÚrb)ÚopenrO)r"rPrMs rÚcheck_against_pathzHashes.check_against_pathds„€Ý �$˜Ñ Ô ð 1 Ø×*Ò*¨4Ñ0Ô0ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s ‘3³7º7cól—| ¦«D]\}}| ||¦«rdSŒdS)z3Return whether any of the given hashes are allowed.TF)rr=)r"rr9r:s rÚ has_one_ofzHashes.has_one_ofhsG€à%+§\¢\¡^¤^ð ð Ñ !ˆI�zØ×#Ò# I¨zÑ:Ô:ð Ø�t�tð àˆurcó*—t|j¦«S)z,Return whether I know any known-good hashes.)Úboolr!r7s rÚ__bool__zHashes.__bool__os€å�D”MÑ"Ô"Ð"rcóZ—t|t¦«stS|j|jkSr2)r+rr,r!)r"r's rÚ__eq__z Hashes.__eq__ss)€Ý˜%¥Ñ(Ô(ð "Ý!Ð !ØŒ} ¤Ò.Ð.rc ó¢—td td„|j ¦«D¦«¦«¦«¦«S)Nú,c3óTK—|]#\}}|D]}d ||f¦«V—ŒŒ$dS)ú:N)Újoin)rr$Ú digest_listÚdigests rr5z"Hashes.__hash__..{saèè€ððá(˜˜[Ø"-ðððð—H’H˜c 6˜]Ñ+Ô+ðððððððr)rHr`r r!rr7s rÚ__hash__zHashes.__hash__xs\€ÝØ �HŠHÝððà,0¬M×,?Ò,?Ñ,AÔ,Aðñôñôñ ô ñ ô ð rr2)r'rrr)Ú__name__Ú __module__Ú __qualname__Ú__doc__r rÚstrrr&r/ÚpropertyÚintr8rXr=rÚbytesrJrErrOrTrVrYÚobjectr[rcrrrrrs×€€€€€ððð  ð  ˜x¨¨S°$°s´)¨^Ô(<Ô=ð  Èð  ð  ð  ð  ððððð&ðG˜cðGðGðGñ„XðGð>¨ð>¸#ð>À$ð>ð>ð>ð>ð¨8°E¬?ð¸tððððð.0˜4  W  Ô-ð0°*ð0ð0ð0ð0ð< xð<°Dð<ð<ð<ð<ð1 sð1¨tð1ð1ð1ð1ð  c¨3 h¤ð°Dððððð#˜$ð#ð#ð#ð#ð/˜Fð/ tð/ð/ð/ð/ð  ˜#ð  ð  ð  ð  ð  ð  rrcóD‡—eZdZdZd ˆfd„ Zdeedfddfd„ZˆxZS) Ú 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. rNcóZ•—t¦« tgi¬¦«dS)z!Don't offer the ``hashes`` kwarg.)rN)Úsuperr&Ú FAVORITE_HASH)r"Ú __class__s €rr&zMissingHashes.__init__Œs+ø€õ ‰Œ×Ò¥°Ð 3ÐÑ4Ô4Ð4Ð4Ð4rrFrrcóZ—t|t ¦«¦«‚r2)r rqrDrLs rrEzMissingHashes._raise’s!€Ý˜$�}Ô-×7Ò7Ñ9Ô9Ñ:Ô:Ð:r)rN) rdrerfrgr&rrhrEÚ __classcell__)rrs@rrnrn„srø€€€€€ððð5ð5ð5ð5ð5ð5ð ;˜4  W  Ô-ð;°*ð;ð;ð;ð;ð;ð;ð;ð;rrn)r@Útypingrrrrrrr Úpip._internal.exceptionsr r r Úpip._internal.utils.miscr rrqÚ STRONG_HASHESrrnrrrúrysðØ€€€ØTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTàQÐQÐQÐQÐQÐQÐQÐQÐQÐQØ0Ð0Ð0Ð0Ð0Ð0àðØÐÐÐÐÐð € ð /Ð.Ð.€ ðl ðl ðl ðl ðl ñl ôl ðl ð^;ð;ð;ð;ð;�Fñ;ô;ð;ð;ð;r