
    I0fO                         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y)    N   )	streamingutils)AbstractBaseFormatc                 |     dt         j                  j                  z    fd}t        t	        ||            }|S )z*Sort by filesize, to optimize compression?infoc                    t        j                  t         j                  j                  |             j                  xs d}t        | j                               }|rt         j                  j                  |       \  }}t        j                  dd|      }|s2dt        t         j                  j                  |             dz  z   }||fS 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.12/site-packages/conda_package_handling/tarball.pyorderz_sort_file_order.<locals>.order   s    fa0199CVQ\\*556
WW%%a(FAs&&-vs;Cbggooa&8!9U!CC
 5   T#Y5!99
5      )key)r
   r   seplistsorted)r   filesr   
files_listr   s   `   @r   _sort_file_orderr'      s3    "''++%J!  fU./Jr    c                     t        j                  | d      5 }|D ]#  }|j                  |t        j                         % 	 d d d        y # 1 sw Y   y xY w)Nzw:bz2)filter)tarfileopenaddr   anonymize_tarinfo)fullpathr%   tr   s       r   _create_no_libarchiver0   %   sL    	h	( 5A 	5AEE!E33E4	55 5 5s   )A

Ac                     t         j                  j                  ||      }t        | |      }||z   }t	        j
                  |       5  t        ||       d d d        |S # 1 sw Y   |S xY w)N)r
   r   r   r'   r   	tmp_chdirr0   )	r   r%   tmpdirbasenamer   compression_filterfilter_optstmp_pathr.   s	            r   create_compressed_tarballr8   +   s_     ww||FH-HVU+E
 #~H		  /h./O/Os   AA(c                   n    e Zd Zed        Zed        Ze ej                         fd       Zed        Z	y)CondaTarBZ2c                 $    | j                  d      S )N.tar.bz2)endswith)fns    r   	supportedzCondaTarBZ2.supported;   s    {{:&&r    c                    t         j                  j                  |      st        j                  |       t         j                  j	                  |       sOt         j                  j                  t         j                  j                  t        j                         |             } t        j                  t        |       t        |      dg       y )Npkg)
components)r
   r   isdirmakedirsisabsnormpathr   getcwdr   _extractstr)r>   dest_dirkws      r   extractzCondaTarBZ2.extract?   ss    ww}}X&KK!ww}}R !!"'',,ryy{B"?@B3r7CMugFr    c           	          t         j                  j                  |      rt         j                  j                  |      }t	        | ||t         j                  j                  |      j                  dd      dd      }|S )Nr<    bzip2)r
   r   rE   r   r8   r4   replace)r   	file_listout_fn
out_folderrK   out_files         r   createzCondaTarBZ2.createH   sc    77== 0J,GGV$,,Z<
 r    c                     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=    ggg&""oog/@AVSF;;r    N)
__name__
__module____qualname__staticmethodr?   rL   r
   rG   rU   r^    r    r   r:   r:   :   s]    ' ' G G 5>RYY[   < <r    r:   )rN   )loggingr
   r   r*   rN   r   r   	interfacer   	getLogger__file__LOGr'   r0   r8   r:   rc   r    r   <module>ri      sL     	 	   )g!25 KM!<$ !<r    