
    דi                    V   % S SK Jr  S SKrS SKrS SKrS SKJr	  SSK
JrJr  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  S\0rS\S'   Sr SSKJrJr  SSKJr   \ \S'   SrSr#S r$SS jr%SS jr&SS jr'   SS jr(S S jr)S r*S!S jr+g! \! a    \RD                  " S5         NDf = f)"    )annotationsN)glob   )ConversionErrorInvalidArchiveError)AbstractBaseFormat)CondaTarBZ2)ensure_listfilter_info_files)get_executor)rm_rfz.tar.bz2z#dict[str, type[AbstractBaseFormat]]SUPPORTED_EXTENSIONSF)ZSTD_COMPRESS_LEVELZSTD_COMPRESS_THREADS)CondaFormat_v2.condaTz4Install zstandard Python bindings for .conda supportc           
       ^ ^ / / p![         R                  " T 5       Hx  u  mp4U HP  nUR                  [         R                  R	                  [         R                  R                  TU5      T 5      5        MR     UR                  UU 4S jU 5       5        Mz     UU V^s/ s H!  m[        U4S jU 5       5      (       a  M  TPM#     sn-   nU$ s  snf )Nc              3     >#    U  HC  n[         R                  R                  [         R                  R                  TU5      T5      v   ME     g 7fN)_ospathrelpathjoin).0_dpprefixs     :lib/python3.13/site-packages/conda_package_handling/api.py	<genexpr>!_collect_paths.<locals>.<genexpr>'   s6     TQSA))#((--A*>GGQSs   AAc              3  f   >#    U  H&  oR                  T[        R                  -   5      v   M(     g 7fr   )
startswithr   sep)r   fr   s     r   r   r    )   s#     )Yj,,rCGG|*D*Djs   .1)r   walkappendr   r   r   extendany)r   	dir_paths
file_pathsdn	filenamesr$   r   	file_lists   `     ` r   _collect_pathsr.   "   s    z XXf-BAchh..sxx}}R/CVLM TQSTT . rc)Yj)Y&YY I s   C Cc                    S n[          H*  nU R                  U5      (       d  M  U S [        U5      *  nM,     U(       a&  U(       d  [        R                  R                  U5      nU$ r   )r   endswithlenr   r   basename)in_fileabspathdirnameexts       r   get_default_extracted_folderr7   .   sT    G#C  kS	*G $ w((##G,N    c           	     z   U(       a  [         R                  R                  U5      (       a  U(       a  [        S5      e[         R                  R                  U5      (       dY  [         R                  R	                  [         R                  R                  U=(       d    [         R                  " 5       U5      5      nON[         R                  R                  U=(       d    [         R                  R                  U 5      [        U SS95      n[         R                  R                  U5      (       d  [         R                  " U5        [        R                  5        H+  nUR                  U 5      (       d  M  UR                  XUS9    g    [        SR                  U [!        [        R#                  5       5      5      5      e)Nzdest_dir and prefix both provided as abs paths.  If providing both, prefix can be abspath, but dest dir must be relative (relative to prefix)Fr4   )
componentsGDidn't recognize extension for file '{}'.  Supported extensions are: {})r   r   isabs
ValueErrornormpathr   getcwdr5   r7   isdirmakedirsr   values	supportedextractformatlistkeys)fndest_dirr;   r   rF   s        r   rE   rE   8   s,   88>>(## 
 xx~~h''xx((v7Mx)XYH88==*chh&&r*(U;

 88>>(##X&--/BNN2JN? 0
 U\\D-2245
 	
r8   c           	        U(       d  [         R                  " 5       n[         R                  R                  U5      (       a>  [         R                  R	                  U5      n[         R                  R                  U5      nUc  [        U 5      nOY[        U[        5      (       aD   [        U5       nUR                  5       nS S S 5        W Vs/ s H  owR                  5       PM     nnS n[        R                  5        H1  n	U	R                  U5      (       d  M   U	R                  " XX#40 UD6n  U$    [)        SR+                  U[-        [        R/                  5       5      5      5      e! , (       d  f       N= fs  snf !   e = f! [          aU  n
[         R                  R#                  X25      n[         R                  R%                  U5      (       a  ['        U5        U
eS n
A
ff = f)Nr<   )r   r@   r   r=   r5   r2   r.   
isinstancestropen	readlinesstripr   rC   rD   createBaseExceptionr   isfile_rm_rfr>   rF   rG   rH   )r   r-   out_fn
out_folderkwr$   datar   outrF   err
abs_out_fns               r   rQ   rQ   W   sw   ZZ\
 xx~~fXX%%f-
""6*"6*		Is	#	#	iA{{} !,01DqDI1 C&--/F##mmFvPRP J% 0 U\\16689
 	
' !1	 !  XX]]:>
88??:..:&	sI   $E> /E( E> E9%E> F(
E62E> >F
G#AGG#c                  ^^^ SS K nSS Km[        U SS9nSSKJn	  U(       d  U SSU < S[
        < S	34$ [        [        R                  R                  X(U-   5      5      n
Sn[        R                  R                  U
5      (       a  U(       a  U(       a:  [        R                  R                  U
5      (       a  [        R                  " U
5        US
:X  aJ  Tc  [        mTc  [        mUUU4S jnS n[        R                  " UR                   R                   U UUUS9nO+[        R                  " UR                   R"                  X5      n U" 5         U	" X5      nUu  nnnU(       d  U(       a  [        [%        UU5      5      nX
U4$ ! [&         aZ  n[        R                  R)                  U
5      (       a  [+        U
5        [-        U[.        5      (       d  e [        U5      n S nANcS nAff = f)Nr   Fr:   r   )(validate_converted_files_match_streaming zInput file z% doesn't have a supported extension (z), skipping itr   c                 $   > T R                  TTS9$ )N)levelthreads)ZstdCompressor)	zstandardzstd_compress_levelzstd_compress_threadss   r   
compressor_convert.<locals>.compressor   s!     //-7L 0  r8   c                    [        U /SS9/ :H  $ )N.)r   )r   )filenames    r   is_info_convert.<locals>.is_info   s    ((C@BFFr8   )rf   rk   )!conda_package_streaming.transmuterc   r7   validater]   r   rM   r   r   r   lexistsunlinkr   r   
_functoolspartial	transmutetransmute_tar_bz2r   rR   rS   rT   rL   	Exception)rI   out_extrV   forcerd   re   rW   conda_package_streamingr2   r]   rU   errorsrf   rk   rs   resultr   missing_filesmismatching_sizeserc   s       ``              @r   _convertr~      s    -+B>HB')
 	
 zg+=>?FF88F##uSXX%%f--JJvh"*&9#$,(=%
G #**'11;;%I #**'11CCRI	K=fIF28/A}/ 1_]<MNO v  	xxv&&va++VF	s   
8F 
G*AG%%G*c                >   U(       d;  [         R                  R                  U 5      =(       d    [         R                  " 5       n[	        [        U 5      5      n[         HD  nU R                  U5      (       d  M  U S [        U5      *  U-   nU[	        [        U5      5      -
  n  O   0 n[        U5       n	[        R                  " [        4XS.UD6n
U	R                  X5       H  u  pnU(       d  M  XU'   [        U5        M      S S S 5        U$ ! , (       d  f       U$ = f)N)rv   rV   )r   r   r5   r@   set_globr   r0   r1   _get_executorrq   rr   r~   maprT   )r3   rv   rV   	processesrW   flistin_extreplacementfailed_filesexecutor	convert_frI   rU   ry   s                 r   rs   rs      s    XX%%g.>#**,
gE&F##!.S[L1G;KCk 233E	 ' L	y	!X&&x^^[]^	"*,,y"@Bv#)R v #A 
"  
"	! s   2:D0D
Dc                    [         R                  5        H,  nUR                  U 5      (       d  M  UR                  U 5      s  $    [	        SU  35      e)zWFor the new pkg format, we return the size and hashes of the inner pkg part of the file Don't know what to do with file )r   rC   rD   get_pkg_detailsr>   )r3   rF   s     r   r   r      sL    &--/G$$))'22 0 7yA
BBr8   c                    [        U=(       d    S5      n[        R                  5        H+  nUR                  U 5      (       d  M  UR	                  XUS9s  $    [        SU  35      e)N)infopkg)verboser;   r   )r
   r   rC   rD   list_contentsr>   )r3   r   r;   rF   s       r   r   r      s`    Z:?;J&--/G$$''Z'XX 0 7yA
BBr8   )T)NNNr   )FNN)Nr   )FN),
__future__r   	functoolsrq   osr   warnings	_warningsr   r   
exceptionsr   r   	interfacer   tarballr	   _CondaTarBZ2utilsr
   r   r   r   r   rT   r   __annotations__libarchive_enabled	conda_fmtr   r   r   _CondaFormat_v2ImportErrorwarnTHREADSAFE_EXTRACTr.   r7   rE   rQ   r~   rs   r   r    r8   r   <module>r      s    "     = ) 0 1 0 "=G<V 9 V 	KE<%4"
  	
>&Z GT*CCW  KNNIJKs   B B('B(