+
    3jE                    ~    ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht RR ltR t0 RmtR	R
/R R lltR# )    )annotationsN)chain)Path)TemporaryDirectory)package_streamingc           	     f   ^RI Hp \        4       ;_uu_ 4       pVf   Q h\        P                  P                  V 4      '       d   T pMNV! W,           \        P                  P                  VR4      R7       \        P                  P                  VR4      p\        P                  P                  VR4      pV! WR7       \        4       p\        4       p\        P                  ! V4       EF%  w  rpV EF  p\        P                  P                  W4      p\        P                  P                  W4      p\        P                  P                  Wn4      p\        P                  P                  V4      '       d   K  \        P                  P                  V4      '       g   VP                  V4       K  \        P                  ! V4      P                  \        P                  ! V4      P                  8w  g   EK  VP                  V4       EK  	  EK(  	  RRR4       V XX3#   + '       g   i     L; i)   )extractNsrc)dest_dir	converted)apir
   r   ospathisdirjoinsetwalkrelpathislinkisfileaddstatst_size)src_file_or_foldersubjectreference_extr
   tmpdir
src_folderconverted_foldermissing_filesmismatch_sizerootdirsfilesfabsfilerpdestpaths   &&&             ?lib/python3.14/site-packages/conda_package_handling/validate.pyvalidate_converted_files_matchr+      sr    			!!!77==+,,+J&6fV[A\]fe4J77<<<3!#!4D'',,t/WW__W977<<(8=ww~~h//77>>(33%))"-)11RWWX5F5N5NN%))"-  "5 
. }m;;/ 
	s%   +H D0H :$H AH 8H  H0	c                 ,    \         P                  ! 4       # )N)hashlibblake2b     r*   hash_fnr1   ,   s    ??r0   strictTc                    V ^8  d   QhRRRR/# )   r   
str | Path	referencer/   )formats   "r*   __annotate__r8   :   s     5$ 5$	5$ *5$r0   c               *  a	 / p/ pV'       d   R0M\         o	R V	3R llpV! V 4      pV! V4      p. p. pW48w  dX   \        W44       FH  pW9   d   W9   g   VP                  V4       K"  W8,          WH,          8w  g   K7  VP                  V4       KJ  	  WV3# )ad  
Check that two .tar.bz2 or .conda files (either of src_file and
reference_file can be either format) match exactly, down to the timestamps
etc.

Does not check outside of the info- and pkg- components of a .conda.
(conda's metadata.json, which gives the version "2" of the format)

If strict = True, also check for matching uid, gid, mtime, uname, gname.
chksumc                   V ^8  d   QhRR/# )r4   filenamer5   r/   )r7   s   "r*   r8   >validate_converted_files_match_streaming.<locals>.__annotate__K   s      j r0   c           
       <a / p\         P                  ! V 4      P                  R 4      '       d   RR.MR.p\        V R4      ;_uu_ 4       pV F  p\        P
                  ! WV4       F  w  rVVP                  4       P                  4        UUu/ uF  w  rxVS9  g   K  WxbK  	  p	ppVP                  4       '       d]   \        4       p
VP                  V4      oSf   Q h\        V3R lR4       F  pV
P                  V4       K  	  V
P                  4       V	R&   WV	R,          &   K  	  K  	  RRR4       V# u uppi   + '       g   i     T# ; i)	z.condainfopkgrbNc                 &   < S P                  R4      # )r	   i   )read)fds   r*   <lambda>Ovalidate_converted_files_match_streaming.<locals>.get_fileset.<locals>.<lambda>Y   s    "'''2Br0   r0   digestname)r   fspathendswithopenr   stream_conda_componentget_infoitemsr   r1   extractfileiterupdate	hexdigest)r<   fileset
components
conda_file	componenttarmemberkvr?   hasherblockrD   ignore_fieldss   &           @r*   get_fileset=validate_converted_files_match_streaming.<locals>.get_filesetK   s&   (*		((;(D(DX(N(Nfe_UZT[
(D!!Z'	#4#K#K)$KC .4__->-D-D-Fa-FTQ!S`J`DAD-FDa}}!( __V4!~-~%)*BC%HE"MM%0 &I *0)9)9);X,0DL)$ ( "$  b "!$ s&   AD<D6D6$BD<6D<<E	)IGNORE_FIELDSr   append)
r   r6   r2   
source_setreference_setr^   missing
mismatchedfiler]   s
   &&$      @r*   (validate_converted_files_match_streamingrg   :   s     JM"(XJmM . S!J	*MGJ"*4D&4+@t$!]%88!!$'	 5 ##r0   ) >   giduidgnamemtimeunamer:   )
__future__r   r-   r   	itertoolsr   pathlibr   tempfiler   conda_package_streamingr   r+   r1   r`   rg   r/   r0   r*   <module>rs      s>    "  	   ' 5<@5$6:5$ 5$r0   