
    0hh                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJrJr  S SKJrJr  \R*                  " S5      r\R*                  " S	5      rS
rSr\R4                  R7                  \R8                  5      S-   r " S S\R<                  5      r " S S\R@                  5      r! " S S\!5      r" " S S\!5      r#S r$ " S S\R@                  5      r%\&S:X  a  \RN                  " 5         gg)    N)PIPEPopen)catch_unraisable_exception)import_helper)	os_helper)_4G
bigmemtestrequires_subprocess)assert_python_okassert_python_failuregzipzlibsy     int length=DEFAULTALLOC, err = Z_OK;
  PyObject *RetVal;
  int flushmode = Z_FINISH;
  unsigned long start_total_out;

s   /* zlibmodule.c -- gzip-compatible data compression */
/* See http://www.gzip.org/zlib/
/* See http://www.winimage.com/zLibDll for Windows */
z-gzdirc                   &    \ rS rSrS rS rS rSrg)UnseekableIO&   c                     g)NF selfs    7/opt/python-3.13.8/usr/lib/python3.13/test/test_gzip.pyseekableUnseekableIO.seekable'   s        c                 "    [         R                  eNioUnsupportedOperationr   s    r   tellUnseekableIO.tell*       %%%r   c                 "    [         R                  er   r   )r   argss     r   seekUnseekableIO.seek-   r!   r   r   N)__name__
__module____qualname____firstlineno__r   r   r$   __static_attributes__r   r   r   r   r   &   s    &&r   r   c                   8    \ rS rSr\R
                  rS rS rSr	g)BaseTest1   c                 D    [         R                  " U R                  5        g r   r   unlinkfilenamer   s    r   setUpBaseTest.setUp4       'r   c                 D    [         R                  " U R                  5        g r   r/   r   s    r   tearDownBaseTest.tearDown7   r4   r   r   N)
r&   r'   r(   r)   r   TESTFNr1   r2   r6   r*   r   r   r   r,   r,   1   s    H((r   r,   c                   |   \ rS rSrS>S jrS rS rS rS rS r	S r
S	 rS
 r\" \SS9S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S<r>g=)?TestGzip;   c                    [        U5      n[        R                  U R                  SU-   5       nUR	                  U5      nS S S 5        U R                  W[        U5      5        [        R                  U R                  SU-   5       nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       Nv= f! , (       d  f       g = f)Nwr)bytesr   GzipFiler1   writeassertEquallenread)r   datamodeb_datafls         r   write_and_read_backTestGzip.write_and_read_back<   s    t]]4==#d(3qA 4CK(]]4==#d(3qQVVXv. 43 43 43s   B1!C1
B?
Cc                    [         R                  U R                  S5       nUR                  [        S-  5        UR                  5         UR                  5         [        [        S5      (       a$  [        R                  " UR                  5       5        UR                  5         S S S 5        WR                  5         g ! , (       d  f       N= f)Nwb2   fsync)r   r@   r1   rA   data1flushfilenohasattrosrO   closer   rH   s     r   
test_writeTestGzip.test_writeD   s{    ]]4==$/1GGEBJ GGIHHJr7##$GGI 0 	
	 0/s   BB<<
C
c                 (   [         R                  " U R                  5      n[        R	                  US5       nUR                  [        S-  5        S S S 5        U R                  WR                  [        5        U R                  UR                  U R                  5        [        R	                  US5       nUR                  [        5        S S S 5        [        R	                  U5       nUR                  5       nS S S 5        U R                  W[        S-  5        U R                  UR                  [        5        U R                  UR                  U R                  5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)Nr=   rN   a3   )r   FakePathr1   r   r@   rA   rP   assertIsInstancenamestrrB   rD   )r   r1   rH   ds       r   "test_write_read_with_pathlike_file+TestGzip.test_write_read_with_pathlike_fileR   s    %%dmm4]]8S)QGGEBJ *affc*/]]8S)QGGEN *]]8$A %EBJ'affc*/ *) *)$$s#   E 4E2'F 
E/2
F 
Fc                     U R                  [        [        S-  5      5        [        [        [	        S5      5      5      nUR                  S/ SQS9nU R                  U5        g )NrN      B)   rf      )shape)rJ   
memoryviewrP   r?   rangecast)r   mrE   s      r   test_write_memoryviewTestGzip.test_write_memoryviewc   sL      EBJ!78uU3Z()vvcv)  &r   c                 F    U R                  [        [        S-  5      5        g )NrN   )rJ   	bytearrayrP   r   s    r   test_write_bytearrayTestGzip.test_write_bytearrayi   s      52:!67r   c                 ^    U R                  [        R                  " S[        S-  5      5        g )NI(   )rJ   arrayrP   r   s    r   test_write_arrayTestGzip.test_write_arrayl   s      S%"*!=>r   c                 ^   [         R                  U R                  S5       nU R                  [        5         UR                  S5        S S S 5        U R                  [        5         UR                  / 5        S S S 5        UR                  [        5        S S S 5        [         R                  U R                  S5       nU R                  UR                  5       [        5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N~= f! , (       d  f       g = f)NrM    rb)	r   r@   r1   assertRaises	TypeErrorrA   rP   rB   rD   rV   s     r   test_write_incompatible_type%TestGzip.test_write_incompatible_typeo   s     ]]4==$/1""9- .""9- .GGEN 0 ]]4==$/1QVVXu- 0/ .--- 0/ 0/sF   DC+	D&C<8D=%D+
C9	5D<
D
	D
D
D,c                     U R                  5         [        R                  U R                  S5       nUR	                  5       nS S S 5        U R                  W[        S-  5        g ! , (       d  f       N(= f)Nr>   rN   )rW   r   r@   r1   rD   rB   rP   r   rH   r`   s      r   	test_readTestGzip.test_read|   sM    ]]4==#.!A /E"H% /.s   A$$
A2c                    U R                  5         / nSn[        R                  U R                  S5       n UR	                  5       nU(       d  OAUR                  U5        U[        U5      -  nU R                  UR                  5       U5        MY  S S S 5        U R                  SR                  U5      [        S-  5        g ! , (       d  f       N7= f)Nr   r>   r   rN   )rW   r   r@   r1   read1appendrC   rB   r   joinrP   )r   blocksnreadrH   r`   s        r   
test_read1TestGzip.test_read1   s    ]]4==#.!GGIa Q  51  / 	&)52:6 /.s   AC
C   )sizememusec                     [         R                  [        SS9n[         R                  [        R
                  " U5      SS9nU R                  UR                  U5      [        5        g )Nr   compresslevelr{   fileobjrF   )r   compressrP   r@   r   BytesIOrB   rD   )r   r   
compressedrH   s       r   test_read_largeTestGzip.test_read_large   sI     ]]5]:
MM"**Z"8tMDu-r   c                 n   U R                  5         [        R                  U R                  S5      nUR                  nU R                  UR                  5        UR                  5         U R                  UR                  5        U R                  [        5         UR                  S5        S S S 5        U R                  [        5         UR                  S5        S S S 5        U R                  [        5         UR                  5         S S S 5        [        R                  U R                  S5      nUR                  nU R                  UR                  5        UR                  5         U R                  UR                  5        U R                  [        5         UR                  S5        S S S 5        U R                  [        5         UR                  5         S S S 5        g ! , (       d  f       GN<= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       Ns= f! , (       d  f       g = f)Nr>   r   r   r=   r   )rW   r   r@   r1   r   assertFalseclosedrU   
assertTruer|   
ValueErrorrD   r$   r   rA   rQ   )r   rH   r   s      r   test_io_on_closed_object!TestGzip.test_io_on_closed_object   s\   
 	MM$---))(		'z*FF1I +z*FF1I +z*FFH + MM$---))(		'z*GGCL +z*GGI +* +***** +***s<   GG16HHH&
G.1
H 
H
H#&
H4c                    U R                  5         [        R                  U R                  S5       nUR	                  [
        S-  5        S S S 5        [        R                  U R                  S5       nUR                  5       nS S S 5        U R                  W[        S-  [
        S-  -   5        g ! , (       d  f       Nk= f! , (       d  f       NC= f)Nab   r{   rN   )	rW   r   r@   r1   rA   data2rD   rB   rP   r   s      r   test_appendTestGzip.test_append   s    ]]4==$/1GGEBJ 0 ]]4==$/1A 0U2X%(34 0/ 0/s   B/2C /
B= 
Cc                 8   [         R                  U R                  SS5       nUR                  S5        S S S 5        [	        SS5       H>  n[         R                  U R                  SS5       nUR                  S5        S S S 5        M@     [         R                  U R                  S5       nSn UR                  S	5      nXE-  nU(       d  OM  S S S 5        U R                  WS
5        g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       ND= f)NrM   	      ar      r   r{   r   i    s   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r   r@   r1   rA   rj   rD   rB   )r   rH   izgfilecontentsztxts         r   test_many_appendTestGzip.test_many_append   s     ]]4==$2aGGDM 3q#At}}dA6! 76 
 ]]4==$/6H{{4( U  0 	8, 32 76 0/s#   C(,C9*#D(
C69
D	
Dc                    [         R                  U R                  S5       nUR                  [        S-  5        S S S 5        [         R                  U R                  S5       nU R                  UR                  5       [        S-  5        S S S 5        U R                  [        5         [         R                  U R                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N^= f! , (       d  f       g = f)NxbrN   r{   )	r   r@   r1   rA   rP   rB   rD   r|   FileExistsErrorrV   s     r   test_exclusive_writeTestGzip.test_exclusive_write   s    ]]4==$/1GGEBJ 0]]4==$/1QVVXurz2 0/MM$--. 0/	 0/////s#   C"(C"'!C3
C"
C03
Dc                 p   U R                  5         [        R                  U R                  S5       n[        R
                  " U5       nU Vs/ s H  o3PM     nnS S S 5        S S S 5        U R                  WS[        R                  SS9-  5        g s  snf ! , (       d  f       NB= f! , (       d  f       NK= f)Nr{   rN   Tkeepends)	rW   r   r@   r1   r   BufferedReaderrB   rP   
splitlines)r   rH   r>   lineliness        r   test_buffered_readerTestGzip.test_buffered_reader   s     	]]4==$/1""1%*+,!$!, & 0 	U%5%5t%5%D DE - &% 0/s5   B'BBBB'B
B$	 B''
B5c                 *   U R                  5         [        R                  U R                  S5       nSn UR	                  U5      nU(       d  US:w  a  O'U R                  [        U5      U:*  5        US-   S-  nMF  S S S 5        g ! , (       d  f       g = f)Nr{   r   r   rN   )rW   r   r@   r1   readliner   rC   )r   rH   line_lengthLs       r   test_readlineTestGzip.test_readline   sx     ]]4==$/1KJJ{+[A-uA+ 56*Q"4	  0//s   A
B
Bc                 b   U R                  5         [        R                  U R                  S5       nUR	                  5       nS S S 5        [        R                  U R                  S5       n UR	                  S5      nU/ :X  a  OM  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nr{      )rW   r   r@   r1   	readlines)r   rH   r   s      r   test_readlinesTestGzip.test_readlines   s     ]]4==$/1A 0 ]]4==$/1KK$7E  0/ 0/ 0/s   B*B 
B 
B.c                    U R                  5         [        R                  U R                  5       n UR	                  5       nUR                  5       nU(       d  OwUR	                  5       nUR                  U5        [        U5      S:  a  SnO[        U5      nUR                  U5      nU R                  US U U5        UR                  U5        M  S S S 5        g ! , (       d  f       g = f)N
   )
rW   r   r@   r1   r   r   r$   rC   rD   rB   )r   rH   oldposline1newposamountline2s          r   test_seek_readTestGzip.test_seek_read   s     ]]4==)Q

evu:b=F ZFv  w7v  *))s   B!C
C(c                 ,   U R                  5         [        R                  U R                  5       nUR	                  S5        UR                  SSS9  UR	                  S5      nS S S 5        U R                  W[        SS 5        g ! , (       d  f       N(= f)Nr   r   )whence      )rW   r   r@   r1   rD   r$   rB   rP   )r   rH   ys      r   test_seek_whenceTestGzip.test_seek_whence  sn     ]]4==)QFF2JFF2aF r
A * 	E"RL)	 *)s   3B
Bc                     [         R                  U R                  S5       n[        SSS5       H%  nUR	                  U5        UR                  S5        M'     S S S 5        g ! , (       d  f       g = f)Nr=   r   rd      s   GZ
)r   r@   r1   rj   r$   rA   )r   rH   poss      r   test_seek_writeTestGzip.test_seek_write  sL    ]]4==#.!QR(s  ) /..s   7A!!
A/c                    U R                  5         [        R                  U R                  S5       nU R	                  UR
                  R                  S5        S S S 5        [        R                  " U R                  5        [        R                  U R                  S5       nU R	                  UR
                  R                  S5        S S S 5        g ! , (       d  f       N~= f! , (       d  f       g = f)Nr>   r{   xr   )	rW   r   r@   r1   rB   	myfileobjrF   r   r0   rV   s     r   	test_modeTestGzip.test_mode"  s    ]]4==#.!Q[[--t4 /']]4==#.!Q[[--t4 /. /. /.s   'C 'C!
C!
C/c                    S Hm  n[         R                  U R                  U5       nU R                  [	        US5      5        U R                  UR                  U R                  5        S S S 5        Mo     g ! , (       d  f       M  = f)N)rM   r{   r^   )r   r@   r1   r   rS   rB   r^   )r   rF   rH   s      r   test_1647484TestGzip.test_1647484*  sZ     Dt}}d3q6 23  7 43 !33s   AA55
B	c                 B   U R                  5         [        R                  U R                  S5       nU R	                  [        UR                  S5      5        U R                  UR                  R                  U R                  5        S S S 5        g ! , (       d  f       g = f)Nr{   r^   )	rW   r   r@   r1   r   rS   r   rB   r^   rV   s     r   test_paddedfile_getattr TestGzip.test_paddedfile_getattr0  s_    ]]4==$/1OOGAIIv67QYY^^T]]; 0//s   AB
Bc                    Sn[         R                  U R                  SUS9 nUR                  [        5        S S S 5        [         R                  U R                  5       nU R                  [        US5      5        U R                  UR                  5        UR                  5       nU R                  U[        5        U R                  UR                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N[r=   mtimer   )r   r@   r1   rA   rP   r   rS   assertIsNoner   rD   rB   )r   r   fWritefReaddataReads        r   
test_mtimeTestGzip.test_mtime6  s    ]]4==#u]=LL >]]4==)UOOGE734ekk*zz|HXu-U[[%0 *) >=))s   C!A9C2!
C/2
D c           
         Sn[         R                  U R                  SUS9 nUR                  [        5        S S S 5        [        U R                  S5       nUR                  S5      nU R                  US5        UR                  S5      nU R                  US5         U R                  R                  S	5      S
-   nSnUR                  S5      nU R                  X5        UR                  S5      n	U R                  U	[        R                  " SU5      5        UR                  S5      n
U R                  U
S5        UR                  S5      nU R                  US5        UR                  [        U5      5      nU R                  X5        UR                  [        R                  " U R                  5      R                   S-
  5        UR                  S5      nU R                  US5        UR                  S5      nU R                  U[        R                  " S[        [        5      5      5        S S S 5        g ! , (       d  f       GN= f! [         a    SnS
n GNf = f! , (       d  f       g = f)Nr   r=   r   r{         r      zLatin-1    r   rg   z<i      rf   s   d)r   r@   r1   rA   rP   openrD   rB   encodeUnicodeEncodeErrorstructpackrC   r$   rT   statst_size)r   r   r   r   idBytescmByteexpectednameexpectedflags	flagsByte
mtimeBytesxflByteosByte	nameBytes
crc32Bytes
isizeBytess                  r   test_metadataTestGzip.test_metadataA  s   ]]4==#u]=LL > $--&% jjmGWk2ZZ]FVW-(#}}33I>H '
 

1IY6AJZT5)ABjjmGWg.ZZ]FVW- 

3|#45IY5 JJrwwt}}-559:AJZ)9:AJZT3u:)FGW '& >= & (" '( '&s=   H6AI I>E/I6
IIIII
I+c                 N    [         R                  U l        U R                  5         g r   )r   TESTFN_ASCIIr1   r  r   s    r   test_metadata_ascii_name!TestGzip.test_metadata_ascii_namet  s    !..r   c                    / SQnSnU H  u  p4nU R                  U5         [        R                  U R                  SUS9nU   UR	                  [
        5        S S S 5        [        U R                  S5       nUR                  U5        UR                  S5      nU R                  X5        S S S 5        S S S 5        M     g ! , (       d  f       Nm= f! , (       d  f       N,= f! , (       d  f       M  = f)N))fastr      )bestr   r   )tradeoff   r   rf   r=   r   r{   r   )
subTestr   r@   r1   rA   rP   r   r$   rD   rB   )	r   cases	xflOffsetr^   levelexpectedXflByter   r   r  s	            r   test_compresslevel_metadata$TestGzip.test_compresslevel_metadatax  s    

 	.3*T/d#t}}cOLL' $--.%JJy)#jjmG$$W> /	 $# /4 V..	 $#s;   "C!B?C!64C*C!?
C	C!
CC!!
C0	c                 :   [         R                  U R                  S5       nUR                  S5        S S S 5        [         R                  U R                  S5      nUR	                  5          U    S S S 5        U R                  S5         [         R                  U R                  S5       nSS-    S S S 5        U R                  S5        g ! , (       d  f       N= f! , (       d  f       Nq= f! [         a     Nof = f! , (       d  f       NR= f! [         a     g f = f)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@   r1   rA   rU   failr   ZeroDivisionErrorrV   s     r   test_with_openTestGzip.test_with_open  s    ]]4==$/1GGFO 0MM$--.			N 
 IILM	7t}}d3q! 4
 II56# 0/
  		
 43  		s_   C
,C, .C0C, 
 D *C<0D 

C
C)%C, ,
C98C9<
D
D 
DDc                    [         R                  U R                  S5       nUR                  [        S-  5        S S S 5        [        U R                  S5       nUR                  S5        S S S 5        [         R                  U R                  S5       nUR                  5       nU R                  U[        S-  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)NrM   rN   r   s2                                                     r{   zIncorrect data in file)r   r@   r1   rA   rP   r   rD   rB   r   s      r   test_zero_padded_fileTestGzip.test_zero_padded_file  s    ]]4==$/1GGEBJ 0 $--&!GGL! ' ]]4==$/1AQ
,DE 0/ 0/ '& 0/s#   CC+C(
C
C%(
C6c                 ^    U R                  [        [        R                  [        5      5        g r   )r   
issubclassr   BadGzipFileOSErrorr   s    r   test_gzip_BadGzipFile_exception(TestGzip.test_gzip_BadGzipFile_exception  s    
4#3#3W=>r   c                 \   [        U R                  S5       nUR                  [        S-  5        S S S 5        [        R                  U R                  S5       nU R                  [        R                  UR                  5        S S S 5        g ! , (       d  f       Nb= f! , (       d  f       g = f)NrM   rN   r>   )	r   r1   rA   rP   r   r@   r|   r)  r   )r   files     r   test_bad_gzip_fileTestGzip.test_bad_gzip_file  sm    $--&$JJurz" ']]4==#.$d..? /. '&..s   B+B
B
B+c                 z   [         S-  n[        5       n[        R                  USS9 nUR	                  U5        S S S 5        UR                  5       n[        U5      n[        R                  USS9 nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       Ng= f! , (       d  f       g = f)NrN   rM   r   r{   )rP   r   r   r@   rA   getvaluerB   rD   )r   uncompressedbufrH   r   s        r   test_non_seekable_fileTestGzip.test_non_seekable_file  s    rzn]]3T]2aGGL! 3\\^
:&]]3T]2aQVVX|4 32	 32 32s   B1!B,
B),
B:c           	      n   [         S-  n[        R                  U R                  S5       nUR	                  U5        S S S 5        S n[        R                  U R                  S5       nSUl        SnU" 5        HT  nUR                  U5      nUS:X  a    O<U R                  UR                  [        U5      5      U5        U[        U5      -  nMV     U R                  UR                  S5      S5        U R                  U[        U5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   rM   c               3   @   #     [        SSS5       H  n U v   M	     M  7f)N   rN   r   )rj   )ns    r   sizes!TestGzip.test_peek.<locals>.sizes  s%     q"b)AG * s   r{   !   r   r   d   )
rP   r   r@   r1   rA   max_read_chunkpeekrB   rD   rC   )r   r3  rH   r;  r   r:  ss          r   	test_peekTestGzip.test_peek  s    s{]]4==$/1GGL! 0	
 ]]4==$/1!AEWFF1I8  A3Q  QVVC[#.UC$56 0/ 0/ 0/s   D'B%D&
D#&
D4c                    [         S-  R                  S5      R                  SS9nU R                  5         [        R                  U R                  S5       n[        R                  " USS9 nU R                  UR                  5       U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrN   asciiTr   r>   encoding)rP   decoder   rW   r   r@   r1   r   TextIOWrapperrB   r   )r   r   rH   ts       r   test_textio_readlinesTestGzip.test_textio_readlines  s    ##G,777F]]4==#.!!!!g6!  6 7 /.66 /.s$   B/,!BB/
B,	(B//
B=c                    [        U R                  S5       n[        R                  USS9 nUR	                  S5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  UR                  UR                  5        U R                  [         UR                  5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        S S S 5        [        U R                  S5       n[        R                  USS9 nUR	                  S	5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  UR                  UR                  5        U R                  [         UR                  5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        S S S 5        [        U R                  S
5       n[        R                  USS9 nUR	                  S5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  UR                  UR                  5        U R                  [         UR                  5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        S S S 5        [        U R                  S5       n[        R                  USS9 nU R                  UR#                  5       S5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  [        R$                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  UR                  UR                  5        U R                  [         UR                  5        U R                  UR                  [        R$                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNp= f! , (       d  f       g = f)Nr   r   r      oneFTrM   r=      twor   rZ      threer{   r>      twothree)r   r1   r   r@   rA   rB   r^   rR   rF   WRITEassertIsreadablewritabler   r   r|   AttributeErrorrD   READ)r   rawrH   s      r   test_fileobj_with_nameTestGzip.test_fileobj_with_name  s   $--&#s5  2  SZZ\:  4ajjlE2ajjlD1ajjlD1ahh. 6 MM!((D)QVVSXX.nahh7QVVTZZ0MM!**,.MM!**,-MM!**,-! '$ $--&#s5  2  SZZ\:  4ajjlE2ajjlD1ajjlD1ahh. 6 MM!((D)QVVSXX.nahh7QVVTZZ0MM!**,.MM!**,-MM!**,-! '$ $--&#s5!  2  SZZ\:  4ajjlE2ajjlD1ajjlD1ahh. 6 MM!((D)QVVSXX.nahh7QVVTZZ0MM!**,.MM!**,-MM!**,-! '$ $--&#s5  ;7  2  SZZ\:  3ajjlD1ajjlE2ajjlD1ahh. 6 MM!((D)QVVSXX.nahh7QVVTYY/MM!**,-MM!**,.MM!**,-! '&k 65 '&& 65 '&& 65 '&& 65 '&s   c/Dc8C4c/
dDd+C4d=d7Dd%C4d70eDe	 C4e
c,	'c//
c>
d	d
d"%
d4	/d77
e	
e	e
e)c                 Z
   [         R                  " U R                  [         R                  [         R                  -  [         R
                  -  5      n[         R                  " US5       n[        R                  USS9 nUR                  S5        U R                  UR                  S5        U R                  UR                  5       UR                  5       5        S S S 5        U R                  WR                  S5        U R                  UR                  S5        U R                  [         UR                  5        S S S 5        [         R                  " U R                  [         R                  [         R                  -  [         R"                  -  5      n[         R                  " US5       n[        R                  USS9 nUR                  S	5        U R                  UR                  S5        U R                  UR                  5       UR                  5       5        S S S 5        U R                  WR                  S5        U R                  [         UR                  5        S S S 5        [         R                  " U R                  [         R                  [         R                  -  [         R$                  -  5      n[         R                  " US
5       n[        R                  USS9 nUR                  S5        U R                  UR                  S5        U R                  UR                  5       UR                  5       5        S S S 5        U R                  WR                  S5        U R                  [         UR                  5        S S S 5        [         R                  " U R                  [         R&                  5      n[         R                  " US5       n[        R                  USS9 nU R                  UR)                  5       S5        U R                  UR                  S5        U R                  UR                  5       UR                  5       5        S S S 5        U R                  WR                  S5        U R                  [         UR                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN~= f! , (       d  f       GN= f! , (       d  f       GN}= f! , (       d  f       GN= f! , (       d  f       GN|= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   rN  rz   TrM   r=   rO  r   rZ   rP  r{   r>   rQ  )rT   r   r1   O_WRONLYO_CREATO_EXCLfdopenr   r@   rA   rB   r^   rR   rS  r   r|   rV  O_TRUNCO_APPENDO_RDONLYrD   )r   fdrX  rH   s       r   test_fileobj_from_fdopen!TestGzip.test_fileobj_from_fdopen'  sM    WWT]]BKK"**$<ryy$HIYYr4 Cs5  ,  SZZ\: 6 MM!((D)QVVR(nahh7 ! WWT]]BKK"**$<rzz$IJYYr4 Cs5  ,  SZZ\: 6 QVVR(nahh7 ! WWT]]BKK"**$<r{{$JKYYr4 Cs5!  ,  SZZ\: 6 QVVR(nahh7 ! WWT]]BKK0YYr4 Cs5  ;7  ,  SZZ\: 6 QVVR(nahh7 ! 7 65 !  65 !  65 !  65 ! s   )R1>ARA R1*S?ASASS9$AS' AS9T'A+TAT
R.	)R11
S 
S	S
S$'
S6	1S99
T
T	T
T*c                    U R                  [        R                  S5        U R                  [        R                  S5        [        R	                  U R
                  S5      R                  5         [        U R
                  S5       n[        R	                  USS9 nU R                  UR                  [        R                  5        S S S 5        [        R	                  USS9 nU R                  UR                  [        R                  5        S S S 5        [        R	                  USS9 nU R                  UR                  [        R                  5        S S S 5        [        R	                  USS9 nU R                  UR                  [        R                  5        S S S 5        U R                  [        5         [        R	                  US	S9  S S S 5        S S S 5        S
 Hh  n[        U R
                  U5       n[        R	                  US9 nU R                  UR                  [        R                  5        S S S 5        S S S 5        Mj     S H  nSU;   a   [        R                  " U R
                  5        [        U R
                  U5       nU R                  [        5         [        R	                  US9nS S S 5        W   U R                  UR                  [        R                  5        S S S 5        S S S 5        M     g ! , (       d  f       GNA= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN<= f! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GMv  = f)Nr{   rM   r+br>   r   r=   rZ   r   z)r{   rg  r   )rM   r   r   )rB   r   rW  rR  r@   r1   rU   r   rF   r|   r   r   r0   assertWarnsFutureWarning)r   rH   grF   s       r   test_fileobj_modeTestGzip.test_fileobj_modeO  sb   D)T*dmmT*002$--'1qs3q  3 4qs3q  4 4qs3q  4 4qs3q  4 4"":.ac2 / (  DdmmT*a]]1]-$$QVVTYY7 . +*   %Dd{  /dmmT*a%%m4a0A 5$$QVVTZZ8  +* % 43333333.. (' .- +* 54Q +*s   M+K?M!+LM(+L#M/+L5M7MM7M=+M+6M=N2!N5
N2?+N!*N2?
L		M
L 	M#
L2	-M5
M	?M
M	M
M(+
M:5M==
N	
NN2!
N/+N22
O	c                    U R                   n[        R                  " U5      n[        R	                  US5       nUR                  [        S-  5        S S S 5        U R                  WR                  U5        [        R	                  US5       nU R                  UR                  5       [        S-  5        S S S 5        U R                  UR                  U5        [        R	                  US5       nU R                  UR                  5       [        S-  5        S S S 5        U R                  UR                  U5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NM= f)NrM   rN   r{   )
r1   rT   fsencoder   r@   rA   rP   rB   r^   rD   )r   str_filenamebytes_filenamerH   s       r   test_bytes_filenameTestGzip.test_bytes_filenamek  s    }}\2]]>40AGGEBJ 10]]>40AQVVXurz2 10]]<.!QVVXurz2 /. 10 10 /.s#   D;(E.(E;
E	
E
E+c                    [         R                  " 5       n[        R                  USS9 nUR	                  [
        S-  5        U R                  UR                  S5        U R                  [         R                  UR                  5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR!                  5       S5        U R                  UR"                  S5        S S S 5        U R                  WR"                  S5        U R                  UR                  S5        U R                  [$        UR                  5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR!                  5       S5        UR'                  S5        [        R                  USS9 nU R                  UR)                  5       [
        S-  5        U R                  UR                  S5        U R                  [         R                  UR                  5        U R                  UR                  [        R*                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR!                  5       S5        U R                  UR"                  S5        S S S 5        U R                  UR"                  S5        U R                  UR                  S5        U R                  [$        UR                  5        U R                  UR                  [        R*                  5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR!                  5       S5        g ! , (       d  f       GN= f! , (       d  f       GN= f)	NrM   r   rN   rz   FTr   r{   )r   r   r   r@   rA   rP   rB   r^   r|   r   rR   rF   rR  rS  rT  rU  r   r   rV  r$   rD   rW  )r   biorH   s      r   test_fileobj_without_name"TestGzip.test_fileobj_without_namey  s   jjl]]3T]2aGGEBJQVVR(b55qxx@QVVTZZ0MM!**,.MM!**,-MM!**,-MM!((E* 3 	ahh%$.!((3,ajjlE*ajjlD)ajjlD)]]3T]2aQVVXurz2QVVR(b55qxx@QVVTYY/MM!**,-MM!**,.MM!**,-MM!((E* 3 	ahh%$.!((3+ajjlD)ajjlE*ajjlD)C 32$ 32s   DP=>DQ=
Q
Qc                    U R                   S-   n[        U R                   S5       n[        R                  X!SS9 nUR	                  [
        S-  5        U R                  UR                  U5        S S S 5        S S S 5        [        U R                   S5       n[        R                  X!SS9 nU R                  UR                  5       [
        S-  5        U R                  UR                  U5        S S S 5        S S S 5        [        R                  U R                   S5       nU R                  UR                  5       [
        S-  5        U R                  UR                  U R                   5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NnewrM   )r   r1   rF   rN   r{   )	r1   r   r   r@   rA   rP   rB   r^   rD   )r   	filename2r   rH   s       r   test_fileobj_and_filename"TestGzip.test_fileobj_and_filename  s=   MME)	4==$'7mmGdmKqGGEBJQVVY/ L ( 4==$'7mmGdmKqQVVXurz2QVVY/ L (
 ]]4==$/1QVVXurz2QVVT]]3 0/ LK ('
 LK ('
 0/sT   F5E60FF++AF/F+AF<6
F	 F
F
F(	$F++
F9<
G
c                    [         R                  S[        S5      -  SS9nU R                  [	        U5      [
        R                  5        [
        R                  " U5      n[         R                  US9nU R                  UR                  S5      S5        S[
        R                  -   nU R                  UR                  R                  R                  5       US5        g )Nr   g    >Ar   r   ri  r   z)Excessive amount of data was decompressed)r   r   int
assertLessrC   r   DEFAULT_BUFFER_SIZEr   r@   rB   rD   assertLessEqual_bufferrX  r   )r   bombdecomp
max_decomps       r   test_decompress_limited TestGzip.test_decompress_limited  s    }}USX-Q}?D	2#9#9:zz$t,Q////
V^^//446
7	9r   c                 n   [         [        4 H  nS H  n[        R                  " U/UQ76 nU R	                  [        U5      [        5        [        R                  [        R                  " U5      SS9 nU R	                  UR                  5       U5        S S S 5        M     M     g ! , (       d  f       M  = f)Nr   )r   )r  )r   r{   r   )rP   r   r   r   rB   typer?   r@   r   r   rD   )r   rE   r#   datacrH   s        r   test_compressTestGzip.test_compress  s    END.d2T2  ee4]]2::e+<4]HA$$QVVXt4 IH / # IHs   3!B%%
B4c           	         Sn[         [        4 H  nS H  nU R                  X#S9   [        R                  " U/UQ7SU06nU R                  [        U5      [        5        [        R                  [        R                  " U5      SS9 nUR                  S5        U R                  UR                  U5        S S S 5        S S S 5        M     M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr   r  )rE   r#   r   r{   r   r   )rP   r   r  r   r   rB   r  r?   r@   r   r   rD   r   )r   r   rE   r#   r  rH   s         r   test_compress_mtimeTestGzip.test_compress_mtime  s    END.\\t\7 MM$CCUCE$$T%[%8rzz%/@tLPQq	((%8 M 87 / #
 ML 87s$   A"C .C	6C 
CC  
C/c                 &   S Hy  nU R                  US9   [        R                  [        SUS9n[        R                  [        SUS9nU R	                  [        U5        U R                  [        U5        S S S 5        M{     g ! , (       d  f       M  = f)Nr   *   r   r   r   r   r   )r  r   r   rP   assertInassertNotIn)r   r   
nocompressyescompresss       r   test_compress_correct_level$TestGzip.test_compress_correct_level  so    EE*!]]5]O
"mmE%mPeZ0  4	 +* **s   AB
B	c           
          S Ha  nU R                  US9   [        R                  [        SUS9nU R	                  [
        R                  " SUSS 5      US4S	5        S S S 5        Mc     g ! , (       d  f       Mu  = f)
Nr  r   r   r  z<IxBrg   r      z:Gzip header does not properly set either mtime or OS byte.)r  r   r   rP   rB   r   unpack)r   r   r   s      r   test_issue112346TestGzip.test_issue112346  si    EE*==au=M  MM&(1R.9CLP +* **s   AA))
A8	c                    [         [        4 H  n[        R                  " 5       n[        R                  USS9 nUR                  U5        S S S 5        U R                  [        R                  UR                  5       5      U5        [        R                  U5      nU R                  [        R                  U5      U5        M     g ! , (       d  f       N= f)NrM   r   )rP   r   r   r   r   r@   rA   rB   
decompressr2  r   )r   rE   r4  rH   r  s        r   test_decompressTestGzip.test_decompress  s    END**,Cs6! 7T__S\\^<dCMM$'ET__U3T: #66s   C
C	c                     [         R                  [        5      nU R                  [        [         R
                  US S 5        g )Nr   r   rP   r|   EOFErrorr  r   compressed_datas     r   !test_decompress_truncated_trailer*TestGzip.test_decompress_truncated_trailer  -    --.(DOO_Sb5IJr   c                     [         R                  [        5      nU R                  [        [         R
                  US S 5        g )Nr  r  s     r   test_decompress_missing_trailer(TestGzip.test_decompress_missing_trailer  r  r   c                    [         S-  n[        R                  U5      S S n[        R                  [        R
                  " U5      S9 nU R                  [        UR                  5        S S S 5        [        R                  [        R
                  " U5      S9 nU R                  UR                  [        U5      5      U5        U R                  [        UR                  S5        S S S 5        [        SS5       HW  n[        R                  [        R
                  " US U 5      S9 nU R                  [        UR                  S5        S S S 5        MY     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       M  = f)NrN   r  ri  r   r   r   )rP   r   r   r@   r   r   r|   r  rD   rB   rC   rj   )r   rE   	truncatedrH   r   s        r   test_read_truncatedTestGzip.test_read_truncated  s   RxMM$',	]]2::i#8]9Qh/ :]]2::i#8]9QQVVCI.5h2 : q"Arzz)BQ-'@AQ!!(AFFA6 BA  :999
 BAs%   	!EAE&&"E7
E#&
E47
F	c                     Sn[         R                  [        R                  " U5      S9 nU R	                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Ns   cQ ExtraI-. 2Mx   ri  s   Test)r   r@   r   r   rB   rD   )r   gzdatarH   s      r   test_read_with_extraTestGzip.test_read_with_extra  sF    < ]]2::f#5]6!QVVXw/ 766s   !A
A"c                 r   [         R                  U R                  S5       nUR                  [        5        S S S 5        [         R                  U R                  S5       nUR
                  R                  R                  R                  5         S S S 5        g ! , (       d  f       Nf= f! , (       d  f       g = f)NrM   r{   )	r   r   r1   rA   rP   r  rX  _fpprependrV   s     r   test_prepend_errorTestGzip.test_prepend_error	  sl    YYt}}d+qGGEN ,YYt}}d+qIIMM%%' ,+ ,+++s   B/B(
B%(
B6c                 j   [         R                   " S/ SQ5      n[        U5      UR                  -  n[        R	                  [
        R                  " 5       SS9 nU R                  UR                  U5      U5        U R                  UR                  5       U5        S S S 5        g ! , (       d  f       g = f)NQ)r   r      rg   r9  r=   r   )
rv   rC   itemsizer   r@   r   r   rB   rA   r   )r   qLENGTHrH   s       r   test_issue44439TestGzip.test_issue44439  sv    KK_-Q!**$]]2::<c]:aQWWQZ0QVVXv. ;::s   AB$$
B2c                    [         R                  " 5       nSn[        R                  USS9 nUR	                  U5        UR                  5         UR                  5       nS S S 5        UR                  5       nU R                  [        R                  U5      U5        U R                  [        5         [        R                  W5        S S S 5        [        R                  [        R                  * S9n[         R                  " W5      n[        R                  U5        UR                  UR                  5       5      nU R                  Xr5        g ! , (       d  f       N= f! , (       d  f       N= f)N   important message here.r=   r   )wbits)r   r   r   r@   rA   rQ   r2  rB   r  r|   r  r   decompressobj	MAX_WBITS_read_gzip_headerrD   )r   bmessagerH   partial_data	full_datar`   read_messages           r   test_flush_flushes_compressor&TestGzip.test_flush_flushes_compressor  s    JJL,]]13]/1GGGGGI::<L 0 JJL	3W= x(OOL) )dnn_5JJ|$q!||AFFH-/ 0/ )(s   2E0E
E
E+c                 x    " S S5      n[         R                  " 5       nU" 5       n[        R                  USS9 nX4l        UR                  5         UR                  S5        UR                  SS9  S S S 5        [        R                  SSS/nU R                  UR                  U5        g ! , (       d  f       N?= f)	Nc                   *    \ rS rSrS rS rSS jrSrg)1TestGzip.test_flush_modes.<locals>.FakeCompressori0  c                     / U l         g r   modesr   s    r   __init__:TestGzip.test_flush_modes.<locals>.FakeCompressor.__init__1  s	    
r   c                     gNr   r   )r   rE   s     r   r   :TestGzip.test_flush_modes.<locals>.FakeCompressor.compress3  s    r   c                 :    U R                   R                  U5        gr  )r  r   )r   rF   s     r   rQ   7TestGzip.test_flush_modes.<locals>.FakeCompressor.flush5  s    

!!$'r   r  N))r&   r'   r(   r)   r  r   rQ   r*   r   r   r   FakeCompressorr  0  s     r   r  r=   r   rN   r>  )	zlib_moder  )
r   r   r   r@   r   rQ   r   Z_SYNC_FLUSHrB   r  )r   r  r  fcrH   expected_modess         r   test_flush_modesTestGzip.test_flush_modes-  s    	 	 JJL]]13]/1JGGIGGBKGGcG"	 0 	
 	>2 0/s   7B++
B9c                 v   [         R                  " 5       nSn[        R                  USS9 nUR	                  U5        UR                  [        U5      5        UR	                  U5        S S S 5        UR                  5       nU R                  [        R                  U5      US-  5        g ! , (       d  f       NG= f)Nr  r=   r   r   )
r   r   r   r@   rA   r$   rC   r2  rB   r  )r   r  r  rH   rE   s        r   test_write_seek_writeTestGzip.test_write_seek_writeH  s     JJL,]]13]/1GGGFF3w< GGG 0 zz|.!< 0/s   =B**
B8c                     [        5        n[        R                  [        R                  " 5       SS9  [
        R                  " 5         U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nr=   r   )	r   r   r@   r   r   gccollectr   
unraisable)r   cms     r   test_refloop_unraisable TestGzip.test_refloop_unraisableU  sI    
 ()RMM"**,SM9JJLbmm, *))s   AA,,
A:)r1   N)r  )?r&   r'   r(   r)   rJ   rW   ra   rm   rq   rw   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/  r5  rB  rK  rY  rd  rm  rs  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*   r   r   r   r:   r:   ;   s;   /0"'8?.&7 S#. $.85-&/	F
5
"&*!58<	11Hf?(7*
F?@57,7G.R&8P98/#*J4
95	95	;KK70(/0*36
=-r   r:   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestOpeni`  c                    [         S-  n[        R                  U R                  S5       nUR	                  U5        S S S 5        [        U R                  S5       n[        R                  UR                  5       5      nU R                  X15        S S S 5        [        R                  U R                  S5       nU R                  UR                  5       U5        S S S 5        [        R                  U R                  S5       nUR	                  U5        S S S 5        [        U R                  S5       n[        R                  UR                  5       5      nU R                  X1S-  5        S S S 5        U R                  [        5         [        R                  U R                  S5        S S S 5        [        R                  " U R                  5        [        R                  U R                  S5       nUR	                  U5        S S S 5        [        U R                  S5       n[        R                  UR                  5       5      nU R                  X15        S S S 5        g ! , (       d  f       GN'= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNC= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)NrN   rM   r{   r   r   r   rP   r   r   r1   rA   r  rD   rB   r|   r   r   r0   r   r3  rH   	file_datas       r   test_binary_modesTestOpen.test_binary_modesa  s   rzYYt}}d+qGGL! ,$--&!1IY5 ' YYt}}d+qQVVX|4 , YYt}}d+qGGL! ,$--&!1IYq(89 ' /IIdmmT* 0'YYt}}d+qGGL! ,$--&!1IY5 '&) ,+&& ,+ ,+&& 0/ ,+&&_   I5I.7!J  J08J$!J6.K5K
I+.
I= 
J
J!$
J36
K
K
K'c                    [         R                  " U R                  5      n[        R	                  US5       nUR                  [        S-  5        S S S 5        U R                  WR                  U R                  5        [        R	                  US5       nUR                  [        5        S S S 5        U R                  UR                  U R                  5        [        R	                  U5       nU R                  UR                  5       [        S-  5        S S S 5        U R                  UR                  U R                  5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NW= f)NrM   rN   r   r[   )
r   r\   r1   r   r   rA   rP   rB   r^   rD   )r   r1   rH   s      r   test_pathlike_fileTestOpen.test_pathlike_file|  s    %%dmm4YYx&!GGEBJ '/YYx&!GGEN '/YYx AQVVXurz2 !/ '& '& ! s#   EE-(E&
E
E#&
E4c                    [         S-  n[        R                  U R                  S5       nUR	                  U5        S S S 5        [        U R                  S5       n[        R                  UR                  5       5      nU R                  X15        S S S 5        [        R                  U R                  S5       nU R                  UR                  5       U5        S S S 5        [        R                  U R                  S5       nUR	                  U5        S S S 5        [        U R                  S5       n[        R                  UR                  5       5      nU R                  X1S-  5        S S S 5        U R                  [        5         [        R                  U R                  S5        S S S 5        [        R                  " U R                  5        [        R                  U R                  S5       nUR	                  U5        S S S 5        [        U R                  S5       n[        R                  UR                  5       5      nU R                  X15        S S S 5        g ! , (       d  f       GN'= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNC= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)NrN   r=   r{   r>   rZ   r   r   r  r  s       r   test_implicit_binary_modes#TestOpen.test_implicit_binary_modes  s   rzYYt}}c*aGGL! +$--&!1IY5 ' YYt}}c*aQVVX|4 + YYt}}c*aGGL! +$--&!1IYq(89 ' /IIdmmS) 0'YYt}}c*aGGL! +$--&!1IY5 '&) +*&& +* +*&& 0/ +*&&r  c                 $   [         R                  S5      S-  nUR                  S[        R                  5      n[
        R                  U R                  SSS9 nUR                  U5        S S S 5        [        U R                  S5       n[
        R                  UR                  5       5      R                  S5      nU R                  XB5        S S S 5        [
        R                  U R                  SSS9 nU R                  UR                  5       U5        S S S 5        [
        R                  U R                  SSS9 nUR                  U5        S S S 5        [        U R                  S5       n[
        R                  UR                  5       5      R                  S5      nU R                  XBS	-  5        S S S 5        g ! , (       d  f       GNX= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)
NrE  rN   
wtrF  r{   rtatr   rP   rH  replacerT   linesepr   r   r1   rA   r  rD   rB   r   r3  uncompressed_rawrH   r  s        r   test_text_modesTestOpen.test_text_modes  sf   ||G,r1'//bjjAYYt}}dWY=GGL! >$--&!188AIY9 ' YYt}}dWY=QVVX|4 >YYt}}dWY=GGL! >$--&!188AIY1(<= '& >=&& >===&&s>   F;AG3!G;G0+AH;
G

G
G-0
G>
Hc                    [         S-  nUR                  S5      n[        R                  U5      n[        R	                  [
        R                  " U5      S5       nU R                  UR                  5       U5        S S S 5        [        R	                  [
        R                  " U5      S5       nU R                  UR                  5       U5        S S S 5        [        R	                  [
        R                  " U5      SSS9 nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       g = f)NrN   rE  r>   r{   r  rF  )	rP   rH  r   r   r   r   r   rB   rD   )r   uncompressed_bytesuncompressed_strr   rH   s        r   test_fileobjTestOpen.test_fileobj  s    "RZ-44W=]]#56
YYrzz*-s3qQVVX'9: 4YYrzz*-t4QVVX'9: 5YYrzz*-tgYF!QVVX'78 GF	 4344FFs$   !D)-!D:?!E)
D7:
E
Ec                    U R                  [        5         [        R                  S5        S S S 5        U R                  [        5         [        R                  U R
                  S5        S S S 5        U R                  [        5         [        R                  U R
                  S5        S S S 5        U R                  [        5         [        R                  U R
                  SSS9  S S S 5        U R                  [        5         [        R                  U R
                  SSS9  S S S 5        U R                  [        5         [        R                  U R
                  SS	S
9  S S S 5        g ! , (       d  f       GNC= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Ngw/^@wbtxbtr{   zutf-8rF  ignore)errorsr  )newline)r|   r}   r   r   r   r1   r   s    r   test_bad_paramsTestOpen.test_bad_params  s   y)IIg *z*IIdmmU+ +z*IIdmmU+ +z*IIdmmTGI< +z*IIdmmT(I; +z*IIdmmT4I8 +* *)**********sG   E(	!E:!F F F.? F?(
E7:
F	
F
F+.
F<?
Gc                    [         R                  S5      S-  nUR                  S[        R                  5      n[
        R                  U R                  SSS9 nUR                  U5        S S S 5        [        U R                  S5       n[
        R                  UR                  5       5      R                  S5      nU R                  XB5        S S S 5        [
        R                  U R                  SSS9 nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nh= f! , (       d  f       g = f)	NrE  rN   r  r  zutf-16rF  r{   r  r  r
  s        r   test_encodingTestOpen.test_encoding  s    ||G,r1'//bjjAYYt}}dXY>!GGL! ?$--&!188BIY9 ' YYt}}dXY>!QVVX|4 ?> ?>&& ?>s%   DAD.3!D?
D+.
D<?
Ec                 N   [         R                  U R                  S5       nUR                  S5        S S S 5        [         R                  U R                  SSSS9 nU R	                  UR                  5       S5        S S S 5        g ! , (       d  f       NX= f! , (       d  f       g = f)NrM   s   foobarr  rE  r  )rG  r  foobar)r   r   r1   rA   rB   rD   rV   s     r   test_encoding_error_handler$TestOpen.test_encoding_error_handler  sq    YYt}}d+qGGM" ,YYt}}dWXYNQVVXx0 ON ,+NNs   B!B
B
B$c                    [         R                  S5      S-  n[        R                  U R                  SSSS9 nUR                  U5        S S S 5        [        R                  U R                  SSSS9 nU R                  UR                  5       U/5        S S S 5        g ! , (       d  f       NY= f! , (       d  f       g = f)NrE  rN   r  r  )rG  r  r  )rP   rH  r   r   r1   rA   rB   r   )r   r3  rH   s      r   test_newlineTestOpen.test_newline  s    ||G,r1YYt}}dWdYKqGGL! LYYt}}dWdYKqQ[[]\N; LK LKKKs   B3"B/
B,/
B=r   N)r&   r'   r(   r)   r  r  r   r  r  r  r  r   r$  r*   r   r   r   r  r  `  s/    66
068> 	99
51<r   r  c                    ^  U 4S jnU$ )Nc                 J   >^  [         R                  " T 5      UU 4S j5       nU$ )Nc                     > [         R                  " T5         T" U 0 UD6[        R                  " T5        $ ! [        R                  " T5        f = fr   )rT   makedirsr   rmtree)r#   kwargs	directoryfunctions     r   wrapper?create_and_remove_directory.<locals>.decorator.<locals>.wrapper  s>    KK	",00  +	  +s	   7 A)	functoolswraps)r-  r.  r,  s   ` r   	decorator.create_and_remove_directory.<locals>.decorator  s%    		"	, 
#	, r   r   )r,  r2  s   ` r   create_and_remove_directoryr4    s     r   c                       \ rS rSrSr\" 5       S 5       r\" \5      S 5       r	S r
\" 5       \" \5      S 5       5       r\" \5      S 5       r\" \5      S 5       rS	 rS
 rSrg)TestCommandLinei  s   This is a simple test with gzipc                    [         R                  " 5        n[        R                  USS9 nUR	                  U R
                  5        S S S 5        [        R                  SSS4n[        U[        [        [        S9 nUR                  UR                  5       5      u  pVS S S 5        S S S 5        U R                  WS5        U R                  WU R
                  5        g ! , (       d  f       N= f! , (       d  f       NV= f! , (       d  f       N_= f)NrM   r   -mr   -dstdinstdoutstderrr   )r   r   r   r@   rA   rE   sys
executabler   r   communicater2  rB   )r   bytes_io	gzip_filer#   procouterrs          r   test_decompress_stdin_stdout,TestCommandLine.test_decompress_stdin_stdout  s    ZZ\Xxd;y		* < >>45Dt4TBd++H,=,=,?@ C  	c"dii( <; CB \s:   C>C4C>;"C-C>
C*	&C>-
C;	7C>>
Dc                    [         R                  R                  [        S5      nU R	                  [         R                  R                  U5      5        [        R                  USS9 nUR                  U R                  5        S S S 5        [        SSSU5      u  p4n[        [         R                  R                  [        S5      S5       nU R                  UR                  5       U R                  5        S S S 5        U R                  [         R                  R                  U5      5        U R                  US	5        U R                  US
5        U R                  US
5        g ! , (       d  f       N= f! , (       d  f       N= f)Nztestgzip.gzrM   )rF   r8  r   r9  testgzipr{   r   r   )rT   pathr   TEMPDIRr   existsr   r   rA   rE   r   rB   rD   r   )r   gzipnamefprcrD  rE  gunzipeds          r   test_decompress_infile_outfile.TestCommandLine.test_decompress_infile_outfile  s   77<<712YYxdY+rHHTYY ,'fdHE"'',,w
3T:hX]]_dii8 ; 	x01Qc"c" ,+ ;:s   'E"
+E3"
E03
Fc                     [        SSSS5      u  pnU R                  SUR                  5       5        U R                  US5        U R                  US5        g )Nr8  r   r9  zthisisatest.outs.   filename doesn't end in .gz: 'thisisatest.out'r   r   )r   rB   stripr   rO  rD  rE  s       r   $test_decompress_infile_outfile_error4TestCommandLine.test_decompress_infile_outfile_error  sN    ,T64ARSJCIIKXQc"r   c                    [         R                  SS4n[        U[        [        [        S9 nUR	                  U R
                  5      u  p4S S S 5        U R                  WS5        U R                  WS S S5        g ! , (       d  f       N6= f)Nr8  r   r:  r   r   r   )r>  r?  r   r   r@  rE   rB   )r   r#   rC  rD  rE  s        r   test_compress_stdin_outfile+TestCommandLine.test_compress_stdin_outfile  sp     ~~tV+4tD>$''		2HC ? 	c"Ra+.	 ?>s   A::
Bc                    [         R                  R                  [        S5      nUS-   nU R	                  [         R                  R                  U5      5        [        US5       nUR                  U R                  5        S S S 5        [        SSU5      u  pEnU R                  [         R                  R                  U5      5        U R                  US5        U R                  US5        g ! , (       d  f       Nq= f)NrI  .gzrM   r8  r   r   )rT   rJ  r   rK  r   rL  r   rA   rE   r   r   rB   )r   local_testgziprM  rN  rO  rD  rE  s          r   $test_compress_infile_outfile_default4TestCommandLine.test_compress_infile_outfile_default)  s    gz:!E)12.$'2HHTYY ( (fnEx01c"c" ('s   $C++
C9c                    S GHI  nU R                  US9   [        R                  R                  [        S5      nUS-   nU R                  [        R                  R                  U5      5        [        US5       nUR                  U R                  5        S S S 5        [        SSX5      u  pVnU R                  [        R                  R                  U5      5        U R                  US5        U R                  US5        [        R                  " U5        U R                  [        R                  R                  U5      5        S S S 5        GML     g ! , (       d  f       N= f! , (       d  f       GMp  = f)	N)--fast--best)compress_levelrI  r\  rM   r8  r   r   )r  rT   rJ  r   rK  r   rL  r   rA   rE   r   r   rB   remove)r   rc  r]  rM  rN  rO  rD  rE  s           r   test_compress_infile_outfile,TestCommandLine.test_compress_infile_outfile8  s   2N^<!#gz!B)E1  !9:.$/2HHTYY' 0  0fn]x 89  c*  c*		(#  !9: =< 3 0/ =<s%   A$E#:EB.E#
E E##
E3	c                 n    [        SSSS5      u  pnU R                  SU5        U R                  US5        g )Nr8  r   ra  rb  s8   error: argument --best: not allowed with argument --fastr   r   r  rB   rU  s       r   %test_compress_fast_best_are_exclusive5TestCommandLine.test_compress_fast_best_are_exclusiveK  s6    ,T68XNQSVWc"r   c                 n    [        SSSS5      u  pnU R                  SU5        U R                  US5        g )Nr8  r   ra  r9  sA   error: argument -d/--decompress: not allowed with argument --fastr   rh  rU  s       r   -test_decompress_cannot_have_flags_compression=TestCommandLine.test_decompress_cannot_have_flags_compressionP  s6    ,T68TJZ\_`c"r   r   N)r&   r'   r(   r)   rE   r
   rF  r4  rK  rQ  rV  rY  r^  re  ri  rl  r*   r   r   r   r6  r6    s    -D
) 
) !)# *# #  )/ * / !)# *# !); *;$#
#r   r6  __main__)(rv   r0  r  r   rT   r   r>  unittest
subprocessr   r   test.supportr   r   r   r   r	   r
   test.support.script_helperr   r   import_moduler   r   rP   r   rJ  abspathr8   rK  r   r   TestCaser,   r:   r  r4  r6  r&   mainr   r   r   <module>rw     s      	 	 	  
  " 3 & " = = N""6*""6*		 ''//)**
+h
6&2:: &(x   (b-x b-JH<x H<V
[#h'' [#| zMMO r   