a
    Rh3                  	   @   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 rL|dkr*td|d ur:td|d u rFt}t}n@|dv r~|d u r`t}t}t	||||d| _
d| _ntd	|t|tttjfrd
|v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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   ,/opt/python-3.9.24/usr/lib/python3.9/lzma.py__init__1   sF    ,
zLZMAFile.__init__c                 C   s   | j tkrd S z~| j tkr,| j  d | _n"| j tkrN| j| j	  d | _W z&| j
rb| j  W d | _d| _
t| _ qd | _d| _
t| _ 0 n>z&| j
r| j  W d | _d| _
t| _ nd | _d| _
t| _ 0 0 d S )NF)r@   r?   rB   rR   closerC   r=   r;   rD   flushr>   rS   rX   rX   rY   r[      s6    




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      s    zLZMAFile.filenoc                 C   s   |   o| j S r^   )readablerR   seekabler]   rX   rX   rY   rc      s    zLZMAFile.seekablec                 C   s   |    | jtkS r^   )r`   r@   rB   r]   rX   rX   rY   rb      s    zLZMAFile.readablec                 C   s   |    | jtkS r^   )r`   r@   rC   r]   rX   rX   rY   writable   s    zLZMAFile.writablec                 C   s   |    | j|S r^   )_check_can_readrR   peekrS   sizerX   rX   rY   rf      s    zLZMAFile.peekc                 C   s   |    | j|S r^   )re   rR   r:   rg   rX   rX   rY   r:      s    zLZMAFile.readc                 C   s"   |    |dk rtj}| j|S )Nr%   )re   rP   DEFAULT_BUFFER_SIZErR   read1rg   rX   rX   rY   rj      s    zLZMAFile.read1c                 C   s   |    | j|S r^   )re   rR   readlinerg   rX   rX   rY   rk      s    zLZMAFile.readlinec                 C   sX   |    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   ru      s    zLZMAFile.seekc                 C   s"   |    | jtkr| j S | jS r^   )r`   r@   rB   rR   tellrE   r]   rX   rX   rY   rx     s    

zLZMAFile.tell)Nr+   )r,   )r,   )r,   )r,   )__name__
__module____qualname__rZ   r[   propertyr_   ra   rc   rb   rd   rf   r:   rj   rk   r;   rP   SEEK_SETru   rx   rX   rX   rX   rY   r   &   s"   U


	


r   r2   r,   )r.   r/   r0   r1   encodingerrorsnewlinec                C   s   d|v r d|v rPt d|f n0|d ur0t d|d ur@t d|d urPt d|dd}	t| |	||||d}
d|v rt|
|||S |
S d 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   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\   )rq   r.   r/   r0   r1   comprX   rX   rY   r"   >  s    r"   c                 C   sn   g }t |||}z|| }W n ty<   |r6Y qdn Y n0 || |jsVtd|j} | sqdqd|S )NzACompressed data ended before the end-of-stream marker was reached    )r   r#   r    appendeofunused_datajoin)rq   r.   memlimitr1   resultsdecompresrX   rX   rY   r#   J  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/