<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

ReF                 @   s   d  d l  m Z d  d l Z d  d l m Z m Z m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d  d l m Z e r d  d l m Z m Z m Z m Z m Z d  d l m Z e r d  d	 l m Z n d  d
 l m Z d Z d d d g Z Gd d   d e  Z Gd d   d e  Z d S)    )absolute_importN)	iteritemsiterkeys
itervalues)HashMismatchHashMissingInstallationError)read_chunks)MYPY_CHECK_RUNNING)DictListBinaryIONoReturnIterator)PY3)_Hash)_hashsha256sha384sha512c               @   s   e  Z d  Z d Z d d d  Z d d   Z e d d    Z d	 d
   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d S)HasheszaA wrapper that builds multiple hashes at once and checks them against
    known-good values

    Nc             C   s   | d k r i  n | |  _  d S)zo
        :param hashes: A dict of algorithm names pointing to lists of allowed
            hex digests
        N)_allowed)selfhashes r   /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/utils/hashes.py__init__)   s    zHashes.__init__c                s   t  | t  s t S| s  S s' | Si  } xO t | j  D]> \   }    j k r[ q=    f d d   | D |   <q= Wt |  S)Nc                s)   g  |  ] } |  j    k r |  q Sr   )r   ).0v)algr   r   r   
<listcomp>B   s   	 z"Hashes.__and__.<locals>.<listcomp>)
isinstancer   NotImplementedr   r   )r   othernewvaluesr   )r   r   r   __and__1   s    $zHashes.__and__c             C   s    t  d d   |  j j   D  S)Nc             s   s   |  ] } t  |  Vq d  S)N)len)r   digestsr   r   r   	<genexpr>H   s    z&Hashes.digest_count.<locals>.<genexpr>)sumr   r%   )r   r   r   r   digest_countE   s    zHashes.digest_countc             C   s   | |  j  j | g   k S)z/Return whether the given hex digest is allowed.)r   get)r   	hash_name
hex_digestr   r   r   is_hash_allowedJ   s    zHashes.is_hash_allowedc             C   s   i  } x^ t  |  j  D]M } y t j |  | | <Wq t t f k
 rb t d j |    Yq Xq Wx2 | D]* } x! t |  D] } | j	 |  q Wqn Wx7 t
 |  D]) \ } } | j   |  j | k r d Sq W|  j |  d S)zCheck good hashes against ones built from iterable of chunks of
        data.

        Raise HashMismatch if none match.

        zUnknown hash name: {}N)r   r   hashlibr$   
ValueError	TypeErrorr   formatr   updater   	hexdigest_raise)r   chunksgotsr-   chunkhashgotr   r   r   check_against_chunksS   s    zHashes.check_against_chunksc             C   s   t  |  j |   d  S)N)r   r   )r   r8   r   r   r   r6   m   s    zHashes._raisec             C   s   |  j  t |   S)zaCheck good hashes against a file-like object

        Raise HashMismatch if none match.

        )r<   r	   )r   filer   r   r   check_against_fileq   s    zHashes.check_against_filec          	   C   s*   t  | d   } |  j |  SWd  QRXd  S)Nrb)openr>   )r   pathr=   r   r   r   check_against_pathz   s    zHashes.check_against_pathc             C   s   t  |  j  S)z,Return whether I know any known-good hashes.)boolr   )r   r   r   r   __nonzero__   s    zHashes.__nonzero__c             C   s
   |  j    S)N)rD   )r   r   r   r   __bool__   s    zHashes.__bool__)__name__
__module____qualname____doc__r   r&   propertyr+   r/   r<   r6   r>   rB   rD   rE   r   r   r   r   r   $   s   		r   c                   s4   e  Z d  Z d Z   f d d   Z d d   Z   S)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.

    c                s#   t  t |   j d t g  i  d S)z!Don't offer the ``hashes`` kwarg.r   N)superrK   r   FAVORITE_HASH)r   )	__class__r   r   r      s    zMissingHashes.__init__c             C   s   t  | t j     d  S)N)r   rM   r5   )r   r8   r   r   r   r6      s    zMissingHashes._raise)rF   rG   rH   rI   r   r6   r   r   )rN   r   rK      s   rK   )
__future__r   r0   Zpip._vendor.sixr   r   r   pip._internal.exceptionsr   r   r   pip._internal.utils.miscr	   pip._internal.utils.typingr
   typingr   r   r   r   r   r   r   r   rM   STRONG_HASHESobjectr   rK   r   r   r   r   <module>   s   (e