§
    
Á³gß  ã                   ó¬   — d dl Z d dl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 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ÚOptional)ÚHashMismatchÚHashMissingÚInstallationError)Úread_chunks)Ú_Hash)ÚNoReturnÚ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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                 ót   — i }|�,|                      ¦   «         D ]\  }}t          |¦  «        ||<   Œ|| _        dS )zo
        :param hashes: A dict of algorithm names pointing to lists of allowed
            hex digests
        N)ÚitemsÚsortedÚ_allowed)Úselfr   ÚallowedÚalgÚkeyss        úX/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_internal/utils/hashes.pyÚ__init__zHashes.__init__   sF   € ð
 ˆØÐØ#Ÿ\š\™^œ^ð ,ð ,‘	��Tå% d™|œ|�˜‘�ØˆŒˆˆó    Ú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   )Ú.0Úvr   r   s     €€r   ú
<listcomp>z"Hashes.__and__.<locals>.<listcomp>;   s*   ø€ ÐEÐEÐE˜a¨Q°$´-ÀÔ2DÐ-DÐ-D˜Ð-DÐ-DÐ-Dr    )Ú
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   r6   r7   s      r   Úis_hash_allowedzHashes.is_hash_allowedB   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;   Úgotsr6   ÚchunkÚhashÚgots          r   Úcheck_against_chunkszHashes.check_against_chunksF   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rC   r   r   c                 ó,   — t          | j        |¦  «        ‚r/   )r	   r   ©r   rC   s     r   rB   zHashes._raise]   s   € Ý˜4œ=¨$Ñ/Ô/Ð/r    Úfilec                 óF   — |                       t          |¦  «        ¦  «        S )zaCheck good hashes against a file-like object

        Raise HashMismatch if none match.

        )rG   r   )r   rJ   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)ÚopenrL   )r   rM   rJ   s      r   Úcheck_against_pathzHashes.check_against_pathh   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                 ó*   — t          | j        ¦  «        S )z,Return whether I know any known-good hashes.)Úboolr   r4   s    r   Ú__bool__zHashes.__bool__l   s   € å�D”MÑ"Ô"Ð"r    c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r/   )r(   r   r)   r   )r   r!   s     r   Ú__eq__zHashes.__eq__p   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   r2   z"Hashes.__hash__.<locals>.<genexpr>x   sa   è è € ð ð á(˜˜[Ø"-ðð ð ð —H’H˜c 6˜]Ñ+Ô+ðð ð ð ð ð ð r    )rE   r[   r   r   r   r4   s    r   Ú__hash__zHashes.__hash__u   s\   € ÝØ�HŠHÝð ð à,0¬M×,?Ò,?Ñ,AÔ,Aðñ ô ñ ô ñô ñ
ô 
ð 	
r    r/   )r!   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr   r   r,   ÚpropertyÚintr5   rS   r:   r   ÚbytesrG   rB   r   rL   rQ   rT   ÚobjectrV   r^   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ð#˜$ð #ð #ð #ð #ð/˜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    rC   r   r   c                 óZ   — t          |t                                        ¦   «         ¦  «        ‚r/   )r
   rl   rA   rI   s     r   rB   zMissingHashes._raise�   s!   € Ý˜$�}Ô-×7Ò7Ñ9Ô9Ñ:Ô:Ð:r    )r   N)	r_   r`   ra   rb   r   r   rc   rB   Ú__classcell__)rm   s   @r   ri   ri   �   sr   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð 5ð;˜4  W Ô-ð ;°*ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r    ri   )r=   Útypingr   r   r   r   r   r   Úpip._internal.exceptionsr	   r
   r   Úpip._internal.utils.miscr   r   r   rl   ÚSTRONG_HASHESr   ri   r$   r    r   ú<module>rt      s  ðØ €€€Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jà QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ 0Ð 0Ð 0Ð 0Ð 0Ð 0àð  ØÐÐÐÐÐð  ÐÐÐÐÐð
 €ð
 /Ð.Ð.€ðe
ð e
ð e
ð e
ð e
ñ e
ô e
ð e
ðP;ð ;ð ;ð ;ð ;�Fñ ;ô ;ð ;ð ;ð ;r    