
    d\                    <   U d dl mZ d dlZd dlZd dlZd dlmZ	 ddl
mZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ deiZded<   dZ	 ddlmZmZ ddlmZ eed<   dZn# e $ r  ej!        d           Y nw xY wdZ"d Z#ddZ$ddZ%ddZ&	 	 	 ddZ'ddZ(d Z)dS )     )annotationsN)glob   )ConversionErrorInvalidArchiveError)AbstractBaseFormat)CondaTarBZ2filter_info_files)get_executor)rm_rf.tar.bz2z#dict[str, type[AbstractBaseFormat]]SUPPORTED_EXTENSIONSF)ZSTD_COMPRESS_LEVELZSTD_COMPRESS_THREADS)CondaFormat_v2.condaTz4Install zstandard Python bindings for .conda supportc           
     ^    g g c}t          j                   D ]~\  }}|D ]S}                    t           j                            t           j                            |                                T|                     fd|D                        fd|D             z   }|S )Nc              3     K   | ]B}t           j                            t           j                            |                    V  Cd S N)_ospathrelpathjoin).0_dpprefixs     :lib/python3.11/site-packages/conda_package_handling/api.py	<genexpr>z!_collect_paths.<locals>.<genexpr>'   sE      TTA))#(--A*>*>GGTTTTTT    c                L    g | ]t          fd D                        S )c              3  \   K   | ]&}|                     t          j        z             V  'd S r   )
startswithr   sep)r   fr   s     r   r    z,_collect_paths.<locals>.<listcomp>.<genexpr>)   s5      )Y)Y!,,rCG|*D*D)Y)Y)Y)Y)Y)Yr!   )any)r   r   
file_pathss    @r   
<listcomp>z"_collect_paths.<locals>.<listcomp>(   sL       c)Y)Y)Y)Yj)Y)Y)Y&Y&Y
  r!   )r   walkappendr   r   r   extend)r   	dir_pathsdn	filenamesr&   	file_listr   r(   s   `     @@r   _collect_pathsr1   "   s    Iz Xf-- U UB	 	N 	NAch..sx}}R/C/CVLLMMMMTTTTTQSTTTTTTT       I r!   c                    d }t           D ]/}|                     |          r| d t          |                    }0|r!|st          j                            |          }|S r   )r   endswithlenr   r   basename)in_fileabspathdirnameexts       r   get_default_extracted_folderr:   .   sl    G# + +C   	+kS	k*G -w -(##G,,Nr!   c           	     n   |rt           j                            |          r|rt          d          t           j                            |          sPt           j                            t           j                            |pt          j                    |                    }nNt           j                            |pt           j                            |           t          | d                    }t           j        	                    |          st          j
        |           t                                          D ]2}|                    |           r|                    | ||            d S 3t          d                    | t!          t                                                                        )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r7   )
componentsGDidn't recognize extension for file '{}'.  Supported extensions are: {})r   r   isabs
ValueErrornormpathr   getcwdr8   r:   isdirmakedirsr   values	supportedextractformatlistkeys)fndest_dirr=   r   rH   s        r   rG   rG   8   s    
8>>(## 	 	  
 x~~h'' 	Zx((v7Mx)X)XYYH8==*ch&&r**(U;;;
 

 8>>(## X&--// 	
 	
B 	NN2xJN???EE	 U\\D-224455 
 
 	
r!   c           	        |st          j                    }t           j                            |          r>t           j                            |          }t           j                            |          }|t          |           }ndt          |t                    rO	 t          |          5 }|
                                }d d d            n# 1 swxY w Y   d |D             }n#   xY wd }t                                          D ]}|                    |          rv	  |j        | |||fi |} n# t          $ rU}	t           j                            ||          }
t           j                            |
          rt%          |
           |	d }	~	ww xY wt'          d                    |t+          t                                                                        |S )Nc                6    g | ]}|                                 S  )strip)r   r   s     r   r)   zcreate.<locals>.<listcomp>f   s     111q111r!   r>   )r   rB   r   r?   r8   r5   r1   
isinstancestropen	readlinesr   rE   rF   createBaseExceptionr   isfile_rm_rfr@   rH   rI   rJ   )r   r0   out_fn
out_folderkwr&   dataoutrH   err
abs_out_fns              r   rU   rU   W   s    "Z\\
 x~~f +X%%f--
""6**"6**			Is	#	# 	i %A{{}}% % % % % % % % % % % % % % %11D111II	
C&--// 
 
F## 		#fmFIvzPPRPP     X]]:v>>
8??:.. ':&&&				 U\\1668899 
 
 	
 JsI   C# *C?C# CC# CC# #C&D//
F9AF		Fc                   dd l }dd lt          | d          }ddlm}	 |s| dd| dt
          d	fS t          t          j        	                    |||z                       }
d}t          j        
                    |
          r|rD|r3t          j        
                    |
          rt          j        |
           |d
k    r@t          t          fd}d }t          j        |j        j        | |||          }n t          j        |j        j        | |          }	  |              |	|
|           }|\  }}}|s|rt          t%          ||                    }nj# t&          $ r]}t          j                            |
          rt+          |
           t-          |t.                    s t          |          }Y d }~nd }~ww xY w| |
|fS )Nr   Fr<   r   )(validate_converted_files_match_streaming zInput file z% doesn't have a supported extension (z), skipping itr   c                 2                                    S )N)levelthreads)ZstdCompressor)	zstandardzstd_compress_levelzstd_compress_threadss   r   
compressorz_convert.<locals>.compressor   s&     //-7L 0   r!   c                .    t          | gd          g k    S )N.)r   r
   )filenames    r   is_infoz_convert.<locals>.is_info   s    ((C@@@BFFr!   )rj   rn   )!conda_package_streaming.transmuterg   r:   validatera   r   rR   r   r   r   lexistsunlinkr   r   
_functoolspartial	transmutetransmute_tar_bz2r   rV   rW   rX   rQ   	Exception)rK   out_extrZ   forcerh   ri   r[   conda_package_streamingr5   ra   rY   errorsrj   rn   ru   resultr   missing_filesmismatching_sizeserg   s       ``              @r   _convertr      se    -,,,+B>>>HBBBBBB 
Brr''')
 	
 z8g+=>>??FF8F## ,u , 	SX%%f-- 	Jvh"*&9#$,(=%      
G G G #*'1;%  II #*'1CR I	IKKK==fbIIF28/A}/ P 1 P_]<MNNOO 	 	 	xv&& va++ VVFFFFFF	 vvs   &=E$ $
G.AGGc           	        |s2t           j                            |           pt          j                    }t	          t          |                     }|                     d          r4|t	          t          |                     d|                              z
  }nH|                     d          r3|t	          t          |                     d|                              z
  }i }t          |          5 }t          j
        t          f||d|}|                    ||          D ]\  }	}
}|r|||	<   t          |
           	 d d d            n# 1 swxY w Y   |S )Nr   r   )rx   rZ   )r   r   r8   rB   set_globr3   replace_get_executorrs   rt   r   maprX   )r6   rx   rZ   	processesr[   flistfailed_filesexecutor	convert_frK   rY   r{   s               r   ru   ru      s    ?X%%g..>#*,,
gE
## GE'//*g"F"FGGHHH			(	#	# GE'//(G"D"DEEFFFL	y	!	! X&x^Z^^[]^^	"*,,y%"@"@ 	 	B #)R v	               s   3AEEEc                    t                                           D ].}|                    |           r|                    |           } n/t	          d|            |S )zWFor the new pkg format, we return the size and hashes of the inner pkg part of the filez Don't know what to do with file )r   rE   rF   get_pkg_detailsr@   )r6   rH   detailss      r   r   r      sp    &--// G GG$$ 	,,W55GE	 EGEEFFFNr!   )T)NNNr   )FNN)Nr   )*
__future__r   	functoolsrs   osr   warnings	_warningsr   r   
exceptionsr   r   	interfacer   tarballr	   _CondaTarBZ2utilsr   r   r   r   rX   r   __annotations__libarchive_enabled	conda_fmtr   r   r   _CondaFormat_v2ImportErrorwarnTHREADSAFE_EXTRACTr1   r:   rG   rU   r   ru   r   rO   r!   r   <module>r      s   " " " " " " "                   = < < < < < < < ) ) ) ) ) ) 0 0 0 0 0 0 $ $ $ $ $ $ 0 0 0 0 0 0 " " " " " "=G<V  V V V V 	KEEEEEEEE<<<<<<%4" K K KINIJJJJJK  	 	 	   
 
 
 
>& & & &Z G G G GT   (    s   A" "A:9A: