§
    é phl  ã                   ó¤   — d dl Z d dlmZmZmZmZmZmZmZ d dl	m
Z
mZmZ d dlmZ erd dl mZ dZg d¢Z G d„ d	¦  «        Z G d
„ de¦  «        ZdS )é    N)ÚTYPE_CHECKINGÚBinaryIOÚDictÚIterableÚListÚNoReturnÚOptional)ÚHashMismatchÚHashMissingÚInstallationError)Úread_chunks)Ú_HashÚsha256)r   Úsha384Úsha512c                   ó(  — e Zd ZdZddeeeee         f                  ddfd„Zdd„Z	e
defd„¦   «         Zd	ed
edefd„Zdee         ddfd„Zdeedf         ddfd„Zdeddfd„Zdeddfd„Zdeeef         defd„Zdefd„Zdedefd„Zdefd„ZdS )ÚHasheszaA wrapper that builds multiple hashes at once and checks them against
    known-good values

    NÚhashesÚreturnc                 óˆ   — i }|�6|                      ¦   «         D ]!\  }}d„ t          |¦  «        D ¦   «         ||<   Œ"|| _        dS )zo
        :param hashes: A dict of algorithm names pointing to lists of allowed
            hex digests
        Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Úlower)Ú.0Úks     úgC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\pip\_internal\utils\hashes.pyú
<listcomp>z#Hashes.__init__.<locals>.<listcomp>$   s    € Ð@Ð@Ð@¨a §¢¡	¤	Ð@Ð@Ð@ó    )ÚitemsÚsortedÚ_allowed)Úselfr   ÚallowedÚalgÚkeyss        r   Ú__init__zHashes.__init__   sY   € ð
 ˆØð 	AØ#Ÿ\š\™^œ^ð Að A‘	��Tà@Ð@µ6¸$±<´<Ð@Ñ@Ô@�˜‘�ØˆŒˆˆr   Úotherc                 óæ   ‡ ‡— t          |t          ¦  «        st          S |s‰ S ‰ s|S i }|j                             ¦   «         D ]!\  Š}‰‰ j        vrŒˆˆ fd„|D ¦   «         |‰<   Œ"t          |¦  «        S )Nc                 ó2   •— g | ]}|‰j         ‰         v ¯|‘ŒS r   )r!   )r   Úvr$   r"   s     €€r   r   z"Hashes.__and__.<locals>.<listcomp>7   s*   ø€ ÐEÐEÐE˜a¨Q°$´-ÀÔ2DÐ-DÐE˜ÐEÐEÐEr   )Ú
isinstancer   ÚNotImplementedr!   r   )r"   r'   ÚnewÚvaluesr$   s   `   @r   Ú__and__zHashes.__and__'   s¢   øø€ Ý˜%¥Ñ(Ô(ð 	"Ý!Ð!ð ð 	ØˆKØð 	ØˆLð ˆØ œ>×/Ò/Ñ1Ô1ð 	Fð 	F‰KˆC�Ø˜$œ-Ð'ð ØØEÐEÐEÐEÐE 6ÐEÑEÔEˆC�‰HˆHÝ�c‰{Œ{Ðr   c                 ób   — t          d„ | j                             ¦   «         D ¦   «         ¦  «        S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)Úlen)r   Údigestss     r   ú	<genexpr>z&Hashes.digest_count.<locals>.<genexpr><   s(   è è € ÐFÐF G•3�w‘<”<ÐFÐFÐFÐFÐFÐFr   )Úsumr!   r.   ©r"   s    r   Údigest_countzHashes.digest_count:   s-   € åÐFÐF¨t¬}×/CÒ/CÑ/EÔ/EÐFÑFÔFÑFÔFÐFr   Ú	hash_nameÚ
hex_digestc                 ó<   — || j                              |g ¦  «        v S )z/Return whether the given hex digest is allowed.)r!   Úget)r"   r9   r:   s      r   Úis_hash_allowedzHashes.is_hash_allowed>   s   € à˜Tœ]×.Ò.¨y¸"Ñ=Ô=Ð=Ð=r   Úchunksc                 óÈ  — i }| j                              ¦   «         D ]A}	 t          j        |¦  «        ||<   Œ# t          t
          f$ r t          d|› �¦  «        ‚w xY w|D ].}|                     ¦   «         D ]}|                     |¦  «         ŒŒ/| 	                    ¦   «         D ])\  }}| 
                    ¦   «         | j         |         v r dS Œ*|                      |¦  «         dS )z‚Check 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   r.   Úupdater   Ú	hexdigestÚ_raise)r"   r>   Úgotsr9   ÚchunkÚhashÚgots          r   Úcheck_against_chunkszHashes.check_against_chunksB   s  € ð ˆØœ×+Ò+Ñ-Ô-ð 	Kð 	KˆIðKÝ")¤+¨iÑ"8Ô"8��Y‘�øÝ¥	Ð*ð Kð Kð KÝ'Ð(I¸iÐ(IÐ(IÑJÔJÐJðKøøøð ð 	#ð 	#ˆEØŸš™œð #ð #�Ø—’˜EÑ"Ô"Ð"Ð"ð#ð #Ÿjšj™lœlð 	ð 	‰NˆI�sØ�}Š}‰Œ $¤-°	Ô":Ð:ð Ø��ðà�Š�DÑÔÐÐÐs	   Ÿ7·$ArF   r   r   c                 ó,   — t          | j        |¦  «        ‚r2   )r
   r!   ©r"   rF   s     r   rE   zHashes._raiseY   s   € Ý˜4œ=¨$Ñ/Ô/Ð/r   Úfilec                 óF   — |                       t          |¦  «        ¦  «        S )zaCheck good hashes against a file-like object

        Raise HashMismatch if none match.

        )rJ   r   )r"   rM   s     r   Úcheck_against_filezHashes.check_against_file\   s    € ð ×(Ò(­°TÑ):Ô):Ñ;Ô;Ð;r   Úpathc                 ó€   — t          |d¦  «        5 }|                      |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NÚrb)ÚopenrO   )r"   rP   rM   s      r   Úcheck_against_pathzHashes.check_against_pathd   s„   € Ý�$˜ÑÔð 	1 Ø×*Ò*¨4Ñ0Ô0ð	1ð 	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1s   ‘3³7º7c                 ól   — |                      ¦   «         D ]\  }}|                      ||¦  «        r dS ŒdS )z3Return whether any of the given hashes are allowed.TF)r   r=   )r"   r   r9   r:   s       r   Ú
has_one_ofzHashes.has_one_ofh   sG   € à%+§\¢\¡^¤^ð 	ð 	Ñ!ˆI�zØ×#Ò# I¨zÑ:Ô:ð Ø�t�tðàˆur   c                 ó*   — t          | j        ¦  «        S )z,Return whether I know any known-good hashes.)Úboolr!   r7   s    r   Ú__bool__zHashes.__bool__o   s   € å�D”MÑ"Ô"Ð"r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r2   )r+   r   r,   r!   )r"   r'   s     r   Ú__eq__zHashes.__eq__s   s)   € Ý˜%¥Ñ(Ô(ð 	"Ý!Ð!ØŒ} ¤Ò.Ð.r   c           	      ó¢   — t          d                     t          d„ | j                             ¦   «         D ¦   «         ¦  «        ¦  «        ¦  «        S )Nú,c              3   óT   K  — | ]#\  }}|D ]}d                       ||f¦  «        V — ŒŒ$dS )ú:N)Újoin)r   r$   Údigest_listÚdigests       r   r5   z"Hashes.__hash__.<locals>.<genexpr>{   sa   è è € ð ð á(˜˜[Ø"-ðð ð ð —H’H˜c 6˜]Ñ+Ô+ðð ð ð ð ð ð r   )rH   r`   r    r!   r   r7   s    r   Ú__hash__zHashes.__hash__x   s\   € ÝØ�HŠHÝð ð à,0¬M×,?Ò,?Ñ,AÔ,Aðñ ô ñ ô ñô ñ
ô 
ð 	
r   r2   )r'   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   Ústrr   r&   r/   ÚpropertyÚintr8   rX   r=   r   ÚbytesrJ   rE   r   rO   rT   rV   rY   Úobjectr[   rc   r   r   r   r   r      s×  € € € € € ðð ð

 ð 
 ˜x¨¨S°$°s´)¨^Ô(<Ô=ð 
 Èð 
 ð 
 ð 
 ð 
 ðð ð ð ð& ðG˜cð Gð Gð Gñ „XðGð>¨ð >¸#ð >À$ð >ð >ð >ð >ð¨8°E¬?ð ¸tð ð ð ð ð.0˜4  W Ô-ð 0°*ð 0ð 0ð 0ð 0ð< xð <°Dð <ð <ð <ð <ð1 sð 1¨tð 1ð 1ð 1ð 1ð  c¨3 h¤ð °Dð ð ð ð ð#˜$ð #ð #ð #ð #ð/˜Fð / tð /ð /ð /ð /ð
	
˜#ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r   r   c                   óD   ‡ — e Zd ZdZd	ˆ fd„Zdeedf         ddfd„Zˆ xZS )
Ú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.

    r   Nc                 óZ   •— t          ¦   «                              t          g i¬¦  «         dS )z!Don't offer the ``hashes`` kwarg.)r   N)Úsuperr&   ÚFAVORITE_HASH)r"   Ú	__class__s    €r   r&   zMissingHashes.__init__Œ   s+   ø€ õ 	‰Œ×Ò¥°Ð 3ÐÑ4Ô4Ð4Ð4Ð4r   rF   r   r   c                 óZ   — t          |t                                        ¦   «         ¦  «        ‚r2   )r   rq   rD   rL   s     r   rE   zMissingHashes._raise’   s!   € Ý˜$�}Ô-×7Ò7Ñ9Ô9Ñ:Ô:Ð:r   )r   N)	rd   re   rf   rg   r&   r   rh   rE   Ú__classcell__)rr   s   @r   rn   rn   „   sr   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð 5ð;˜4  W Ô-ð ;°*ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r   rn   )r@   Útypingr   r   r   r   r   r   r	   Úpip._internal.exceptionsr
   r   r   Úpip._internal.utils.miscr   r   rq   ÚSTRONG_HASHESr   rn   r   r   r   ú<module>ry      s  ðØ €€€Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tà QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ 0Ð 0Ð 0Ð 0Ð 0Ð 0àð ØÐÐÐÐÐð
 €ð
 /Ð.Ð.€ðl
ð l
ð l
ð l
ð l
ñ l
ô l
ð l
ð^;ð ;ð ;ð ;ð ;�Fñ ;ô ;ð ;ð ;ð ;r   