
    ,hh.                         / S Qr SrSSKJr  SSKrSSKrSSKrSSKJ	r	J
r
  SrSr " S S	\R                  5      r  SS
 jrSS jrS rg))BZ2FileBZ2CompressorBZ2Decompressoropencompress
decompressz%Nadeem Vawda <nadeem.vawda@gmail.com>    )r   N)r   r         c                       \ rS rSrSSS.S jjrS r\S 5       r\S 5       r\S 5       r	S	 r
S
 rS rS rSS jrSS jrSS jrS rSS jrSS jrS rS r\R.                  4S jrS rSrg)r      	   compresslevelc                   S U l         SU l        S U l        SUs=::  a  S::  d  O  [        S5      eUS;   a	  Sn[        nOlUS;   a  Sn[
        n[        U5      U l        OMUS	;   a  S
n[
        n[        U5      U l        O.US;   a  Sn[
        n[        U5      U l        O[        SU< 35      e[        U[        [        [        R                  45      (       a  [        X5      U l         SU l        X@l        O:[        US5      (       d  [        US5      (       a  Xl         X@l        O[        S5      eU R                  [        :X  aD  [         R"                  " U R                   [$        [&        S9n[(        R*                  " U5      U l        g SU l        g )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
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         ,/opt/python-3.13.8/usr/lib/python3.13/bz2.py__init__BZ2File.__init__%   sN   $ 
]'a'DEE?"D"I[ D#I,];D[ D#I,];D[ D#I,];D49::heR[[ 9::$X4DH DM"JXv&&'(G*D*DH"JTUU::#//9C,,S1DLDI    c                    U R                   (       a  g  U R                  [        :X  a  U R                  R	                  5         ONU R                  [
        :X  a:  U R                  R                  U R                  R                  5       5        S U l         U R                  (       a  U R                  R	                  5         S U l        SU l
        S U l        g ! S U l        SU l
        S U l        f = f!  U R                  (       a  U R                  R	                  5         S U l        SU l
        S U l        f ! S U l        SU l
        S U l        f = f= f)NF)closedr    r"   r2   closer#   r   r   r$   flushr   r4   s    r9   r?   BZ2File.closea   s     ;;	$zzZ'""${*t//5578#' $==HHNN$ %#   %#$==HHNN$ %#   %#s0   A=C- +C C*-E
/+D0E
0EE
c                     U R                   S L $ N)r   rA   s    r9   r>   BZ2File.closedx   s     xx4r<   c                 N    U R                  5         U R                  R                  $ rD   )_check_not_closedr   namerA   s    r9   rH   BZ2File.name}   s     xx}}r<   c                 2    U R                   [        :X  a  S$ S$ )Nr   r   )r    r#   rA   s    r9   r6   BZ2File.mode   s    zz[0t:d:r<   c                 V    U R                  5         U R                  R                  5       $ rD   )rG   r   filenorA   s    r9   rM   BZ2File.fileno   s     xx  r<   c                 d    U R                  5       =(       a    U R                  R                  5       $ rD   )readabler2   seekablerA   s    r9   rQ   BZ2File.seekable   s     }}:4<<#8#8#::r<   c                 H    U R                  5         U R                  [        :H  $ rD   )rG   r    r"   rA   s    r9   rP   BZ2File.readable   s     zzZ''r<   c                 H    U R                  5         U R                  [        :H  $ rD   )rG   r    r#   rA   s    r9   writableBZ2File.writable   s     zz[((r<   c                 X    U R                  5         U R                  R                  U5      $ rD   )_check_can_readr2   peek)r4   ns     r9   rZ   BZ2File.peek   s'     	 ||  ##r<   c                 X    U R                  5         U R                  R                  U5      $ rD   )rY   r2   r   r4   sizes     r9   r   BZ2File.read   s%     	||  &&r<   c                     U R                  5         US:  a  [        R                  nU R                  R	                  U5      $ )Nr   )rY   r0   DEFAULT_BUFFER_SIZEr2   read1r^   s     r9   rc   BZ2File.read1   s7     	!8))D||!!$''r<   c                 X    U R                  5         U R                  R                  U5      $ rD   )rY   r2   readinto)r4   bs     r9   rf   BZ2File.readinto   s%    
 	||$$Q''r<   c                     [        U[        5      (       d,  [        US5      (       d  [        S5      eUR	                  5       nU R                  5         U R                  R                  U5      $ N	__index__zInteger argument expected)r%   intr+   r,   rk   rY   r2   readliner^   s     r9   rm   BZ2File.readline   sW     $$$4-- ;<<>>#D||$$T**r<   c                     [        U[        5      (       d,  [        US5      (       d  [        S5      eUR	                  5       nU R                  5         U R                  R                  U5      $ rj   )r%   rl   r+   r,   rk   rY   r2   	readlinesr^   s     r9   rp   BZ2File.readlines   sW     $$$4-- ;<<>>#D||%%d++r<   c                 8   U R                  5         [        U[        [        45      (       a  [	        U5      nO[        U5      nUR                  nU R                  R                  U5      nU R                  R                  U5        U =R                  U-  sl        U$ rD   )_check_can_writer%   r'   	bytearraylen
memoryviewnbytesr$   r   r   r   r3   )r4   datalength
compresseds       r9   r   BZ2File.write   sy     	dUI.//YF d#D[[F%%..t4
z"		V	r<   c                 @    [         R                  R                  X5      $ rD   )r-   
BaseStream
writelines)r4   seqs     r9   r~   BZ2File.writelines   s     &&11$<<r<   c                 X    U R                  5         U R                  R                  X5      $ rD   )_check_can_seekr2   seek)r4   offsetwhences      r9   r   BZ2File.seek   s%     	||  00r<   c                     U R                  5         U R                  [        :X  a  U R                  R	                  5       $ U R
                  $ rD   )rG   r    r"   r2   tellr3   rA   s    r9   r   BZ2File.tell  s7     ::#<<$$&&yyr<   )r2   r   r$   r   r    r3   N)r   )r   ))__name__
__module____qualname____firstlineno__r:   r?   propertyr>   rH   r6   rM   rQ   rP   rV   rZ   r   rc   rf   rm   rp   r   r~   r0   SEEK_SETr   r   __static_attributes__ r<   r9   r   r      s    :A :x$.       ; ;!
;(
)

$'
((+,*= #%++ 1$r<   r   c                 0   SU;   a  SU;   a  [        SU< 35      eO*Ub  [        S5      eUb  [        S5      eUb  [        S5      eUR                  SS5      n[        XUS9nSU;   a-  [        R                  " U5      n[        R
                  " XsXE5      $ U$ )	Ntrg   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{$;49::  OPPMNNNOOll3#G(=IK
d{##H-vGGr<   c                 \    [        U5      nUR                  U 5      UR                  5       -   $ rD   )r   r   r@   )rx   r   comps      r9   r   r   A  s(     'D==--r<   c                 $   / nU (       a^  [        5       n UR                  U 5      nUR                  U5        UR                  (       d  [        S5      eUR                  n U (       a  M^  SR                  U5      $ ! [         a    U(       a   M%  e f = f)NzACompressed data ended before the end-of-stream marker was reachedr<   )r   r   r/   appendeofr!   unused_datajoin)rx   resultsdecompress       r9   r   r   L  s    
 G
 "	##D)C 	szz @ A A!! $ 88G  			s   A9 9BB)r   r   NNN)r   )__all__
__author__builtinsr   r*   r0   r(   r-   _bz2r   r   r"   r#   r}   r   r   r   r   r<   r9   <module>r      s[   - 5
 * 	 	  / 
zl%% zz -.-1'T.r<   