B
    u9a2              $   @   s   d ddddddddd	d
dddddddddddddddddddddd d!d"d#g$Z d$d%lZd$d%lZd$d%lZd$d&lT d$d'lmZmZ d$d%lZd$Zd(Z	d)Z
G d*d dejZd1d%d,d%d%d%d%d%d-d.d Zed,d%d%fd/d!Zed%d%fd0d"Zd%S )2Z
CHECK_NONEZCHECK_CRC32ZCHECK_CRC64ZCHECK_SHA256ZCHECK_ID_MAXZCHECK_UNKNOWNZFILTER_LZMA1ZFILTER_LZMA2ZFILTER_DELTAZ
FILTER_X86ZFILTER_IA64Z
FILTER_ARMZFILTER_ARMTHUMBZFILTER_POWERPCZFILTER_SPARCFORMAT_AUTO	FORMAT_XZZFORMAT_ALONEZ
FORMAT_RAWZMF_HC3ZMF_HC4ZMF_BT2ZMF_BT3ZMF_BT4Z	MODE_FASTZMODE_NORMALZPRESET_DEFAULTZPRESET_EXTREMELZMACompressorLZMADecompressorLZMAFile	LZMAErroropencompress
decompressZis_check_supported    N)*)_encode_filter_properties_decode_filter_properties      c               @   s   e Zd Zd!dddddddZdd Zed	d
 Zdd Zdd Zdd Z	dd Z
d"ddZd#ddZd$ddZd%ddZdd ZejfddZdd  ZdS )&r   Nr)formatcheckpresetfiltersc      	      C   s&  d | _ d| _t| _|dkrL|dkr*td|d k	r:td|d krFt}t}n@|dkr~|d kr`t}t}t	||||d| _
d| _ntd	|t|tttjfrd
|kr|d
7 }t||| _ d| _|| _n*t|dst|dr|| _ || _ntd| jtkr"tj| j tt||d}t|| _d S )NF)r   rbr   zACannot specify an integrity check when opening a file for readingzICannot specify a preset compression level when opening a file for reading)wwbaZabxZxb)r   r   r   r   r
   zInvalid mode: {!r}bTreadwritez6filename must be a str, bytes, file or PathLike object)Ztrailing_errorr   r   )_fp_closefp_MODE_CLOSED_mode
ValueErrorr   
_MODE_READr   _MODE_WRITEr   _compressor_posr   
isinstancestrbytesosPathLikebuiltinsr   hasattr	TypeError_compressionZDecompressReaderr   r   ioBufferedReader_buffer)	selffilenamemoder   r   r   r   Z	mode_coderaw r7   /usr/lib/python3.7/lzma.py__init__1   sB    ,
zLZMAFile.__init__c             C   s   | j tkrd S zB| j tkr,| j  d | _n"| j tkrN| j| j	  d | _W d z| j
rd| j  W d d | _d| _
t| _ X X d S )NF)r!   r    r#   r2   closer$   r   r   r%   flushr   )r3   r7   r7   r8   r:      s    




zLZMAFile.closec             C   s
   | j tkS )N)r!   r    )r3   r7   r7   r8   closed   s    zLZMAFile.closedc             C   s   |    | j S )N)_check_not_closedr   fileno)r3   r7   r7   r8   r>      s    zLZMAFile.filenoc             C   s   |   o| j S )N)readabler2   seekable)r3   r7   r7   r8   r@      s    zLZMAFile.seekablec             C   s   |    | jtkS )N)r=   r!   r#   )r3   r7   r7   r8   r?      s    zLZMAFile.readablec             C   s   |    | jtkS )N)r=   r!   r$   )r3   r7   r7   r8   writable   s    zLZMAFile.writablec             C   s   |    | j|S )N)_check_can_readr2   peek)r3   sizer7   r7   r8   rC      s    zLZMAFile.peekc             C   s   |    | j|S )N)rB   r2   r   )r3   rD   r7   r7   r8   r      s    zLZMAFile.readc             C   s"   |    |dk rtj}| j|S )Nr
   )rB   r0   DEFAULT_BUFFER_SIZEr2   read1)r3   rD   r7   r7   r8   rF      s    zLZMAFile.read1c             C   s   |    | j|S )N)rB   r2   readline)r3   rD   r7   r7   r8   rG      s    zLZMAFile.readlinec             C   s:   |    | j|}| j| |  jt|7  _t|S )N)Z_check_can_writer%   r   r   r   r&   len)r3   dataZ
compressedr7   r7   r8   r      s
    zLZMAFile.writec             C   s   |    | j||S )N)Z_check_can_seekr2   seek)r3   offsetwhencer7   r7   r8   rJ      s    zLZMAFile.seekc             C   s"   |    | jtkr| j S | jS )N)r=   r!   r#   r2   tellr&   )r3   r7   r7   r8   rM      s    

zLZMAFile.tell)Nr   )r   )r   )r   )r   )__name__
__module____qualname__r9   r:   propertyr<   r>   r@   r?   rA   rC   r   rF   rG   r   r0   SEEK_SETrJ   rM   r7   r7   r7   r8   r   &   s   T

	


r   r   )r   r   r   r   encodingerrorsnewlinec            C   s   d|kr d|krPt d|f n0|d k	r0t d|d k	r@t d|d k	rPt d|dd}	t| |	||||d}
d|krt|
|||S |
S d S )	Ntr   zInvalid mode: %rz0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary mode )r   r   r   r   )r"   replacer   r0   TextIOWrapper)r4   r5   r   r   r   r   rS   rT   rU   Zlz_modeZbinary_filer7   r7   r8   r     s    

c             C   s    t ||||}|| |  S )N)r   r   r;   )rI   r   r   r   r   compr7   r7   r8   r   6  s    c             C   sr   g }xbt |||}y|| }W n tk
r>   |r8P n Y nX || |jsXtd|j} | sP qW d|S )NzACompressed data ended before the end-of-stream marker was reached    )r   r	   r   appendeofZunused_datajoin)rI   r   Zmemlimitr   resultsZdecompZresr7   r7   r8   r	   B  s     
)r   )__all__r,   r0   r*   Z_lzmar   r   r/   r    r#   r$   Z
BaseStreamr   r   r   r   r   r	   r7   r7   r7   r8   <module>   s0   

 b-