
    =OgG.                         	 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	ej                  Z	 	 ddZddZd ZdS ))BZ2FileBZ2CompressorBZ2Decompressoropencompress
decompressz%Nadeem Vawda <nadeem.vawda@gmail.com>    )r   N)r   r         c                       e Zd Z	 ddddZd Zed             Zd Zd Zd	 Z	d
 Z
ddZddZddZd ZddZddZd Zd Zej        fdZd ZdS )r   r	   compresslevelc                F   	 d | _         d| _        t          | _        d|cxk    rdk    sn t	          d          |dv r
d}t
          }nx|dv rd}t          }t          |          | _        nV|d	v rd
}t          }t          |          | _        n4|dv rd}t          }t          |          | _        nt	          d|          t          |t          t          t          j        f          r$t          ||          | _         d| _        || _        n>t          |d          st          |d          r|| _         || _        nt!          d          | j        t
          k    rAt#          j        | j         t&          t(                    }t+          j        |          | _        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: T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raws         /usr/lib64/python3.11/bz2.py__init__zBZ2File.__init__%   s   	" !
]''''a''''DEEE?""D"II[  D#I,];;D[  D#I,];;D[  D#I,];;D*449:::heR[ 9:: 	V$Xt44DH DM"DJJXv&& 	V'(G*D*D 	VDH"DJJTUUU:##/9 9 9C,S11DLLLDIII    c                    	 | j         t          k    rd S 	 | j         t          k    r| j                                         nH| j         t
          k    r8| j                            | j        	                                           d | _        	 | j
        r| j                                         d | _        d| _
        t          | _         d | _        d S # d | _        d| _
        t          | _         d | _        w xY w# 	 | j
        r| j                                         d | _        d| _
        t          | _         d | _        n&# d | _        d| _
        t          | _         d | _        w xY ww xY w)NF)r    r   r"   r2   closer#   r   r   r$   flushr   r4   s    r9   r=   zBZ2File.closea   s_   	
 :%%F	$zZ''""$$$${**t/5577888#' $= %HNN$$$ %)
#   %)
#####$= %HNN$$$ %)
#   %)
#########s0   A2C1  C #C.1E3 D5"E5#EEc                 $    	 | j         t          k    S N)r    r   r?   s    r9   closedzBZ2File.closedy   s    *z\))r;   c                 ^    	 |                                   | j                                        S rA   )_check_not_closedr   filenor?   s    r9   rE   zBZ2File.fileno~   s)    A   x   r;   c                 ^    	 |                                  o| j                                        S rA   )readabler2   seekabler?   s    r9   rH   zBZ2File.seekable   s&    7}}:4<#8#8#:#::r;   c                 L    	 |                                   | j        t          k    S rA   )rD   r    r"   r?   s    r9   rG   zBZ2File.readable   s$    =   zZ''r;   c                 L    	 |                                   | j        t          k    S rA   )rD   r    r#   r?   s    r9   writablezBZ2File.writable   s$    =   z[((r;   r   c                 `    	 |                                   | j                            |          S rA   )_check_can_readr2   peek)r4   ns     r9   rN   zBZ2File.peek   s3    	
 	 |  ###r;   c                 `    	 |                                   | j                            |          S rA   )rM   r2   r   r4   sizes     r9   r   zBZ2File.read   s1    	
 	|  &&&r;   c                     	 |                                   |dk     rt          j        }| j                            |          S )Nr   )rM   r0   DEFAULT_BUFFER_SIZEr2   read1rR   s     r9   rV   zBZ2File.read1   sB    	 	!88)D|!!$'''r;   c                 `    	 |                                   | j                            |          S rA   )rM   r2   readinto)r4   bs     r9   rX   zBZ2File.readinto   s1    	 	|$$Q'''r;   c                     	 t          |t                    s3t          |d          st          d          |                                }|                                  | j                            |          S N	__index__zInteger argument expected)r%   intr+   r,   r\   rM   r2   readlinerR   s     r9   r^   zBZ2File.readline   ss    	 $$$ 	$4-- = ;<<<>>##D|$$T***r;   c                     	 t          |t                    s3t          |d          st          d          |                                }|                                  | j                            |          S r[   )r%   r]   r+   r,   r\   rM   r2   	readlinesrR   s     r9   r`   zBZ2File.readlines   ss    	 $$$ 	$4-- = ;<<<>>##D|%%d+++r;   c                 <   	 |                                   t          |t          t          f          rt	          |          }nt          |          }|j        }| j                            |          }| j	        
                    |           | xj        |z  c_        |S rA   )_check_can_writer%   r'   	bytearraylen
memoryviewnbytesr$   r   r   r   r3   )r4   datalength
compresseds       r9   r   zBZ2File.write   s    	 	dUI.// 	!YYFF d##D[F%..t44
z"""		V		r;   c                 D    	 t           j                            | |          S rA   )r-   
BaseStream
writelines)r4   seqs     r9   rl   zBZ2File.writelines   s"    	 &11$<<<r;   c                 b    	 |                                   | j                            ||          S rA   )_check_can_seekr2   seek)r4   offsetwhences      r9   rp   zBZ2File.seek   s3    	 	|  000r;   c                     	 |                                   | j        t          k    r| j                                        S | j        S rA   )rD   r    r"   r2   tellr3   r?   s    r9   rt   zBZ2File.tell  s@    /   :##<$$&&&yr;   N)r   )r   )rP   )__name__
__module____qualname__r:   r=   propertyrB   rE   rH   rG   rK   rN   r   rV   rX   r^   r`   r   rl   r0   SEEK_SETrp   rt    r;   r9   r   r      s[       :A : : : : :x$ $ $0 * * X*! ! !
; ; ;( ( (
) ) )

$ 
$ 
$ 
$' ' ' '
( 
( 
( 
(( ( (+ + + +, , , ,  *= = = #%+ 1 1 1 1$    r;   r   r   r   c                 R   	 d|v rd|v rt          d|          n3|t          d          |t          d          |t          d          |                    dd          }t          | ||          }d|v r+t          j        |          }t          j        ||||          S |S )	NtrY   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   r0   text_encodingTextIOWrapper)r5   r6   r   encodingerrorsnewlinebz_modebinary_files           r9   r   r     s    & d{{$;;*449:::  OPPPMNNNNOOOll3##G(G=IIIK
d{{#H--XvwGGGr;   c                 v    	 t          |          }|                    |           |                                z   S rA   )r   r   r>   )rg   r   comps      r9   r   r   9  s5     ''D==--r;   c                    	 g }| rlt                      }	 |                    |           }n# t          $ r |rY n9 w xY w|                    |           |j        st          d          |j        } | ld                    |          S )NzACompressed data ended before the end-of-stream marker was reachedr;   )r   r   r/   appendeofr!   unused_datajoin)rg   resultsdecompress       r9   r   r   D  s     G
 " ""	##D))CC 	 	 	 		
 	sz 	A @ A A A!  " 88Gs   + ;;)r   r   NNN)r   )__all__
__author__builtinsr   r*   r0   r(   r-   _bz2r   r   r   r"   r#   rk   r   r   r   rz   r;   r9   <module>r      s   - - - 5
 * * * * * * 				 				     / / / / / / / / 
r r r r rl% r r rj -.-1' ' ' 'T. . . .    r;   