>//1 FKC$--'#)EaQ$--2D-DECH Fc{Fs B+BcVtd|jjDS)Nc32K|]}t|ywr )len).0digestss r z&Hashes.digest_count..?sFG3w<Fs)sumrr%rs r digest_countzHashes.digest_count=s Ft}}/C/C/EFFFc>||jj|gvS)z/Return whether the given hex digest is allowed.)rget)r hash_name hex_digests ris_hash_allowedzHashes.is_hash_allowedAsT]]..y"===r1ci}|jjD]} tj|||<|D](}|jD]}|j|*|jD]&\}}|j|j|vs&y|j|y#tt f$rt d|wxYw)zCheck good hashes against ones built from iterable of chunks of data. Raise HashMismatch if none match. zUnknown hash name: N) rrhashlibr$ ValueError TypeErrorr r%updater hexdigest_raise)rchunksgotsr4chunkhashgots rcheck_against_chunkszHashes.check_against_chunksEs++- KI K")++i"8Y K  #E  # E" # ##jjl NIs}}$-- "::  D * K'*=i[(IJJ Ks B33Cc.t|j|r )rrrr?s rr=z Hashes._raise\s4==$//r1c6|jt|S)zaCheck good hashes against a file-like object Raise HashMismatch if none match. )rCr )rfiles rcheck_against_filezHashes.check_against_file_s ((T):;;r1cht|d5}|j|cdddS#1swYyxYw)Nrb)openrH)rpathrGs rcheck_against_pathzHashes.check_against_pathgs1 $  1**40 1 1 1s(1c\|jD]\}}|j||syy)z3Return whether any of the given hashes are allowed.TF)rr6)rrr4r5s r has_one_ofzHashes.has_one_ofks4%+\\^  !Iz##Iz: r1c,t|jS)z,Return whether I know any known-good hashes.)boolrr/s r__bool__zHashes.__bool__rsDMM""r1c`t|tstS|j|jk(Sr )r!rr"r)rr#s r__eq__z Hashes.__eq__vs%%(! !}}..r1c tdjtd|jj DS)N,c3VK|]!\}}|D]}dj||f#yw):N)join)r+r digest_listdigests rr-z"Hashes.__hash__..~s>(["-HHc6]++s'))rArYrrrr/s r__hash__zHashes.__hash__{s= HH,0MM,?,?,A   r1r )rzdict[str, list[str]] | NonereturnNone)r#rr]r)r]int)r4strr5r`r]rQ)r>zIterable[bytes]r]r^r?zdict[str, _Hash]r]r)rGrr]r^)rLr`r]r^)rzdict[str, str]r]rQ)r]rQ)r#objectr]rQ)__name__ __module__ __qualname____doc__rr'propertyr0r6rCr=rHrMrOrRrTr\r1rrrsT  &GG>.0<1#/  r1rc,eZdZdZdfd ZddZxZS) MissingHasheszA 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. c2t|tgiy)z!Don't offer the ``hashes`` kwarg.)rN)superr FAVORITE_HASH)r __class__s rrzMissingHashes.__init__s  34r1cBt|tjr )r rmr<rEs rr=zMissingHashes._raises$}-779::r1)r]r^ra)rcrdrerfrr= __classcell__)rns@rrjrjs5 ;r1rj) __future__rr8collections.abcrtypingrrrpip._internal.exceptionsrr r pip._internal.utils.miscr r rm STRONG_HASHESrrjrhr1rrwsJ"$44QQ0  / l l ^;F;r1