+
    Ui                        ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHt ^ RI	H
t
HtHt ^ RIHt ]'       d   ^ RIHt ^ RIHt R	t. ROt ! R
 R4      t ! R R]4      tR# )    )annotationsN)Iterable)TYPE_CHECKINGBinaryIONoReturn)HashMismatchHashMissingInstallationError)read_chunks)Mapping)_Hashsha256c                      ] tR t^tRtRR R lltR R lt]R R l4       tR	 R
 lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltRtR# )HasheszYA wrapper that builds multiple hashes at once and checks them against
known-good values

Nc                    V ^8  d   QhRRRR/# )   hasheszdict[str, list[str]] | NonereturnNone )formats   "X/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pip/_internal/utils/hashes.py__annotate__Hashes.__annotate__   s     
  
 : 
 d 
     c                    / pVeD   VP                  4        F/  w  r4\        V4       Uu. uF  qUP                  4       NK  	  upW#&   K1  	  W n        R# u upi )zW
:param hashes: A dict of algorithm names pointing to lists of allowed
    hex digests
N)itemssortedlower_allowed)selfr   allowedalgkeysks   &&    r   __init__Hashes.__init__   sL    
 #\\^	39$<@<a	<@ ,    As   Ac                    V ^8  d   QhRRRR/# )r   otherr   r   r   )r   s   "r   r   r   *   s      V  r   c                	J   \        V\        4      '       g   \        # V'       g   V # V '       g   V# / pVP                  P	                  4        FD  w  r4W0P                  9  d   K  V Uu. uF  qUV P                  V,          9   g   K  VNK   	  upW#&   KF  	  \        V4      # u upi N)
isinstancer   NotImplementedr    r   )r!   r)   newr#   valuesvs   &&    r   __and__Hashes.__and__*   s    %((!! KL  >>//1KC--'#)E6a$--2D-D6ECH 2 c{ Fs   (B B c                   V ^8  d   QhRR/# r   r   intr   )r   s   "r   r   r   >   s     G Gc Gr   c                	V    \        R  V P                  P                  4        4       4      # )c              3  8   "   T F  p\        V4      x  K  	  R # 5i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Fr   c               $    V ^8  d   QhRRRRRR/# )r   	hash_namestr
hex_digestr   boolr   )r   s   "r   r   r   A   s!     > > ># >$ >r   c                >    W P                   P                  V. 4      9   # )z/Return whether the given hex digest is allowed.)r    get)r!   rB   rD   s   &&&r   is_hash_allowedHashes.is_hash_allowedA   s    ]]..y"===r   c                    V ^8  d   QhRRRR/# )r   chunkszIterable[bytes]r   r   r   )r   s   "r   r   r   E   s      ? t r   c                   / pV P                   P                  4        F  p \        P                  ! V4      W#&   K  	  V F+  pVP                  4        F  pVP                  V4       K  	  K-  	  VP                  4        F.  w  r6VP                  4       V P                   V,          9   g   K-   R# 	  V P                  V4       R#   \        \
        3 d    \        RT 24      hi ; i)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!   rK   gotsrB   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   C C#c                    V ^8  d   QhRRRR/# r   rS   zdict[str, _Hash]r   r   r   )r   s   "r   r   r   \   s     0 0+ 0 0r   c                	.    \        V P                  V4      hr+   )r   r    r!   rS   s   &&r   rR   Hashes._raise\   s    4==$//r   c                    V ^8  d   QhRRRR/# )r   filer   r   r   r   )r   s   "r   r   r   _   s     < <x <D <r   c                6    V P                  \        V4      4      # )zQCheck good hashes against a file-like object

Raise HashMismatch if none match.

)rW   r   )r!   r_   s   &&r   check_against_fileHashes.check_against_file_   s     ((T):;;r   c                    V ^8  d   QhRRRR/# )r   pathrC   r   r   r   )r   s   "r   r   r   g   s     1 1s 1t 1r   c                	    \        VR 4      ;_uu_ 4       pV P                  V4      uuRRR4       #   + '       g   i     R# ; i)rbN)openra   )r!   rd   r_   s   && r   check_against_pathHashes.check_against_pathg   s.    $**40 s	   1A	c                    V ^8  d   QhRRRR/# )r   r   zMapping[str, str]r   rE   r   )r   s   "r   r   r   k   s      !2 t r   c                l    VP                  4        F  w  r#V P                  W#4      '       g   K   R# 	  R# )z3Return whether any of the given hashes are allowed.TF)r   rH   )r!   r   rB   rD   s   &&  r   
has_one_ofHashes.has_one_ofk   s.    %+\\^!I##I:: &4 r   c                   V ^8  d   QhRR/# )r   r   rE   r   )r   s   "r   r   r   r   s     # #$ #r   c                ,    \        V P                  4      # )z,Return whether I know any known-good hashes.)rE   r    r>   s   &r   __bool__Hashes.__bool__r   s    DMM""r   c                    V ^8  d   QhRRRR/# )r   r)   objectr   rE   r   )r   s   "r   r   r   v   s     / /F /t /r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8H  # r+   )r,   r   r-   r    )r!   r)   s   &&r   __eq__Hashes.__eq__v   s(    %((!!}}..r   c                   V ^8  d   QhRR/# r4   r   )r   s   "r   r   r   {   s     	
 	
# 	
r   c           	     	    \        R P                  \        R V P                  P	                  4        4       4      4      4      # ),c              3  \   "   T F"  w  rV F  pR P                  W34      x  K  	  K$  	  R# 5i):N)join)r9   r#   digest_listdigests   &   r   r;   "Hashes.__hash__.<locals>.<genexpr>~   s5      ,A("- HHc]++"- ,,As   *,)rU   r|   r   r    r   r>   s   &r   __hash__Hashes.__hash__{   s=    HH ,0MM,?,?,A 
 	
r   )r    r+   )__name__
__module____qualname____firstlineno____doc__r&   r1   propertyr?   rH   rW   rR   ra   rh   rl   rp   ru   r   __static_attributes__r   r   r   r   r      sY    

 & G G>.0<1#/
	
 	
r   r   c                  >   a  ] tR t^tRtR V 3R lltR R ltRtV ;t# )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                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   MissingHashes.__annotate__   s     5 5$ 5r   c                4   < \         SV `  \        . /R7       R# )z!Don't offer the ``hashes`` kwarg.)r   N)superr&   FAVORITE_HASH)r!   	__class__s   &r   r&   MissingHashes.__init__   s     	 34r   c                    V ^8  d   QhRRRR/# rZ   r   )r   s   "r   r   r      s     ; ;+ ; ;r   c                	J    \        V\        ,          P                  4       4      hr+   )r	   r   rQ   r\   s   &&r   rR   MissingHashes._raise   s    $}-779::r   r   )	r   r   r   r   r   r&   rR   r   __classcell__)r   s   @r   r   r      s    5 5; ;r   r   )r   sha384sha512)
__future__r   rM   collections.abcr   typingr   r   r   pip._internal.exceptionsr   r	   r
   pip._internal.utils.miscr   r   r   r   STRONG_HASHESr   r   r   r   r   <module>r      sM    "  $ 4 4 Q Q 0' 
 /l
 l
^;F ;r   