U e5d�S�@sddlZddlZddlZddlZddlZddlZddlZddlZdddddgZd\Z Z Z Z Z d\ZZd Zd Zd Zd edddfd d�Zdd�ZGdd�d�ZGdd�de�ZGdd�dej�ZGdd�dej�Zefdd�dd�Zdd�Zdd�Zedkr�e�dS)�N� BadGzipFile�GzipFile�open�compress� decompress)�����)rrr�� �rbcCs�d|kr d|krPtd|f��n0|dk r0td��|dk r@td��|dk rPtd��|�dd�}t|tttjf�r|t|||�}n,t|d�s�t|d �r�td|||�}nt d ��d|kr�t � ||||�S|SdS) N�t�bzInvalid mode: %rz0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary mode��read�writez1filename must be a str or bytes object, or a file) � ValueError�replace� isinstance�str�bytes�os�PathLiker�hasattr� TypeError�io� TextIOWrapper)�filename�mode� compresslevel�encoding�errors�newlineZgz_modeZ binary_file�r%�/usr/lib64/python3.8/gzip.pyrs$ cCs|�t�d|��dS)Nz|jdkr||_n|jt|�8_dSt|j�|_d|_dSr-)r2r.r/r0)r3r5r%r%r&r5bs   z_PaddedFile.prependcCsd|_d|_|j�|�Sr7)r2r.r1�seek)r3Zoffr%r%r&r9ksz_PaddedFile.seekcCsdS�NTr%�r3r%r%r&�seekablepsz_PaddedFile.seekableN)r,)r,)�__name__� __module__� __qualname__r6rr5r9r<r%r%r%r&r+Js   r+c@s eZdZdS)rN)r=r>r?r%r%r%r&rtsc@s�eZdZdZddeddfdd�Zedd��Zedd��Zdd �Z d d �Z d d �Z dd�Z d+dd�Z d,dd�Zdd�Zedd��Zdd�Zejfdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zejfd'd(�Zd-d)d*�ZdS).rNcCs4|r"d|ksd|kr"td�|���|r6d|kr6|d7}|dkrTt�||pJd�}|_|dkr|t|dd�}t|ttf�s�d}n t � |�}|dkr�t|dd�}|� d �r�t |_ t|�}t�|�|_||_nN|� d ��rt|_ |�|�t�|tjtj tjd �|_||_ntd�|���||_|j tk�r0|�|�dS) Nr�UzInvalid mode: {!r}rr�namerr �r)�w�a�xr)r�format�builtinsr� myfileobj�getattrrrrr�fspath� startswith�READr � _GzipReaderr�BufferedReaderr.rA�WRITE� _init_write�zlibZ compressobjZDEFLATED� MAX_WBITSZ DEF_MEM_LEVELr� _write_mtime�fileobj�_write_gzip_header)r3rr r!rT�mtime�rawr%r%r&r6�s@#        � zGzipFile.__init__cCsBddl}|�dtd�|jtkr<|jdd�dkr<|jdS|jS)Nrzuse the name attributer������.gz)�warnings�warn�DeprecationWarningr rOrA)r3rZr%r%r&r�s  zGzipFile.filenamecCs |jjjSr7)r.rW� _last_mtimer;r%r%r&rV�szGzipFile.mtimecCs.t|j�}d|dd�dtt|��dS)Nz)�reprrT�hex�id)r3�sr%r%r&�__repr__�s zGzipFile.__repr__cCs.||_t�d�|_d|_g|_d|_d|_dS�Nr,r)rArQ�crc32�crcr8Zwritebuf�bufsize�offset)r3rr%r%r&rP�s  zGzipFile._init_writecCs|j�d�|j�d�zs   zGzipFile.closecCs4|��|jtkr0|j�|j�|��|j��dSr7)r}r rOrTrrr�)r3Z zlib_moder%r%r&r�Qs zGzipFile.flushcCs |j��Sr7)rT�filenor;r%r%r&r�XszGzipFile.filenocCs"|jtkrtd��|j�d�dS)NzCan't rewind in write moder)r rLrr.r9r;r%r%r&�rewind`s zGzipFile.rewindcCs |jtkSr7)r rLr;r%r%r&�readablegszGzipFile.readablecCs |jtkSr7)r rOr;r%r%r&�writablejszGzipFile.writablecCsdSr:r%r;r%r%r&r<mszGzipFile.seekablecCs�|jtkr�|tjkr2|tjkr*|j|}ntd��||jkrDtd��||j}d}t|d�D]}|� |�q^|� d|d�n |jt kr�|� �|j � ||�S|jS)NzSeek from end not supportedzNegative seek in write modes�ro)r rOr�SEEK_SET�SEEK_CURrjrr�rangerrLr}r.r9)r3rj�whence�count�chunk�ir%r%r&r9ps         z GzipFile.seekcCs|��|j�|�Sr7)r}r.�readline)r3r8r%r%r&r��szGzipFile.readline)r^)r^)r^)r=r>r?rHrzr6�propertyrrVrerPrUrrr�r�r�r�rQZ Z_SYNC_FLUSHr�r�r�r�r�r<rr�r9r�r%r%r%r&rxs8 � I      csZeZdZ�fdd�Zdd�Zdd�Zdd�Zdd d �Zd d �Zdd�Z �fdd�Z �Z S)rMcs,t�jt|�tjtj d�d|_d|_dS)N)ZwbitsT)�superr6r+rQZ decompressobjrR� _new_memberr])r3�fp�� __class__r%r&r6�s �z_GzipReader.__init__cCst�d�|_d|_dSrf)rQrg�_crc� _stream_sizer;r%r%r&� _init_read�s z_GzipReader._init_readcCsF|j�|�}t|�|krB|j�|t|��}|s8td��||7}q |S)N�ACompressed file ended before the end-of-stream marker was reached)�_fprr/�EOFError)r3r�r�rr%r%r&� _read_exact�s   z_GzipReader._read_exactcCs�|j�d�}|dkrdS|dkr,td|��t�d|�d��\}}|_|dkrVtd��|t@r|t�d |�d��\}|�|�|t@r�|j�d �}|r�|d kr�q�q�|t @r�|j�d �}|r�|d kr�q�q�|t @r�|�d�d S) Nrr,FrkzNot a gzipped file (%r)z|��d|_|jf|j�|_|jrf|��|��s`|j |_ dSd|_|j � t j�}|j�||�}|jjdkr�|j �|jj�n|jjdkr�|j �|jj�|dkr�q�|dkrtd��q|�|�|j t|�7_ |S)Nrr,TFr�)�readallZ _decompressor�eof� _read_eofr�Z_decomp_factoryZ _decomp_argsr�r�Z_posZ_sizer�rrr�rZunconsumed_tailr5Z unused_datar��_add_read_datar/)r3r8�bufZ uncompressr%r%r&r�s:�    z_GzipReader.readcCs$t�||j�|_|jt|�|_dSr7)rQrgr�r�r/)r3r�r%r%r&r��sz_GzipReader._add_read_datacCs�t�d|�d��\}}||jkrr?r6r�r�r�rr�r�r�� __classcell__r%r%r�r&rM�s ! 3rM)rVc Cs6t��}t|d||d��}|�|�W5QRX|��S)N�wb)rTr r!rV)r�BytesIOrr�getvalue)r�r!rVr�r4r%r%r&rsc Cs0tt�|�d��}|��W5QR�SQRXdS)Nr�)rrr�r)r�r4r%r%r&rsc Cs�ddlm}|dd�}|��}|jdddd�|jd dd d�|jd d dd d�|jdddgdd�|��}t}|jr|t}n |jr�t }|j D]�}|j r�|dkr�t ddt jjd�}t jj}n>|dd�dkr�t �d|���t|d�}t�|dd�d�}nB|dk�r"t jj}t ddt jj|d�}nt�|d�}t|dd�}|�d�}|�sP�q^|�|��q<|t jjk �rt|��|t jjk r�|��q�dS)Nr)�ArgumentParserzeA simple command line interface for the gzip module: act like gzip, but do not delete the input file.)Z descriptionz--fast� store_truezcompress faster)�action�helpz--bestzcompress betterz-dz --decompresszact like gunzip instead of gzip�args�*�-r1)�nargs�default�metavarrr)rr rTrXrYzfilename doesn't end in .gz: r�)rr rTr!r�)�argparser�Zadd_mutually_exclusive_group� add_argument� parse_args�_COMPRESS_LEVEL_TRADEOFFZfastr{Zbestrzr�rr�sys�stdin�buffer�stdout�exitrrGrrr�) r��parser�groupr�r!�argr4�gr�r%r%r&�main'sR � �     �   r��__main__) r'r�rxrrQrGrZ _compression�__all__ZFTEXTr�r�rvr�rLrOr{r�rzrr*r+rrZ BaseStreamrZDecompressReaderrMrrr�r=r%r%r%r&�s8 � ,* 0