3 \nO@sddlZddlZddlZddlZddlZddlZddlZddlZddddgZd\Z Z Z Z Z d\ZZdd dZddZGdddZGdddejZGdddejZdddZddZddZedkredS)NGzipFileopencompress decompressrb cCsd|kr d|krPtd|fn0|dk r0td|dk r@td|dk rPtd|jdd}t|tttjfr|t|||}n,t|dst|d rtd|||}nt d d|krt j ||||S|SdS) NtbzInvalid mode: %rz0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary modereadwritez1filename must be a str or bytes object, or a file) ValueErrorreplace isinstancestrbytesosPathLikerhasattr TypeErrorio TextIOWrapper)filenamemode compresslevelencodingerrorsnewlineZgz_modeZ binary_filer#/usr/lib64/python3.6/gzip.pyrs$ cCs|jtjd|dS)Nz|jdkr||_n|jt|8_dSt|j|_d|_dS)Nr)r/r+r,r-)r0r2r#r#r$r2]s   z_PaddedFile.prependcCsd|_d|_|jj|S)N)r/r+r.seek)r0Zoffr#r#r$r5fsz_PaddedFile.seekcCsdS)NTr#)r0r#r#r$seekableksz_PaddedFile.seekableN)r*)r*)__name__ __module__ __qualname__r3rr2r5r6r#r#r#r$r)Es   r)c@seZdZdZd,ddZeddZeddZd d Zd d Z d dZ ddZ d.ddZ d0ddZ ddZeddZddZejfddZddZd d!Zd"d#Zd$d%Zd&d'Zejfd(d)Zd2d*d+ZdS)3rNr cCs2|r"d|ksd|kr"tdj||r6d|kr6|d7}|dkrTtj||pJd}|_|dkr|t|dd}t|ttfsd}n t j |}|dkrt|dd}|j d rt |_ t|}tj||_||_nN|j drt|_ |j|tj|tjtj tjd |_||_ntdj|||_|j tkr.|jdS)Nr UzInvalid mode: {!r}rr namerrrwaxr)r=r>r?)rformatbuiltinsr myfileobjgetattrrrrrfspath startswithREADr _GzipReaderrBufferedReaderr+r;WRITE _init_writezlibZ compressobjZDEFLATED MAX_WBITSZ DEF_MEM_LEVELr _write_mtimefileobj_write_gzip_header)r0rrrrNmtimerawr#r#r$r3{s>#         zGzipFile.__init__cCsBddl}|jdtd|jtkr<|jdddkr<|jdS|jS)Nrzuse the name attributerz.gz)warningswarnDeprecationWarningrrIr;)r0rTr#r#r$rs  zGzipFile.filenamecCs |jjjS)N)r+rQ _last_mtime)r0r#r#r$rPszGzipFile.mtimecCs.t|j}d|dddtt|dS)Nz)reprrNhexid)r0sr#r#r$__repr__s zGzipFile.__repr__cCs.||_tjd|_d|_g|_d|_d|_dS)Nr*r)r;rKcrc32crcr4Zwritebufbufsizeoffset)r0rr#r#r$rJs  zGzipFile._init_writec Cs|jjd|jjdytjdd}|o|ddk}|r.|dd}|s8dg}x|D]}|r|dkrltddtjjd}tjj}q|d dd krtd t|q@t|d}t j|ddd }n>|dkrtjj}tdd tjjd}nt j|d}t|d d }x |j d }|sP|j |qW|tjjk r"|j |tjjk r@|j q@WdS)Nrrz-d-rr )rrrNrRz.gzzfilename doesn't end in .gz:rirSrS) sysargvrstdinbufferstdoutprintr[rrArrr)argsrargr1grr#r#r$_tests<       r__main__)rrrr r )rr)r r NNN)r )r%rrorrKrArZ _compression__all__ZFTEXTrrrmrrFrIrr(r)Z BaseStreamrZDecompressReaderrGrrrr7r#r#r#r$s*   +)  &