o
     JAf3                  	   @   s   	 g d 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ddd
ddddddddZed
ddfddZeddfddZdS ))$
CHECK_NONECHECK_CRC32CHECK_CRC64CHECK_SHA256CHECK_ID_MAXCHECK_UNKNOWNFILTER_LZMA1FILTER_LZMA2FILTER_DELTA
FILTER_X86FILTER_IA64
FILTER_ARMFILTER_ARMTHUMBFILTER_POWERPCFILTER_SPARCFORMAT_AUTO	FORMAT_XZFORMAT_ALONE
FORMAT_RAWMF_HC3MF_HC4MF_BT2MF_BT3MF_BT4	MODE_FASTMODE_NORMALPRESET_DEFAULTPRESET_EXTREMELZMACompressorLZMADecompressorLZMAFile	LZMAErroropencompress
decompress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v r'|dkrtd|d urtd|d u r$t}t}n |dv r@|d u r1t}t}t	||||d| _
d| _ntd	|t|tttjfrfd
|vrX|d
7 }t||| _ d| _|| _nt|dspt|drw|| _ || _ntd| jtkrtj| j tt||d}t|| _d S 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aabxxbr-   r%   zInvalid mode: {!r}bTreadwritez6filename must be a str, bytes, file or PathLike object)trailing_errorr.   r1   )_fp_closefp_MODE_CLOSED_mode
ValueErrorr   
_MODE_READr   _MODE_WRITEr   _compressor_posr.   
isinstancestrbytesosPathLikebuiltinsr!   hasattr	TypeError_compressionDecompressReaderr   r    ioBufferedReader_buffer)	selffilenamemoder.   r/   r0   r1   	mode_coderaw rX   /usr/lib/python3.10/lzma.py__init__1   sJ   *

zLZMAFile.__init__c                 C   s   	 | j tkrd S zK| j tkr| j  d | _n| j tkr(| j| j	  d | _W z | j
r>| j  W d | _d| _
t| _ d S W d | _d| _
t| _ d S d | _d| _
t| _ w z| j
rh| j  W d | _d| _
t| _ w W d | _d| _
t| _ w d | _d| _
t| _ w )NF)r@   r?   rB   rR   closerC   r=   r;   rD   flushr>   rS   rX   rX   rY   r[      sJ   





zLZMAFile.closec                 C   s   	 | j tkS N)r@   r?   r]   rX   rX   rY   closed   s   
zLZMAFile.closedc                 C   s   	 |    | j S r^   )_check_not_closedr=   filenor]   rX   rX   rY   ra         
zLZMAFile.filenoc                 C   s   	 |   o	| j S r^   )readablerR   seekabler]   rX   rX   rY   rd      s   zLZMAFile.seekablec                 C      	 |    | jtkS r^   )r`   r@   rB   r]   rX   rX   rY   rc      rb   zLZMAFile.readablec                 C   re   r^   )r`   r@   rC   r]   rX   rX   rY   writable   rb   zLZMAFile.writablec                 C      	 |    | j|S r^   )_check_can_readrR   peekrS   sizerX   rX   rY   ri      s   zLZMAFile.peekc                 C   rg   r^   )rh   rR   r:   rj   rX   rX   rY   r:      s   zLZMAFile.readc                 C   s$   	 |    |dk rtj}| j|S )Nr%   )rh   rP   DEFAULT_BUFFER_SIZErR   read1rj   rX   rX   rY   rm      s
   zLZMAFile.read1c                 C   rg   r^   )rh   rR   readlinerj   rX   rX   rY   rn      s   zLZMAFile.readlinec                 C   sZ   	 |    t|ttfrt|}nt|}|j}| j|}| j	
| |  j|7  _|S r^   )_check_can_writerF   rH   	bytearraylen
memoryviewnbytesrD   r"   r=   r;   rE   )rS   datalength
compressedrX   rX   rY   r;      s   
zLZMAFile.writec                 C   s   	 |    | j||S r^   )_check_can_seekrR   seek)rS   offsetwhencerX   rX   rY   rx      s   zLZMAFile.seekc                 C   s$   	 |    | jtkr| j S | jS r^   )r`   r@   rB   rR   tellrE   r]   rX   rX   rY   r{     s
   

zLZMAFile.tell)Nr+   )r,   )__name__
__module____qualname__rZ   r[   propertyr_   ra   rd   rc   rf   ri   r:   rm   rn   r;   rP   SEEK_SETrx   r{   rX   rX   rX   rY   r   &   s&    	U



	

r   r2   r,   )r.   r/   r0   r1   encodingerrorsnewlinec                C   s   	 d|v rd|v rt d|f n|d urt d|d ur!t d|d ur)t d|dd}	t| |	||||d}
d|v rJt|}t|
|||S |
S )	Ntr9   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-   )rA   replacer   rP   text_encodingTextIOWrapper)rT   rU   r.   r/   r0   r1   r   r   r   lz_modebinary_filerX   rX   rY   r!     s&   

r!   c                 C   s"   	 t ||||}|| |  S r^   )r   r"   r\   )rt   r.   r/   r0   r1   comprX   rX   rY   r"   ?  s   r"   c                 C   sl   	 g }	 t |||}z|| }W n ty   |rY n w || |js*td|j} | s0nqd|S )NTzACompressed data ended before the end-of-stream marker was reached    )r   r#   r    appendeofunused_datajoin)rt   r.   memlimitr1   resultsdecompresrX   rX   rY   r#   K  s&   

r#   )r2   )__all__rK   rP   rI   _lzmar'   r(   rN   r?   rB   rC   
BaseStreamr   r!   r   r"   r   r#   rX   rX   rX   rY   <module>   s&    
 j0