
    4Քh                        S SK Jr  S SKrS SKJr  S SKJrJrJr  S SK	J
r
JrJr  S SKJr  \(       a  S SKJr  Sr/ S	Qr " S
 S5      r " S S\5      rg)    )annotationsN)Iterable)TYPE_CHECKINGBinaryIONoReturn)HashMismatchHashMissingInstallationError)read_chunks)_Hashsha256)r   sha384sha512c                      \ rS rSrSrSSS jjrSS jr\SS j5       rSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSrg)Hashes   zYA wrapper that builds multiple hashes at once and checks them against
known-good values

Nc                    0 nUbD  UR                  5        H0  u  p4[        U5       Vs/ s H  oUR                  5       PM     snX#'   M2     X l        gs  snf )zW
:param hashes: A dict of algorithm names pointing to lists of allowed
    hex digests
N)itemssortedlower_allowed)selfhashesallowedalgkeysks         R/var/www/auris/envauris/lib/python3.13/site-packages/pip/_internal/utils/hashes.py__init__Hashes.__init__   sL    
 #\\^	39$<@<a	<@ ,    As   Ac                :   [        U[        5      (       d  [        $ U(       d  U $ U (       d  U$ 0 nUR                  R	                  5        H?  u  p4X0R                  ;  a  M  U Vs/ s H  oUU R                  U   ;   d  M  UPM     snX#'   MA     [        U5      $ s  snf N)
isinstancer   NotImplementedr   r   )r   othernewr   valuesvs         r   __and__Hashes.__and__*   s    %((!! KL  >>//1KC--'#)E6a$--2D-D6ECH 2 c{ Fs   $B>Bc                V    [        S U R                  R                  5        5       5      $ )Nc              3  8   #    U  H  n[        U5      v   M     g 7fr"   )len).0digestss     r   	<genexpr>&Hashes.digest_count.<locals>.<genexpr>?   s     F/EG3w<</Es   )sumr   r'   r   s    r   digest_countHashes.digest_count=   s     Ft}}/C/C/EFFF    c                >    X R                   R                  U/ 5      ;   $ )z/Return whether the given hex digest is allowed.)r   get)r   	hash_name
hex_digests      r   is_hash_allowedHashes.is_hash_allowedA   s    ]]..y"===r6   c                   0 nU R                   R                  5        H  n [        R                  " U5      X#'   M     U H+  nUR                  5        H  nUR                  U5        M     M-     UR                  5        H(  u  p6UR                  5       U R                   U   ;   d  M(    g   U R                  U5        g! [        [
        4 a    [        SU 35      ef = f)zjCheck 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   chunksgotsr9   chunkhashgots          r   check_against_chunksHashes.check_against_chunksE   s     ++-IK")++i"8 . EE" &  #jjlNI}}$--	":: + 	D 	* K'*=i[(IJJKs   B<<Cc                .    [        U R                  U5      er"   )r   r   r   rE   s     r   rC   Hashes._raise\   s    4==$//r6   c                6    U R                  [        U5      5      $ )zQCheck good hashes against a file-like object

Raise HashMismatch if none match.

)rI   r   )r   files     r   check_against_fileHashes.check_against_file_   s     ((T):;;r6   c                r    [        US5       nU R                  U5      sS S S 5        $ ! , (       d  f       g = f)Nrb)openrP   )r   pathrO   s      r   check_against_pathHashes.check_against_pathg   s(    $**40 s   (
6c                f    UR                  5        H  u  p#U R                  X#5      (       d  M    g   g)z3Return whether any of the given hashes are allowed.TF)r   r;   )r   r   r9   r:   s       r   
has_one_ofHashes.has_one_ofk   s.    %+\\^!I##I:: &4 r6   c                ,    [        U R                  5      $ )z,Return whether I know any known-good hashes.)boolr   r3   s    r   __bool__Hashes.__bool__r   s    DMM""r6   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r"   )r#   r   r$   r   )r   r%   s     r   __eq__Hashes.__eq__v   s(    %((!!}}..r6   c           	         [        SR                  [        S U R                  R	                  5        5       5      5      5      $ )N,c              3  ^   #    U  H#  u  pU  H  nS R                  X45      v   M     M%     g7f):N)join)r.   r   digest_listdigests       r   r0   "Hashes.__hash__.<locals>.<genexpr>~   s5      ,A("- HHc]++"- ,,As   +-)rG   rf   r   r   r   r3   s    r   __hash__Hashes.__hash__{   s=    HH ,0MM,?,?,A 
 	
r6   )r   r"   )r   zdict[str, list[str]] | NonereturnNone)r%   r   rl   r   )rl   int)r9   strr:   ro   rl   r\   )rD   zIterable[bytes]rl   rm   rE   zdict[str, _Hash]rl   r   )rO   r   rl   rm   )rU   ro   rl   rm   )r   zdict[str, str]rl   r\   )rl   r\   )r%   objectrl   r\   )__name__
__module____qualname____firstlineno____doc__r   r)   propertyr4   r;   rI   rC   rP   rV   rY   r]   r`   rj   __static_attributes__ r6   r   r   r      sT    

 & G G>.0<1#/
	
r6   r   c                  :   ^  \ rS rSrSrSU 4S jjrSS jrSrU =r$ )MissingHashes   zA 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                ,   > [         TU ]  [        / 0S9  g)z!Don't offer the ``hashes`` kwarg.)r   N)superr   FAVORITE_HASH)r   	__class__s    r   r   MissingHashes.__init__   s     	 34r6   c                B    [        U[           R                  5       5      er"   )r	   r   rB   rL   s     r   rC   MissingHashes._raise   s    $}-779::r6   ry   )rl   rm   rp   )	rr   rs   rt   ru   rv   r   rC   rx   __classcell__)r   s   @r   r{   r{      s    5; ;r6   r{   )
__future__r   r>   collections.abcr   typingr   r   r   pip._internal.exceptionsr   r	   r
   pip._internal.utils.miscr   r   r   STRONG_HASHESr   r{   ry   r6   r   <module>r      sJ    "  $ 4 4 Q Q 0
 
 /l
 l
^;F ;r6   