<!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>
σ
οRec           @@  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 qή d  d
 l m Z n  d Z d d d g Z d e f d     YZ d e f d     YZ d S(   i    (   t   absolute_importN(   t	   iteritemst   iterkeyst
   itervalues(   t   HashMismatcht   HashMissingt   InstallationError(   t   read_chunks(   t   MYPY_CHECK_RUNNING(   t   Dictt   Listt   BinaryIOt   NoReturnt   Iterator(   t   PY3(   t   _Hash(   t   _hasht   sha256t   sha384t   sha512t   Hashesc           B@  sq   e  Z d  Z d d  Z d   Z e d    Z d   Z d   Z	 d   Z
 d   Z d   Z d	   Z d
   Z RS(   sa   A wrapper that builds multiple hashes at once and checks them against
    known-good values

    c         C@  s   | d k r i  n | |  _ d S(   so   
        :param hashes: A dict of algorithm names pointing to lists of allowed
            hex digests
        N(   t   Nonet   _allowed(   t   selft   hashes(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   __init__)   s    c         C@  s   t  | t  s t S| s |  S|  s' | Si  } xb t | j  D]Q \ } } | |  j k r^ q= n  g  | D] } | |  j | k re | ^ qe | | <q= Wt |  S(   N(   t
   isinstanceR   t   NotImplementedR   R   (   R   t   othert   newt   algt   valuest   v(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   __and__1   s    4c         C@  s   t  d   |  j j   D  S(   Nc         s@  s   |  ] } t  |  Vq d  S(   N(   t   len(   t   .0t   digests(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pys	   <genexpr>H   s    (   t   sumR   R   (   R   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   digest_countE   s    c         C@  s   | |  j  j | g   k S(   s/   Return whether the given hex digest is allowed.(   R   t   get(   R   t	   hash_namet
   hex_digest(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   is_hash_allowedJ   s    c         C@  sζ   i  } x] t  |  j  D]L } y t j |  | | <Wq t t f k
 ra t d j |    q Xq Wx2 | D]* } x! t |  D] } | j	 |  q Wqm Wx7 t
 |  D]) \ } } | j   |  j | k r¨ d Sq¨ W|  j |  d S(   s   Check good hashes against ones built from iterable of chunks of
        data.

        Raise HashMismatch if none match.

        s   Unknown hash name: {}N(   R   R   t   hashlibR   t
   ValueErrort	   TypeErrorR   t   formatR   t   updateR   t	   hexdigestt   _raise(   R   t   chunkst   gotsR(   t   chunkt   hasht   got(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   check_against_chunksS   s    c         C@  s   t  |  j |   d  S(   N(   R   R   (   R   R3   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyR1   m   s    c         C@  s   |  j  t |   S(   sa   Check good hashes against a file-like object

        Raise HashMismatch if none match.

        (   R7   R   (   R   t   file(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   check_against_fileq   s    c         C@  s)   t  | d   } |  j |  SWd  QXd  S(   Nt   rb(   t   openR9   (   R   t   pathR8   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   check_against_pathz   s    c         C@  s   t  |  j  S(   s,   Return whether I know any known-good hashes.(   t   boolR   (   R   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   __nonzero__   s    c         C@  s
   |  j    S(   N(   R?   (   R   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   __bool__   s    N(   t   __name__t
   __module__t   __doc__R   R   R!   t   propertyR&   R*   R7   R1   R9   R=   R?   R@   (    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyR   $   s   									t   MissingHashesc           B@  s    e  Z d  Z d   Z d   Z RS(   sΐ   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.

    c         C@  s$   t  t |   j d i g  t 6 d S(   s!   Don't offer the ``hashes`` kwarg.R   N(   t   superRE   R   t   FAVORITE_HASH(   R   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyR      s    c         C@  s   t  | t j     d  S(   N(   R   RG   R0   (   R   R3   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyR1      s    (   RA   RB   RC   R   R1   (    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyRE      s   	(   t
   __future__R    R+   t   pip._vendor.sixR   R   R   t   pip._internal.exceptionsR   R   R   t   pip._internal.utils.miscR   t   pip._internal.utils.typingR   t   typingR	   R
   R   R   R   R   R   R   RG   t   STRONG_HASHESt   objectR   RE   (    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyt   <module>   s   (e