
    ;e                        d dl mZ d dlmZmZ d dlZd dlZd dlmZm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlZd dlZ ej        d          Zd d	lmZmZmZ dad
 Z G d dej                   Z! G d de!          Z" G d de!          Z# G d de!          Z$ G d de!          Z% G d de!          Z&d Z'e(dk    r ej)                     dS dS )    )support)
bigmemtest_4GN)BytesIODEFAULT_BUFFER_SIZE)import_helper)threading_helper)unlinkbz2)BZ2FileBZ2CompressorBZ2Decompressorc                     t           !t          t          j        d                    a t           rt	          j        dg|           S t                              |           S )Nbunzip2)input)has_cmdline_bunzip2boolshutilwhich
subprocesscheck_outputr   
decompress)datas    $/usr/lib/python3.11/test/test_bz2.pyext_decompressr      sR    ""6<	#:#:;; $&	{$????~~d###    c            	          e Zd ZdZg dZd                    e          ZdZdZdZ	dZ
 ed          Z ej        ej                             ej        ej                            e                    d	                    D ]WZ eed
          5 Ze
e                     ee          e
d                   z  Z
ddd           n# 1 swxY w Y   e
dk    r nXe                    ed          Zd Zd ZdS )BaseTestzBase for other testcases.)s    root:x:0:0:root:/root:/bin/bash
s   bin:x:1:1:bin:/bin:
s   daemon:x:2:2:daemon:/sbin:
s   adm:x:3:4:adm:/var/adm:
s   lp:x:4:7:lp:/var/spool/lpd:
s    sync:x:5:0:sync:/sbin:/bin/sync
s-   shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
s!   halt:x:7:0:halt:/sbin:/sbin/halt
s"   mail:x:8:12:mail:/var/spool/mail:
s"   news:x:9:13:news:/var/spool/news:
s#   uucp:x:10:14:uucp:/var/spool/uucp:
s    operator:x:11:0:operator:/root:
s!   games:x:12:100:games:/usr/games:
s,   gopher:x:13:30:gopher:/usr/lib/gopher-data:
s(   ftp:x:14:50:FTP User:/var/ftp:/bin/bash
s#   nobody:x:65534:65534:Nobody:/home:
s.   postfix:x:100:101:postfix:/var/spool/postfix:
s-   niemeyer:x:500:500::/home/niemeyer:/bin/bash
s>   postgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash
s6   mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
s#   www:x:103:104::/var/www:/bin/false
r   s  BZh91AY&SY.N >_ @n ?0 F#&FЦMQ4hh$i44S<QHՇI/E pu]ɻDL
Q	1ߠ2O97dIJL#/#CWMXa<etL˄.`n}lh	E,ZVH>9gd6
Պ.Kvxwߡ|/";ձ#Aoy\O煚f82"%>V,z⟣"E)I^rU26U0^DFݸankR3]f"6l$j@l1..klsEknQ%yvz̹zn7.G]B@!8`s   BZh9rE8P    s   this is not a valid bzip2 filer   i   z*.pyrbN   compresslevelc                 d    t          j                    \  }| _        t          j        |           d S N)tempfilemkstempfilenameosclose)selffds     r   setUpzBaseTest.setUpR   s(    $,..DM
r   c                 .    t          | j                   d S r$   )r
   r'   r*   s    r   tearDownzBaseTest.tearDownV   s    t}r   )__name__
__module____qualname____doc__
TEXT_LINESjoinTEXTDATA
EMPTY_DATABAD_DATA	test_size	bytearrayBIG_TEXTglobr(   pathescapedirname__file__fnameopenfhreadinto
memoryviewr   compressBIG_DATAr,   r/    r   r   r   r   &   s       
 
 
J. 88JD ^D4J0H Iy""H27<<BGOOH4M4M(N(NPVWWXX  T% 	G"ZZ%9%9)**%EFFFI	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GxE  ||HA|66H      s   *CC
	C
	r   c                      e Zd ZdZdAdZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(d) Z)d* Z*d+ Z+d, Z,d- Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2 e3j4                    d3             Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@S )BBZ2FileTestzTest the BZ2File class.r    r   c                     t          | j        d          5 }|                    | j        |z             |                    |           d d d            d S # 1 swxY w Y   d S )Nwb)rC   r'   writer7   )r*   streamssuffixfs       r   createTempFilezBZ2FileTest.createTempFile]   s    $-&& 	!GGDI'(((GGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   3AAAc                 ^   |                      t          t          d           |                      t          t          t          j        d           |                      t          t          t          j        d           |                      t          t          t          j        d           |                      t          t          t          j        d           |                      t          t          t          j        d           |                      t          t          t          j        dd	           d S )
Ngw/^@zrxrbtr   r!   
   r   )assertRaises	TypeErrorr   
ValueErrorr(   devnullr.   s    r   testBadArgszBZ2FileTest.testBadArgsb   s    )Wg666*grz3???*grz4@@@*grz5AAA*grzKKK*grzLLL 	)Wbj#qAAAAAr   c                 <   |                                   t          | j                  5 }|                     t          |j        t                                 |                     |                                | j                   d d d            d S # 1 swxY w Y   d S r$   	rR   r   r'   rZ   r[   readfloatassertEqualr6   r*   bz2fs     r   testReadzBZ2FileTest.testReadm   s    T]## 	5tiEGG<<<TYY[[$)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   ABBBc                     |                      d| j                   t          | j                  5 }|                     t
          |j                   d d d            d S # 1 swxY w Y   d S )Nr   rO   rP   )rR   r9   r   r'   rZ   OSErrorra   rd   s     r   testReadBadFilezBZ2FileTest.testReadBadFiles   s    Adm<<<T]## 	2tgty111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   !AA#&A#c                 F   |                      d           t          | j                  5 }|                     t          |j        t                                 |                     |                                | j        dz             d d d            d S # 1 swxY w Y   d S N   rO   r`   rd   s     r   testReadMultiStreamzBZ2FileTest.testReadMultiStreamx   s    A&&&T]## 	9tiEGG<<<TYY[[$)a-888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   ABBBc                    t           j        }t          | j                  t           _        	 |                     d           t          | j                  5 }|                     t          |j	        t                                 |                     |	                                | j        dz             d d d            n# 1 swxY w Y   |t           _        d S # |t           _        w xY wrl   )_compressionBUFFER_SIZElenr7   rR   r   r'   rZ   r[   ra   rb   rc   r6   )r*   buffer_sizere   s      r   testReadMonkeyMultiStreamz%BZ2FileTest.testReadMonkeyMultiStream~   s     #.#&ty>> 	3***'' =4!!)TY@@@  di!m<<<= = = = = = = = = = = = = = = (3L$$${L$2222s0   *C AC 4C  CC CC C'c                     |                      | j                   t          | j                  5 }|                     |                                | j                   d d d            d S # 1 swxY w Y   d S )N)rP   rR   r9   r   r'   rc   ra   r6   rd   s     r   testReadTrailingJunkz BZ2FileTest.testReadTrailingJunk   s    4=111T]## 	5tTYY[[$)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   .A++A/2A/c                     |                      d| j                   t          | j                  5 }|                     |                                | j        dz             d d d            d S # 1 swxY w Y   d S )Nrm   rh   rw   rd   s     r   testReadMultiStreamTrailingJunkz+BZ2FileTest.testReadMultiStreamTrailingJunk   s    Adm<<<T]## 	9tTYY[[$)a-888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   1A//A36A3c                 4   |                                   t          | j                  5 }|                     t          |j        t                                 |                     |                    d          d           d d d            d S # 1 swxY w Y   d S )Nr   r   )rR   r   r'   rZ   r[   ra   rb   rc   rd   s     r   	testRead0zBZ2FileTest.testRead0   s    T]## 	0tiEGG<<<TYYq\\3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   ABBBc                     |                                   t          | j                  5 }d}	 |                    d          }|sn||z  }|                     || j                   d d d            d S # 1 swxY w Y   d S )Nr   TrW   rR   r   r'   ra   rc   r6   r*   re   textstrs       r   testReadChunk10zBZ2FileTest.testReadChunk10   s    T]## 	.tDiimm 	
 T49---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   =A33A7:A7c                 
   |                      d           t          | j                  5 }d}	 |                    d          }|sn||z  }|                     || j        dz             d d d            d S # 1 swxY w Y   d S )Nrm   rn   r   TrW   r~   r   s       r   testReadChunk10MultiStreamz&BZ2FileTest.testReadChunk10MultiStream   s    A&&&T]## 	2tDiimm 	
 T49q=111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   A A88A<?A<c                     |                                   t          | j                  5 }|                     |                    d          | j        d d                    d d d            d S # 1 swxY w Y   d S )Nd   )rR   r   r'   rc   ra   r6   rd   s     r   testRead100zBZ2FileTest.testRead100   s    T]## 	>tTYYs^^TYtt_===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   7A--A14A1c                    |                                   t          | j                  5 }|                                }|                     t          |          d           |                     | j                            |                     | 	                    |
                                | j                   d d d            d S # 1 swxY w Y   d S Nr   )rR   r   r'   peekassertNotEqualrs   
assertTruer6   
startswithrc   ra   )r*   re   pdatas      r   testPeekzBZ2FileTest.testPeek   s    T]## 	5tIIKKEE

A...OODI0077888TYY[[$)444		5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   BCCCc                 \   |                                   t          | j                  5 }d}t          |          }|                     |                    |          |           |                     || j        d |                    t          | j                  |z
  }t          t          | j                            }|                     |                    |          |           |                     |d |         | j        | d                     d d d            d S # 1 swxY w Y   d S )N   )rR   r   r'   r;   rc   rE   r6   rs   )r*   re   nbs       r   testReadIntozBZ2FileTest.testReadInto   sJ   T]## 	4tA!AT]]1--q111Q	"1"...DI"A#di..))AT]]1--q111QrrUDIqbccN333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   C+D!!D%(D%c                 0   |                                   t          | j                  5 }|                     t          |j        d            | j        D ]*}|                     |                                |           +	 d d d            d S # 1 swxY w Y   d S r$   rR   r   r'   rZ   r[   readliner4   rc   r*   re   lines      r   testReadLinezBZ2FileTest.testReadLine   s    T]## 	8ti=== 8 8  $77778	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   ABBBc                 :   |                      d           t          | j                  5 }|                     t          |j        d            | j        dz  D ]*}|                     |                                |           +	 d d d            d S # 1 swxY w Y   d S rl   r   r   s      r   testReadLineMultiStreamz#BZ2FileTest.testReadLineMultiStream   s    A&&&T]## 	8ti===!+ 8 8  $77778	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   ABBBc                 $   |                                   t          | j                  5 }|                     t          |j        d            |                     |                                | j                   d d d            d S # 1 swxY w Y   d S r$   rR   r   r'   rZ   r[   	readlinesrc   r4   rd   s     r   testReadLineszBZ2FileTest.testReadLines   s    T]## 	@ti>>>T^^--t???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   ABB	B	c                 .   |                      d           t          | j                  5 }|                     t          |j        d            |                     |                                | j        dz             d d d            d S # 1 swxY w Y   d S rl   r   rd   s     r   testReadLinesMultiStreamz$BZ2FileTest.testReadLinesMultiStream   s    A&&&T]## 	Dti>>>T^^--t/BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   AB

BBc                     |                                   t          | j                  5 }|                     t	          t          |                    | j                   d d d            d S # 1 swxY w Y   d S r$   rR   r   r'   rc   listiterr4   rd   s     r   testIteratorzBZ2FileTest.testIterator   s    T]## 	@tT$t**--t???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   6A,,A03A0c                     |                      d           t          | j                  5 }|                     t	          t          |                    | j        dz             d d d            d S # 1 swxY w Y   d S rl   r   rd   s     r   testIteratorMultiStreamz#BZ2FileTest.testIteratorMultiStream   s    A&&&T]## 	DtT$t**--t/BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   9A11A58A5c                     |                                   t          | j                  }|                                 |                     t
          t          |           |                     t
          |j                   d S r$   )rR   r   r'   r)   rZ   r\   nextr   rd   s     r   testClosedIteratorDeadlockz&BZ2FileTest.testClosedIteratorDeadlock   sf    t}%%

*dD111*dn55555r   c                    t          | j        d          5 }|                     t          |j                   |                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t          |	                                          | j                   d d d            d S # 1 swxY w Y   d S )Nwr   
r   r'   rZ   r[   rN   r6   rC   rc   r   ra   r*   re   rQ   s      r   	testWritezBZ2FileTest.testWrite   sB   T]C(( 	"Di444JJty!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" $-&& 	B!^AFFHH55tyAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs#   ;AA!$A!=;CC	C	c                    t          | j        d          5 }d}	 | j        |dz  |dz   dz           }|sn|                    |           |dz  }6	 d d d            n# 1 swxY w Y   t	          | j        d          5 }|                     t          |                                          | j                   d d d            d S # 1 swxY w Y   d S )Nr   r   TrW   r    r   )r   r'   r6   rN   rC   rc   r   ra   )r*   re   r   r   rQ   s        r   testWriteChunks10zBZ2FileTest.testWriteChunks10   si   T]C(( 	DAi"ac2X. 

3Q 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $-&& 	B!^AFFHH55tyAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs#   :AA!$A!=;CC	C	c                    t                               | j        d          }t          | j        dd          5 }|                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }|                     |                                |           d d d            d S # 1 swxY w Y   d S )Nrm   r!   r   r   )	r   rG   r6   r   r'   rN   rC   rc   ra   )r*   expectedre   rQ   s       r    testWriteNonDefaultCompressLevelz,BZ2FileTest.testWriteNonDefaultCompressLevel
  s'   <<	<;;T]Cq999 	"TJJty!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"$-&& 	1!QVVXXx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s#   A  A$'A$ )B66B:=B:c                    t          | j        d          5 }|                     t          |j                   |                    | j                   d d d            n# 1 swxY w Y   |                     t          |j        dg           t          | j        d          5 }|                     t          |
                                          | j                   d d d            d S # 1 swxY w Y   d S )Nr   ar   )r   r'   rZ   r[   
writelinesr4   r\   rC   rc   r   ra   r6   r   s      r   testWriteLineszBZ2FileTest.testWriteLines  s^   T]C(( 	-Di999OODO,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 	*dou===$-&& 	B!^AFFHH55tyAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs#   ;AA!$A!;C''C+.C+c                 l   t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t          |j        d           |                     t          |j        dg           d d d            d S # 1 swxY w Y   d S )Nr   s   abcrX      a)r   r'   rN   rZ   ri   r   rd   s     r   testWriteMethodsOnReadOnlyFilez*BZ2FileTest.testWriteMethodsOnReadOnlyFile  s6   T]C(( 	DJJv	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 T]C(( 	@Dgtz4888gt???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   8<<AB))B-0B-c                 x   t          | j        d          5 }|                     t          |j                   |                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t          |j                   |                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t          |	                                          | j        dz             d d d            d S # 1 swxY w Y   d S )Nr   r   r      r   r   s      r   
testAppendzBZ2FileTest.testAppend#  s   T]C(( 	"Di444JJty!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" T]C(( 	"Di444JJty!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" $-&& 	F!^AFFHH55ty1}EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs5   ;AA!$A!=;CCC$>D//D36D3c                 \   |                                   t          | j                  5 }|                     t          |j                   |                    d           |                     |                                | j        dd                     d d d            d S # 1 swxY w Y   d S N   )	rR   r   r'   rZ   r[   seekrc   ra   r6   rd   s     r   testSeekForwardzBZ2FileTest.testSeekForward-  s    T]## 	;ti333IIcNNNTYY[[$)CDD/:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;   A+B!!B%(B%c                    |                      d           t          | j                  5 }|                     t          |j                   |                    t          | j                  dz              |                     |	                                | j        dd                     d d d            d S # 1 swxY w Y   d S )Nr   rn   r   )
rR   r   r'   rZ   r[   r   rs   r6   rc   ra   rd   s     r   testSeekForwardAcrossStreamsz(BZ2FileTest.testSeekForwardAcrossStreams4  s    A&&&T]## 	;ti333IIc$)nns*+++TYY[[$)CDD/:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   B B88B<?B<c                 H   |                                   t          | j                  5 }|                    d           |                    dd           |                     |                                | j        dd                     d d d            d S # 1 swxY w Y   d S Ni  jr    i^  )rR   r   r'   ra   r   rc   r6   rd   s     r   testSeekBackwardszBZ2FileTest.testSeekBackwards;  s    T]## 	?tIIcNNNIIdATYY[[$)GHH*=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?   A!BBBc                    |                      d           t          | j                  5 }t          | j                  dz   }|dk    r+|t          |                    |                    z  }|dk    +|                    dd           |                     |                                | j        dd          | j        z              d d d            d S # 1 swxY w Y   d S )Nr   rn   r   r   r   r    i)rR   r   r'   rs   r6   ra   r   rc   )r*   re   readtos      r   testSeekBackwardsAcrossStreamsz*BZ2FileTest.testSeekBackwardsAcrossStreamsB  s%   A&&&T]## 	Kt^^c)F1**#dii//000 1**IIdATYY[[$)GHH*=	*IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   BCCCc                 H   |                                   t          | j                  5 }|                    dd           |                     |                                | j        t          | j                  dz
  d                     d d d            d S # 1 swxY w Y   d S )Nr   r   r   )rR   r   r'   r   rc   ra   r6   rs   rd   s     r   testSeekBackwardsFromEndz$BZ2FileTest.testSeekBackwardsFromEndK  s    T]## 	JtIIdATYY[[$)C	NN34F4G4G*HIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Jr   c                 (   |                      d           t          | j                  5 }|                    dd           |                     |                                | j        dz  dd                     d d d            d S # 1 swxY w Y   d S )Nr   rn   i)rR   r   r'   r   rc   ra   r6   rd   s     r   %testSeekBackwardsFromEndAcrossStreamsz1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamsQ  s    A&&&T]## 	CtIIeQTYY[[49q=%&&*ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   ABBBc                 v   |                                   t          | j                  5 }|                    d           |                     |                                t          | j                             |                     |                                d           d d d            d S # 1 swxY w Y   d S NI r   	rR   r   r'   r   rc   tellrs   r6   ra   rd   s     r   testSeekPostEndzBZ2FileTest.testSeekPostEndW  s    T]## 	/tIIfTYY[[#di..999TYY[[#...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A8B..B25B2c                    |                      d           t          | j                  5 }|                    d           |                     |                                t          | j                  dz             |                     |                                d           d d d            d S # 1 swxY w Y   d S Nrm   rn   r   r   r   rd   s     r   testSeekPostEndMultiStreamz&BZ2FileTest.testSeekPostEndMultiStream^  s    A&&&T]## 	/tIIfTYY[[#di..1*<===TYY[[#...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A;B33B7:B7c                    |                                   t          | j                  5 }|                    d           |                    d           |                     |                                t          | j                             |                     |                                d           d d d            d S # 1 swxY w Y   d S r   r   rd   s     r   testSeekPostEndTwicez BZ2FileTest.testSeekPostEndTwicee  s    T]## 	/tIIfIIfTYY[[#di..999TYY[[#...		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   BCC
Cc                    |                      d           t          | j                  5 }|                    d           |                    d           |                     |                                t          | j                  dz             |                     |                                d           d d d            d S # 1 swxY w Y   d S r   r   rd   s     r   testSeekPostEndTwiceMultiStreamz+BZ2FileTest.testSeekPostEndTwiceMultiStreamm  s    A&&&T]## 	/tIIfIIfTYY[[#di..1*<===TYY[[#...		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   BCCCc                 \   |                                   t          | j                  5 }|                    d           |                     |                                d           |                     |                                | j                   d d d            d S # 1 swxY w Y   d S )Nr   r   rR   r   r'   r   rc   r   ra   r6   rd   s     r   testSeekPreStartzBZ2FileTest.testSeekPreStartu  s    T]## 	5tIIdOOOTYY[[!,,,TYY[[$)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r   c                 f   |                      d           t          | j                  5 }|                    d           |                     |                                d           |                     |                                | j        dz             d d d            d S # 1 swxY w Y   d S )Nr   rn   r   r   r   rd   s     r   testSeekPreStartMultiStreamz'BZ2FileTest.testSeekPreStartMultiStream|  s    A&&&T]## 	9tIIdOOOTYY[[!,,,TYY[[$)a-888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   A.B&&B*-B*c                    |                                   t          | j        d          5 }t          |          }	 |                     |                                |                                           |                                 n# |                                 w xY w	 d d d            n# 1 swxY w Y   |                     t          |j                   d S )Nr   )	rR   rC   r'   r   rc   filenor)   rZ   r\   )r*   rawfre   s      r   
testFilenozBZ2FileTest.testFileno  s    $-&& 	$4==D  >>>



	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*dk22222s(   B0:B
5B0
B  B00B47B4c                    t          t          | j                            }	 |                     |                                           |                                 |                     |                                           |                                 n# |                                 w xY w|                     t          |j                   t          t                      d          }	 | 	                    |                                           |                                 n# |                                 w xY w|                     t          |j                   t          | j                  }d |_        t          |          }	 | 	                    |                                           |                                 n# |                                 w xY w|                     t          |j                   d S )Nr   c                      dS )NFrI   rI   r   r   <lambda>z*BZ2FileTest.testSeekable.<locals>.<lambda>  s    u r   )
r   r   r7   r   seekablera   r)   rZ   r\   assertFalse)r*   re   srcs      r   testSeekablezBZ2FileTest.testSeekable  s   wty))**	OODMMOO,,,IIKKKOODMMOO,,,JJLLLLDJJLLLL*dm444wyy#&&	T]]__---JJLLLLDJJLLLL*dm444di  $}s||	T]]__---JJLLLLDJJLLLL*dm44444s$   A"B B00'D, ,E'G G#c                    t          t          | j                            }	 |                     |                                           |                                 |                     |                                           |                                 n# |                                 w xY w|                     t          |j                   t          t                      d          }	 | 	                    |                                           |                                 n# |                                 w xY w|                     t          |j                   d S Nr   )
r   r   r7   r   readablera   r)   rZ   r\   r   rd   s     r   testReadablezBZ2FileTest.testReadable  s   wty))**	OODMMOO,,,IIKKKOODMMOO,,,JJLLLLDJJLLLL*dm444wyy#&&	T]]__---JJLLLLDJJLLLL*dm44444   A"B B00'D, ,Ec                    t          t          | j                            }	 |                     |                                           |                                 |                     |                                           |                                 n# |                                 w xY w|                     t          |j                   t          t                      d          }	 | 	                    |                                           |                                 n# |                                 w xY w|                     t          |j                   d S r   )
r   r   r7   r   writablera   r)   rZ   r\   r   rd   s     r   testWritablezBZ2FileTest.testWritable  s   wty))**	T]]__---IIKKKT]]__---JJLLLLDJJLLLL*dm444wyy#&&	OODMMOO,,,JJLLLLDJJLLLL*dm44444r   c                 |    |                                   t          d          D ]}t          | j                  }~d S )Ni'  )rR   ranger   r'   )r*   ios      r   testOpenDelzBZ2FileTest.testOpenDel  sG    u 	 	A&&A	 	r   c                 H    |                      t          t          d           d S )Nz/non/existent)rZ   ri   r   r.   s    r   testOpenNonexistentzBZ2FileTest.testOpenNonexistent  s     '7O<<<<<r   c                    d}t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   t          | j                  5 }|                                }d d d            n# 1 swxY w Y   |                     |dg           t          | j                  5 }t          |                                          }d d d            n# 1 swxY w Y   |                     |dg           d S )Ns,   BZh91AY&SYb]        !h3M<]BCe%trM   s   Test)rC   r'   rN   r   r   rc   r   )r*   r   rQ   re   linesxliness         r   testReadlinesNoNewlinez"BZ2FileTest.testReadlinesNoNewline  s   z$-&& 	!GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T]## 	%tNN$$E	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	***T]## 	,t$..**++F	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,'+++++s1   :>>A::A>A>0"CC"%C"c                    d }t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   t          | j        d          }|                                 	 |5  	 d d d            n# 1 swxY w Y   |                     d           n# t
          $ r Y nw xY w	 t          | j        d          5 }ddz   d d d            n# 1 swxY w Y   |                     d           d S # t          $ r Y d S w xY w)NrM   s   xxxr   z4__enter__ on a closed file didn't raise an exceptionr    r   z1/0 didn't raise an exception)r   r'   rN   r)   failr\   ZeroDivisionErrorr*   rQ   s     r   testContextProtocolzBZ2FileTest.testContextProtocol  s   T]D)) 	QGGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	DM4((					N                
 IILMMMM  	 	 	D		7-- !              
 II566666 ! 	 	 	DD	sy   :>>/B  1A?3B  ?BB  BB   
B-,B-1C: CC: CC: C C: :
DDc                    ddz  d}t          | j        d          5 fdfdt          |          D             }t          j        |          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N   1i   rW   rM   c                  V    t          d          D ]}                                d S Nrm   )r   rN   )r   r   rQ   s    r   compz'BZ2FileTest.testThreading.<locals>.comp  s3    q " "AGGDMMMM" "r   c                 :    g | ]}t          j                   S ))target)	threadingThread).0r   r  s     r   
<listcomp>z-BZ2FileTest.testThreading.<locals>.<listcomp>  s'    NNNy't444NNNr   )r   r'   r   r	   start_threads)r*   nthreadsthreadsr  r   rQ   s      @@@r   testThreadingzBZ2FileTest.testThreading  s1    e|T]D)) 	Q" " " " " " ONNNeHooNNNG!/88                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   6A<A$A<$A(	(A<+A(	,A<<B B c                    |                                   t          | j        d                   }|dz  }t          | j                  5 }|                    |           |                     t          |          | j        d         |d                     |                     |                                | j        |d                     d d d            n# 1 swxY w Y   t          | j                  5 }|	                                 |                     t          |          | j        d                    |                     |	                                | j        d                    d d d            n# 1 swxY w Y   t          | j                  5 }|
                                 |                     t          t          |           |                     |
                                g            d d d            d S # 1 swxY w Y   d S )Nr   r   r    )rR   rs   r4   r   r'   ra   rc   r   r6   r   r   rZ   StopIteration)r*   linelenhalflenre   s       r   testMixedIterationAndReadsz&BZ2FileTest.testMixedIterationAndReads   s~   doa())Q,T]## 	?tIIgT$ZZ);GHH)EFFFTYY[[$)GHH*=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? T]## 	BtMMOOOT$ZZ);<<<T]]__doa.@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B T]## 	3tNNmT4888T^^--r222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s9   BCCC4A6E66E:=E:AH  HHc                    d}d}t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   t          | j                  5 }|                     |                                ||z              d d d            d S # 1 swxY w Y   d S )Ns  foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoos  barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarr   r   )r   r'   rN   rc   ra   )r*   data1data2re   s       r   testMultiStreamOrderingz#BZ2FileTest.testMultiStreamOrdering  s   T]C(( 	DJJu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T]C(( 	DJJu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T]## 	9tTYY[[%%-888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s3   <A A A>>BB,CCCc                 f   | j         }	 |                    d          }n%# t          $ r |                     d           Y nw xY wt	          |d          5 }|                    | j                   d d d            n# 1 swxY w Y   t	          |d          5 }|                     |                                | j                   d d d            n# 1 swxY w Y   t	          |d          5 }|                     |                                | j                   d d d            d S # 1 swxY w Y   d S )Nasciiz%Temporary file name needs to be ASCIIrM   r   )	r'   encodeUnicodeEncodeErrorskipTestr   rN   r7   rc   ra   )r*   str_filenamebytes_filenamerQ   s       r   testOpenBytesFilenamez!BZ2FileTest.testOpenBytesFilename  s   }	C)0099NN! 	C 	C 	CMMABBBBB	C^T** 	aGGDI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	^T** 	2aQVVXXty111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 \4(( 	2AQVVXXty111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2sE    A AA;;A?A?.CCC+.D&&D*-D*c                 h   t          j        | j                  }t          |d          5 }|                    | j                   d d d            n# 1 swxY w Y   t          |d          5 }|                     |                                | j                   d d d            d S # 1 swxY w Y   d S )NrM   r   )pathlibPathr'   r   rN   r7   rc   ra   )r*   r'   rQ   s      r   testOpenPathLikeFilenamez$BZ2FileTest.testOpenPathLikeFilename*  s   <..Xt$$ 	GGDI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Xt$$ 	2QVVXXty111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s#   AAA,.B''B+.B+c                    t                               dt          d          z  d          }|                     t	          |          t
          j                   t          t          |                    }| 	                    |
                    d          d           dt          z   }|                     |j        j                                        |d           dS )z-Decompressed data buffering should be limited    g    >A	   r!   r    z)Excessive amount of data was decompressedN)r   rG   int
assertLessrs   rq   rr   r   r   rc   ra   r   assertLessEqual_bufferrawr   )r*   bombdecomp
max_decomps       r   testDecompressLimitedz!BZ2FileTest.testDecompressLimited1  s    ||ECHH,A|>>D		<#;<<<''Q///,,
V^/4466
7	9 	9 	9 	9 	9r   c                    t          | j                  5 }t          |          5 }|                     t          |j        t                                 |                     |                                | j                   d d d            n# 1 swxY w Y   | 	                    |j
                   d d d            d S # 1 swxY w Y   d S r$   )r   r7   r   rZ   r[   ra   rb   rc   r6   r   closedr*   biore   s      r   testReadBytesIOzBZ2FileTest.testReadBytesIO?  s'   TY 	)3 9!!)TY@@@  di8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 SZ(((		) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s5   B>AB B>B	B>B	B>>CCc                    t          | j                  5 }t          |          5 }|                                }|                     t          |          d           |                     | j                            |                     | 	                    |
                                | j                   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )r   r7   r   r   r   rs   r   r6   r   rc   ra   )r*   r=  re   r   s       r   testPeekBytesIOzBZ2FileTest.testPeekBytesIOF  s<   TY 	93 9		##CJJ222	 4 4U ; ;<<<  di888	9 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s5   CBC7CC	C
C	CC"Cc                    t                      5 }t          |d          5 }|                     t          |j                   |                    | j                   d d d            n# 1 swxY w Y   |                     t          |                                          | j                   | 	                    |j
                   d d d            d S # 1 swxY w Y   d S r   )r   r   rZ   r[   rN   r6   rc   r   getvaluer   r;  r<  s      r   testWriteBytesIOzBZ2FileTest.testWriteBytesION  s;   YY 	)#c"" &d!!)TZ888

49%%%& & & & & & & & & & & & & & & ^CLLNN;;TYGGGSZ(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s5   C;A'C'A+	+C.A+	/ACCCc                    t          | j                  5 }t          |          5 }|                     t          |j                   |                    d           |                     |                                | j        dd                     d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )	r   r7   r   rZ   r[   r   rc   ra   r6   r<  s      r   testSeekForwardBytesIOz"BZ2FileTest.testSeekForwardBytesIOV  s    TY 	?3 ?!!)TY777		#  dio>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s5   B4A+BB4B 	 B4#B 	$B44B8;B8c                 n   t          | j                  5 }t          |          5 }|                    d           |                    dd           |                     |                                | j        dd                     d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )r   r7   r   ra   r   rc   r6   r<  s      r   testSeekBackwardsBytesIOz$BZ2FileTest.testSeekBackwardsBytesIO]  s@   TY 	C3 C		#		$"""  di.ABBBC C C C C C C C C C C C C C C	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs5   B*A!BB*B	B*B	B**B.1B.c                    | j         d d         }t          t          |                    5 }|                     t          |j                   d d d            n# 1 swxY w Y   t          t          |                    5 }|                     |                    t          | j                            | j                   |                     t          |j        d           d d d            n# 1 swxY w Y   t          d          D ]_}t          t          |d |                             5 }|                     t          |j        d           d d d            n# 1 swxY w Y   `d S )Nr       )
r7   r   r   rZ   EOFErrorra   rc   rs   r6   r   )r*   	truncatedrQ   r   s       r   test_read_truncatedzBZ2FileTest.test_read_truncatedd  s   IdsdO	WY''(( 	0Ah///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0WY''(( 	3AQVVC	NN33TY???h222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 r 	7 	7A2A2//00 7A!!(AFA6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s6   !AA A A"C..C25C2."EE 	#E 	c                 n   t          j         dg d          }t          |          |j        z  }t          t	                      d          5 }|                     |                    |          |           |                     |                                |           d d d            d S # 1 swxY w Y   d S )NQ)r    r   rY      rm   r   )arrayrs   itemsizer   r   rc   rN   r   )r*   qLENGTHrQ   s       r   test_issue44439zBZ2FileTest.test_issue44439q  s    K___--Q!*$WYY$$ 	/QWWQZZ000QVVXXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AB**B.1B.N)r    r   )Br0   r1   r2   r3   rR   r^   rf   rj   ro   ru   rx   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r	   requires_working_threadingr  r  r!  r)  r-  r9  r>  r@  rC  rE  rG  rM  rU  rI   r   r   rK   rK   Z   s          
	B 	B 	B5 5 52 2 2
9 9 93 3 35 5 5
9 9 9
0 0 0	. 	. 	.	2 	2 	2> > >
5 5 5
4 
4 
48 8 88 8 8@ @ @D D D@ @ @
D D D
6 6 6B B B
B 
B 
B1 1 1B B B@ @ @F F F; ; ;; ; ;? ? ?K K KJ J JC C C/ / // / // / // / /5 5 59 9 93 3 35 5 545 5 5"5 5 5"  = = =
, 
, 
,7 7 7* 1022
 
 32
3 3 3"	9 	9 	92 2 22 2 2	9 	9 	9) ) )9 9 9) ) )? ? ?C C C7 7 7/ / / / /r   rK   c                   r    e Zd Zd Zd Zd Zej         ee	dz   d          d                         Z
d Zd	S )
BZ2CompressorTestc                    t                      }|                     t          |j                   |                    | j                  }||                                z  }|                     t          |          | j                   d S r$   )r   rZ   r[   rG   r6   flushrc   r   r*   bz2cr   s      r   testCompresszBZ2CompressorTest.testCompress{  sn    )T]333}}TY''

--ty99999r   c                     t                      }|                    d          }||                                z  }|                     || j                   d S Nr   )r   rG   rZ  rc   r8   r[  s      r   testCompressEmptyStringz)BZ2CompressorTest.testCompressEmptyString  sL    }}S!!

t/////r   c                    t                      }d}d}	 | j        |dz  |dz   dz           }|sn||                    |          z  }|dz  }9||                                z  }|                     t          |          | j                   d S )Nr   r   TrW   r    )r   r6   rG   rZ  rc   r   )r*   r\  r   r   r   s        r   testCompressChunks10z&BZ2CompressorTest.testCompressChunks10  s    	)AbD!A#rM*C DMM#&&&DFA	 	

--ty99999r   r   r   sizememusec                    t                      }d|z  }	 |                    |          }||                                z  }d }n# d }w xY wt                              |          }	 |                     t          |          |           |                     t          |                    d                    d           d }d S # d }w xY w)N   xr   )r   rG   rZ  r   r   rc   rs   strip)r*   rd  r\  r   
compresseds        r   testCompress4Gz BZ2CompressorTest.testCompress4G  s     d{	t,,J$**,,&JDD4DKKKK~~j))	SYY---SD!1!122A666DDD4DKKKKs   ,A A&AC Cc                     t          t          j        dz             D ]U}|                     t                    5  t          j        t                      |           d d d            n# 1 swxY w Y   Vd S Nr    )r   pickleHIGHEST_PROTOCOLrZ   r[   dumpsr   r*   protos     r   
testPicklezBZ2CompressorTest.testPickle  s    62Q677 	5 	5E""9-- 5 5]__e4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5   "A''A+	.A+	N)r0   r1   r2   r]  r`  rb  r   skip_if_pgo_taskr   r   rj  rr  rI   r   r   rX  rX  z  s        : : :0 0 0: : : ZS3Yq)))  *)  5 5 5 5 5r   rX  c                       e Zd Zd Zd Zd Zd Zd Zej	         e
edz   d          d	                         Zd
 Zd Zd Zd Zd Zd Zej        d             ZdS )BZ2DecompressorTestc                 H    |                      t          t          d           d S )N*   )rZ   r[   r   r.   s    r   test_Constructorz$BZ2DecompressorTest.test_Constructor  s     )_b99999r   c                     t                      }|                     t          |j                   |                    | j                  }|                     || j                   d S r$   )r   rZ   r[   r   r7   rc   r6   r*   bz2dr   s      r   testDecompressz"BZ2DecompressorTest.testDecompress  sV      )T_555ty))ty)))))r   c                     t                      }d}d}	 | j        |dz  |dz   dz           }|sn||                    |          z  }|dz  }9|                     || j                   d S )Nr   r   TrW   r    )r   r7   r   rc   r6   )r*   r|  r   r   r   s        r   testDecompressChunks10z*BZ2DecompressorTest.testDecompressChunks10  s      	)AbD!A#rM*C DOOC(((DFA	 	ty)))))r   c                     t                      }d}|                    | j        |z             }|                     || j                   |                     |j        |           d S )Ns   this is unused data)r   r   r7   rc   r6   unused_data)r*   r|  r  r   s       r   testDecompressUnusedDataz,BZ2DecompressorTest.testDecompressUnusedData  sa      ,ty455ty))));77777r   c                     t                      }|                    | j                  }|                     t          |j        d           |                     t          |j        d           d S )Ns   anythingr   )r   r   r7   rZ   rK  r{  s      r   testEOFErrorz BZ2DecompressorTest.testEOFError  sZ      ty))(DO[AAA(DOS99999r   r   gffffff
@rc  c                    d}t          j        |          }	 |||z  dz   z  }t                              |          }t	                      }|                    |          }|                     ||k               d }d }d }d S # d }d }d }w xY w)Ni   r    )random	randbytesr   rG   r   r   r   )r*   rd  	blocksizeblockr   ri  r|  decompresseds           r   testDecompress4Gz$BZ2DecompressorTest.testDecompress4G  s     %	 ++		 DI-12Dd++J"$$D??:66LOOLD0111DJLLL DJLs   A!B B	c                     t          t          j        dz             D ]U}|                     t                    5  t          j        t                      |           d d d            n# 1 swxY w Y   Vd S rl  )r   rm  rn  rZ   r[   ro  r   rp  s     r   rr  zBZ2DecompressorTest.testPickle  s    62Q677 	7 	7E""9-- 7 7_..6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7rs  c                 >   t                      }d}g }t          | j                  dz
  }|                    |                    | j        d |         |                     |                     |j                   |                     t          |d                   |           |                    |                    d|                     |                     |j                   |                     t          |d                   |           |                    |                    | j        |d          |                     |                     t          |d                   |           |j	        sZ|                    |                    d|                     |                     t          |d                   |           |j	        Zd
                    |          }|                     || j                   |                     |j        d           d S )Nr   @   
max_lengthr   )r   rs   rH   appendr   r   needs_inputrc   r3  eofr5   r<   r  )r*   bzdr  outlen_s        r   testDecompressorChunksMaxsizez1BZ2DecompressorTest.testDecompressorChunksMaxsize  s   
 4=!!B&

3>>$-"6-7 " 9 9 	: 	: 	:)))SWz222 	

3>>#*>==>>>)))SWz222 	

3>>$-"6-7 " 9 9 	: 	: 	:SR\\:666 ' 	;JJs~~cj~AABBB  SWz::: ' 	; hhsmmdm,,,#.....r   c                    t                      }g }|                     |                    | j        d d         d          d           |                    |                    dd                     |                    |                    | j        dd         d                     |                    |                    | j        dd                               |                     d                    |          | j                   d S )Nr   r   r  r   r   i      r   rc   r   r7   r  r5   r6   r*   r  r  s      r   test_decompressor_inputbuf_1z0BZ2DecompressorTest.test_decompressor_inputbuf_1  s      		$3$34 ( 6 67:	< 	< 	<
 	

3>>#q))*** 	

3>>$)CG"4b99::: 	

3>>$)CDD/22333#	22222r   c                    t                      }g }|                     |                    | j        d d         d          d           |                    |                    d                     |                    |                    | j        dd         d                     |                    |                    | j        dd         d                     |                    |                    | j        dd                               |                     d                    |          | j                   d S )N   r   r  r   i  r   ,  r  r  s      r   test_decompressor_inputbuf_2z0BZ2DecompressorTest.test_decompressor_inputbuf_2  s     		$3$34 ( 6 67:	< 	< 	<

3>>#&&''' 	

3>>$)CG"4a88999 	

3>>$)CG"4a88999 	

3>>$)CDD/22333#	22222r   c                    t                      }g }|                    |                    | j        d d         d                     |                    |                    | j        dd         d                     |                    |                    | j        dd                               |                     d                    |          | j                   d S )Nr  rm   r  r   )r   r  r   r7   rc   r5   r6   r  s      r   test_decompressor_inputbuf_3z0BZ2DecompressorTest.test_decompressor_inputbuf_30  s      	

3>>$)DSD/155666 	

3>>$)CG"4a88999 	

3>>$)CDD/22333#	22222r   c                     t                      }|                     t          |j        | j        dz             |                     t          |j        | j        dz             d S )N   )r   rZ   	Exceptionr   r9   )r*   r  s     r   test_failurez BZ2DecompressorTest.test_failure@  sU    )S^T]R5GHHH)S^T]R5GHHHHHr   c                     t          j        t          d          }t                      } |            }t	          d          D ]}|                                 |                      |            |z
  dd           d S )Ngettotalrefcountr   r   rW   )delta)r   get_attributesysr   r   __init__assertAlmostEqual)r*   r  r  refs_beforer   s        r   test_refleaks_in___init__z-BZ2DecompressorTest.test_refleaks_in___init__F  s    "06HII&&((s 	 	ALLNNNN//11K?"MMMMMr   N)r0   r1   r2   ry  r}  r  r  r  r   rt  r   r   r  rr  r  r  r  r  r  refcount_testr  rI   r   r   rv  rv    s       : : :* * *
* 
* 
*8 8 8: : : ZS3Ys+++    ,+  7 7 7
/ / />3 3 3,3 3 3*3 3 3 I I I N N N N Nr   rv  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )CompressDecompressTestc                     t                               | j                  }|                     t	          |          | j                   d S r$   )r   rG   r6   rc   r   )r*   r   s     r   r]  z#CompressDecompressTest.testCompressQ  s;    ||DI&&--ty99999r   c                 p    t                               d          }|                     || j                   d S r_  )r   rG   rc   r8   r*   r   s     r   r`  z.CompressDecompressTest.testCompressEmptyStringU  s1    ||C  t/////r   c                 z    t                               | j                  }|                     || j                   d S r$   r   r   r7   rc   r6   r  s     r   r}  z%CompressDecompressTest.testDecompressY  s3    ~~di((ty)))))r   c                 f    t                               d          }|                     |d           d S r_  )r   r   rc   r  s     r   testDecompressEmptyz*CompressDecompressTest.testDecompressEmpty]  s/    ~~c""s#####r   c                 p    t                               | j                  }|                     |d           d S r_  )r   r   r8   rc   r  s     r   testDecompressToEmptyStringz2CompressDecompressTest.testDecompressToEmptyStringa  s1    ~~do..s#####r   c                 l    |                      t          t          j        | j        d d                    d S )NrI  )rZ   r\   r   r   r7   r.   s    r   testDecompressIncompletez/CompressDecompressTest.testDecompressIncompletee  s,    *cndioFFFFFr   c                 \    |                      t          t          j        | j                   d S r$   )rZ   ri   r   r   r9   r.   s    r   testDecompressBadDataz,CompressDecompressTest.testDecompressBadDatah  s$    '3>4=AAAAAr   c                     t                               | j        dz            }|                     || j        dz             d S r  r  r  s     r   testDecompressMultiStreamz0CompressDecompressTest.testDecompressMultiStreamk  s;    ~~di!m,,ty1}-----r   c                     t                               | j        | j        z             }|                     || j                   d S r$   r   r   r7   r9   rc   r6   r  s     r   testDecompressTrailingJunkz1CompressDecompressTest.testDecompressTrailingJunko  s:    ~~di$-788ty)))))r   c                     t                               | j        dz  | j        z             }|                     || j        dz             d S r  r  r  s     r   %testDecompressMultiStreamTrailingJunkz<CompressDecompressTest.testDecompressMultiStreamTrailingJunks  sB    ~~di!mdm;<<ty1}-----r   N)r0   r1   r2   r]  r`  r}  r  r  r  r  r  r  r  rI   r   r   r  r  P  s        : : :0 0 0* * *$ $ $$ $ $G G GB B B. . .* * *. . . . .r   r  c                   N    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )OpenTestzTest the open function.c                 $    t          j        |i |S r$   )r   rC   )r*   argskwargss      r   rC   zOpenTest.open{  s    x((((r   c                    dD ]}|dk    rt          | j                   |                     | j        |          5 }|                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }t          |                                          }|                     || j                   d d d            n# 1 swxY w Y   |                     | j        d          5 }|                     |                                | j                   d d d            n# 1 swxY w Y   |                     | j        d          5 }|                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }t          |                                          }|                     || j        dz             d d d            n# 1 swxY w Y   d S )N)rM   xbr  r   abr   r
   r'   rC   rN   r6   r   ra   rc   r*   moderQ   	file_datas       r   test_binary_modeszOpenTest.test_binary_modes~  s     	; 	;Dt||t}%%%4=$// #1	"""# # # # # # # # # # # # # # #dmT** 7a*1668844	  DI6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4=$// 61  495556 6 6 6 6 6 6 6 6 6 6 6 6 6 64=$// #1	"""# # # # # # # # # # # # # # #dmT** ;a*1668844	  DIM:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	;Z   A""A&	)A&	=CC	C	1.D++D/	2D/	E88E<	?E<	A G$$G(	+G(	c                    dD ]}|dk    rt          | j                   |                     | j        |          5 }|                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }t          |                                          }|                     || j                   d d d            n# 1 swxY w Y   |                     | j        d          5 }|                     |                                | j                   d d d            n# 1 swxY w Y   |                     | j        d          5 }|                    | j                   d d d            n# 1 swxY w Y   t          | j        d          5 }t          |                                          }|                     || j        dz             d d d            n# 1 swxY w Y   d S )N)r   xr  r   rX   r   r   r  r  s       r   test_implicit_binary_modesz#OpenTest.test_implicit_binary_modes  s    	; 	;Ds{{t}%%%4=$// #1	"""# # # # # # # # # # # # # # #dmT** 7a*1668844	  DI6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4=#.. 6!  495556 6 6 6 6 6 6 6 6 6 6 6 6 6 64=#.. #!	"""# # # # # # # # # # # # # # #dmT** ;a*1668844	  DIM:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	;r  c                    | j                             d          }|                    dt          j                  }dD ]}|dk    rt          | j                   |                     | j        |d          5 }|                    |           d d d            n# 1 swxY w Y   t          | j        d          5 }t          |
                                                              d          }|                     ||           d d d            n# 1 swxY w Y   |                     | j        dd          5 }|                     |
                                |           d d d            n# 1 swxY w Y   |                     | j        dd          5 }|                    |           d d d            n# 1 swxY w Y   t          | j        d          5 }t          |
                                                              d          }|                     ||d	z             d d d            n# 1 swxY w Y   d S )
Nr#  
)wtxtr  encodingr   rtatr   )r6   decodereplacer(   linesepr
   r'   rC   rN   r   ra   rc   )r*   r   text_native_eolr  rQ   r  s         r   test_text_modeszOpenTest.test_text_modes  s4   y((,,tRZ88  	A 	ADt||t}%%%4=$AA Q              dmT** =a*1668844;;GDD	  O<<<= = = = = = = = = = = = = = = 4=$AA 1Q  40001 1 1 1 1 1 1 1 1 1 1 1 1 1 14=$AA Q              dmT** Aa*1668844;;GDD	  Oa,?@@@A A A A A A A A A A A A A A A	A 	As\   7BB	 B	9ADD	D	8)E--E1	4E1	F77F;	>F;	AH11H5	8H5	c                    dD ]}t          | j                   d|v rdnd }|                     | j        ||          5 }	 d d d            n# 1 swxY w Y   |                     t                    5  |                     | j        |          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)r  r  r  tutf-8r  )r
   r'   rC   rZ   FileExistsError)r*   r  r  rQ   s       r   test_x_modezOpenTest.test_x_mode  s   % 	 	D4=!!!"%++ww4H4=$BB a              ""?33  YYt}d33 q                            	 	sG   AA	A	1B2BB2BB2"B#B22B6	9B6	c                    |                      t          | j                  d          5 }|                     |                                | j                   d d d            n# 1 swxY w Y   |                      t          | j                  d          5 }|                     |                                | j                   d d d            n# 1 swxY w Y   | j                            d          }|                      t          | j                  dd          5 }|                     |                                |           d d d            d S # 1 swxY w Y   d S )NrX   r   r#  r  r  r  )rC   r   r7   rc   ra   r6   r  )r*   rQ   r   s      r   test_fileobjzOpenTest.test_fileobj  s   YYwty))3// 	21QVVXXty111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2YYwty))400 	2AQVVXXty111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2y((YYwty))4'YBB 	-aQVVXXt,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s5   .A##A'*A'.CCC)EEEc                    |                      t          | j        | j        d           |                      t          | j        | j        d           |                      t          | j        | j        dd           |                      t          | j        | j        dd           |                      t          | j        | j        dd	           d S )
Nwbtxbtr   r  r  ignore)errorsr  )newline)rZ   r\   rC   r'   r.   s    r   test_bad_paramszOpenTest.test_bad_params  s    *)T]E	; 	; 	;*)T]E	; 	; 	;*)T]D7 	 	L 	L 	L*)T]D 	 	K 	K 	K*)T]D$ 	 	H 	H 	H 	H 	Hr   c                    | j                             d          }|                    dt          j                  }|                     | j        dd          5 }|                    |           d d d            n# 1 swxY w Y   t          | j        d          5 }t          |	                                                              d          }| 
                    ||           d d d            n# 1 swxY w Y   |                     | j        dd          5 }| 
                    |	                                |           d d d            d S # 1 swxY w Y   d S )Nr#  r  r  z	utf-16-ler  r   r  )r6   r  r  r(   r  rC   r'   rN   r   ra   rc   )r*   r   r  rQ   r  s        r   test_encodingzOpenTest.test_encoding  s   y((,,tRZ88YYt}d[YAA 	QGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$-&& 	9!&qvvxx0077DDIY888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 YYt}d[YAA 	-QQVVXXt,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s7   A::A>A>AC11C58C5)EEEc                 T   |                      | j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                      | j        ddd          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )NrM   s   foobarr  r#  r  )r  r  foobar)rC   r'   rN   rc   ra   r  s     r   test_encoding_error_handlerz$OpenTest.test_encoding_error_handler  s   YYt}d++ 	#qGGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#YYt}dWXYNN 	1QVVXXx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s!   >AA')BB!$B!c                    | j                             d          }|                     | j        ddd          5 }|                    |           d d d            n# 1 swxY w Y   |                     | j        ddd          5 }|                     |                                |g           d d d            d S # 1 swxY w Y   d S )Nr#  r  r  r  )r  r  r  )r6   r  rC   r'   rN   rc   r   )r*   r   rQ   s      r   test_newlinezOpenTest.test_newline  s1   y((YYt}dWdYKK 	qGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYt}dWdYKK 	4qQ[[]]TF333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s#   AA"A*B;;B?B?N)r0   r1   r2   r3   rC   r  r  r  r  r  r  r  r  r  rI   r   r   r  r  x  s        ) ) ); ; ;"; ; ;$A A A&  - - -H H H
- 
- 
-1 1 14 4 4 4 4r   r  c                  ,    t          j                     d S r$   )r   reap_childrenrI   r   r   tearDownModuler    s    r   __main__)*testr   test.supportr   r   rQ  unittestior   r   r(   rm  r=   r%   r+  r  r   r   r  r   r	   test.support.os_helperr
   rq   r  import_moduler   r   r   r   r   r   TestCaser   rK   rX  rv  r  r  r  r0   mainrI   r   r   <module>r	     s         ( ( ( ( ( ( ( (   + + + + + + + + 				               & & & & & & ) ) ) ) ) ) ) ) ) ) ) )     



 "m!%(( 7 7 7 7 7 7 7 7 7 7 $ $ $1 1 1 1 1x  1 1 1h]/ ]/ ]/ ]/ ]/( ]/ ]/ ]/@05 05 05 05 05 05 05 05f`N `N `N `N `N( `N `N `NF%. %. %. %. %.X %. %. %.Pv4 v4 v4 v4 v4x v4 v4 v4r   zHMOOOOO r   