
    tni[                        d dl Z d dlZd dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZ 	 d dlZ[dZn# e$ r dZY nw xY w	 d dlZ[dZn# e$ r dZY nw xY w	 d dlZ[dZn# e$ r dZY nw xY wdZ	 	 ddZde_        d Zdd	d
ZddddZdS )    N)suppress)		ReadError_ensure_directory_get_gid_get_uidcopyfileobjregister_archive_formatregister_unpack_formatunregister_archive_formatunregister_unpack_formatTFgzipc	                    |d}	nbt           r	|dk    rd}	nRt          r	|dk    rd}	nBt          r	|dk    rd}	n2t          r	|dk    rd}	n"t	          d	                    |                    |rd
|	z   nd}
| dz   |
z   }t          j                            |          }|rMt          j        	                    |          s.||
                    d|           |st          j        |           ||
                    d           t                    t                    fd}|sddlm} |                    |d|	z            }|}| t          j                            ||          }	 |                    |||           |                                 n# |                                 w xY w|t          j                            |          }|S )a	  Create a (possibly compressed) tar file from all the files under
    'base_dir'.

    'compress' must be "gzip" (the default), "bzip2", "xz", "zst", or None.

    'owner' and 'group' can be used to define an owner and a group for the
    archive that is being built. If not provided, the current owner and group
    will be used.

    The output tar file will be named 'base_name' +  ".tar", possibly plus
    the appropriate compression extension (".gz", ".bz2", ".xz", or ".zst").

    Returns the output filename.
    N r   gzbzip2bz2xzzstzCbad value for 'compress', or compression format not supported : {0}.z.tarzcreating %szCreating tar archivec                 H    | _         | _        | _        | _        | S )N)gidgnameuiduname)tarinfor   groupownerr   s    S/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/backports/zstd/_shutil.py_set_uid_gidz#_make_tarball.<locals>._set_uid_gidW   s.    ?GK!GM?GK!GM    r   tarfilezw|%sfilter)_ZLIB_SUPPORTED_BZ2_SUPPORTED_LZMA_SUPPORTED_ZSTD_SUPPORTED
ValueErrorformatospathdirnameexistsinfomakedirsr   r   backports.zstdr"   openjoinaddcloseabspath)	base_namebase_dircompressverbosedry_runr   r   loggerroot_dirtar_compressioncompress_extarchive_namearchive_dirr   r"   tararcnamer   r   s        ``          @@r   _make_tarballrD   (   s.     	 
=X//	 =H//	 =X--	 =X.. ++16(+;+;= = 	= -5<3(("Lv%4L'//,//K %27>>+66 %KK{333 	%K$$$ *+++
5//C
5//C         
******ll</)ABBw||Hh77H	GGHglG;;;IIKKKKCIIKKKKw|44s   .F F1c                    ddl m} |                    |           st          d| z            |                    |           }	 |                                D ]}|j        }|                    d          sd|v r#t          j	        j
        |g|                    d          R  }|sPt          |           |                    d          sf|                    |d          5 }t          |d          5 }t          ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   	 |                                 dS # |                                 w xY w)	z+Unpack zip `filename` to `extract_dir`
    r   )zipfilez%s is not a zip file/z..rwbN)r1   rF   
is_zipfiler   ZipFileinfolistfilename
startswithr+   r,   r3   splitr   endswithr2   r   r5   )	rM   extract_dirrF   zipr/   name
targetpathsourcetargets	            r   _unpack_zipfilerW   r   s    '&&&&&h'' ;.9:::
//(
#
#CLLNN 	0 	0D=D s## tt||kDDJJsOODDDJ j)))==%% 0XXdC(( 0FZ..028///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0$ 					sU   BE
 "D'3DD'DD'DD'E
 'D+	+E
 .D+	/E
 
E r#   c                
   ddl m} 	 |                    |           }n # |j        $ r t	          d| z            w xY w	 |                    ||           |                                 dS # |                                 w xY w)zIUnpack tar/tar.gz/tar.bz2/tar.xz/tar.zst `filename` to `extract_dir`
    r   r!   z/%s is not a compressed or uncompressed tar filer#   N)r1   r"   r2   TarErrorr   
extractallr5   )rM   rQ   r$   r"   tarobjs        r   _unpack_tarfiler\      s     '&&&&&Jh'' J J J=HJ J 	JJ+f555s    ;A, ,B)rB   rR   c                    | rd}d}t          t                    5  t          |           ddd           n# 1 swxY w Y   t          t                    5  t          |           ddd           n# 1 swxY w Y   t	          |t
          dg|           t          |ddgt          g |           |rZd}d}t          t                    5  t          |           ddd           n# 1 swxY w Y   t          |d	gt          g |           dS dS )
a  Register support for Zstandard in shutil's archiving operations.

    tar
        Register support for zstdtar archive format and .tar.zst/.tzst unpacking extensions.
        Defaults to True.
    zip
        Register support for .zip unpacking extension.
        Defaults to True.
    zstdtarzzstd'ed tar-fileN)r9   r   z.tar.zstz.tzstrR   zZIP filez.zip)	r   KeyErrorr   r   r	   rD   r
   r\   rW   )rB   rR   rS   descriptions       r   register_shutilra      s     ^(h 	, 	,%d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,h 	+ 	+$T***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+m6I5JKXXXtj'%:ORQ\]]]
 Q h 	+ 	+$T***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+tfXKPPPPPQ Qs0   7;;A22A69A6	C%%C),C))r   r   r   NNNN)r+   shutil
contextlibr   r   r   r   r   r   r	   r
   r   r   zlibr%   ImportErrorr   r&   lzmar'   r(   rD   supports_root_dirrW   r\   ra    r    r   <module>ri      s   				       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
KKKOO   OOOJJJNN   NNNKKKOO   OOO  LM@DF F F FP #'   < 6:     "  T Q Q Q Q Q Q Qs/   . 88A AAA A$#A$