U n a@sddlmZddlZddlmZmZmZddlmZm Z m Z ddl m Z ddl mZerddlmZmZmZmZmZddlmZerdd lmZn dd lmZd Zd d d gZGdddeZGdddeZdS))absolute_importN) iteritemsiterkeys itervalues) HashMismatch HashMissingInstallationError) read_chunks)MYPY_CHECK_RUNNING)DictListBinaryIONoReturnIterator)PY3)_Hash)_hashsha256sha384sha512c@s^eZdZdZdddZeddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS)HasheszaA wrapper that builds multiple hashes at once and checks them against known-good values NcCs|dkr in||_dS)zo :param hashes: A dict of algorithm names pointing to lists of allowed hex digests N)_allowed)selfhashesr[C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_internal\utils\hashes.py__init__)szHashes.__init__cCstdd|jDS)Ncss|]}t|VqdSN)len).0digestsrrr 4sz&Hashes.digest_count..)sumrvaluesrrrr digest_count1szHashes.digest_countcCs||j|gkS)z/Return whether the given hex digest is allowed.)rget)r hash_name hex_digestrrris_hash_allowed6szHashes.is_hash_allowedc Csi}t|jD]>}zt|||<Wqttfk rJtd|YqXq|D]}t|D]}| |q^qRt |D] \}}| |j|krxdSqx| |dS)zCheck good hashes against ones built from iterable of chunks of data. Raise HashMismatch if none match. zUnknown hash name: {}N) rrhashlibnew ValueError TypeErrorrformatrupdater hexdigest_raise)rchunksgotsr'chunkhashgotrrrcheck_against_chunks?s  zHashes.check_against_chunkscCst|j|dSr)rrrr3rrrr1Ysz Hashes._raisecCs|t|S)zaCheck good hashes against a file-like object Raise HashMismatch if none match. )r7r )rfilerrrcheck_against_file]szHashes.check_against_filec Cs,t|d}||W5QRSQRXdS)Nrb)openr:)rpathr9rrrcheck_against_pathfs zHashes.check_against_pathcCs t|jS)z,Return whether I know any known-good hashes.)boolrr$rrr __nonzero__kszHashes.__nonzero__cCs|Sr)r@r$rrr__bool__pszHashes.__bool__)N)__name__ __module__ __qualname____doc__rpropertyr%r)r7r1r:r>r@rArrrrr$s    rcs(eZdZdZfddZddZZS) 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. cstt|jtgiddS)z!Don't offer the ``hashes`` kwarg.)rN)superrGr FAVORITE_HASHr$ __class__rrr|szMissingHashes.__init__cCst|tdSr)rrIr0r8rrrr1szMissingHashes._raise)rBrCrDrErr1 __classcell__rrrJrrGus rG) __future__rr*Zpip._vendor.sixrrrpip._internal.exceptionsrrrpip._internal.utils.miscr pip._internal.utils.typingr typingr r r rrrrrrI STRONG_HASHESobjectrrGrrrrs      Q