
    2g                         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   %   s>    	h	(AAEE!E33E4  
)	(	(s   )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_tarballr9   +   sZ     ww||FH-HVU+E
 #~H		 h. 
!O 
!Os   AA(c                   `    e Zd Zed        Zed        Zedd       Zed        Zed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    Nc           	      (   |t        j                         }t         j                  j                  |      rt         j                  j	                  |      }t        | ||t         j                  j                  |      j                  dd      dd      }|S )Nr=    bzip2)r
   rH   r   rF   r   r9   r5   replace)r   	file_listout_fn
out_folderrL   out_files         r   createzCondaTarBZ2.createH   st    J77== 0J,GGV$,,Z<
 r    c                     t        j                  |       }|j                  }t        j                  | d      \  }}|||dS )N)md5sha256)sizerX   rY   )r
   statr   r   	checksums)in_filestat_resultrZ   rX   rY   s        r   get_pkg_detailszCondaTarBZ2.get_pkg_detailsX   s=    ggg&""oog/@AVSF;;r    c                     d| v rt        d      t        j                  j                  |       st        j                  j	                  |       } t        j                  t        |       dg|       y )Nz://z2Remote .tar.bz2 artifact listing is not supported.rB   )rC   verbose)
ValueErrorr
   r   rF   abspathr   _listrJ   )r?   ra   rL   s      r   list_contentszCondaTarBZ2.list_contents_   sM    B;QRRww}}R $BBUGWEr    r2   )F)	__name__
__module____qualname__staticmethodr@   rM   rV   r_   re    r    r   r;   r;   :   sh    ' ' G G   < < F Fr    r;   )rO   )loggingr
   r   r*   rO   r   r   	interfacer   	getLoggerrf   LOGr'   r0   r9   r;   rj   r    r   <module>ro      sN     	 	   )g!25 KM+F$ +Fr    