Edit File: tarfile.cpython-38.opt-2.pyc
U ����@��d9����������������������@���s��d�Z�dZdZddlmZ�ddlZddlZddlZddl Z ddl Z ddlZddlZddl Z ddlZddlZzddlZW�n�ek r����dZY�nX�zddlZW�n�ek r����dZY�nX�eefZzeef7�ZW�n�ek r����Y�nX�dddd d ddd dddddddgZdZdZed�ZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d Z&d!Z'd"Z(d#Z)d$Z*d%Z+d&Z,d'Z-d(Z.d)Z/dZ0d*Z1d+Z2e2Z3e!e"e#e$e'e(e)e%e&e*e+e,fZ4e!e"e)e,fZ5e*e+e,fZ6d,Z7d-d.d/d0hZ8e9e9e9e:e:e:d1�Z;ej<d2k�r�d3Z=ne�>��Z=d4d5��Z?d6d7��Z@d8d9��ZAd:e3fd;d<�ZBd=d>��ZCdedfd?d@�ZDdAdB��ZEG�dCd ��d eF�ZGG�dDd ��d eG�ZHG�dEd ��d eG�ZIG�dFd��deG�ZJG�dGd��deG�ZKG�dHd��deG�ZLG�dIdJ��dJeL�ZMG�dKdL��dLeL�ZNG�dMdN��dNeL�ZOG�dOdP��dPeL�ZPG�dQdR��dReL�ZQG�dSdT��dT�ZRG�dUdV��dV�ZSG�dWdX��dXeT�ZUG�dYdZ��dZeT�ZVG�d[d\��d\ejW�ZXG�d]d^��d^eG�ZYG�d_d`��d`eY�ZZG�dadb��dbeY�Z[G�dcdd��ddeY�Z\G�dedf��dfeY�Z]G�dgdh��dheY�Z^dydjdk�Z_dldm��Z`dndo��Zadpdq��Zbe`eaebdr�ZceT��ZdG�dsd��deT�ZeG�dtd��deT�Zfdud��ZgefjZdvdw��Zheidxk�r�eh���dS�)zz0.9.0u"���Lars Gustäbel (lars@gustaebel.de)u4���Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.�����)�openN�TarFile�TarInfo� is_tarfile�TarError� ReadError�CompressionError�StreamError�ExtractError�HeaderError�ENCODING�USTAR_FORMAT� GNU_FORMAT� PAX_FORMAT�DEFAULT_FORMATr��������i�������s���ustar �s���ustar�00�d�����������0����1����2����3����4����5����6����7����L����K����S����x����g����X��������)�path�linkpath�size�mtime�uid�gid�uname�gnamer%���r&���r+���r,���)Zatime�ctimer(���r)���r*���r'����nt�utf-8c�����������������C���s8���|�d�krt�d��|��||�}�|�d�|��|t|���t��S�)Nzmetadata cannot contain None)� ValueError�encode�len�NUL)�s�length�encoding�errors��r8����,/opt/alt/python38/lib64/python3.8/tarfile.py�stn����s����r:���c�����������������C���s*���|���d�}|dkr|�d�|��}�|��||�S�)Nr������)�find�decode)r4���r6���r7����pr8���r8���r9����nts����s���� r?���c�����������������C���s����|�d�dkrbd}t�t|��d��D�]}|dK�}||�|d��7�}q |�d�dkr�dt|��d��|��}n@z"t|�dd�}�t|����p|d d�}W�n�tk r����td ��Y�nX�|S�)Nr���)��������r#�������rA��������ascii�strict�0�invalid header)�ranger2���r?����int�stripr0����InvalidHeaderError)r4����n�ir8���r8���r9����nti����s����rN���rB���c�����������������C���s����t�|��}�d|���kr$d|d��k�rDn�ntd|d�|�f�d�t�}n�|tkr�d|d���|���krrd|d��k�r�n�nV|�dkr�tdg�}ntdg�}d|�|��}�t|d��D�]}|�d|�d@���|�dL�}�q�ntd ��|S�) Nr���rB���r#���z%0*orD���rC���r@���rA���zoverflow in number field)rI����bytesr3���r���� bytearrayrH����insertr0���)rL����digits�formatr4���rM���r8���r8���r9����itn����s���� 2 rT���c�����������������C���s0���dt�t�d|����}dt�t�d|����}||fS�)NrC���Z 148B8x356BZ 148b8x356b)�sum�structZunpack_from)�bufZunsigned_chksumZ signed_chksumr8���r8���r9����calc_chksums����s���� rX���c����������� ������C���s����|pd}|dkrd�S�|d�kr.t��|�||��d�S�t||�\}}t|�D�],}|��|�}t|�|k�rf|d��|�|��qD|dkr�|��|�}t|�|k�r�|d��|�|��d�S�)Ni�@��r����unexpected end of data)�shutil�copyfileobj�divmodrH����readr2����write) �srcZdstr5���� exception�bufsize�blocks� remainder�brW���r8���r8���r9���r[�������s$���� r[���c�����������������C���s8���t�tjdd��}|d�k r(|��|d��|�}�t|�dd��d�S�)Nr6����backslashreplace� )�end)�getattr�sys�stdoutr1���r=����print)r4���r6���r8���r8���r9����_safe_print��s����rl���c�������������������@���s���e�Zd�ZdS�)r���N��__name__� __module__�__qualname__r8���r8���r8���r9���r�����s���c�������������������@���s���e�Zd�ZdS�)r ���Nrm���r8���r8���r8���r9���r �����s���c�������������������@���s���e�Zd�ZdS�)r���Nrm���r8���r8���r8���r9���r�����s���c�������������������@���s���e�Zd�ZdS�)r���Nrm���r8���r8���r8���r9���r�����s���c�������������������@���s���e�Zd�ZdS�)r ���Nrm���r8���r8���r8���r9���r �����s���c�������������������@���s���e�Zd�ZdS�)r���Nrm���r8���r8���r8���r9���r�����s���c�������������������@���s���e�Zd�ZdS�)�EmptyHeaderErrorNrm���r8���r8���r8���r9���rq��� ��s���rq���c�������������������@���s���e�Zd�ZdS�)�TruncatedHeaderErrorNrm���r8���r8���r8���r9���rr���#��s���rr���c�������������������@���s���e�Zd�ZdS�)�EOFHeaderErrorNrm���r8���r8���r8���r9���rs���&��s���rs���c�������������������@���s���e�Zd�ZdS�)rK���Nrm���r8���r8���r8���r9���rK���)��s���rK���c�������������������@���s���e�Zd�ZdS�)�SubsequentHeaderErrorNrm���r8���r8���r8���r9���rt���,��s���rt���c�������������������@���s,���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd S�) � _LowLevelFilec�����������������C���sF���t�jt�jt�jB�t�jB�d�|�}tt�d�r2|t�jO�}t��||d�|�_d�S�)N��r�w�O_BINARYi���) �os�O_RDONLY�O_WRONLY�O_CREAT�O_TRUNC�hasattrry���r����fd)�self�name�moder8���r8���r9����__init__9��s������ z_LowLevelFile.__init__c�����������������C���s���t��|�j��d�S��N)rz����closer�����r����r8���r8���r9���r����B��s����z_LowLevelFile.closec�����������������C���s���t��|�j|�S�r����)rz���r]���r�����r����r'���r8���r8���r9���r]���E��s����z_LowLevelFile.readc�����������������C���s���t��|�j|��d�S�r����)rz���r^���r�����r����r4���r8���r8���r9���r^���H��s����z_LowLevelFile.writeN)rn���ro���rp���r����r����r]���r^���r8���r8���r8���r9���ru���3��s��� ru���c�������������������@���sn���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z ddd�Zdd��Zdd��Z dd��ZdS�)�_Streamc����������� ������C���s���d|�_�|d�krt||�}d|�_�|dkr6t|�}|���}|p<d|�_||�_||�_||�_||�_d|�_ d|�_ d|�_�zL|dkr�zdd�l}W�n�t k r����td��Y�nX�||�_|�d�|�_|d kr�|�����|j|�_n|�����n�|d k�r:zdd�l}W�n�t k �r ���td��Y�nX�|d k�r.d|�_|���|�_t|�_n |���|�_n||dk�r�zdd�l}W�n�t k �rn���td ��Y�nX�|d k�r�d|�_|���|�_|j|�_n |���|�_n|dk�r�td|���W�n&���|�j��s�|�j����d|�_��Y�nX�d�S�)NTF�*�������r����gzzzlib module is not availablerw����bz2�bz2 module is not available�xz�lzma module is not available�tar�unknown compression type %r) �_extfileobjru����_StreamProxy�getcomptyper����r�����comptype�fileobjra���rW����pos�closed�zlib�ImportErrorr����crc32�crc� _init_read_gz�errorr`����_init_write_gzr�����dbufZBZ2Decompressor�cmp�OSErrorZ BZ2Compressor�lzmaZLZMADecompressor� LZMAErrorZLZMACompressorr����) r����r����r����r����r����ra���r����r����r����r8���r8���r9���r����V��sl���� z_Stream.__init__c�����������������C���s���t�|�d�r|�js|�����d�S�)Nr����)r���r����r����r����r8���r8���r9����__del__���s����z_Stream.__del__c�����������������C���s����|�j��d|�j�j|�j�j�|�j�jd�|�_t�dtt � ����}|�� d|�d���|�j�d�rf|�jd�d��|�_t j�|�j�|�_|�� |�j�dd �t���d�S�) N� ���r����<Ls����s�����.gz���z iso-8859-1�replace)r����ZcompressobjZDEFLATED� MAX_WBITSZ DEF_MEM_LEVELr����rV����packrI����time�_Stream__writer�����endswithrz���r%����basenamer1���r3���)r����Z timestampr8���r8���r9���r�������s�����z_Stream._init_write_gzc�����������������C���sR���|�j�dkr|�j�||�j�|�_|��jt|�7��_|�j�dkrD|�j�|�}|��|��d�S�)Nr����r����) r����r����r����r����r����r2���r�����compressr����r����r8���r8���r9���r^������s���� z _Stream.writec�����������������C���sN���|��j�|7��_�t|�j��|�jkrJ|�j�|�j�d�|�j����|�j�|�jd���|�_�qd�S�r����)rW���r2���ra���r����r^���r����r8���r8���r9���Z__write���s����z_Stream.__writec�����������������C���s����|�j�r d�S�d|�_�z�|�jdkr:|�jdkr:|��j|�j���7��_|�jdkr�|�jr�|�j� |�j��d|�_|�jdkr�|�j� t �d|�j���|�j� t �d|�j d@����W�5�|�js�|�j����X�d�S�)NTrx���r����r����r����r����l������)r����r����r����r����r����r����rW���r�����flushr^���rV���r����r����r����r����r8���r8���r9���r�������s���� z _Stream.closec�����������������C���s����|�j��|�j�j��|�_d|�_|��d�dkr0td��|��d�dkrFtd��t|��d��}|��d��|d @�r�t|��d��d t|��d����}|�� |��|d@�r�|��d�}|r�|t kr�q�q�|d@�r�|��d�}|r�|t kr�q�q�|d@�r�|��d��d�S�) Nr����r$���s�����not a gzip filer#�������zunsupported compression method��������rC���rB�������)r����Z decompressobjr����r����r����� _Stream__readr���r����ordr]���r3���)r�����flagZxlenr4���r8���r8���r9���r�������s*���� z_Stream._init_read_gzc�����������������C���s���|�j�S�r����)r����r����r8���r8���r9����tell���s����z_Stream.tellr���c�����������������C���sX���||�j��dkrJt||�j��|�j�\}}t|�D�]}|��|�j��q,|��|��ntd��|�j�S�)Nr���z seeking backwards is not allowed)r����r\���ra���rH���r]���r ���)r����r����rb���rc���rM���r8���r8���r9����seek���s����z_Stream.seekc�����������������C���s ���|���|�}|��jt|�7��_|S�r����)�_readr����r2���)r����r'���rW���r8���r8���r9���r]��� ��s���� z_Stream.readc�����������������C���s����|�j�dkr|��|�S�t|�j�}|�jg}||k�r�|�jrB|�j}d|�_n|�j�|�j�}|sVq�z|�j� |�}W�n�|�j k r����td��Y�nX�|�|��|t|�7�}q&d� |�}||d���|�_|d�|��S�)Nr����r����zinvalid compressed data)r����r����r2���r����rW���r����r]���ra���r����� decompressr`���r����append�join�r����r'����c�trW���r8���r8���r9���r������s(���� z _Stream._readc�����������������C���sj���t�|�j�}|�jg}||k�rF|�j�|�j�}|s.qF|�|��|t�|�7�}qd�|�}||d���|�_|d�|��S�)Nr����)r2���rW���r����r]���ra���r����r����r����r8���r8���r9���Z__read,��s���� z_Stream.__readN)r���)rn���ro���rp���r����r����r����r^���r����r����r����r����r����r]���r����r����r8���r8���r8���r9���r����K��s���F r����c�������������������@���s,���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd S�) r����c�����������������C���s���||�_�|�j��t�|�_d�S�r����)r����r]���� BLOCKSIZErW���)r����r����r8���r8���r9���r����B��s����z_StreamProxy.__init__c�����������������C���s���|�j�j|�_|�jS�r����)r����r]���rW���r����r8���r8���r9���r]���F��s���� z_StreamProxy.readc�����������������C���sP���|�j��d�rdS�|�j�dd��dkr8|�j�dd��dkr8d S�|�j��d �rHdS�dS�d�S�) Ns����r����r�������s���BZhr����� ���s���1AY&SYr����)s���]���s����7zXZr����r����)rW���� startswithr����r8���r8���r9���r����J��s����$z_StreamProxy.getcomptypec�����������������C���s���|�j�����d�S�r����)r����r����r����r8���r8���r9���r����T��s����z_StreamProxy.closeN)rn���ro���rp���r����r]���r����r����r8���r8���r8���r9���r����=��s��� r����c�������������������@���sf���e�Zd�Zddd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Ze j fdd�Zddd�Zdd��Z dd��ZdS�)�_FileInFileNc�����������������C���s����||�_�||�_||�_d|�_t|dd��|�_d|�_|d�kr>d|fg}d|�_g�|�_d}|�j}|D�]L\}}||kr||�j� d||d�f��|�j� d|||�|f��||7�}||�}qX||�jk�r�|�j� d||�jd�f��d�S�)Nr���r����FT) r�����offsetr'����positionrh���r����r����� map_index�mapr����)r����r����r����r'���Z blockinfoZlastposZrealposr8���r8���r9���r����a��s(���� z_FileInFile.__init__c�����������������C���s���d�S�r����r8���r����r8���r8���r9���r����z��s����z_FileInFile.flushc�����������������C���s���dS��NTr8���r����r8���r8���r9����readable}��s����z_FileInFile.readablec�����������������C���s���dS�)NFr8���r����r8���r8���r9����writable���s����z_FileInFile.writablec�����������������C���s ���|�j����S�r����)r�����seekabler����r8���r8���r9���r�������s����z_FileInFile.seekablec�����������������C���s���|�j�S�r����)r����r����r8���r8���r9���r�������s����z_FileInFile.tellc�����������������C���s����|t�jkr tt|d�|�j�|�_nj|t�jkr\|dk�rFt|�j|�d�|�_q�t|�j|�|�j�|�_n.|t�jkr�tt|�j|�|�j�d�|�_ntd��|�jS�)Nr���zInvalid argument) �io�SEEK_SET�min�maxr'���r�����SEEK_CUR�SEEK_ENDr0���)r����r�����whencer8���r8���r9���r�������s���� z_FileInFile.seekc����������� ������C���s ��|d�kr|�j�|�j�}nt||�j�|�j��}d}|dk�r|�j|�j�\}}}}||�j��kr`|k�rhq��nq�q6|��jd7��_|�jt|�j�kr6d|�_q6t|||�j��}|r�|�j�||�j|����|�j�|�}t|�|kr�t d��||7�}n|t |�7�}||8�}|��j|7��_q,|S�)Nr����r���r#���rY���)r'���r����r����r����r����r2���r����r����r]���r���r3���) r����r'���rW����data�start�stopr����r5���rd���r8���r8���r9���r]������s,���� z_FileInFile.readc�����������������C���s&���|���t|��}||d�t|��<�t|�S�r����)r]���r2���)r����rd���rW���r8���r8���r9����readinto���s����z_FileInFile.readintoc�����������������C���s ���d|�_�d�S�r����)r����r����r8���r8���r9���r�������s����z_FileInFile.close)N)N)rn���ro���rp���r����r����r����r����r����r����r����r����r����r]���r����r����r8���r8���r8���r9���r����[��s��� r����c�����������������������s���e�Zd�Z��fdd�Z���ZS�)�ExFileObjectc��������������������s&���t�|j|j|j|j�}t���|��d�S�r����)r����r�����offset_datar'����sparse�superr����)r�����tarfile�tarinfor������ __class__r8���r9���r�������s ���� ��zExFileObject.__init__�rn���ro���rp���r����� __classcell__r8���r8���r����r9���r�������s���r����c�������������������@���s���e�Zd�ZdS�)�FilterErrorNrm���r8���r8���r8���r9���r�������s���r����c�����������������������s���e�Zd�Z��fdd�Z���ZS�)�AbsolutePathErrorc��������������������s ���||�_�t���d|j�d���d�S�)Nzmember z has an absolute path�r����r����r����r�����r����r����r����r8���r9���r�������s����zAbsolutePathError.__init__r����r8���r8���r����r9���r�������s���r����c�����������������������s���e�Zd�Z��fdd�Z���ZS�)�OutsideDestinationErrorc��������������������s.���||�_�||�_t���|j�d|�d�d���d�S�)Nz would be extracted to �, � which is outside the destination�r�����_pathr����r����r�����r����r����r%���r����r8���r9���r�������s �����z OutsideDestinationError.__init__r����r8���r8���r����r9���r�������s���r����c�����������������������s���e�Zd�Z��fdd�Z���ZS�)�SpecialFileErrorc��������������������s���||�_�t���|j�d���d�S�)Nz is a special filer����r����r����r8���r9���r�������s����zSpecialFileError.__init__r����r8���r8���r����r9���r�������s���r����c�����������������������s���e�Zd�Z��fdd�Z���ZS�)�AbsoluteLinkErrorc��������������������s���||�_�t���|j�d���d�S�)Nz is a link to an absolute pathr����r����r����r8���r9���r�������s����zAbsoluteLinkError.__init__r����r8���r8���r����r9���r�������s���r����c�����������������������s���e�Zd�Z��fdd�Z���ZS�)�LinkOutsideDestinationErrorc��������������������s.���||�_�||�_t���|j�d|�d�d���d�S�)Nz would link to r����r����r����r����r����r8���r9���r�������s �����z$LinkOutsideDestinationError.__init__r����r8���r8���r����r9���r�������s���r����Tc�����������������C���s���i�}|�j�}tj�|�}|�dtjf�r@|�j�dtj���}|d<�tj�|�rTt|���tj�tj� ||��}tj� ||g�|kr�t|�|��|�j}|d�k r�|d@�}|r�|�� ��s�|����r�|d@�s�|dM�}|dO�}n|����s�|����r�d�}nt|���||�jkr�||d<�|�r�|�jd�k �rd�|d<�|�jd�k �r*d�|d <�|�jd�k �r>d�|d <�|�jd�k �rRd�|d<�|�����sf|�����r�tj�|�j��r~t|���|�����r�tj� |tj�|�|�j�}ntj� ||�j�}tj�|�}tj� ||g�|k�r�t|�|��|S�)N�/r����i����@���i�������r����r)���r*���r+���r,���)r����rz���r%����realpathr�����sep�lstrip�isabsr����r����� commonpathr����r�����isreg�islnk�isdir�issymr����r)���r*���r+���r,����linknamer�����dirnamer����)�member� dest_pathZfor_data� new_attrsr����Ztarget_pathr����r8���r8���r9����_get_filtered_attrs���s^���� �� r��c�����������������C���s���|�S�r����r8���)r��r��r8���r8���r9����fully_trusted_filter/��s����r��c�����������������C���s(���t�|�|d�}|r$|�jf�|ddi��S�|�S�)NF�deep�r��r�����r��r��r��r8���r8���r9���� tar_filter2��s����r��c�����������������C���s(���t�|�|d�}|r$|�jf�|ddi��S�|�S�)NTr ��Fr ��r��r8���r8���r9����data_filter8��s����r ��)Z fully_trustedr����r����c�������������������@���s���e�Zd�Zeddddddddd d ddd dddddddd�Zdhdd�Zedd���Zejdd���Zedd���Z e jdd���Z dd��Z eeeeeeeeded � d!d"�Zd#d$��Z eed%fd&d'�Zd(d)��Zd*d+��Zd,d-��Zed.d/���Zd0d1��Zed2d3���Zed4d5���Zed6d7���Zed8d9���Zed:d;���Zed<d=���Zd>d?��Zd@dA��ZdBdC��Z dDdE��Z!dFdG��Z"dHdI��Z#dJdK��Z$dLdM��Z%dNdO��Z&dPdQ��Z'dRdS��Z(dTdU��Z)dVdW��Z*dXdY��Z+dZd[��Z,d\d]��Z-d^d_��Z.d`da��Z/dbdc��Z0ddde��Z1dfdg��Z2dS�)ir���zName of the archive member.zPermission bits.z6User ID of the user who originally stored this member.z7Group ID of the user who originally stored this member.zSize in bytes.zTime of last modification.zHeader checksum.z�File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.z User name.zGroup name.zDevice major number.zDevice minor number.zThe tar header starts here.zThe file's data starts here.zMA dictionary containing key-value pairs of an associated pax extended header.zSparse member information.N)r����r����r)���r*���r'���r(����chksum�typer��r+���r,����devmajor�devminorr����r�����pax_headersr����r�����_sparse_structs�_link_targetr����c�����������������C���sj���||�_�d|�_d|�_d|�_d|�_d|�_d|�_t|�_d|�_ d|�_ d|�_d|�_d|�_ d|�_d|�_d�|�_i�|�_d�S�)Ni���r���r����)r����r����r)���r*���r'���r(���r���REGTYPEr��r��r+���r,���r��r��r����r����r����r���r����r����r8���r8���r9���r����n��s"����zTarInfo.__init__c�����������������C���s���|�j�S�r�����r����r����r8���r8���r9���r%������s����zTarInfo.pathc�����������������C���s ���||�_�d�S�r����r��r��r8���r8���r9���r%������s����c�����������������C���s���|�j�S�r�����r��r����r8���r8���r9���r&������s����zTarInfo.linkpathc�����������������C���s ���||�_�d�S�r����r��)r����r��r8���r8���r9���r&������s����c�����������������C���s���d|�j�j|�jt|��f�S�)Nz<%s %r at %#x>)r����rn���r�����idr����r8���r8���r9����__repr__���s����zTarInfo.__repr__T) r����r(���r����r��r)���r*���r+���r,���r ���_KEEPc������� ���������C���s����| rt��|��}n t���|��}|| k r(||_|| k r6||_|| k rD||_|| k rR||_|| k r`||_|| k rn||_|| k r|||_|| k r�||_ |S�r����) �copyZdeepcopyr����r(���r����r��r)���r*���r+���r,���)r����r����r(���r����r��r)���r*���r+���r,���r ��r���resultr8���r8���r9���r�������s(���� zTarInfo.replacec�����������������C���s����|�j�d�krd�}n |�j�d@�}|�j||�j|�j|�j|�j|�j|�j|�j|�j |�j |�j|�jd� }|d�t kr||d��d�s||d��d7��<�|S�)N���) r����r����r)���r*���r'���r(���r��r��r��r+���r,���r��r��r��r����r����)r����r����r)���r*���r'���r(���r��r��r��r+���r,���r��r���DIRTYPEr����)r����r�����infor8���r8���r9����get_info���s(���� �zTarInfo.get_info�surrogateescapec�����������������C���sz���|�����}|���D�]\}}|d�krtd|���q|tkrD|��|||�S�|tkrZ|��|||�S�|tkrn|��||�S�td��d�S�)Nz%s may not be Nonezinvalid format) r!���itemsr0���r ����create_ustar_headerr����create_gnu_headerr����create_pax_header)r����rS���r6���r7���r ��r�����valuer8���r8���r9����tobuf���s����z TarInfo.tobufc�����������������C���sn���t�|d<�t|d��||��tkr(td��t|d��||��tkr^|��|d�||�\|d<�|d<�|��|t||�S�)N�magicr��zlinkname is too longr�����prefix) �POSIX_MAGICr2���r1����LENGTH_LINKr0����LENGTH_NAME�_posix_split_name�_create_headerr ���)r����r ��r6���r7���r8���r8���r9���r$�����s����zTarInfo.create_ustar_headerc�����������������C���s����t�|d<�d}t|d��||��tkr<||��|d�t||�7�}t|d��||��tkrl||��|d�t||�7�}||��|t ||��S�)Nr)��r����r��r����) � GNU_MAGICr2���r1���r,���_create_gnu_long_header�GNUTYPE_LONGLINKr-���GNUTYPE_LONGNAMEr/��r���)r����r ��r6���r7���rW���r8���r8���r9���r%�����s����zTarInfo.create_gnu_headerc����������� ��� ���C���s*��t�|d<�|�j���}ddtfddtfddfD�]j\}}}||kr>q*z||��dd ��W�n$�tk rv���||�||<�Y�q*Y�nX�t||��|kr*||�||<�q*d D�]`\}}||kr�d||<�q�||�}d|��kr�d|d ��k�r�n�n t|t �r�t |�||<�d||<�q�|�r|��|t|�} nd} | |�� |tdd��S�)Nr)��r����r%���r��r&���)r+���r+���� ���)r,���r,���r4��rD���rE���))r)���rB���)r*���rB���)r'�������)r(���r5��r���rB���r#���r����r����)r+��r��r��r-��r,��r1����UnicodeEncodeErrorr2���� isinstance�float�str�_create_pax_generic_header�XHDTYPEr/��r ���) r����r ��r6���r��r����Zhnamer5���rR����valrW���r8���r8���r9���r&�����s8���� ��� * zTarInfo.create_pax_headerc�����������������C���s���|���|td�S�)Nr/���)r:���XGLTYPE)�clsr��r8���r8���r9����create_pax_global_header0��s����z TarInfo.create_pax_global_headerc�����������������C���s~���|��d�}tdt|��D�]T}d�|d�|���}d�||d����}t|�||��tkrt|�||��tkr�qvqtd��||fS�)Nr����r#���zname is too long)�splitrH���r2���r����r1���� LENGTH_PREFIXr-��r0���)r����r����r6���r7���Z componentsrM���r*��r8���r8���r9���r.��6��s���� �zTarInfo._posix_split_namec�����������������C���s���|���d�ttfk}|r@t|���dd�d|�}t|���dd�d|�}ntdd||�}tdd||�}|���dt�}|d�krxtd��t|���dd�d ||�t|���d d�d@�d|�t|���dd�d|�t|���d d�d|�t|���dd�d|�t|���dd�d|�d|t|���dd�d ||�|���dt�t|���dd�d||�t|���dd�d||�t|���dd�d|�t|���dd�d|�t|���dd�d||�g}t� dt �d�|��} t| t �d����d�} | d�d��t d| �d��| dd����} | S�)Nr��r��r���rB���r��r����zTarInfo.type must not be Noner����r���r����r��r)���r*���r'���r5��r(���s��� r��r)��r+���r4��r,���r*��r���z%dsr����i����z%06o�rD���i����)�get�CHRTYPE�BLKTYPErT���r:���r��r0���r+��rV���r����r����r����rX���rO���)r ��rS���r6���r7���Zhas_device_fieldsr��r��Zfiletype�partsrW���r��r8���r8���r9���r/��F��s:���� �&zTarInfo._create_headerc�����������������C���s.���t�t|��t�\}}|dkr*|�t|�t�7�}�|�S�)Nr���)r\���r2���r����r3���)Zpayloadrb���rc���r8���r8���r9����_create_payloadp��s����zTarInfo._create_payloadc�����������������C���sR���|��||�t�}i�}d|d<�||d<�t|�|d<�t|d<�|��|t||�|��|��S�)Nz ././@LongLinkr����r��r'���r)��)r1���r3���r2���r0��r/��r ���rF��)r>��r����r��r6���r7���r ��r8���r8���r9���r1��z��s�����zTarInfo._create_gnu_long_headerc�������������� ���C���s2��d}|����D�]8\}}z|�dd��W�q�tk rB���d}Y��qFY�qX�qd}|rV|d7�}|����D�]�\}}|�d�}|r�|�|d�}n |�d�}t|�t|��d�}d �} } |tt| ���} | | kr�q�| } q�|tt| �d �d�|�d�|�d �7�}q^i�}d|d<�||d<�t|�|d<�t|d<�|��|td d�|�� |��S�)NFr/���rE���Tr����s���21 hdrcharset=BINARY r"��r����r���rD������� ����=���� z././@PaxHeaderr����r��r'���r)��r����) r#��r1���r6��r2���r9��rO���r+��r/��r ���rF��)r>��r��r��r6���Zbinary�keywordr'��Zrecords�lrL���r>���r ��r8���r8���r9���r:�����s<���� (�z"TarInfo._create_pax_generic_headerc�������������� ���C���sv��t�|�dkrtd��t�|�tkr(td��|�t�tkr>td��t|dd���}|t|�krbt d��|���}t |dd��||�|_t|dd ���|_t|d d ���|_ t|d d���|_t|dd���|_t|dd���|_||_|dd ��|_t |d d��||�|_t |dd��||�|_t |dd��||�|_t|dd���|_t|dd���|_t |dd��||�}|jtk�r�|j�d��r�t|_|jtk�r8d}g�}td�D�]l} z0t|||d����} t||d�|d����}W�n�tk �r����Y���qY�nX�|�| |f��|d7�}�q�t|d��}t|dd���} ||| f|_ |�!���rP|j�"d�|_|�rr|jt#k�rr|d�|j�|_|S�)Nr���zempty headerztruncated headerzend of file header��������zbad checksumr����l����t����|�����������i��i ��i)��iI��iQ��iY��i���r����i���r����r5������i���i���i���)$r2���rq���r����rr����countr3���rs���rN���rX���rK���r?���r����r����r)���r*���r'���r(���r��r��r��r+���r,���r��r���AREGTYPEr����r���GNUTYPE_SPARSErH���r0���r�����boolr��r����rstrip� GNU_TYPES)r>��rW���r6���r7���r���objr*��r�����structsrM���r�����numbytes� isextended�origsizer8���r8���r9����frombuf���sZ���� zTarInfo.frombufc�����������������C���s8���|j��t�}|��||j|j�}|j����t�|_|�|�S�r����) r����r]���r����r_��r6���r7���r����r�����_proc_member)r>��r����rW���rZ��r8���r8���r9����fromtarfile���s����zTarInfo.fromtarfilec�����������������C���sT���|�j�ttfkr|��|�S�|�j�tkr,|��|�S�|�j�tttfkrF|�� |�S�|�� |�S�d�S�r����)r��r3��r2��� _proc_gnulongrV���_proc_sparser;��r=���SOLARIS_XHDTYPE� _proc_pax� _proc_builtin)r����r����r8���r8���r9���r`����s���� zTarInfo._proc_memberc�����������������C���sR���|j����|�_|�j}|����s$|�jtkr4||��|�j�7�}||_|�� |j |j|j��|�S�r����) r����r����r����r����r���SUPPORTED_TYPES�_blockr'���r�����_apply_pax_infor��r6���r7���)r����r����r����r8���r8���r9���rf����s����zTarInfo._proc_builtinc�����������������C���s����|j��|��|�j��}z|��|�}W�n�tk r>���td��Y�nX�|�j|_|�jt krft ||j|j�|_ n|�jtkr�t ||j|j�|_|S�)N� missing or bad subsequent header)r����r]���rh��r'���ra��r���rt���r����r��r3��r?���r6���r7���r����r2��r��)r����r����rW����nextr8���r8���r9���rb��0��s���� zTarInfo._proc_gnulongc����������� ��� ���C���s����|�j�\}}}|�`�|r�|j�t�}d}td�D�]n}z0t|||d����}t||d�|d����} W�n�tk rz���Y��q�Y�nX�|r�| r�|�|| f��|d7�}q,t|d��}q||�_ |j� ��|�_|�j|��|�j ��|_||�_ |�S�)Nr�������r5��rS��i���)r��r����r]���r����rH���rN���r0���r����rW��r����r����r����rh��r'���r����) r����r����r[��r]��r^��rW���r����rM���r����r\��r8���r8���r9���rc��F��s(���� zTarInfo._proc_sparsec�����������������C���s.��|j��|��|�j��}|�jtkr&|j}n |j���}t� d|�}|d�k rX|� d��d�|d<�|�d�}|dkrr|j }nd}t�d�}d}|�||�}|s��q6|���\} } t| �} | dkr�td��||�d �d�|�d�| �d���}|��| dd|j�} | tk�r|��|||j |j�}n|��|dd|j�}||| <�|| 7�}q�z|��|�}W�n�tk �rb���td ��Y�nX�d|k�r||��||��nHd|k�r�|��|||��n.|�d �dk�r�|�d�dk�r�|��|||��|�jttfk�r*|� ||j |j��|�j!|_!d|k�r*|j"} |�#���s|jt$k�r$| |�|j�7�} | |_!|S�)Ns���\d+ hdrcharset=([^\n]+)\nr#���r/���� hdrcharsetZBINARYs���(\d+) ([^=]+)=r���rG���r$���rj���GNU.sparse.map�GNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorrF���r'���)%r����r]���rh��r'���r��r=��r��r���re�search�groupr=���rB��r6����compile�match�groupsrI���rK���rg���r�����_decode_pax_fieldr7����PAX_NAME_FIELDSra��r���rt����_proc_gnusparse_01�_proc_gnusparse_00�_proc_gnusparse_10r;��rd��ri��r����r����r����rg��)r����r����rW���r��ru��rm��r6���Zregexr����r5���rJ��r'��rk��r����r8���r8���r9���re��b��sh���� $ � � � zTarInfo._proc_paxc�����������������C���sh���g�}t��d|�D�]}|�t|�d����qg�}t��d|�D�]}|�t|�d����q:tt||��|_d�S�)Ns���\d+ GNU.sparse.offset=(\d+)\nr#���s���\d+ GNU.sparse.numbytes=(\d+)\n)rq���finditerr����rI���rs���list�zipr����)r����rk��r��rW���Zoffsetsru��r\��r8���r8���r9���rz�����s����zTarInfo._proc_gnusparse_00c�����������������C���s@���dd��|d���d�D��}tt|d�d�d��|dd�d����|_d�S�)Nc�����������������S���s���g�|�]}t�|��qS�r8���)rI���)�.0�xr8���r8���r9���� <listcomp>���s�����z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>rn���,r$���r#���)r@��r}��r~��r����)r����rk��r��r����r8���r8���r9���ry�����s����zTarInfo._proc_gnusparse_01c�����������������C���s����d�}g�}|j��t�}|�dd�\}}t|�}t|�|d�k�rtd|krT||j��t�7�}|�dd�\}}|�t|���q,|j����|_t t |d�d�d��|dd�d����|_d�S�)NrI��r#���r$���)r����r]���r����r@��rI���r2���r����r����r����r}��r~��r����)r����rk��r��r����Zfieldsr����rW���Znumberr8���r8���r9���r{�����s����zTarInfo._proc_gnusparse_10c�������������� ���C���s����|����D�]�\}}|dkr&t|�d|��q|dkr@t|�dt|���q|dkrZt|�dt|���q|tkr|tkr�zt|�|�}W�n�tk r����d}Y�nX�|dkr�|�d�}t|�||��q|���|�_d�S�)NzGNU.sparse.namer%���ro��r'���zGNU.sparse.realsizer���r����) r#���setattrrI���� PAX_FIELDS�PAX_NUMBER_FIELDSr0���rX��r��r��)r����r��r6���r7���rJ��r'��r8���r8���r9���ri�����s"���� zTarInfo._apply_pax_infoc�����������������C���s4���z|��|d�W�S��tk r.���|��||��Y�S�X�d�S�)NrE���)r=����UnicodeDecodeError)r����r'��r6���Zfallback_encodingZfallback_errorsr8���r8���r9���rw����s����zTarInfo._decode_pax_fieldc�����������������C���s"���t�|t�\}}|r|d7�}|t�S�)Nr#���)r\���r����)r����rT��rb���rc���r8���r8���r9���rh�� ��s����zTarInfo._blockc�����������������C���s ���|�j�tkS�r����)r��� REGULAR_TYPESr����r8���r8���r9���r������s����z TarInfo.isregc�����������������C���s���|�����S�r����)r����r����r8���r8���r9����isfile��s����zTarInfo.isfilec�����������������C���s ���|�j�tkS�r����)r��r��r����r8���r8���r9���r�����s����z TarInfo.isdirc�����������������C���s ���|�j�tkS�r����)r���SYMTYPEr����r8���r8���r9���r����s����z TarInfo.issymc�����������������C���s ���|�j�tkS�r����)r���LNKTYPEr����r8���r8���r9���r����#��s����z TarInfo.islnkc�����������������C���s ���|�j�tkS�r����)r��rC��r����r8���r8���r9����ischr'��s����z TarInfo.ischrc�����������������C���s ���|�j�tkS�r����)r��rD��r����r8���r8���r9����isblk+��s����z TarInfo.isblkc�����������������C���s ���|�j�tkS�r����)r���FIFOTYPEr����r8���r8���r9����isfifo/��s����zTarInfo.isfifoc�����������������C���s ���|�j�d�k S�r����)r����r����r8���r8���r9����issparse3��s����zTarInfo.issparsec�����������������C���s���|�j�tttfkS�r����)r��rC��rD��r���r����r8���r8���r9����isdev6��s����z TarInfo.isdev)r����)3rn���ro���rp����dict� __slots__r�����propertyr%����setterr&���r��r��r����r!��r���r���r(��r$��r%��r&���classmethodr?��r.���staticmethodr/��rF��r1��r:��r_��ra��r`��rf��rb��rc��re��rz��ry��r{��ri��rw��rh��r����r���r���r��r����r���r���r���r���r���r8���r8���r8���r9���r���K��s����� �������� 1 ) 2 > h c���������������� ���@���s���e�Zd�ZdZdZdZdZeZe Z dZeZ eZdZdedd�Zedddefd d ��Zedfdd��Zedgdd��Zedhdd��Zedidd��Zddddd�Zdd��Zdd��Zdd��Zdd ��Zdjd!d"�Zdkdd$�d%d&�Zdldd'�d(d)�Z dmd*d+�Z!d,d-��Z"dnddd/�d0d1�Z#doddd/�d3d4�Z$d5d6��Z%d7d8��Z&d9d:��Z'd;d<��Z(d=d>��Z)dpd?d@�Z*dAdB��Z+dCdD��Z,dEdF��Z-dGdH��Z.dIdJ��Z/dKdL��Z0dMdN��Z1dOdP��Z2dQdR��Z3dSdT��Z4dqdUdV�Z5dWdX��Z6drdYdZ�Z7d[d\��Z8d]d^��Z9d_d`��Z:dadb��Z;dcdd��Z<dS�)sr���r���Fr#���Nrw���r"��c�������������� ���C���s���ddddd�}||krt�d��||�_||�|�_|sh|�jdkrTtj�|�sTd|�_d|�_t||�j�}d |�_n@|d�kr�t|d �r�t |j ttf�r�|j }t|d�r�|j|�_d|�_|r�tj� |�nd�|�_ ||�_|d�k r�||�_|d�k r�||�_|d�k r�||�_|d�k r�||�_|d�k �r||�_| |�_| d�k �r0|�jtk�r0| |�_ni�|�_|d�k �rF||�_|d�k �rV||�_| |�_d |�_g�|�_d |�_|�j���|�_i�|�_z�|�jd k�r�d�|�_ |��!��|�_ |�jdk�r2|�j�"|�j��z|�j�#|��}|�j�$|��W�nX�t%k �r����|�j�"|�j��Y��q2Y�n0�t&k �r,�}�zt't|���W�5�d�}~X�Y�nX��q�|�jdk�r|d|�_|�j�r||�j�(|�j�)���}|�j�*|��|��jt+|�7��_W�n&���|�j�s�|�j�,���d|�_��Y�nX�d�S�)N�rbzr+b�wbZxb�rw����arx���r����!mode must be 'r', 'a', 'w' or 'x'r���rx���Fr����r����Trw����r���rx���r���)-r0���r�����_moderz���r%����exists� bltn_openr����r���r7��r����r9��rO����abspathr����rS���r�����dereference�ignore_zerosr6���r7���r���r���debug� errorlevel�copybufsizer�����members�_loadedr����r�����inodes�firstmemberrk��r����ra��r����rs���r���r���r?��r��r^���r2���r����)r����r����r����r����rS���r����r���r���r6���r7���r��r���r���r���Zmodes�erW���r8���r8���r9���r����W��s����� � " zTarFile.__init__c����������� ��� ������s���|s|st�d��|dkr���fdd�}t��j|d�D�]j}t����j|��}|d�k rV|���} z||d|f|�W���S��ttfk r����|d�k r�|�| ��Y�q2Y�q2X�q2td���nd|k�r|�dd �\} }| p�d} |p�d }|��jkr�t����j|��}ntd|���||| |f|�S�d|k�r�|�dd �\} }| �p.d} |�p8d }| d k�rLt�d��t || |||�}z��|| |f|�}W�n���|� �����Y�nX�d|_|S�|dk�r���j|||f|�S�t�d��d�S�)Nznothing to open)rw����r:*c��������������������s�����j�|��dkS�)N�taropen)� OPEN_METH)r�����r>��r8���r9����not_compressed���s����z$TarFile.open.<locals>.not_compressed)�keyrw���z%file could not be opened successfully�:r#���r����r�����|rv���zmode must be 'r' or 'w'Fr���zundiscernible mode) r0����sortedr���rh���r����r���r���r����r@��r����r����r����r���) r>��r����r����r����ra����kwargsr���r�����funcZ saved_pos�filemode�streamr����r8���r���r9���r������sP����% zTarFile.openc�����������������K���s ���|dkrt�d��|�|||f|�S�)Nr���r���)r0���)r>��r����r����r����r���r8���r8���r9���r���!��s����zTarFile.taropenr����c�����������������K���s����|dkrt�d��zddlm}�W�n�tk r<���td��Y�nX�z|||d�||�}W�n.�tk r����|d�k r||dkr|td����Y�nX�z|�j|||f|�}W�nB�tk r����|����|dkr�td����Y�n���|������Y�nX�d |_ |S�) N�rw���rx���r����mode must be 'r', 'w' or 'x'r���)�GzipFilezgzip module is not availablerd���rw���r����F) r0���Zgzipr���r����r���r����r���r���r����r����)r>��r����r����r����� compresslevelr���r���r����r8���r8���r9����gzopen)��s0����zTarFile.gzopenc�������������� ���K���s����|dkrt�d��zddlm}�W�n�tk r<���td��Y�nX�||pF|||d�}z|�j|||f|�}W�nF�ttfk r����|����|dkr�t d����Y�n���|������Y�nX�d |_ |S�) Nr���r���r���)�BZ2Filer����)r���rw���znot a bzip2 fileF)r0���r����r���r����r���r���r�����EOFErrorr����r���r����)r>��r����r����r����r���r���r���r����r8���r8���r9����bz2openJ��s&����zTarFile.bz2openc����������� ��� ���K���s����|dkrt�d��zddlm}m}�W�n�tk r@���td��Y�nX�||pJ|||d�}z|�j|||f|�}W�nF�|tfk r����|����|dkr�t d����Y�n���|������Y�nX�d |_ |S�) Nr���r���r���)�LZMAFiler����r����)�presetrw���znot an lzma fileF)r0���r����r���r����r����r���r���r���r����r���r����) r>��r����r����r����r���r���r���r����r����r8���r8���r9����xzopenf��s&����zTarFile.xzopenr���r���r���r���)r����r����r����r����c�����������������C���s����|�j�r d�S�d|�_�z`|�jdkrn|�j�ttd����|��jtd�7��_t |�jt �\}}|dkrn|�j�tt |����W�5�|�js�|�j����X�d�S�)NTr���r$���r���)r����r����r����r����r����r^���r3���r����r����r\���� RECORDSIZE)r����rb���rc���r8���r8���r9���r�������s���� z TarFile.closec�����������������C���s"���|���|�}|d�krtd|���|S�)Nzfilename %r not found)� _getmember�KeyError)r����r����r����r8���r8���r9���� getmember���s���� zTarFile.getmemberc�����������������C���s���|������|�js|�����|�jS�r����)�_checkr����_loadr���r����r8���r8���r9���� getmembers���s����zTarFile.getmembersc�����������������C���s���dd��|�����D��S�)Nc�����������������S���s���g�|�] }|j��qS�r8���r��)r��r����r8���r8���r9���r������s�����z$TarFile.getnames.<locals>.<listcomp>)r���r����r8���r8���r9����getnames���s����zTarFile.getnamesc�����������������C���s^��|���d��|d�k r|j}|d�kr$|}tj�|�\}}|�tjd�}|�d�}|����}|�|_ |d�kr�|�j stt�|�}q�t�|�}nt� |����}d}|j}t�|�r�|j|jf} |�j s�|jdkr�| |�jkr�||�j| �kr�t} |�j| �}nt} | d�r�||�j| <�nht�|��rt} nVt�|��r"t} nDt�|��r>t} t�|�}n(t�|��rPt} nt� |��rbt!} nd�S�||_||_"|j#|_$|j%|_&| tk�r�|j'|_(nd|_(|j)|_*| |_+||_,t-�r�zt-�.|j$�d�|_/W�n�t0k �r����Y�nX�t1�rzt1�2|j&�d�|_3W�n�t0k �r���Y�nX�| tt!fk�rZt4td��rZt4td��rZt�5|j6�|_7t�8|j6�|_9|S�)N�awxr����r����r#���r����major�minor):r���r����rz���r%���� splitdriver����r����r����r����r����r����lstat�stat�fstat�fileno�st_mode�S_ISREG�st_ino�st_dev�st_nlinkr���r���r���S_ISDIRr���S_ISFIFOr����S_ISLNKr����readlink�S_ISCHRrC���S_ISBLKrD��r�����st_uidr)����st_gidr*����st_sizer'����st_mtimer(���r��r���pwd�getpwuidr+���r����grpZgetgrgidr,���r���r����st_rdevr��r���r��)r����r�����arcnamer����Zdrvr����Zstatresr��Zstmd�inoder��r8���r8���r9���� gettarinfo���s����� �� zTarFile.gettarinfoT)r���c����������������C���s*��|������|d�kr|�}|D��] }|r�|jd�kr6td��ntt�|j���td|jpT|j|jp^|jf���|� ��sv|� ��r�tdd|j|jf����ntd|j ���|jd�kr�td��ntdt�|j�d�d�����t|j|���r�d nd ���|�r|����rtd|j���|����rtd|j���t���qd�S�) Nz ??????????z%s/%sz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr����r����r����z-> zlink to )r���r����rl���r���r���r+���r)���r,���r*���r���r���r��r��r'���r(���r����� localtimer����r���r��r��r����rk���)r�����verboser���r����r8���r8���r9���r}�� ��s8���� �� � zTarFile.list��filterc������������� ���C���s6��|���d��|d�kr|}|�jd�k rFtj�|�|�jkrF|��dd|���d�S�|��d|��|��||�}|d�krz|��dd|���d�S�|d�k r�||�}|d�kr�|��dd|���d�S�|���r�t|d��}|�� ||��W�5�Q�R�X�n`|� ���r(|�� |��|�r2tt�|��D�]*}|�j tj�||�tj�||�||d��q�n |�� |��d�S�) Nr���r$���ztarfile: Skipped %rr#���ztarfile: Unsupported type %r�tarfile: Excluded %rr���r���)r���r����rz���r%���r����_dbgr���r����r����addfiler���r����listdir�addr����)r����r����r���� recursiver���r�����fr8���r8���r9���r���F��s8���� �� zTarFile.addc�����������������C���s����|���d��t�|�}|�|�j|�j|�j�}|�j�|��|��jt |�7��_|�j }|d�k r�t||�j|j|d��t |jt�\}}|dkr�|�j�tt|����|d7�}|��j|t�7��_|�j�|��d�S�)Nr���)ra���r���r#���)r���r��r(��rS���r6���r7���r����r^���r����r2���r���r[���r'���r\���r����r3���r���r����)r����r����r����rW���ra���rb���rc���r8���r8���r9���r���y��s���� zTarFile.addfilec�����������������C���sr���|d�kr0|�j�}|d�krtS�t|t�r,td��|S�t|�r<|S�z t|�W�S��tk rl���td|�d��d��Y�nX�d�S�)NzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z not found) �extraction_filterr��r7��r9��� TypeError�callable�_NAMED_FILTERSr���r0���)r����r���r8���r8���r9����_get_filter_function���s���� � zTarFile._get_filter_function�.)� numeric_ownerr���c����������������C���s����g�}|���|�}|d�kr|�}|D�]F}|��|||�}|d�kr:q|���rL|�|��|�j|||����|d��q|jdd��dd��|D�]n}tj�||j �} z,|�j || |d��|��|| ��|��|| ��W�q|�t k r��} �z|��| ��W�5�d�} ~ X�Y�q|X�q|d�S�)N�� set_attrsr���c�����������������S���s���|�j�S�r����r��)r���r8���r8���r9����<lambda>���r����z$TarFile.extractall.<locals>.<lambda>T)r����reverse)r���)r����_get_extract_tarinfor���r�����_extract_one�sortrz���r%���r����r�����chown�utime�chmodr ����_handle_nonfatal_error)r����r%���r���r���r���Zdirectories�filter_functionr��r�����dirpathr���r8���r8���r9���� extractall���s,���� �zTarFile.extractallr����c����������������C���s4���|���|�}|��|||�}|d�k r0|��||||��d�S�r����)r���r���r���)r����r��r%���r���r���r���r��r����r8���r8���r9����extract���s���� zTarFile.extractc�������������� ���C���s����t�|t�r|��|�}n|}|}z|||�}W�nZ�ttfk r\�}�z|��|��W�5�d�}~X�Y�n,�tk r��}�z|��|��W�5�d�}~X�Y�nX�|d�kr�|��dd|j ���d�S�|� ��r�t�|�}tj �||j�|_|S�)Nr$���r���)r7��r9��r���r����r�����_handle_fatal_errorr ���r��r���r����r����r��rz���r%���r����r��r��)r����r��r��r%���r����Z unfilteredr���r8���r8���r9���r������s"���� zTarFile._get_extract_tarinfoc�������������� ���C���s����|���d��z"|�j|tj�||j�||d��W�nV�tk rX�}�z|��|��W�5�d�}~X�Y�n,�tk r��}�z|�� |��W�5�d�}~X�Y�nX�d�S�)Nrw���r���) r����_extract_memberrz���r%���r����r����r����r ��r ���r��)r����r����r%���r���r���r���r8���r8���r9���r������s���� � zTarFile._extract_onec�����������������C���s"���|�j�dkr��n|��dd|���d�S�)Nr#����tarfile: %s)r���r����r����r���r8���r8���r9���r�� ��s���� zTarFile._handle_nonfatal_errorc�����������������C���sn���|�j�dkr��n\t|t�rP|jd�kr6|��dd|j���qj|��dd|j|jf���n|��ddt|�j|f���d�S�)Nr���r#���r��ztarfile: %s %rztarfile: %s %s)r���r7��r�����filenamer����strerrorr��rn���r ��r8���r8���r9���r �� ��s���� zTarFile._handle_fatal_errorc�����������������C���s����|���d��t|t�r |��|�}n|}|���s6|jtkrB|��|�|�S�|���sR|� ��rzt|�j t�rhtd��q~|�� |��|��S�nd�S�d�S�)Nrw���z'cannot extract (sym)link as file object)r���r7��r9��r���r����r��rg��� fileobjectr����r��r����r����r ����extractfile�_find_link_target)r����r��r����r8���r8���r9���r�� ��s���� zTarFile.extractfilec�����������������C���sT��|��d�}|�dtj�}tj�|�}|r>tj�|�s>t�|��|���sN|� ��rh|�� dd|j|jf���n|�� d|j��|� ��r�|��||��n�|���r�|��||��nx|���r�|��||��nb|���s�|���r�|��||��nD|���s�|� ��r�|��||��n&|jtk�r|��||��n|��||��|�rP|��|||��|� ���sP|��||��|��||��d�S�)Nr����r#���z%s -> %s)rX��r����rz���r����r%���r��r����makedirsr����r��r���r����r��r�����makefiler����makedirr����makefifor���r����makedev�makelinkr��rg���makeunknownr��r��r��)r����r����� targetpathr���r���Z upperdirsr8���r8���r9���r��: ��s4���� zTarFile._extract_memberc�����������������C���s@���z&|j�d�krt�|��nt�|d��W�n�tk r:���Y�nX�d�S�)Ni���)r����rz����mkdir�FileExistsError�r����r����r��r8���r8���r9���r��k ��s���� zTarFile.makedirc�������������� ���C���s����|�j�}|�|j��|�j}t|d��b}|jd�k rn|jD�]"\}}|�|��t|||t|��q4|�|j��|� ���nt|||jt|��W�5�Q�R�X�d�S�)Nr���) r����r����r����r���r���r����r[���r���r'����truncate)r����r����r���sourcera����targetr����r'���r8���r8���r9���r��y ��s���� zTarFile.makefilec�����������������C���s"���|���||��|��dd|j���d�S�)Nr#���z9tarfile: Unknown file type %r, extracted as regular file.)r��r���r��r��r8���r8���r9���r��� ��s�����zTarFile.makeunknownc�����������������C���s"���t�td�rt�|��ntd��d�S�)N�mkfifozfifo not supported by system)r���rz���r!��r ���r��r8���r8���r9���r��� ��s���� zTarFile.makefifoc�����������������C���sj���t�td�rt�td�std��|j}|d�kr.d}|���rB|tjO�}n |tjO�}t�||t� |j |j���d�S�)N�mknodr��z'special devices not supported by systemr����)r���rz���r ���r����r���r����S_IFBLK�S_IFCHRr"��r��r��r��)r����r����r��r����r8���r8���r9���r��� ��s���� �zTarFile.makedevc�����������������C���s����zb|����r0tj�|�r t�|��t�|j|��n0tj�|j�rNt� |j|��n|�� |��|�|��W�nH�tk r����z|�� |��|�|��W�n�t k r����td��Y�nX�Y�nX�d�S�)Nz%unable to resolve link inside archive)r��rz���r%����lexists�unlink�symlinkr��r���r���linkr��r���symlink_exceptionr���r ���r��r8���r8���r9���r��� ��s"���� ��zTarFile.makelinkc�����������������C���s����t�td�r�t���dkr�|j}|j}|s�ztrB|jrBt�|j�d�}W�n�tk rX���Y�nX�zt rv|j rvt �|j �d�}W�n�tk r����Y�nX�|d�kr�d}|d�kr�d}z4|���r�t�td�r�t� |||��nt�|||��W�n�tk r����td��Y�nX�d�S�)N�geteuidr���r$���r;����lchownzcould not change owner)r���rz���r*��r*���r)���r���r,���Zgetgrnamr���r���r+����getpwnamr��r+��r��r����r ���)r����r����r��r����g�ur8���r8���r9���r��� ��s0���� z TarFile.chownc�����������������C���sB���|j�d�krd�S�zt�||j���W�n�tk r<���td��Y�nX�d�S�)Nzcould not change mode)r����rz���r��r����r ���r��r8���r8���r9���r��� ��s���� z TarFile.chmodc�����������������C���sV���|j�}|d�krd�S�ttd�s d�S�zt�|||f��W�n�tk rP���td��Y�nX�d�S�)Nr��z"could not change modification time)r(���r���rz���r��r����r ���)r����r����r��r(���r8���r8���r9���r��� ��s���� z TarFile.utimec�������������� ���C���s���|���d��|�jd�k r$|�j}d�|�_|S�|�j|�j���krZ|�j�|�jd���|�j�d�sZtd��d�}z|�j� |��}W��q��t k r��}�z6|�jr�|��dd|�j|f���|��jt 7��_W�Y��q^W�5�d�}~X�Y��q��tk �r6�}�zR|�j�r|��dd|�j|f���|��jt 7��_W�Y�� q^n|�jdk�r&tt|���W�5�d�}~X�Y�n��tk �r^���|�jdk�rZtd��Y�nj�tk �r��}�z|�jdk�r�tt|���W�5�d�}~X�Y�n0�tk �r��}�ztt|���W�5�d�}~X�Y�nX��q�q^|d�k �r�|�j�|��nd|�_|S�) NZrar#���rY���r$���z0x%X: %sr���z empty fileT)r���r���r����r����r����r����r]���r���r����ra��rs���r���r���r����rK���r9��rq���rr���rt���r���r����r���)r�����mr����r���r8���r8���r9���rk��� ��sJ���� zTarFile.nextc����������� ������C���s����|�����}d}|d�k rHz|�|�}W�n�tk r:���d}Y�nX�|d�|��}|rXtj�|�}t|�D�]D}|rz|j|jkr`d}q`|r�tj�|j�}n|j}||kr`|��S�q`|r�t|��d�S�)NFT) r����indexr0���rz���r%����normpath�reversedr����r����) r����r����r����� normalizer���Zskippingr0��r���member_namer8���r8���r9���r���3 ��s,���� zTarFile._getmemberc�����������������C���s���|�����}|d�kr�qq�d|�_d�S�r����)rk��r���r����r8���r8���r9���r���[ ��s����z TarFile._loadc�����������������C���s:���|�j�rtd|�jj���|d�k r6|�j|kr6td|�j���d�S�)Nz%s is closedzbad operation for mode %r)r����r����r����rn���r����)r����r����r8���r8���r9���r���e ��s����zTarFile._checkc�����������������C���s`���|����r.d�td�tj�|j�|jf��}d�}n |j}|}|�j||dd�}|d�kr\t d|���|S�)Nr����T)r����r3��zlinkname %r not found) r��r����r���rz���r%���r��r����r��r���r���)r����r����r���limitr��r8���r8���r9���r��n ��s���� zTarFile._find_link_targetc�����������������c���s����|�j�r|�jE�d�H��d�S�d}|�jd�k r:|����}|d7�}|V��|t|�j�k�rT|�j|�}n"|�j�sr|����}|svd|�_�d�S�nd�S�|d7�}|V��q:d�S�)Nr���r#���T)r���r���r���rk��r2���)r����r0��r����r8���r8���r9����__iter__� ��s$���� zTarFile.__iter__c�����������������C���s���||�j�krt|tjd��d�S�)N��file)r���rk���ri����stderr)r�����level�msgr8���r8���r9���r���� ��s���� zTarFile._dbgc�����������������C���s���|������|�S�r����)r���r����r8���r8���r9���� __enter__� ��s����zTarFile.__enter__c�����������������C���s,���|d�kr|������n|�js"|�j�����d|�_d�S�r����)r����r����r����r����)r����r��r'��� tracebackr8���r8���r9����__exit__� ��s ���� zTarFile.__exit__) Nrw���NNNNNNr"��NNNN)rw���N)rw���Nr����)rw���Nr����)rw���NN)NNN)T)NT)N)r���N)r����T)TF)NF)N)=rn���ro���rp���r���r���r���r���r���rS���r���r6���r7���r���r����r����r��r���r����r���r���r���r���r���r���r���r���r����r���r���r���r���r}��r���r���r���r��r ��r���r���r��r ��r��r��r��r��r��r��r��r��r��r��r��rk��r���r���r���r��r6��r���r<��r>��r8���r8���r8���r9���r���;��s��������������������� oZ � c&3 �-� ��� 1! 6 ( c�����������������C���s2���zt�|��}|����W�dS��tk r,���Y�dS�X�d�S�)NTF)r���r����r���)r����r����r8���r8���r9���r���� ��s����c��������������� ���C���s��dd�l�}�d}|�j|d�}|jdddddd ��|jd dtdd ��|jdd�}|jddddd��|jdddddd��|jdddddd��|jdd dd!d��|���}|jr�|jd�kr�|�d"d#��|j d�k �r4|j }t |��rt|d$�� }|����t |���tjd%��W�5�Q�R�X�|j�r0t d&�|���n|�d"d'�|����n�|jd�k �r�|j}t |��rxt�|d(��}|j|jd)��W�5�Q�R�X�n|�d"d'�|����nv|jd�k �rbt|j�d"k�r�|jd�}tj}n,t|j�d*k�r�|j\}}n|�d"|�����t |��rNt�|d(��}|j||jd+��W�5�Q�R�X�|j�r`|d,k�r8d-�|�} nd.�||�} t | ��n|�d"d'�|���n�|jd�k �r|j�d�} tj�| �\}}d/d/d0d0d1d1d1d1d2�} || k�r�d3| |��nd4}|j}t�| |��}|D�]}|�|���q�W�5�Q�R�X�|j�rt d5�| ���d�S�)6Nr���z3A simple command-line interface for tarfile module.)�descriptionz-vz --verbose� store_trueFzVerbose output)�action�default�helpz--filterz<filtername>zFilter for extraction)�metavar�choicesrC��T)Zrequiredz-lz--list� <tarfile>zShow listing of a tarfile)rD��rC��z-ez --extract�+)rF��z<output_dir>zExtract tarfile into target dir)�nargsrD��rC��z-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#���z&--filter is only valid for extraction rw���r7��z{!r} is a tar archive.z{!r} is not a tar archive. r���)r���r$���)r%���r���r���z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.r����r����r����)r����z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:rx���z{!r} file created.)�argparse�ArgumentParser�add_argumentr���Zadd_mutually_exclusive_group� parse_argsr���r ���exitZtestr���r���r���rk���ri���r9��r���rS���r}��r���r2���rz����curdirZformat_helpr��Zcreate�popr%����splitextr���)rI��r?���parserrs���argsr_���r����ZtfrN��r;��Ztar_name�_ZextZcompressionsZtar_modeZ tar_files� file_namer8���r8���r9����main� ��s������� � � � � �� � rU���__main__)T)j�version� __author__�__credits__�builtinsr���r���ri���rz���r����rZ���r���r����rV���r��rq���warningsr���r����r����AttributeError�NotImplementedErrorr)��r����� NameError�__all__r3���r����r���r0��r+��r-��r,��rA��r��rU��r���r���rC��rD��r��r���ZCONTTYPEr3��r2��rV��r;��r=��rd��r ���r���r���r���rg��r���rY��r���rx��r8��rI���r���r����r����getfilesystemencodingr:���r?���rN���rT���rX���r[���rl���� Exceptionr���r ���r���r���r ���r���rq���rr���rs���rK���rt���ru���r�����objectr����r�����BufferedReaderr����r����r����r����r����r����r����r��r��r��r ��r���r��r���r���r���rU��rn���r8���r8���r8���r9����<module> ���s6�� �������� ���������� �sh ?������u���������_