HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3.9/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc
a

g��e/�@s�ddlZddlmZmZmZmZmZddlmZm	Z	m
Z
ddlmZer`ddlm
Z
ddlmZdZgd�ZGd	d
�d
�ZGdd�de�ZdS)
�N)�
TYPE_CHECKING�BinaryIO�Dict�Iterator�List)�HashMismatch�HashMissing�InstallationError)�read_chunks)�_Hash)�NoReturn�sha256)r
Zsha384Zsha512c@sveZdZdZddd�Zdd�Zedd��Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�HasheszaA wrapper that builds multiple hashes at once and checks them against
    known-good values

    NcCs4i}|dur*|��D]\}}t|�||<q||_dS)zo
        :param hashes: A dict of algorithm names pointing to lists of allowed
            hex digests
        N)�items�sorted�_allowed)�self�hashes�allowed�alg�keys�r�>/usr/lib/python3.9/site-packages/pip/_internal/utils/hashes.py�__init__s
zHashes.__init__csbt|t�stS|s�S�s|Si}|j��D],\�}��jvr@q,��fdd�|D�|�<q,t|�S)Ncsg|]}|�j�vr|�qSr)r)�.0�v�rrrr�
<listcomp>=�z"Hashes.__and__.<locals>.<listcomp>)�
isinstancer�NotImplementedrr)r�other�new�valuesrrr�__and__,s

zHashes.__and__cCstdd�|j��D��S)Ncss|]}t|�VqdS�N)�len)rZdigestsrrr�	<genexpr>Crz&Hashes.digest_count.<locals>.<genexpr>)�sumrr#�rrrr�digest_count@szHashes.digest_countcCs||j�|g�vS)z/Return whether the given hex digest is allowed.)r�get)r�	hash_nameZ
hex_digestrrr�is_hash_allowedEszHashes.is_hash_allowedc
Cs�i}|j��D]<}zt�|�||<WqttfyHtd|����Yq0q|D]}|��D]}|�|�q\qP|�	�D] \}}|�
�|j|vrvdSqv|�|�dS)z�Check good hashes against ones built from iterable of chunks of
        data.

        Raise HashMismatch if none match.

        zUnknown hash name: N)rr�hashlibr"�
ValueError�	TypeErrorr	r#�updater�	hexdigest�_raise)r�chunks�gotsr,�chunk�hashZgotrrr�check_against_chunksNszHashes.check_against_chunkscCst|j|��dSr%)rr�rr5rrrr3fsz
Hashes._raisecCs|�t|��S)zaCheck good hashes against a file-like object

        Raise HashMismatch if none match.

        )r8r
)r�filerrr�check_against_filejszHashes.check_against_filecCs8t|d��}|�|�Wd�S1s*0YdS)N�rb)�openr;)r�pathr:rrr�check_against_pathsszHashes.check_against_pathcCs
t|j�S)z,Return whether I know any known-good hashes.)�boolrr)rrr�__nonzero__xszHashes.__nonzero__cCs|��Sr%)rAr)rrr�__bool__}szHashes.__bool__cCst|t�stS|j|jkSr%)rrr r)rr!rrr�__eq__�s
z
Hashes.__eq__cCs"td�tdd�|j��D����S)N�,css*|]"\}}|D]}d�||f�VqqdS)�:N)�join)rrZdigest_list�digestrrrr'�s�z"Hashes.__hash__.<locals>.<genexpr>)r7rFrrrr)rrr�__hash__�s���zHashes.__hash__)N)�__name__�
__module__�__qualname__�__doc__rr$�propertyr*r-r8r3r;r?rArBrCrHrrrrrs


		rcs(eZdZdZ�fdd�Zdd�Z�ZS)�
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.

    cst�jtgid�dS)z!Don't offer the ``hashes`` kwarg.)rN)�superr�
FAVORITE_HASHr)��	__class__rrr�szMissingHashes.__init__cCst|t����dSr%)rrPr2r9rrrr3�szMissingHashes._raise)rIrJrKrLrr3�
__classcell__rrrQrrN�srN)r.�typingrrrrrZpip._internal.exceptionsrrr	Zpip._internal.utils.miscr
rrrPZ
STRONG_HASHESrrNrrrr�<module>s{