o
    IAfG.                     @   s   	 g d Z dZddlmZ ddlZddlZddlZddlm	Z	m
Z
 dZdZdZG dd	 d	ejZ		dddZdddZdd ZdS ))BZ2FileBZ2CompressorBZ2Decompressoropencompress
decompressz%Nadeem Vawda <nadeem.vawda@gmail.com>    )r   N)r   r         c                   @   s   e Zd Z	 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 Zd+ddZd+ddZd d! Zd"d# Zejfd$d%Zd&d' Zd(S ),r   r	   compresslevelc                C   s8  	 d | _ d| _t| _d|  krdkstd td|dv r%d}t}n1|dv r3d}t}t|| _n#|d	v rAd
}t}t|| _n|dv rOd}t}t|| _ntd|f t	|t
ttjfrlt||| _ d| _|| _nt|dsvt|dr}|| _ || _ntd| jtkrtj| j ttd}t|| _d S d| _d S )NFr   r   z%compresslevel must be between 1 and 9) r
   rbr   )wwbr   )xxbr   )aabr   Invalid mode: %rTreadwritez6filename must be a str, bytes, file or PathLike object)trailing_errorr   )_fp_closefp_MODE_CLOSED_mode
ValueError
_MODE_READ_MODE_WRITEr   _compressor
isinstancestrbytesosPathLike_builtin_openhasattr	TypeError_compressionDecompressReaderr   OSErrorioBufferedReader_buffer_pos)selffilenamemoder   	mode_coderaw r6   /usr/lib/python3.10/bz2.py__init__%   sL   

zBZ2File.__init__c                 C   s  	 | j tkrd S zQ| j tkr| j  n| j tkr%| j| j	  d | _W z&| j
r>| j  W d | _d| _
t| _ d | _d S W d | _d| _
t| _ d | _d S d | _d| _
t| _ d | _w z$| j
rq| j  W d | _d| _
t| _ d | _w W d | _d| _
t| _ d | _w d | _d| _
t| _ d | _w )NF)r   r   r   r/   closer    r   r   r!   flushr   r1   r6   r6   r7   r9   a   sT   




zBZ2File.closec                 C   s   	 | j tkS N)r   r   r;   r6   r6   r7   closedy   s   
zBZ2File.closedc                 C   s   	 |    | j S r<   )_check_not_closedr   filenor;   r6   r6   r7   r?   ~      
zBZ2File.filenoc                 C   s   	 |   o	| j S r<   )readabler/   seekabler;   r6   r6   r7   rB      s   zBZ2File.seekablec                 C      	 |    | jtkS r<   )r>   r   r   r;   r6   r6   r7   rA      r@   zBZ2File.readablec                 C   rC   r<   )r>   r   r    r;   r6   r6   r7   writable   r@   zBZ2File.writabler   c                 C      	 |    | j|S r<   )_check_can_readr/   peek)r1   nr6   r6   r7   rG      s   zBZ2File.peekc                 C   rE   r<   )rF   r/   r   r1   sizer6   r6   r7   r      s   zBZ2File.readc                 C   s$   	 |    |dk rtj}| j|S )Nr   )rF   r-   DEFAULT_BUFFER_SIZEr/   read1rJ   r6   r6   r7   rM      s
   zBZ2File.read1c                 C   rE   r<   )rF   r/   readinto)r1   br6   r6   r7   rN      s   zBZ2File.readintoc                 C   :   	 t |tst|dstd| }|   | j|S N	__index__zInteger argument expected)r"   intr(   r)   rR   rF   r/   readlinerJ   r6   r6   r7   rT         

zBZ2File.readlinec                 C   rP   rQ   )r"   rS   r(   r)   rR   rF   r/   	readlinesrJ   r6   r6   r7   rV      rU   zBZ2File.readlinesc                 C   sZ   	 |    t|ttfrt|}nt|}|j}| j|}| j	
| |  j|7  _|S r<   )_check_can_writer"   r$   	bytearraylen
memoryviewnbytesr!   r   r   r   r0   )r1   datalength
compressedr6   r6   r7   r      s   
zBZ2File.writec                 C   s   	 t j| |S r<   )r*   
BaseStream
writelines)r1   seqr6   r6   r7   r`      s   zBZ2File.writelinesc                 C   s   	 |    | j||S r<   )_check_can_seekr/   seek)r1   offsetwhencer6   r6   r7   rc      s   zBZ2File.seekc                 C   s$   	 |    | jtkr| j S | jS r<   )r>   r   r   r/   tellr0   r;   r6   r6   r7   rf     s
   

zBZ2File.tellN)r
   )r   )rI   )__name__
__module____qualname__r8   r9   propertyr=   r?   rB   rA   rD   rG   r   rM   rN   rT   rV   r   r`   r-   SEEK_SETrc   rf   r6   r6   r6   r7   r      s(    	<



	


r   r   r   c                 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 rGt|}t||||S |S )	NtrO   r   z0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary moder   r   )r   replacer   r-   text_encodingTextIOWrapper)r2   r3   r   encodingerrorsnewlinebz_modebinary_filer6   r6   r7   r     s"   
r   c                 C   s   	 t |}|| |  S r<   )r   r   r:   )r\   r   compr6   r6   r7   r   9  s   r   c                 C   sd   	 g }| r-t  }z|| }W n ty   |rY n w || |js(td|j} | sd|S )NzACompressed data ended before the end-of-stream marker was reached    )r   r   r,   appendeofr   unused_datajoin)r\   resultsdecompresr6   r6   r7   r   D  s"   

r   )r   r   NNN)r   )__all__
__author__builtinsr   r'   r-   r%   r*   _bz2r   r   r   r   r    r_   r   r   r   r6   r6   r6   r7   <module>   s$     v

*