
    dO                         d dl Z d dlZd dlZd dlZddlmZmZ ddlmZ  e j	        e
          Zd Zd Z	 ddZ G d	 d
e          ZdS )    N   )	streamingutils)AbstractBaseFormatc                 z     dt           j        j        z    fd}t          t	          ||                    }|S )z*Sort by filesize, to optimize compression?infoc                    t          j        t           j                            |                     j        pd}t          |                                          }|rt           j                            |           \  }}t          j	        dd|          }|s3dt          t           j                            |                     dz  z   }n"dt          t          |                    dz  z   }||fS )Ni z(\.dylib|\.so).*$z.sor   i )oslstatpathjoinst_sizeint
startswithsplitextresubhashdirnameabs)ffsize
info_order_ext
info_slashprefixs        >lib/python3.11/site-packages/conda_package_handling/tarball.pyorderz_sort_file_order.<locals>.order   s    fa00119CVQ\\*55566
 	:W%%a((FAs&-vs;;C :bgooa&8&8!9!9U!CC

T#YY5!99
5      )key)r
   r   seplistsorted)r   filesr   
files_listr   s   `   @r   _sort_file_orderr'      sR    "'+%J! ! ! ! ! !  fU...//Jr    c                     t          j        | d          5 }|D ]#}|                    |t          j                   $	 d d d            d S # 1 swxY w Y   d S )Nzw:bz2)filter)tarfileopenaddr   anonymize_tarinfo)fullpathr%   tr   s       r   _create_no_libarchiver0   %   s    	h	(	( 5A 	5 	5AEE!E3E4444	55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   'AAA c                     t           j                            ||          }t          | |          }||z   }t	          j        |           5  t          ||           d d d            n# 1 swxY w Y   |S )N)r
   r   r   r'   r   	tmp_chdirr0   )	r   r%   tmpdirbasenamer   compression_filterfilter_optstmp_pathr.   s	            r   create_compressed_tarballr9   +   s     w||FH--HVU++E
 #~H		 	  / /h.../ / / / / / / / / / / / / / /Os   
A''A+.A+c                       e Zd Zed             Zed             Ze ej                    fd            Zed             Z	dS )CondaTarBZ2c                 ,    |                      d          S )N.tar.bz2)endswith)fns    r   	supportedzCondaTarBZ2.supported;   s    {{:&&&r    c                    t           j                            |          st          j        |           t           j                            |           sNt           j                            t           j                            t          j                    |                     } t          j	        t          |           t          |          dg           d S )Npkg)
components)r
   r   isdirmakedirsisabsnormpathr   getcwdr   _extractstr)r?   dest_dirkws      r   extractzCondaTarBZ2.extract?   s    w}}X&& 	"K!!!w}}R   	A!!"',,ry{{B"?"?@@B3r77CMMugFFFFFFr    c           	         t           j                            |          rt           j                            |          }t	          | ||t           j                            |                              dd          dd          }|S )Nr=   r1   bzip2)r
   r   rF   r   r9   r5   replace)r   	file_listout_fn
out_folderrL   out_files         r   createzCondaTarBZ2.createH   ss    7==   	100J,GV$$,,Z<<
 
 r    c                 t    t          j        |           }|j        }t          j        | d          \  }}|||dS )N)md5sha256)sizerW   rX   )r
   statr   r   	checksums)in_filestat_resultrY   rW   rX   s        r   get_pkg_detailszCondaTarBZ2.get_pkg_detailsV   s?    gg&&"og/@AAVSF;;;r    N)
__name__
__module____qualname__staticmethodr@   rM   r
   rH   rU   r^    r    r   r;   r;   :   s        ' ' \' G G \G 5>RY[[    \ < < \< < <r    r;   )r1   )loggingr
   r   r*   r1   r   r   	interfacer   	getLogger__file__LOGr'   r0   r9   r;   rc   r    r   <module>ri      s     				 				          ) ) ) ) ) )g!!  25 5 5 KM   !< !< !< !< !<$ !< !< !< !< !<r    