
    daf                    
   d 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
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mZ ddlmZmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lm Z  ddlm!Z! ddl"m#Z# ddl$Z$ddl%Z%ddl&Z'	 ddl(Z(d Z) G d de(jT                        Z+ejZ                  xs e	j\                  j^                  Z0d Z1 ejd                   e3ed      d      Z4 G d d      Z5 G d d      Z6 G d de6e%jn                        Z8 G d de6e'jn                        Z9 G d de6      Z: G d de:e%jn                        Z; G d  d!e:e'jn                        Z< G d" d#e:      Z= G d$ d%e=e%jn                        Z> G d& d'e=e'jn                        Z? G d( d)e:      Z@ G d* d+e@e%jn                        ZA G d, d-e@e'jn                        ZB G d. d/e:      ZC G d0 d1eCe%jn                        ZD G d2 d3eCe'jn                        ZE G d4 d5      ZF G d6 d7eFe%j                        ZH G d8 d9eFe'j                        ZI G d: d;      ZJ G d< d=eJe%j                        ZK G d> d?eJe'j                        ZL G d@ dAeF      ZM G dB dCeMe%j                        ZN G dD dEeMe'j                        ZO G dF dG      ZP G dH dIePe%jn                        ZQ G dJ dKePe'jn                        ZR G dL dMej                        ZT G dN dOeT      ZUej                   G dP dQej                               ZW G dR dSeT      ZXej                   G dT dUej                               ZY G dV dW      ZZ G dX dY      Z[ G dZ d[ej                  eZ      Z\ G d\ d]e\e[      Z] G d^ d_e\      Z^ G d` daej                  eZ      Z_ G db dce_e[      Z` G dd dee_      Za G df dgej                        Zb G dh dieb      Zc G dj dkeb      Zd G dl dme\e_      Ze G dn doeee[      Zf G dp dqee      Zg G dr dse$j                        Zidt Zj G du dvej                        Zk G dw dxej                        Zl G dy dze%j                        Zmd{ Zn G d| d}el      Zo G d~ del      Zp G d dej                        Zq G d deq      Zr G d deq      Zs G d dej                        Zt G d det      Zu G d det      Zv ej                  ej                  dk(  d       G d dej                               Zy G d dey      Zz G d dey      Z{d Z|e}dk(  r ej                          yy# e,$ r d Z)Y w xY w)zUnit tests for the io module.    N)dequeUserList)cyclecount)support)assert_python_okassert_python_failurerun_python_until_end)import_helper)	os_helper)threading_helper)warnings_helper)skip_if_sanitizer)FakePathc                      t        | i |}t               }t        j                  |t	        |             |t        |      j                  d      dd |S )z?Create a bytes-like object having no string or sequence methodsBN)bytesEmptyStructctypesresizelen
memoryviewcast)poskwdataobjs       '/root/Python-3.12.4/Lib/test/test_io.py	bytesliker   ;   sH    c R mc3t9%'+
3S!!$
    c                       e Zd Zy)r   N__name__
__module____qualname__ r    r   r   r   B   s    r    r   c                  @    t        j                   dt        | i |      S )Nb)arrayr   )r   r   s     r   r   r   8   s    {{3s 1b 122r    c                  j    t        t        dd      5 } | j                  cddd       S # 1 sw Y   yxY w)z(Get the default TextIOWrapper chunk sizerlatin-1encodingN)open__file___CHUNK_SIZE)fs    r   _default_chunk_sizer3   J   s,    	hi	0 A}}  s   )2alarmztest requires signal.alarm()c                       e Zd Zd Zy)BadIndexc                     ddz   y N   r   r&   selfs    r   	__index__zBadIndex.__index__U   	    	!r    N)r#   r$   r%   r<   r&   r    r   r6   r6   T   s    r    r6   c                   P    e Zd ZdZddZd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZddZy)MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().c                 N    t        |      | _        g | _        d| _        d| _        y Nr   )list_read_stack_write_stack_reads_extraneous_reads)r;   
read_stacks     r   __init__zMockRawIOWithoutRead.__init__\   s&    
+!"r    c                 `    | j                   j                  t        |             t        |      S N)rD   appendr   r   r;   r(   s     r   writezMockRawIOWithoutRead.writeb   s#      q*1vr    c                      yNTr&   r:   s    r   writablezMockRawIOWithoutRead.writablef       r    c                      yN*   r&   r:   s    r   filenozMockRawIOWithoutRead.filenoi   s    r    c                      yrO   r&   r:   s    r   readablezMockRawIOWithoutRead.readablel   rQ   r    c                      yrO   r&   r:   s    r   seekablezMockRawIOWithoutRead.seekableo   rQ   r    c                      yrA   r&   r;   r   whences      r   seekzMockRawIOWithoutRead.seekr       r    c                      yrA   r&   r:   s    r   tellzMockRawIOWithoutRead.tellu   r^   r    c                 \   | xj                   dz  c_         t        |      }	 | j                  d   }|| j                  d= y t        |      }t        |      |k  r| j                  d= ||d | |S |d | |d d  ||d  | j                  d<   |S # t        $ r | xj                  dz  c_        Y yw xY wr8   )rE   r   rC   
IndexErrorrF   )r;   bufmax_lenr   ns        r   readintozMockRawIOWithoutRead.readintox   s    qc(	##A&D <  #It9  #CGH(7^CF"&wx.DQN  	""a'"	s   B
 
B+*B+Nc                     |S rJ   r&   )r;   r   s     r   truncatezMockRawIOWithoutRead.truncate   s    
r    )r&   rJ   )r#   r$   r%   __doc__rH   rM   rP   rU   rW   rY   r]   r`   rf   rh   r&   r    r   r?   r?   X   s9    ,#*r    r?   c                       e Zd Zy)CMockRawIOWithoutReadNr"   r&   r    r   rk   rk          r    rk   c                       e Zd Zy)PyMockRawIOWithoutReadNr"   r&   r    r   rn   rn      rl   r    rn   c                       e Zd ZddZy)	MockRawIONc                     | xj                   dz  c_         	 | j                  j                  d      S #  | xj                  dz  c_        Y yxY w)Nr9   r   r    )rE   rC   poprF   r;   re   s     r   readzMockRawIO.read   sG    q	##''**	""a'"s	   2 ArJ   r#   r$   r%   rt   r&   r    r   rp   rp      s    r    rp   c                       e Zd Zy)
CMockRawIONr"   r&   r    r   rw   rw      rl   r    rw   c                       e Zd Zy)PyMockRawIONr"   r&   r    r   ry   ry      rl   r    ry   c                   @     e Zd Z fdZd fd	Zd Zd Z fdZ xZS )MisbehavedRawIOc                 (    t         |   |      dz  S N   )superrM   )r;   r(   	__class__s     r   rM   zMisbehavedRawIO.write   s    w}Q!##r    c                 (    t         |   |      dz  S r}   )r   rt   )r;   re   r   s     r   rt   zMisbehavedRawIO.read   s    w|A""r    c                      y)Nir&   r[   s      r   r]   zMisbehavedRawIO.seek   rQ   r    c                      y)Ni8r&   r:   s    r   r`   zMisbehavedRawIO.tell   rQ   r    c                 >    t         |   |       t        |      dz  S )N   )r   rf   r   )r;   rc   r   s     r   rf   zMisbehavedRawIO.readinto   s    3x!|r    rJ   )	r#   r$   r%   rM   rt   r]   r`   rf   __classcell__r   s   @r   r{   r{      s!    $# r    r{   c                       e Zd Zy)CMisbehavedRawIONr"   r&   r    r   r   r      rl   r    r   c                       e Zd Zy)PyMisbehavedRawIONr"   r&   r    r   r   r      rl   r    r   c                   $     e Zd Z fdZd Z xZS )SlowFlushRawIOc                 T    t         |           t        j                         | _        y rJ   )r   rH   	threadingEventin_flush)r;   r   s    r   rH   zSlowFlushRawIO.__init__   s    !)r    c                 b    | j                   j                          t        j                  d       y )Ng      ?)r   settimesleepr:   s    r   flushzSlowFlushRawIO.flush   s    

4r    )r#   r$   r%   rH   r   r   r   s   @r   r   r      s    *r    r   c                       e Zd Zy)CSlowFlushRawIONr"   r&   r    r   r   r      rl   r    r   c                       e Zd Zy)PySlowFlushRawIONr"   r&   r    r   r   r      rl   r    r   c                       e Zd ZdZd Zy)CloseFailureIOr   c                 6    | j                   sd| _         t        y Nr9   closedOSErrorr:   s    r   closezCloseFailureIO.close   s    {{DKM r    N)r#   r$   r%   r   r   r&   r    r   r   r      s    Fr    r   c                       e Zd Zy)CCloseFailureIONr"   r&   r    r   r   r      rl   r    r   c                       e Zd Zy)PyCloseFailureIONr"   r&   r    r   r   r      rl   r    r   c                   4     e Zd Z fdZd fd	Z fdZ xZS )
MockFileIOc                 2    g | _         t        | 	  |       y rJ   )read_historyr   rH   r;   r   r   s     r   rH   zMockFileIO.__init__   s    r    c                     t         |   |      }| j                  j                  |d        |S t	        |             |S rJ   )r   rt   r   rK   r   )r;   re   resr   s      r   rt   zMockFileIO.read   s>    gl1o  C
 ;>c(C
r    c                 \    t         |   |      }| j                  j                  |       |S rJ   )r   rf   r   rK   )r;   r(   r   r   s      r   rf   zMockFileIO.readinto   s+    gq!  %
r    rJ   )r#   r$   r%   rH   rt   rf   r   r   s   @r   r   r      s    
 r    r   c                       e Zd Zy)CMockFileIONr"   r&   r    r   r   r      rl   r    r   c                       e Zd Zy)PyMockFileIONr"   r&   r    r   r   r      rl   r    r   c                   $    e Zd Zd Zd Zd Zd Zy)MockUnseekableIOc                      yNFr&   r:   s    r   rY   zMockUnseekableIO.seekable   s    r    c                 $    | j                  d      Nznot seekableUnsupportedOperationr;   argss     r   r]   zMockUnseekableIO.seek       ''77r    c                 $    | j                  d      r   r   r   s     r   r`   zMockUnseekableIO.tell   r   r    c                 $    | j                  d      r   r   r   s     r   rh   zMockUnseekableIO.truncate   r   r    N)r#   r$   r%   rY   r]   r`   rh   r&   r    r   r   r      s    888r    r   c                   $    e Zd Zej                  Zy)CMockUnseekableION)r#   r$   r%   ior   r&   r    r   r   r     s    22r    r   c                   $    e Zd Zej                  Zy)PyMockUnseekableION)r#   r$   r%   pyior   r&   r    r   r   r     s    44r    r   c                   *     e Zd Z fdZd Zd Z xZS )MockCharPseudoDevFileIOc                 $    t         |   |       y rJ   )r   rH   r   s     r   rH   z MockCharPseudoDevFileIO.__init__  s    r    c                      yrA   r&   r   s     r   r]   zMockCharPseudoDevFileIO.seek  r^   r    c                      yrA   r&   r   s     r   r`   zMockCharPseudoDevFileIO.tell  r^   r    )r#   r$   r%   rH   r]   r`   r   r   s   @r   r   r   
  s    
r    r   c                       e Zd Zy)CMockCharPseudoDevFileIONr"   r&   r    r   r   r     rl   r    r   c                       e Zd Zy)PyMockCharPseudoDevFileIONr"   r&   r    r   r   r     rl   r    r   c                   >    e Zd Zd Zd Zd Zd Zd Zd
dZd Z	d Z
y	)MockNonBlockWriterIOc                      g | _         d | _        y rJ   )rD   _blocker_charr:   s    r   rH   zMockNonBlockWriterIO.__init__!  s    !r    c                 Z    dj                  | j                        }g | j                  d d  |S Nr    )joinrD   )r;   ss     r   pop_writtenz MockNonBlockWriterIO.pop_written%  s+    HHT&&'!!r    c                     || _         y)z'Block when a given char is encountered.N)r   )r;   chars     r   block_onzMockNonBlockWriterIO.block_on*  s
    !r    c                      yrO   r&   r:   s    r   rW   zMockNonBlockWriterIO.readable.  rQ   r    c                      yrO   r&   r:   s    r   rY   zMockNonBlockWriterIO.seekable1  rQ   r    c                      yrA   r&   r[   s      r   r]   zMockNonBlockWriterIO.seek4  s    r    c                      yrO   r&   r:   s    r   rP   zMockNonBlockWriterIO.writable8  rQ   r    c                 0   t        |      }d}| j                  rI	 |j                  | j                        }|dkD  r | j                  j	                  |d |        |S d | _        y | j                  j	                  |       t        |      S # t
        $ r Y 1w xY w)Nr   )r   r   indexrD   rK   
ValueErrorr   )r;   r(   re   s      r   rM   zMockNonBlockWriterIO.write;  s    !H GGD../ q5%%,,QrU3H *.D&  #1v  s   B	 		BBNr   )r#   r$   r%   rH   r   r   rW   rY   r]   rP   rM   r&   r    r   r   r     s*    "
"r    r   c                   $    e Zd Zej                  Zy)CMockNonBlockWriterION)r#   r$   r%   r   BlockingIOErrorr&   r    r   r   r   O  s    ((Or    r   c                   $    e Zd Zej                  Zy)PyMockNonBlockWriterION)r#   r$   r%   r   r   r&   r    r   r   r   R  s    **Or    r   c                      e Zd Zd Zd Zd Zd6dZdZd Zd Z	 e
j                  ej                  d       e
j                   eed	      d
      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* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:y5)7IOTestc                 J    t        j                  t         j                         y rJ   r   unlinkTESTFNr:   s    r   setUpzIOTest.setUpX      ))*r    c                 J    t        j                  t         j                         y rJ   r   r:   s    r   tearDownzIOTest.tearDown[  r   r    c                    | j                  |j                  d      d       |j                  d       | j                  |j                         d       |j	                  d       | j                  |j                  d      d       | j                  |j	                  d      d       | j                  |j                  d      d       | j                  |j                         d       | j                  |j	                  dd      d       | j                  |j                         d       t        d      }| j                  |j                  |      d	       d
|d d  | j                  |j	                  d      d       | j                  |j                  d      d       | j                  |j	                  dd      d       | j                  |j                         d       | j                  |j                  d      d       | j                  |j                         d       | j                  t        |j                  d       y )Ns   blah.r   r   s   Hello.   r   r9   s	    world


	   s	   *********   hr~                 )assertEqualrM   rh   r`   r]   	bytearrayassertRaises	TypeError)r;   r2   buffers      r   	write_opszIOTest.write_ops^  s   *A.	

11%	q	*A.A&+Q/1%A*1%?+!,q	A&*A+2&B,2&)QVVS1r    c                    |j                  d      }| j                  |d       t        |      }| j                  |j                  |      d       | j                  t	        |      d       t        d      }| j                  |j                  |      d       | j                  t        |      d       | j                  |d d d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d	      d
       | j                  |j                  t        d            d       | j                  |j                  dd      d       | j                  |j                  d      d       | j                  |j                  d      d
       | j                  |j                  t                     d       | j                  |j                  dd	      d       | j                  |j                  d      d       | j                  |j                         d       | j                  t        |j                  d       |r|j                  d       | j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |j                         d
       |j                  d       t        d      }| j                  |j                  |      d       | j                  t	        |      d       y y )Nr   s   hellos    worlr~      d
r         hello world
r9   r       xir   s   world
   r   s   world
)rt   r   r   rf   r   r   r   r]   r`   r   r   	readinto1)r;   r2   bufferedr   s       r   read_opszIOTest.read_opsv  sl   vvayx(D)1-th/|D)1-TA&bq6*A&%56C(IdO4a8A*H-C(IK0!4A*H-2&)QVVS1FF1IQVVX'78FF1IQVVXz2QVVXs+FF1IQ<DQ[[.2U4[(3 r    l        c                 .   |j                         sJ |j                         sJ 	 | j                  |j                  | j                        | j                         | j                  |j                         | j                         | j                  |j                  d      d       | j                  |j                         | j                  dz          | j                  |j                  dd      | j                  dz          | j                  |j                         | j                  dz          | j                  |j                         | j                  dz          | j                  |j                  dd      | j                  dz          | j                  |j                  | j                  dz         | j                  dz          | j                  |j                         | j                  dz          | j                  |j                  dd      | j                  dz          | j                  |j                  dd      | j                         | j                  |j                  d      d       y # t
        t        f$ r | j                  d       Y 8w xY w)	Nzno largefile support   xxx   r   r9   r~   r   r  )rW   rP   r   r]   LARGEOverflowErrorr   skipTestr`   rM   rh   rt   r;   r2   s     r   large_file_opszIOTest.large_file_ops  s   zz||zz||	2QVVDJJ/< 	4::.!,4::>2A

Q7tzzA~64::>21tzzA~6DJJN3TZZ!^D4::>21tzzA~6A

3D) z* 	2MM01	2s   5I0 0 JJc                    | j                   }| j                  t        j                  dd      5 }| j	                  ||j
                         | j	                  ||j                         d d d        | j                  t        j                  d      5 }| j	                  ||j
                         | j	                  ||j                         d d d        | j                  t        j                  dd      5 }| j	                  ||j
                         | j	                  ||j                         d d d        | j                  t        j                  dd      5 }| j	                  ||j                  d       | j	                  ||j                  d	g       d d d        | j                  t        j                  d      5 }| j	                  ||j                  d       | j	                  ||j                  d	g       d d d        | j                  t        j                  d
d      5 }| j	                  ||j                  d       | j	                  ||j                  dg       | j	                  ||j                  d| j                         | j	                  ||j                  d| j                         d d d        y # 1 sw Y   OxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nwutf-8r-   wbr   	bufferingrbs   blahs   blah
r+   blahzblah
r9   r   )r   r/   r   r   r   rt   readlinerM   
writelinesr]   SEEK_CURSEEK_END)r;   excfps      r   test_invalid_operationszIOTest.test_invalid_operations  sh   ''YYy''wY? 	02c277+c2;;/	0 YYy''. 	0"c277+c2;;/	0 YYy''Y; 	0rc277+c2;;/	0 YYy''Y; 	?rc288W5c2==9+>	? YYy''. 	?"c288W5c2==9+>	? YYy''wY? 	?2c288V4c2==8*=c277At}}=c277B>	? 	?	0 	0	0 	0	0 	0	? 	?	? 	?	? 	?sH   9J59K39K<K:<K) BK55J?KKK&)K25K>%fstat() of a pipe fd is not supportedpiperequires os.pipe()c                 x     fd} fd} fd} fd} fd} fd} fd} fd}|d	f|d
f|df|df|df|df|df|df j                   df j                  dff
}	|	D ]  \  }
} j                  |
      5   |
       5 }d|v } j                  |j	                         |       d|v } j                  |j                         |       t        | j                        rd}n6t        | j                   j                  f      rd}n j                  d       d|v r|j                          n  j                  t        |j                         |r"|j                  d       |j                          nA j                  t        |j                  d        j                  t        |j                         |r|j                         n! j                  t        |j                         t         j"                  j%                  d      r|
||fv r	 d d d        d d d        d|v } j                  |j'                         |       |r"|j)                          |j+                  d       nA j                  t        |j(                          j                  t        |j*                  d       |r$|r"|j-                          |j-                  d       nA j                  t        |j,                          j                  t        |j,                  d       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nc                      t        j                         \  } }t        j                  |       j                  | d      S )Nr+   )osr!  r   FileIO)r+   r  r;   s     r   pipe_readerz3IOTest.test_optional_abilities.<locals>.pipe_reader  s.    WWYFQHHQK;;q#&&r    c                  :   t        j                         \  } }j                  t         j                  |        t	        j
                  t         j                  | df      }|j                          j                  |j                         j                  |d      S )Nd   targetr   r  )
r%  r!  
addCleanupr   r   Threadrt   startr   r&  )r+   r  threadr;   s      r   pipe_writerz3IOTest.test_optional_abilities.<locals>.pipe_writer  sh    WWYFQOOBHHa(%%RWWAs8DFLLNOOFKK(;;q#&&r    c                  B     j                   j                               S rJ   )BufferedReaderr   r:   s   r   buffered_readerz7IOTest.test_optional_abilities.<locals>.buffered_reader      &&t'<'<'>??r    c                  B     j                   j                               S rJ   )BufferedWriterr   r:   s   r   buffered_writerz7IOTest.test_optional_abilities.<locals>.buffered_writer  r4  r    c                  B     j                   j                               S rJ   )BufferedRandomBytesIOr:   s   r   buffered_randomz7IOTest.test_optional_abilities.<locals>.buffered_random  s    &&t||~66r    c                  `     j                   j                          j                               S rJ   )BufferedRWPairr   r:   s   r   buffered_rw_pairz8IOTest.test_optional_abilities.<locals>.buffered_rw_pair  s-    &&t'<'<'>%%') )r    c                  `     G fddj                         } j                   |        d      S )Nc                   j    e Zd ZW  j                  j                  ZW  j                  j
                  Zy)MIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)r#   r$   r%   BufferedIOBaserP   rM   r:   s   r   UnseekableReaderrA    s%    ..77++11r    rC  asciir   TextIOWrapper)rC  r;   s    r   text_readerz3IOTest.test_optional_abilities.<locals>.text_reader  s.    24#8#8 2 %%&6&8'BBr    c                  `     G fddj                         } j                   |        d      S )Nc                   j    e Zd ZW  j                  j                  ZW  j                  j
                  Zy)MIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)r#   r$   r%   rB  rW   rt   r:   s   r   UnseekableWriterrJ    s%    ..77**//r    rK  rD  rE  )rK  r;   s    r   text_writerz3IOTest.test_optional_abilities.<locals>.text_writer  s.    04#8#8 0 %%&6&8'BBr    frfwr+   r  rwsrw3   3zUnknown base classr2   r9   winr   r   )r:  StringIOsubTestr   rW   rP   
isinstance
TextIOBaserB  	RawIOBasefailrU   r   r   rt   rM   sysplatform
startswithrY   r`   r]   rh   )r;   r'  r0  r3  r7  r;  r>  rG  rL  teststest	abilitiesr   rW   rP   r   rY   s   `                r   test_optional_abilitieszIOTest.test_optional_abilities  s   	'
	'	@	@	7	)	C	C $+t!4c"_c$:e$'7&>#c 2\\5!DMM5#9
 "' 2	@T9d# 1@TV 1@s)+  :)+  :c4??3Dd&9&94>>%JKDII23)#JJL%%gszz:HHQKHHJ%%gsxx;%%gsxx8IIdO%%gsyy$?<<**51d#[?2 72 C1@ 1@ 1@D )+  :HHJHHQK%%gsxx8%%gsxx;LLNLLO%%gs||<%%gs||Q?c1@ 1@ 1@2	@1@ 1@ 1@ 1@s2   8L/ FL#L/C0L#L/#L,(L//L9	c                 6   d}| j                  t        | j                  |dd       t        |d      }t	        j
                         5  t	        j                  dt               | j                  t        | j                  |dd       d d d        y # 1 sw Y   y xY w)Nzfoo barr  r  r-   rD  ignore)r   r   r/   r   warningscatch_warningssimplefilterDeprecationWarning)r;   fn_with_NULbytes_fns      r   test_open_handles_NUL_charsz"IOTest.test_open_handles_NUL_chars2  s     *diicGTg.$$& 	V!!(,>?j$))XsWU	V 	V 	Vs   ?BBc                    | j                  t        j                  dd      5 }| j                  |j	                         d       | j                  |j                         d       | j                  |j                         d       | j                  |       d d d        | j                  t        j                  dd      5 }| j                  |j	                         d       | j                  |j                         d       | j                  |j                         d       | j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r   r  FTr  	r/   r   r   r   rW   rP   rY   r   r  r  s     r   test_raw_file_iozIOTest.test_raw_file_io;  s   YYy''Y; 	qQZZ\51QZZ\40QZZ\40NN1		
 YYy''Y; 	qQZZ\40QZZ\51QZZ\40MM!		 		 	
	 	s   A2D:?A2E:EEc                    | j                  t        j                  d      5 }| j                  |j	                         d       | j                  |j                         d       | j                  |j                         d       | j                  |       d d d        | j                  t        j                  d      5 }| j                  |j	                         d       | j                  |j                         d       | j                  |j                         d       | j                  |d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  FTr  rk  r  s     r   test_buffered_file_iozIOTest.test_buffered_file_ioG  s    YYy''. 	!QZZ\51QZZ\40QZZ\40NN1		
 YYy''. 	#!QZZ\40QZZ\51QZZ\40MM!T"		# 	#	 	
	# 	#s   A2D7;A3E7E Ec                 v   | j                  t        j                  d      5 }|j                  d       d d d        | j                  t        j                  d      5 }| j	                  |j                         d       | j	                  |j                  d      d       | j	                  |j                  d      d       | j	                  |j                  d	      d
       | j	                  |j                         d       | j	                  |j                  d       d       | j                  t        |j
                  d       d d d        | j                  t        j                  dd      5 }| j                  t        |j
                  d       d d d        y # 1 sw Y   exY w# 1 sw Y   cxY w# 1 sw Y   y xY w)Nr  s"   abc
def
xyzzy
foo bar
another liner     abc
r     def
r~      xy   s   zzy
s   foo bar
s   another lineg333333@r+   r  r-   )r/   r   r   rM   r   r  r   r   r  s     r   test_readlinezIOTest.test_readlineS  sX   YYy''. 	B!GG@A	BYYy''. 	:!QZZ\84QZZ^X6QZZ]E2QZZ]H5QZZ\?;QZZ-?iS9	: YYy''wY? 	:1iS9	: 	:	B 	B	: 	:	: 	:s$   FC&F#+"F/F #F,/F8c                 z     G d d| j                         }| j                  t        t        ft         |              y )Nc                       e Zd Zd Zy)+IOTest.test_readline_nonsizeable.<locals>.Rc                      y rJ   r&   r:   s    r   r  z4IOTest.test_readline_nonsizeable.<locals>.R.readlinee      r    N)r#   r$   r%   r  r&   r    r   Rrw  d      r    rz  )IOBaser   r   StopIterationnextr;   rz  s     r   test_readline_nonsizeablez IOTest.test_readline_nonsizeablea  s-    	 	 	9m4dAC@r    c                 z     G d d| j                         }| j                  t         |       j                  d       y )Nc                       e Zd Zd Zy)'IOTest.test_next_nonsizeable.<locals>.Rc                      y rJ   r&   r:   s    r   __next__z0IOTest.test_next_nonsizeable.<locals>.R.__next__m  ry  r    N)r#   r$   r%   r  r&   r    r   rz  r  l  r{  r    rz  r9   )r|  r   r   	readlinesr  s     r   test_next_nonsizeablezIOTest.test_next_nonsizeablei  s,    	 	 	)QS]]A6r    c                     | j                         }| j                  |       |j                         }| j                  |d       | j                  |      }| j	                  |d       y )Nr  T)r:  r   getvaluer   r  )r;   r2   r   s      r   test_raw_bytes_iozIOTest.test_raw_bytes_ioq  sQ    LLNqzz|/0LLar    c                    t         j                  d d dk(  st         j                  dk(  r#t        j                  dd| j                  z         | j                  t        j                  dd      5 }| j                  |       d d d        | j                  t        j                  d      5 }| j                  |       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr  rS  darwin	largefilez-test requires %s bytes and a long time to runw+br   )	rZ  r[  r   requiresr  r/   r   r   r  r  s     r   test_large_file_opszIOTest.test_large_file_opsy  s     <<u$(@?$**LN YYy''2 	#a"	#YYy''/ 	#1"	# 	#	# 	#	# 	#s   .C(CCCc                    dD ]  }d }| j                  t        j                  d|      5 }|j                  d       d d d        | j	                  |j
                  d       d }	 | j                  t        j                  d|      5 }ddz   d d d        | j                  d        y # 1 sw Y   kxY w# 1 sw Y   )xY w# t        $ r | j	                  |j
                  d       Y w xY w)N)r   r)  r  r
  Tr9   r   z1/0 didn't raise an exception)r/   r   r   rM   r   r   rY  ZeroDivisionError)r;   bufsizer2   s      r   test_with_openzIOTest.test_with_open  s     	;GA9++T7;  q QXXt,A;YYy//w? 1aC
 		9:	;   
 $ 1  401s5   B%"!B=B1	B=%B.	1B:	6B==%C%$C%c                    | j                  t        j                  d      5 }|j                  d       d d d        | j                  t        j                  dd      5 }| j	                  |j                         d       d d d        | j                  t        j                  d      5 }| j	                  |j                         d       d d d        | j                  t        j                  dd	      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)
Nr  r
  abr   r  r  ar  r-   )r/   r   r   rM   r   r`   assertGreaterr  s     r   test_append_mode_tellzIOTest.test_append_mode_tell  s   YYy''. 	!GGFO	YYy''Y; 	*qQVVXq)	*YYy''. 	*!QVVXq)	*YYy''wY? 	,1qvvx+	, 	,	 		* 	*	* 	*	, 	,s/   D!D'&!D31!D?D$'D03D<?Ec                    g  G fdd| j                         }t        j                  dt        f      5   |t        j
                  d      }|j                  d       ~t        j                          | j                  g d       | j                  t        j
                  d      5 }| j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                   :     e Zd Z fdZ fdZ fdZ xZS )(IOTest.test_destructor.<locals>.MyFileIOc                 j    j                  d       	 t        |   } |        y # t        $ r Y y w xY wr   rK   r   __del__AttributeErrorr;   r2   r   records     r   r  z0IOTest.test_destructor.<locals>.MyFileIO.__del__  8    a A C &    
& 	22c                 D    j                  d       t        | 	          y r}   rK   r   r   r;   r   r  s    r   r   z.IOTest.test_destructor.<locals>.MyFileIO.close      a r    c                 D    j                  d       t        | 	          y Nr  rK   r   r   r  s    r   r   z.IOTest.test_destructor.<locals>.MyFileIO.flush  r  r    r#   r$   r%   r  r   r   r   r   r  s   @r   MyFileIOr            r    r   r  r
  r9   r~   r  r  )r&  r   check_warningsResourceWarningr   r   rM   r   
gc_collectr   r/   rt   )r;   r  r2   r  s      @r   test_destructorzIOTest.test_destructor  s    	 t{{ 	  ++R,AB 	3))40AGGFO VY/9++T2 3a  623	3 	33 3	3 	3s$   A2C&(!C	C&C#	C&&C/c                     g  G fdd|      } |       }~t        j                          | j                  g d       y )Nc                   @     e Zd Zd Z fdZ fdZ fdZ xZS )+IOTest._check_base_destructor.<locals>.MyIOc                 .    d| _         d| _        d| _        y )Nr9   r~   r  )on_delon_closeon_flushr:   s    r   rH   z4IOTest._check_base_destructor.<locals>.MyIO.__init__  s    
   ! !r    c                 ~    j                  | j                         	 t        |   } |        y # t        $ r Y y w xY wrJ   )rK   r  r   r  r  r  s     r   r  z3IOTest._check_base_destructor.<locals>.MyIO.__del__  s<    dkk*A C & s   
0 	<<c                 X    j                  | j                         t        |           y rJ   )rK   r  r   r   r  s    r   r   z1IOTest._check_base_destructor.<locals>.MyIO.close      dmm,r    c                 X    j                  | j                         t        |           y rJ   )rK   r  r   r   r  s    r   r   z1IOTest._check_base_destructor.<locals>.MyIO.flush  r  r    )r#   r$   r%   rH   r  r   r   r   r  s   @r   MyIOr    s    "    r    r  r  )r   r  r   )r;   baser  r2   r  s       @r   _check_base_destructorzIOTest._check_base_destructor  s<    	 4 	 . F+r    c                 :    | j                  | j                         y rJ   )r  r|  r:   s    r   test_IOBase_destructorzIOTest.test_IOBase_destructor  s    ##DKK0r    c                 :    | j                  | j                         y rJ   )r  rX  r:   s    r   test_RawIOBase_destructorz IOTest.test_RawIOBase_destructor  s    ##DNN3r    c                 :    | j                  | j                         y rJ   )r  rB  r:   s    r   test_BufferedIOBase_destructorz%IOTest.test_BufferedIOBase_destructor  s    ##D$7$78r    c                 :    | j                  | j                         y rJ   )r  rW  r:   s    r   test_TextIOBase_destructorz!IOTest.test_TextIOBase_destructor  s    ##DOO4r    c                 :   | j                  t        j                  d      5 }|j                  d       d d d        | j                  t        j                  d      5 }| j	                  |j                         d       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr  r
  r  r/   r   r   rM   r   rt   r  s     r   test_close_flusheszIOTest.test_close_flushes  s~    YYy''. 	!GGFO	YYy''. 	/!QVVXv.	/ 	/	 		/ 	/   B!BBBc                     t        j                   dt        d            t        j                                fd} | j	                                 | j                  t        j                  d              | j                   j                                       | j                   j                                       | j                   j                          j                                      y )Nir  c                     | 5  j                  | j                               | j                  f       d d d        y # 1 sw Y   y xY wrJ   )r   rM   r  )r2   r  re   r;   s    r   checkz'IOTest.test_array_writes.<locals>.check  sA     #  Q/aT"# # #s   4AA
r  )r)   ranger   tobytesr:  r&  r   r   r6  rp   r9  r=  )r;   r  r  re   s   ` @@r   test_array_writeszIOTest.test_array_writes  s    KKU2Y'			# 	dllndkk)**C01d!!$.."234d!!$.."234d!!$.."2DNN4DEFr    c                 j    | j                  t        | j                  t        j                  ddd       y )Nr  r  Fr.   closefdr   r   r/   r   r   r:   s    r   test_closefdzIOTest.test_closefd  s,    *dii1A1A3#*E 	 	;r    c                 t   | j                  t        j                  dd      5 }|j                  d       d d d        | j                  t        j                  dd      5 }| j                  |j	                         ddd      }| j                  |j                         d       |j                  d       |j                          | j                  t        |j                         d d d        | j                  t        j                  d	      5 }| j                  |j	                         d	d
      }| j                  |j                         d d d       |j                          | j                  t        |j                  t        d             d d d        y # 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  r-   egg
r+   Fr  r   r  r  r  s   eggr9   )r/   r   r   rM   rU   r   rt   r]   r   r   r   rf   r   r;   r2   files      r   test_read_closedzIOTest.test_read_closed  sV   YYy''wY? 	1GGG	YYy''wY? 	5199QXXZw9NDTYY['2IIaLJJLj$))4	5 YYy''. 	G!99QXXZu9=DTYY[!_f5JJLj$--1F		G 	G	 		5 	5	G 	Gs%   FBF"B F.F"F+.F7c                 j    | j                  t        | j                  t        j                  ddd       y )Nr+   r  Fr  r  r:   s    r   test_no_closefd_with_filenamez$IOTest.test_no_closefd_with_filename
  s,    *dii1A1A3#*E 	 	;r    c                    | j                  t        j                  d      5 }|j                  d       d d d        | j                  t        j                  dd      5 }| j	                  |j
                  j                  j                  d       | j                  |j                         ddd      }| j	                  |j
                  j                  j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr  s   egg
r+   r  r-   TFr  )	r/   r   r   rM   r   r   rawr  rU   r  s      r   test_closefd_attrzIOTest.test_closefd_attr  s    YYy''. 	!GGH	YYy''wY? 	=1QXX\\114899QXXZw9NDT[[__44e<	= 	=	 		= 	=s   C*BC6*C36C?c                     t        j                  dt        f      5  | j                  t        j
                  d      }|j                  d       ||_        t        j                  |      }~t        j                          d d d        | j                          |       | j                  t        j
                  d      5 }| j                  |j                         d       d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr  r  s   abcxxxr  )r   r  r  r&  r   r   rM   r2   weakrefrefr   r  assertIsNoner/   r   rt   )r;   r2   wrs      r   test_garbage_collectionzIOTest.test_garbage_collection  s     ++R,AB 	!I,,d3AGGIACQB 	! 	"$#YYy''. 	2!QVVXy1	2 	2	! 	!	2 	2s   A#C(>!C4(C14C=c                    d}t         j                  j                  |      s | j                  dj	                  |             t
        j                  dkD  r| j                  d       t        j                  t        j                  k  r| j                  d       | j                  |dd      5 }| j                  t        |j                         d d d        | j                  |d      5 }| j                  t        |j                         d d d        | j                  |d	      5 }| j                  t        |j                         d d d        y # 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   y xY w)
Nz	/dev/zeroz{0} does not existz+test can only run in a 32-bit address spacez&test requires at least 2 GiB of memoryr  r   r  r+   )r%  pathexistsr  formatrZ  maxsizer   real_max_memuse_2Gr/   r   r  rt   )r;   zeror2   s      r   test_unbounded_filezIOTest.test_unbounded_file%  s   ww~~d#MM.55d;<;;#MMGH""W[[0MMBCYYtTQY/ 	51mQVV4	5YYtT" 	5amQVV4	5YYtS! 	5QmQVV4	5 	5		5 	5	5 	5	5 	5s$   ,!E'!E"!E$EE!$E-c                     | j                   |i |g fd}|_        | j                  t        j                         | j                  j                         | j                         | j                  d          d _        y )Nc                  8    j                   g d d  t               rJ   r   )r   r2   s   r   	bad_flushz4IOTest.check_flush_error_on_close.<locals>.bad_flush:  s    
F1I)Or    r   c                       y rJ   r&   r&   r    r   <lambda>z3IOTest.check_flush_error_on_close.<locals>.<lambda>B      r    )r/   r   r   r   r   
assertTruer   assertFalse)r;   r   kwargsr  r   r2   s       @@r   check_flush_error_on_closez!IOTest.check_flush_error_on_close5  sv     DIIt&v&	 '177+!#r    c                 ^   | j                  t        j                  dd       t        j                  t        j                  t        j
                  t        j                  z        }| j                  |dd       t        j                  t        j                  t        j
                  t        j                  z        }| j                  |ddd       t        j                  |       | j                  t        j                  d       t        j                  t        j                  t        j
                  t        j                  z        }| j                  |d       t        j                  t        j                  t        j
                  t        j                  z        }| j                  |dd       t        j                  |       | j                  t        j                  dd	       t        j                  t        j                  t        j
                  t        j                  z        }| j                  |dd	       t        j                  t        j                  t        j
                  t        j                  z        }| j                  |ddd
       t        j                  |       y )Nr  r   r  F)r  r  r  r  r  r-   r  )r   r   r   r%  r/   O_WRONLYO_CREATr   )r;   fds     r   test_flush_error_on_closez IOTest.test_flush_error_on_closeD  s    	''	(8(8$!'LWWY%%r{{2::'=>''DA'>WWY%%r{{2::'=>''DAu'M
''	(8(8$?WWY%%r{{2::'=>''D1WWY%%r{{2::'=>''D%'@
''	(8(8#'PWWY%%r{{2::'=>''C''BWWY%%r{{2::'=>''C'5'Q
r    c                     | j                  t        j                  dd      }|j                          |j                          |j                          | j	                  t
        |j                         y )Nr  r   r  )r/   r   r   r   r   r   r   r  s     r   test_multi_closezIOTest.test_multi_close\  sK    IIi&&I:						*agg.r    c                 6   | j                  d      }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d        | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d        | j                  |j                  d      d       y )	N)   abc   dN   efgNr~      ab   cr
     ef   gr    )r?   r   rt   r;   rawios     r   test_RawIOBase_readzIOTest.test_RawIOBase_readc  s     ))*LMA.A-A-A-A.A-A-A,r    c                     | j                         | j                         | j                         | j                         | j	                         f}|D ]  }| j                  t        |d              y )N__dict__)r|  rX  rW  rT  r:  r  hasattr)r;   r^  r   s      r   test_types_have_dictzIOTest.test_types_have_dictp  s\    KKMNNOOMMOLLN
  	6COOGC45	6r    c                    | j                  t        j                  dd      5 }|j                  d       d d d        t	        j                   t        j                  t        j
                        fd}| j                  ddd|      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr  r  r-   r  c                     S rJ   r&   )r  flagsr  s     r   openerz"IOTest.test_opener.<locals>.opener  s    Ir    non-existentr+   )r.   r  )r/   r   r   rM   r%  O_RDONLYr   rt   )r;   r2   r  r  s      @r   test_openerzIOTest.test_opener{  s    YYy''wY? 	1GGG	WWY%%r{{3	YY~sWVYL 	0PQQVVXw/	0 	0	 	
	0 	0s   B4
!C 4B= C	c                     d }| j                  t              5 }t        dd|       d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)Nc                      yNr   r&   fnamer  s     r   	badopenerz4IOTest.test_bad_opener_negative_1.<locals>.badopener      r    r  r+   r  zopener returned -1r   r   r/   r   str	exceptionr;   r#  cms      r   test_bad_opener_negative_1z!IOTest.test_bad_opener_negative_1  R    	z* 	8bY7	8R\\*,@A	8 	8   AAc                     d }| j                  t              5 }t        dd|       d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)Nc                      y)Nr&   r!  s     r   r#  z8IOTest.test_bad_opener_other_negative.<locals>.badopener  r$  r    r  r+   r%  zopener returned -2r&  r)  s      r   test_bad_opener_other_negativez%IOTest.test_bad_opener_other_negative  r,  r-  c                    t        j                         | j                  t              5 }| j	                  dfd       d d d        | j                  j                  j                  t        j                         y # 1 sw Y   >xY w)Nfooc                     S rJ   r&   )namer  r  s     r   r  z/IOTest.test_opener_invalid_fd.<locals>.<lambda>  s     r    r%  )	r   make_bad_fdr   r   r/   r   r(  errnoEBADF)r;   r*  r  s     @r   test_opener_invalid_fdzIOTest.test_opener_invalid_fd  sg     ""$w' 	<2IIe$:I;	<++U[[9	< 	<s   A??Bc                    | j                  t        d      5 }| j                  t        d      5 }| j                  |j                         d      }|j	                  |j                         d       |j                          |j                          |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  Fr  )r/   r0   r&  rU   rH   r  r   )r;   f1f2fileios       r   test_fileio_closefdzIOTest.test_fileio_closefd  s    YYx& 	"YYx&	*,[[e[<FOOBIIKO7KKMLLNKKM	 	 	 	 	 	s#   B>A3B2!B>2B;	7B>>Cc                     t        j                  |       5  | j                  t              5  | j	                  t
        j                  ddd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  r   r.   r  r   check_no_resource_warningr   r   r/   r   r   r:   s    r   test_nonbuffered_textiozIOTest.test_nonbuffered_textio  sp    66t< 	P"":. P		)**C'Q	OP	P 	PP P	P 	P"   A-$A!A-!A*	&A--A6c                     t        j                  |       5  | j                  t              5  | j	                  t
        j                  ddd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  invalidr.   newlinerA  r:   s    r   test_invalid_newlinezIOTest.test_invalid_newline  sp    66t< 	V"":. V		)**C'9	UV	V 	VV V	V 	VrD  c           	      &    G d d| j                         } |       }dD ]d  }| j                  |      5  t        d      }| j                   t	        ||      |      d       | j                  t        |      d       d d d        f y # 1 sw Y   qxY w)Nc                       e Zd Zd ZeZy)3IOTest.test_buffered_readinto_mixin.<locals>.Streamc                      y)N   12345r&   r;   sizes     r   rt   z8IOTest.test_buffered_readinto_mixin.<locals>.Stream.read  s    r    N)r#   r$   r%   rt   read1r&   r    r   StreamrL    s     Er    rR  rf   r  r   rN  )rB  rU  r   r   getattrr   )r;   rR  streammethodr   s        r   test_buffered_readinto_mixinz#IOTest.test_buffered_readinto_mixin  s    	T(( 	 / 	:Ff% :"1  !8!8!@!D  v9: :	:: :s   A	BB	c                      fd} |t        t        j                                |t        t        j                  t        j                                      j                  t        j                  dd      5 }t        |j                               } j                  t              5   j                  |dd       d d d        d d d        t        d       } j                  t              5   j                  |dd       d d d        t        t              } j                  t              5   j                  |dd       d d d         j                  t        d      5   j                  t        t        j                        dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   y xY w)Nc                    j                  | dd      5 }|j                  d       d d d        j                  | dd      5 }j                  |j                         d       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)Nr  r  r-   r  r+   )r/   rM   r   rt   )r  r2   r;   s     r   check_path_succeedsz7IOTest.test_fspath_support.<locals>.check_path_succeeds  s~    4w7 !1 ! 4w7 41  734 4! !4 4s   A.!A:.A7:Br  r  r-   zread/write/append moderwxa)r   r   r   r%  fsencoder/   rU   r   r   FloatingPointErrorassertRaisesRegexr   )r;   rZ  r2   bad_paths   `   r   test_fspath_supportzIOTest.test_fspath_support  s   	4 	HY%5%567HR[[1A1A%BCDYYy''wY? 	;1
+H""9- ;		(C'	:;	;
 D>y) 	7IIhgI6	7 ./12 	7IIhgI6	7 ##J0HI 	LIIhy//0&7IK	L 	L; ;	; 	;	7 	7	7 	7	L 	LsH   :/F#)F>F#.F//F;",GF 	F##F,/F8;GGc                     | j                  d      }| j                  |j                         d       | j                  d      }| j                  |j                         d       y Nr	  r
  r     abcdefg)r?   r   rt   readallr  s     r   test_RawIOBase_readallzIOTest.test_RawIOBase_readall  sR     ))*@Az2))*@A*5r    c           	      6    G d d| j                         }d}d}|D ]  }| j                  |      5  |\  }}}} |t        t        |                  }	t	        |f|z        }
t        |	|      }| j                   ||
      |       | j                  t        |
      |       | j                  |
d | t        |             |f||z
  z  }| j                  |
|d  |       | j                  t        |	j                        ||z
         d d d         y # 1 sw Y   xY w)Nc                       e Zd Zd Zd Zd Zy)3IOTest.test_BufferedIOBase_readinto.<locals>.Readerc                     || _         y rJ   avail)r;   rl  s     r   rH   z<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__  s	    "
r    c                 L    | j                   d | }| j                   |d  | _         |S rJ   rk  )r;   rP  results      r   rt   z8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read  s)    ET*!ZZ.
r    c                 8    | j                  t        |d            S )z$Returns no more than 5 bytes at oncer   )rt   minrO  s     r   rQ  z9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1  s    yyT1..r    N)r#   r$   r%   rH   rt   rQ  r&   r    r   Readerri    s    #/r    rq  )
)rf   r  r   r   )rf   r  r   r   )rf   r   r   r   )rf   r      r   )rf   r  r   r   )r  r  r   r   )r  r  r   r   )r  r   r   r   )r  r   rr  r   )r  r  r   r      )
rB  rU  r   r  r   rT  r   r   assertSequenceEqualrl  )r;   rq  r]  UNUSED_BYTEr^  rV  rl  requestrn  readerr   unuseds               r   test_BufferedIOBase_readintoz#IOTest.test_BufferedIOBase_readinto  s"   		/T(( 		/
  	DDd# 
D15.weEl 34"K>G#;< 0  8  Vg6((%-H%7V+;<((&A  V\\!2EFNC
D 
D	D
D 
Ds   CDD	c                      G d d| j                         } |       }| j                  t        |j                         d |_        y )Nc                       e Zd Zd Zd Zy)#IOTest.test_close_assert.<locals>.Rc                      y rJ   r&   )r;   r5  values      r   __setattr__z/IOTest.test_close_assert.<locals>.R.__setattr__      r    c                     t               rJ   r   r:   s    r   r   z)IOTest.test_close_assert.<locals>.R.flush  s	    ir    N)r#   r$   r%   r  r   r&   r    r   rz  r|    s     r    rz  c                      y rJ   r&   r:   s    r   r  z*IOTest.test_close_assert.<locals>.<lambda>  r  r    )r|  r   r   r   r   )r;   rz  r2   s      r   test_close_assertzIOTest.test_close_assert  s8    	  	 
 C'177+ $r    NF);r#   r$   r%   r   r   r   r  r  r  r  unittestskipIfr   is_emscripten
skipUnlessr  r%  r`  ri  rl  rn  rt  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+  r1  r9  r>  rC  rI  rW  r`  rf  ry  r  r&   r    r   r   r   V  sR   ++204B E*(?2 X__F XV,.BCf@ Df@PV

#:A7#; ,34,<1495/G;G;
=25 0/-	60BB:
P
V
:L86'DR$r    r   c                       e Zd Zd Zy)CIOTestc                      G d d| j                         } |         |       }||_        t        j                  |      }~~t	        j
                          | j                   |       |       y )Nc                       e Zd Zd Zy)*CIOTest.test_IOBase_finalize.<locals>.MyIOc                      y rJ   r&   r:   s    r   r   z0CIOTest.test_IOBase_finalize.<locals>.MyIO.close!  r  r    Nr#   r$   r%   r   r&   r    r   r  r     s    r    r  )r|  r   r  r  r   r  r  )r;   r  r   r  s       r   test_IOBase_finalizezCIOTest.test_IOBase_finalize  sY    	4;; 	
 	f[["$#r    N)r#   r$   r%   r  r&   r    r   r  r    s    $r    r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestIOCTypesc                    t        j                  d      }|j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  g| _        t"        j$                  dk(  r%| j                   j'                  |j(                         || _        y )N_iowin32)r   import_moduler=  r9  r2  r6  r:  r&  IncrementalNewlineDecoderrT  rF  _BufferedIOBase_BytesIOBuffer_IOBase
_RawIOBase_TextIOBasetypesrZ  r[  rK   _WindowsConsoleIOr  r;   r  s     r   r   zTestIOCTypes.setUp0  s    ))%0KKJJ))LLKKNNOO

  <<7"JJc334r    c                     | j                   D ]C  }| j                  |      5  | j                  t        d      5  d|_        d d d        d d d        E y # 1 sw Y   xY w# 1 sw Y   \xY w)N)tp	immutablebar)r  rU  r^  r   r3  )r;   r  s     r   test_immutable_typesz!TestIOCTypes.test_immutable_typesF  si    ** 	#B$ #++I{C #"BF## #	## ## #s"   A AA AA  A)	c                      fd fd j                   }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  h|j                  |j                  h|j                  |j                  |j                  hii}t        j                  dk(  r5||j                     |j                     j                  |j                           |       y )Nc                     | D ]9  }j                  ||      5  j                  t        ||             d d d        ; y # 1 sw Y   FxY w)N)r  r  )rU  r  
issubclass)r  r  r  r;   s      r   
check_subsz5TestIOCTypes.test_class_hierarchy.<locals>.check_subsM  sO     :\\Rd\3 :OOJr4$89: ::: :s   AA
	c                     | j                         D ]I  \  }}t        |t              r	 |       t        |t              r
 ||       9j	                  d       K y )Nzcorrupt test dataset)itemsrV  dictr   rY  )dkvr  recursive_checkr;   s      r   r  z:TestIOCTypes.test_class_hierarchy.<locals>.recursive_checkR  sO    	 61a&#A&3'q!$II456r    r  )r  r  r  r=  r9  r2  r6  r:  r  r&  r  rT  rF  rZ  r[  addr  )r;   r  	hierarchyr  r  s   `  @@r   test_class_hierarchyz!TestIOCTypes.test_class_hierarchyL  s    	:
	6 hhKK##&&&&&&&&KK& JJ! LL%%"
	$ <<7"ckk"3>>266s7L7LM	"r    c                    | j                   }| j                  D ci c]  }|d }}d||j                  <   |j                         D ]q  \  }}| j	                  ||      5  |j
                   d}|f}|rt        ||i       }n.d}	| j                  t        |	      5  t        ||i       }d d d        d d d        s y c c}w # 1 sw Y   xY w# 1 sw Y   xY w)NTF)r  is_basetype	_subclassznot an acceptable base type)	r  r  r  r  rU  r#   typer^  r   )
r;   r  r  datasetr  r  r5  bases_msgs
             r   test_subclassingzTestIOCTypes.test_subclassings  s    hh$(JJ/q1d7//&+""#&}} 		2OB= 2++i0T5"-A7C//	3? 2 ub122 2		2 02 22 2s)   
B;;CC (C C	CC	c                 \    | j                   }t        j                  | |j                         y rJ   )r  r   check_disallow_instantiationr  r  s     r   test_disallow_instantiationz(TestIOCTypes.test_disallow_instantiation  s!    hh,,T33E3EFr    N)r#   r$   r%   r   r  r  r  r  r&   r    r   r  r  .  s    ,#%#N2 Gr    r  c                       e Zd Zy)PyIOTestNr"   r&   r    r   r  r    rl   r    r  c                       e Zd Zd Zd Zy)APIMismatchTestc                     t        j                  t        j                  t        j                  d      }| j                  |t               d       y)z:Test that pyio RawIOBase class has all c RawIOBase methods)__weakref__)rb  z6Python RawIOBase does not have all C RawIOBase methodsr  N)r   detect_api_mismatchr   rX  r   r   r   r;   mismatchs     r   test_RawIOBase_io_in_pyio_matchz/APIMismatchTest.test_RawIOBase_io_in_pyio_match  s:    ..t~~r||6FH35.fgr    c                     t        j                  t        j                  t        j                        }| j                  |t               d       y)z:Test that c RawIOBase class has all pyio RawIOBase methodsz6C RawIOBase does not have all Python RawIOBase methodsr  N)r   r  r   rX  r   r   r   r  s     r   test_RawIOBase_pyio_in_io_matchz/APIMismatchTest.test_RawIOBase_pyio_in_io_match  s4    ..r||T^^L35.fgr    N)r#   r$   r%   r  r  r&   r    r   r  r    s    hhr    r  c                   `    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 Zd Zd Zy)CommonBufferedTestsc                     | j                         }| j                  |      }| j                  |j                         |       | j	                  t
        |j                         t        |       y rJ   )rp   r  assertIsdetachr   r   reprr;   r  rc   s      r   test_detachzCommonBufferedTests.test_detach  sJ    nnggclcjjlC(*cjj1S	r    c                     | j                         }| j                  |      }| j                  d|j                                y rS   )rp   r  r   rU   r;   r  bufios      r   test_filenozCommonBufferedTests.test_fileno  s1     U\\^,r    c                     | j                         }| j                  |      }| j                  t        |j                  dd       | j                  t        |j                  dd       y )Nr   r   r   )rp   r  r   r   r]   r  s      r   test_invalid_argsz%CommonBufferedTests.test_invalid_args  sK     *ejj!R8*ejj!Q7r    c                     | j                   }g  G fdd|      }| j                         } ||      }~t        j                          | j	                  g d       y )Nc                   :     e Zd Z fdZ fdZ fdZ xZS )BCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOc                 j    j                  d       	 t        |   } |        y # t        $ r Y y w xY wr   r  r  s     r   r  zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__  r  r  c                 D    j                  d       t        | 	          y r}   r  r  s    r   r   zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.close  r  r    c                 D    j                  d       t        | 	          y r  r  r  s    r   r   zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flush  r  r    r  r  s   @r   MyBufferedIOr    r  r    r  r  )r  rp   r   r  r   )r;   r  r  r  r  r  s        @r   test_override_destructorz,CommonBufferedTests.test_override_destructor  sT    WW	 2 	   U#+r    c                     | j                         }| j                  |      fd} |        | j                  t        |       y )Nc                  6     5  	 d d d        y # 1 sw Y   y xY wrJ   r&   r  s   r   _withz7CommonBufferedTests.test_context_manager.<locals>._with  s       s   )rp   r  r   r   )r;   r  r  r  s      @r   test_context_managerz(CommonBufferedTests.test_context_manager  s:     	 	 	*e,r    c                    | j                         }t        j                         5 }| j                  t              5  | j                  |      j                   d d d        t        s| j                  |j                         n6|j                  *| j                  |j                  j                  t               d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY wrJ   )r   r   catch_unraisable_exceptionr   r  r  xyzzyIOBASE_EMITS_UNRAISABLEr  
unraisabler   exc_typer   r;   r  r*  s      r   test_error_through_destructorz1CommonBufferedTests.test_error_through_destructor  s     ##%//1 	BR"">2 %$$% +!!"--0*  !7!7A	B 	B% %	B 	Bs#   CC A C C		CCc                 v   | j                         }| j                  |      }d| j                  j                  d| j                  j                  }| j	                  t        |      d|z         d|_        | j	                  t        |      d|z         d|_        | j	                  t        |      d|z         y )N(z\.)?z<%s>dummyz<%s name='dummy'>   dummyz<%s name=b'dummy'>)rp   r  r$   r%   assertRegexr  r5  )r;   r  r(   clsnames       r   	test_reprzCommonBufferedTests.test_repr  s    nnGGCL"&''"4"4dgg6J6JKa&7"23a"5"?@a"6"@Ar    c                     | j                         }| j                  |      }t        j                  |d|      5  	 t	        |       d d d        y # t
        $ r Y w xY w# 1 sw Y   y xY w)Nr5  )rp   r  r   	swap_attrr  RuntimeErrorr;   r  r(   s      r   test_recursive_reprz'CommonBufferedTests.test_recursive_repr  sg    nnGGCLsFA. 	Q	 	   	 	s(   AA	AAAAA'c                    | j                         g fd}|_        | j                        | j                  t        j
                         | j                  j                         | j                  j                         | j                         | j                  d          | j                  d          d _        y )Nc                  N     j                   j                   gd d  t               rJ   r   )r(   r   r  s   r   r  z@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flush  s     3::.F1I)Or    r   r9   c                       y rJ   r&   r&   r    r   r  z?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>  r  r    )	rp   r   r  r   r   r   r  r   r  )r;   r  r(   r   r  s     @@@r   r  z-CommonBufferedTests.test_flush_error_on_close  s     nn	 	GGCL'177+!

### 	r    c                 8   | j                         }d }d }||_        | j                  |      }||_        | j	                  t
              5 }|j                          d d d        | j                  j                  j                  d       | j                  |j                  j                  t
               | j                  |j                  j                  j                  d       | j                  |j                         d |_        d |_        y # 1 sw Y   xY w)Nc                      t        d      Nr   r  r&   r    r   r  z@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flush      '""r    c                      t        d      Nr   r  r&   r    r   	bad_closez@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close  r  r    r   r   c                       y rJ   r&   r&   r    r   r  z?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>  r  r    c                       y rJ   r&   r&   r    r   r  z?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>  r  r    )rp   r   r  r   r   r   r   r(  r   assertIsInstance__context__r  r   r;   r  r  r  r(   errs         r   test_close_error_on_closez-CommonBufferedTests.test_close_error_on_close	  s    nn	#	#	GGCLw' 	3GGI	++Z8cmm77A2277D" !		 	s   DDc                 4   | j                         }d }d }||_        | j                  |      }||_        | j	                  t
              5 }|j                          d d d        | j                  dt        j                               | j                  |j                  j                  t
               | j                  dt        |j                  j                               | j                  |j                         d |_        d |_        y # 1 sw Y   xY w)Nc                      t         rJ   non_existing_flushr&   r    r   r  zNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flush       $$r    c                      t         rJ   non_existing_closer&   r    r   r  zNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_close"  r  r    r  r  c                       y rJ   r&   r&   r    r   r  zMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>/  r  r    c                       y rJ   r&   r&   r    r   r  zMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>0  r  r    )rp   r   r  r   r   	NameErrorassertInr'  r(  r
  r  r  r   r  s         r   'test_nonnormalized_close_error_on_closez;CommonBufferedTests.test_nonnormalized_close_error_on_close  s    nn	%	%	GGCLy) 	SGGI	*C,>?cmm77C*C0I0I,JK"  		 	s   DDc                     | j                         }| j                  |      }|j                          |j                          |j                          | j                  t        |j
                         y rJ   )rp   r  r   r   r   r   r  s      r   r  z$CommonBufferedTests.test_multi_close2  sJ    nnGGCL						*agg.r    c                     | j                  | j                  d            }| j                  | j                  |j                         | j                  | j                  |j
                  d       y )N
   AAAAAAAAAAr   )r  r   r   r   r`   r]   r;   r  s     r   test_unseekablez#CommonBufferedTests.test_unseekable:  sQ    --i89$33UZZ@$33UZZCr    c                     | j                         }| j                  |      }| j                         }| j                  t              5  ||_        d d d        y # 1 sw Y   y xY wrJ   )rp   r  r   r  r  )r;   r  rc   xs       r   test_readonly_attributesz,CommonBufferedTests.test_readonly_attributes?  sQ    nnggclNN~. 	CG	 	 	s   AA!N)r#   r$   r%   r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&   r    r   r  r    sK    -8,0
-BB!$(!*/D
r    r  c                   T    e Zd Zej                  d        Zej                  d        Zy)
SizeofTestc                    d}d}| j                         }| j                  ||      }t        j                  |      |z
  }| j                         }| j                  ||      }| j	                  t        j                  |      ||z          y )N       buffer_size)rp   r  rZ  	getsizeofr   )r;   bufsize1bufsize2r  r  rP  s         r   test_sizeofzSizeofTest.test_sizeofI  sx     84}}U#h. 84u-th?r    c                     d}| j                         }| j                  ||      }t        j                  |      |z
  }|j	                          | j                  t        j                  |      |       y )Nr'  r)  )rp   r  rZ  r+  r   r   )r;   r  r  r  rP  s        r   test_buffer_freeingzSizeofTest.test_buffer_freeingT  sZ     73}}U#g-u-t4r    N)r#   r$   r%   r   cpython_onlyr.  r0  r&   r    r   r%  r%  G  s6    @ @ 5 5r    r%  c                       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 Zd Zd Zd Z ej&                          ej*                  d      d               Zd Zd Zd Zd Zd Zd Zd Zy)BufferedReaderTestr  c                 P   | j                  dg      }| j                  |      }|j                  |       |j                  |d       |j                  |d       | j                  d|j	                                | j                  t        |j                  |d       | j                  t        |j                  |d       | j                  t        |j                  |d       | j                  dg      }|j                  |       | j                  d|j	                                y )Nr	     r)     r   r   )rp   r  rH   r   rt   r   r   r  s      r   test_constructorz#BufferedReaderTest.test_constructor`  s    x(uu$/u"-.*enneK*enneM*enneLx(u.r    c                 j   | j                   j                  | j                         }~| j                   j                  | j                         }| j                  t        t        fd|j
                  d       |j                  | j                                | j                  |j                  d      d       y Nuninitialized|has no attributer   r    )	r  __new__r^  r   r  rt   rH   rp   r   r  s     r   test_uninitializedz%BufferedReaderTest.test_uninitializedn  s    ((
N;?$zz1	. 	t~~'(A,r    c                     dD ]E  }| j                  d      }| j                  |      }| j                  d|j                  |             G | j	                  t
        j                  d       y )N)Nrr  rc  rd  r0  )rp   r  r   rt   r   r   )r;   argr  r  s       r   	test_readzBufferedReaderTest.test_readx  s]     	:CNN#9:EGGENEZC9	:
 	*ejj"5r    c                 .   | j                  d      }| j                  |      }| j                  d|j                  d             | j                  d|j	                  d             | j                  |j
                  d       | j                  d|j	                  d             | j                  d|j	                  d             | j                  |j
                  d       | j                  d	|j	                  d             | j                  |j
                  d
       | j                  d|j	                  d             | j                  |j
                  d       | j                  d|j	                  d             | j                  |j
                  d       y )Nrc     ar9      br    r   r  r)  r
  r~   r  r  rs  rp   r  r   rt   rQ  rE   r  s      r   
test_read1zBufferedReaderTest.test_read1  s.   56uzz!}-u{{1~.q)ekk!n-u{{3/0q)u{{3/0q)S!12q)ekk#./q)r    c                    | j                  d      }| j                  |      }| j                  d|j                  d             | j                  d|j	                                | j                  d|j	                                | j                  d|j	                  d             | j                  |j
                  d       | j                  d	|j	                                | j                  |j
                  d
       y )Nrc  rB  r9   s   bcr
  r  r   r  r    rs  rD  r  s      r   test_read1_arbitraryz'BufferedReaderTest.test_read1_arbitrary  s    56uzz!}-.u{{}-R1q)ekkm,q)r    c                 l   | j                  d      }| j                  |      }t        d      }| j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d       | j                  d	      }| j                  |      }| j                  |j	                  |      d       | j                  |d       | j                  |j	                  |      d       | j                  |d
       y )Nrc  r~   r     cdr  r9   s   gfr   )r	  Ns   cb)rp   r  r   r   rf   )r;   r  r  r(   s       r   test_readintoz BufferedReaderTest.test_readinto  sa   56aL*A.E"*A.E"*A.E"*A.E"*A.E"~.*A.E"*A.E"r    c                    d}| j                  d      }| j                  ||      }t        d      }| j                  |j	                  d      d       | j                  |j
                  d       | j                  |j                  |      d       | j                  |d       | j                  |j
                  d       | j                  |j                  |      d       | j                  |d d d	       | j                  |j
                  d       | j                  |j                  |      d       | j                  |d
       | j                  |j
                  d       t        d|z        }| j                  |j	                  d      d       | j                  |j
                  d       | j                  |j                  |      d       | j                  |d d d       | j                  |j
                  d       y )Nr  )r	     de   fghs   jklr)  r~   r  r	  r9   r  r  rL  rM  r   s   fghjklrs  )rp   r  r   r   peekrE   r  )r;   r*  r  r  r(   s        r   test_readinto1z!BufferedReaderTest.test_readinto1  s   >?;7aLA/q)+Q/E"q)+Q/2A%q)+Q/E"q)am$A/q)+Q/2A	*q)r    c           	         d}d}| j                  |f      }| j                  ||      }t        j                  dd      }t        |      dk7  sJ |j	                  |      }| j                  |t        |             t        |      j                  d      }| j                  |t        |             | j                  |d | |d |        | j                  ||d  dt        ||d        z         y 	N<   s   aaaaaaaaaaaaaaaaaaaaaaaaaar)  r  s    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr6  r   r  )
rp   r  r)   r   rf   r  r   r   
assertLessr   r;   r*  r   r  r  r(   re   bms           r   test_readinto_arrayz&BufferedReaderTest.test_readinto_array  s    w';7 KKY'1v|| NN11c!f% ]$3r7#BQbq*ABRV!56r    c           	         d}d}| j                  |f      }| j                  ||      }t        j                  dd      }t        |      dk7  sJ |j	                  |      }| j                  |t        |             t        |      j                  d      }| j                  |t        |             | j                  |d | |d |        | j                  ||d  dt        ||d        z         y rQ  )
rp   r  r)   r   r  r  r   r   rS  r   rT  s           r   test_readinto1_arrayz'BufferedReaderTest.test_readinto1_array  s    w';7 KKY'1v|| OOA1c!f% ]$3r7#BQbq*ABRV!56r    c                       fd} j                   |       j                         g d        j                   |       j                  d      ddg        j                   |       j                  d       g d       y )Nc                  H    j                  d      } j                  |       S )Nrp  r  r  )rp   r  )r  r;   s    r   r  z0BufferedReaderTest.test_readlines.<locals>.bufio  s     NN#<=E775>!r    r[  r   rp  r  r   r  r  s   ` r   test_readlinesz!BufferedReaderTest.test_readlines  sf    	" 	**,.GH**1-&/AB**402KLr    c           	      P   d}t        |      }dg d|dggdg d|ggdg dg dgg}|D ]{  \  }}}| j                  |      }| j                  ||	      }d}	|D ].  }
| j                  |j	                  |
      ||	|	|
z           |	|
z  }	0 | j                  |j
                  |       } y )
N	   abcdefghir)  )r  r9   rs     r   )r  r  r  rs  )r9   r~   rs  r~   )rs  rs  r9   r)  )r   r   r  r   rt   r   )r;   r   dlenr]  r  buf_read_sizesraw_read_sizesr  r  r   nbytess              r   test_bufferingz!BufferedReaderTest.test_buffering  s    4y >T1;0:T80>;0
 8= 	A3G^^OOD)EGGEwG7EC(   F!3T#c&j5IJv U//@	Ar    c                 l   | j                  d      }| j                  |      }| j                  d|j                  d             | j                  d|j                  d             | j                  d|j                                | j                  d|j	                  d             | j                  |j                                | j                  d|j                                | j                  d      }| j                  d	|j                                | j                  |j                                y )
N)r	  r
  Nr  NNN   abcdr      er9   s   fgr    )rB  NNrB  )rp   r  r   rt   rN  r  re  r  s      r   test_read_non_blockingz)BufferedReaderTest.test_read_non_blocking  s    MN%**Q-0uzz!}-

-ejjm,%**,'ejjl+12u}}/%--/*r    c                     | j                  d      }| j                  |      }| j                  d|j                  d             y )Nrc  rd  i(#  rp   r  r   rt   r  s      r   test_read_past_eofz%BufferedReaderTest.test_read_past_eof  s7    56UZZ%56r    c                     | j                  d      }| j                  |      }| j                  d|j                                y rb  rk  r  s      r   test_read_allz BufferedReaderTest.test_read_all"  s4    56UZZ\2r    cpuc                 *  
 	 d}t        t        d            |z  }t        j                  |       t	        t        |            }| j                  t        j                  d      5 }|j                  |       d d d        | j                  t        j                  | j                  d      5 }| j                  |d      
g g 
fd}t        d      D cg c]  }t        j                  |	       }}t        j                  |      5  t!        j"                  d
       d d d        | j%                  dz         dj'                        }t        d      D ]8  }t	        t        |g            }	| j)                  |j+                  |	      |       : 	 d d d        t        j,                  t        j                         y # 1 sw Y   LxY wc c}w # 1 sw Y   xY w# 1 sw Y   KxY w# t        j,                  t        j                         w xY w)N     r  r   r  r`  c                      	 t        ddg      D ](  } j                  |       }|s y j                  |       * y # t        $ r}j                  |        d }~ww xY w)Nr9      )r   rt   rK   	Exception)re   r   er  errorsresultss      r   r2   z*BufferedReaderTest.test_threads.<locals>.f9  s_    
!&2w .A %

1A#$ %#NN1-. % a(s   $< < 	AAAr  r+  {Gz?(the following exceptions were caught: %rr    )rB   r  randomshuffler   r   r/   r   r   rM   	read_moder  r   r-  r   start_threadsr   r   r  r   r   r   r   )r;   Nlr   r2   r  r"  threadsr  cr  rw  rx  s             @@@r   test_threadszBufferedReaderTest.test_threads(  s   $	/ AU3Z 1$ANN1il#A9++T2 a
9++T^^qI 4SQ @ERyI!9++15II%33G< %JJt$%  >GIHHW%s 4Ain-A$$QWWQZ34-44 Y--.9 $ J% %#4 44 Y--.sg   A"G- 'G94G- -+G!G5G!G"A4G!G- GG- G!G	G!!G*&G- -%Hc                    | j                  | j                  d            }| j                  | j                  |j                         | j                  | j                  |j
                  d       |j                  d       | j                  | j                  |j
                  d       | j                  | j                  |j                         y )Nr  r   r9   )r  r   r   r   r`   r]   rt   r  s     r   r   z"BufferedReaderTest.test_unseekableQ  s    --i89$33UZZ@$33UZZC

1$33UZZC$33UZZ@r    c                     | j                  d      }| j                  |      }| j                  t        |j                  d       | j                  t        |j
                         d |_        y )Nrc  r   c                       y rJ   r&   r&   r    r   r  z7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>`  r  r    )r{   r  r   r   r]   r`   r   r  s      r   test_misbehaved_ioz%BufferedReaderTest.test_misbehaved_ioY  sS    $$%;<'5::q1'5::. #r    c           	      F   d}d|dz
  ||dz   |dz  fD ]  }| j                  d|z  g      }| j                  ||      }| j                  |j                  |      d|z         | j                  |j                  ddj                  ||j                               | j                  d|dz
  z  dg      }| j                  ||      }| j                  |j                  |      d|z         | j                  |j                  ddj                  ||j                                y )Nr6  r~   r9   r  r   zfailed for {}: {} != 0)rp   r  r   rt   rF   r  )r;   r  re   r  r  s        r   test_no_extraneous_readz*BufferedReaderTest.test_no_extraneous_readb  s    Wq['7Q;!D 	ZANND1H:.EGGE7+EUZZ]D1H5U44a5<<Q@W@WXZ NNDAEND#9:EGGE7+EUZZ]D1H5U44a5<<Q@W@WXZ	Zr    c                    | j                  | j                  d            }|j                  d       |j                          | j	                  d      5  | j                  t        |j                         d d d        | j	                  d      5  | j                  t        |j                  d       d d d        | j	                  d      5  | j                  t        |j                         d d d        | j	                  d      5  | j                  t        |j                  t                      d d d        | j	                  d      5  | j                  t        |j                  t                      d d d        | j	                  d      5  | j                  t        |j                         d d d        | j	                  d	      5  | j                  t        |j                         d d d        | j	                  d
      5  | j                  t        |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N   12r9   rN  rQ  rt   rf   r  r   rh   r]   r   )r2  r:  rt   r   rU  r   r   rN  rQ  rf   r   r  r   rh   r]   rL   s     r   test_read_on_closedz&BufferedReaderTest.test_read_on_closedv  s   U 34	q			\\&! 	2j!&&1	2\\'" 	6j!''15	6\\&! 	2j!&&1	2\\*% 	Cj!**ikB	C\\+& 	Dj!++y{C	D\\'" 	3j!''2	3\\*% 	6j!**5	6\\&! 	5j!&&!4	5 	5	2 	2	6 	6	2 	2	C 	C	D 	D	3 	3	6 	6	5 	5s`   !H'"H4!I*I*I!I'!I3<"I?'H14H>III$'I03I<?Jc                     | j                  d      }| j                  |      }| j                  |j                                | j	                  | j
                  |j                         | j	                  | j
                  |j                  d       y )Nr	  r   )r   r  r  rP   r   r   rh   r  s      r   test_truncate_on_read_onlyz-BufferedReaderTest.test_truncate_on_read_only  sh    ')*$33U^^D$33U^^QGr    c                 
   | j                  d      }| j                  |      }| j                  |j                         d       | j                  |j	                  d      d       | j                  |j                         d       y Nr  r   r9      1)r   r  r   r`   rt   r  s      r   test_tell_character_device_filez2BufferedReaderTest.test_tell_character_device_file  se     **51ggclQ'!d+Q'r    c                 J   | j                  d      }| j                  |      }| j                  |j                  dt        j
                        d       | j                  |j                  dt        j                        d       | j                  |j                  dt        j
                        d       | j                  |j                  d      d       | j                  |j                         d       | j                  |j                  dt        j
                        d       y r  )	r   r  r   r]   r   r  SEEK_SETrt   r`   r  s      r   test_seek_character_device_filez2BufferedReaderTest.test_seek_character_device_file  s    **51ggcl!R[[115!R[[115!R[[115!d+
 	Q'!R[[115r    N)r#   r$   r%   r~  r8  r=  r@  rE  rG  rJ  rO  rV  rX  r]  re  ri  rl  rn  r   requires_working_threadingr   requires_resourcer  r   r  r  r  r  r  r  r&   r    r   r3  r3  ]  s    I/-6* 	*#**.7*7*MA(+73 1002Wu%%/ & 3%/NA#Z(5,H(6r    r3  c                   l    e Zd Zej                  Z edddd      d        Zd Zd Z	d Z
d Zd	 Zd
 Zy)CBufferedReaderTestTLsanitizer defaults to crashing instead of returning NULL for malloc failure.memoryaddressr/  reasonc                    t         j                  |        t        j                  dkD  r]| j	                         }| j                  |      }| j                  t        t        t        f|j                  |t        j                         y y Nr  )r3  r8  rZ  r  rp   r  r   r  MemoryErrorr   rH   r  s      r   r8  z$CBufferedReaderTest.test_constructor  d     	++D1 ;;#NN$EGGENE}k:Fs{{4 $r    c                    | j                  dg      }| j                  |      }| j                  t        |j                  |d       | j                  t        |j
                         | j                  t        |j                  |d       | j                  t        |j
                         | j                  t        |j                  |d       | j                  t        |j
                         y )Nr	  r   r)  r7  r   )rp   r  r   r   rH   rt   r  s      r   test_initializationz'CBufferedReaderTest.test_initialization  s    x(*enneK*ejj1*enneM*ejj1*enneL*ejj1r    c                     | j                  d      }| j                  |      }| j                  t        |j                  d       y )Nrc  r  )r{   r  r   r   rt   r  s      r   test_misbehaved_io_readz+CBufferedReaderTest.test_misbehaved_io_read  s8    $$%;< 	'5::r2r    c                    | j                  t        j                  t        j                         t	        j
                  dt        f      5  | j                  t        j                  d      }| j                  |      }||_	        t        j                  |      }~t        j                          d d d        | j                          |       y # 1 sw Y   !xY w)Nr  r  )r,  r   r   r   r   r  r  r&  r  r2   r  r  r   r  r  r;   r  r2   r  s       r   r  z+CBufferedReaderTest.test_garbage_collection  s     		(()*:*:;++R,AB 	!KK	 0 0%8EAACQB 	! 	"$#	! 	!s   
A#CCc                     | j                  t        d      5  | j                  | j                         ddd       d d d        y # 1 sw Y   y xY w)Nr2  r5  r^  r   r  r:  r:   s    r   test_args_errorz#CBufferedReaderTest.test_args_error  @    ##I/?@ 	6GGDLLND$5	6 	6 	6   #AAc                 4   | j                  | j                  d            }d |_        | j                  |      }| j                  t              5 }|j                          d d d        | j                  j                  j                         y # 1 sw Y   /xY w)Nr  c                      yr   r&   rc   s    r   r  z=CBufferedReaderTest.test_bad_readinto_value.<locals>.<lambda>  r  r    )	r  r:  rf   r   r   r  r  r(  	__cause__r;   r  r  r*  s       r   test_bad_readinto_valuez+CBufferedReaderTest.test_bad_readinto_value  st    U+,'w' 	2NN	",,001	 	s   BBc                 >   | j                  | j                  d            }d |_        | j                  |      }| j                  t              5 }|j                          d d d        | j                  j                  j                  t               y # 1 sw Y   4xY w)Nr  c                      yr   r&   r  s    r   r  z<CBufferedReaderTest.test_bad_readinto_type.<locals>.<lambda>  r  r    )
r  r:  rf   r   r   r  r
  r(  r  r   r  s       r   test_bad_readinto_typez*CBufferedReaderTest.test_bad_readinto_type  sv    U+,(w' 	2NN	bll44i@	 	s   BBN)r#   r$   r%   r   r2  r  r   r8  r  r  r  r  r  r  r&   r    r   r  r    sQ    			BdDGH4H423$6
2Ar    r  c                   $    e Zd Zej                  Zy)PyBufferedReaderTestN)r#   r$   r%   r   r2  r  r&   r    r   r  r        			Br    r  c                      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 Zd Zd Zd Zd Zd Zd Zd Zd Z ej0                          ej4                  d      d               Zd Zd Zd Z ej0                         d        Zy)BufferedWriterTestr  c                    | j                         }| j                  |      }|j                  |       |j                  |d       |j                  |d       | j                  d|j	                  d             |j                          | j                  t        |j                  |d       | j                  t        |j                  |d       | j                  t        |j                  |d       |j                  |       | j                  d|j	                  d	             |j                          | j                  d
j                  |j                        d       y )Nr5  r)  r6  r  r	  r   r7  r      ghir    s   abcghi)
rp   r  rH   r   rM   r   r   r   r   rD   r  s      r   r8  z#BufferedWriterTest.test_constructor  s    uu$/u"-EKK/0*enneK*enneM*enneLuEKK/0%"4"45yAr    c                 j   | j                   j                  | j                         }~| j                   j                  | j                         }| j                  t        t        fd|j
                  d       |j                  | j                                | j                  |j                  d      d       y )Nr;  r    r   )	r  r<  r^  r   r  rM   rH   rp   r   r  s     r   r=  z%BufferedWriterTest.test_uninitialized  s    ((
N;?${{C	1 	t~~'(S)1-r    c                     | j                         }| j                  |      }|j                  d       | j                  |j                         |j                          | j                  |j                  dg       y )Ns   howdy!)rp   r  rM   r  rD   r  r   r  s      r   test_detach_flushz$BufferedWriterTest.test_detach_flush  s\    nnggcl		)))*

))I;7r    c                 X   | j                         }| j                  |d      }|j                  d       | j                  |j                         t        d      }|j                  |       d|d d  |j                          | j                  dj                  |j                        d       y )Nr`  r	     def   ***r       abcdef)	rp   r  rM   r  rD   r   r   r   r   )r;   writerr  r   s       r   
test_writezBufferedWriterTest.test_write  s    !"F,,-6"Fq	&"5"56	Br    c                 .   | j                         }| j                  |d      }d}t        dt        |      d      D ]  }|j	                  |||dz            dj                  |j                        }| j                  |j                  |d d       |       y )Nr`  s   abcdefghijklmnopr   r  r    i)	rp   r  r  r   rM   r   rD   r  r\  )r;   r  r  contentsre   flusheds         r   test_write_overflowz&BufferedWriterTest.test_write_overflow%  s    !"&q#h-+ 	)AKK1Q3(	)((6../ 	**8CR=97Cr    c                    t        t        d            dz  }d}| j                         }| j                  |d      }d } |       }|t	        |      k  rdt        t        |      t	        |      |z
        }| j                  |j                  ||||z          |        ||       ||z  }|t	        |      k  rd|j                          | j                  |dj                  |j                               y )Nrr  rq  r   r   c               3   T   K   t        d      D ]  } t        d      D ]  }|    y w)Nr9      )r   r  )rP  r  s     r   	gen_sizesz2BufferedWriterTest.check_writes.<locals>.gen_sizes7  s1     a r AJs   &(r    )r   r  rp   r  r   rp  r~  r   rM   r   r   rD   )	r;   intermediate_funcr  re   r  r  r  sizesrP  s	            r   check_writeszBufferedWriterTest.check_writes0  s    s$t+!#	 #h-tE{CMA$56DU[[!AdF);<dCe$IA	 #h-
 	388F,?,?#@Ar    c                 (    | j                  d        y )Nc                      y rJ   r&   r  s    r   r  z0BufferedWriterTest.test_writes.<locals>.<lambda>E  r  r    r  r:   s    r   test_writeszBufferedWriterTest.test_writesD  s    ,-r    c                 (    | j                  d        y )Nc                 "    | j                         S rJ   r  r  s    r   r  z<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>H  s     r    r  r:   s    r   test_writes_and_flushesz*BufferedWriterTest.test_writes_and_flushesG  s    56r    c                 T    d }| j                  |       d }| j                  |       y )Nc                     | j                         }| j                  |dz   d       | j                  |dz
  d       | j                  |d       y r8   )r`   r]   r  r   s     r   _seekabsz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabsK  s?    **,CJJsQw"JJsQw"JJsAr    c                     | j                  dd      }| j                  dd       | j                  dd       | j                  |d       y )Nr   r9   r   )r]   r  s     r   _seekrelz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrelQ  s<    **Q"CJJr1JJr1JJsAr    r  )r;   r  r  s      r   test_writes_and_seeksz(BufferedWriterTest.test_writes_and_seeksJ  s,    	
 	(#	
 	(#r    c                 (    | j                  d        y )Nc                 @    | j                  | j                               S rJ   )rh   r`   r  s    r   r  z>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>Y  s    uzz|(D r    r  r:   s    r   test_writes_and_truncatesz,BufferedWriterTest.test_writes_and_truncatesX  s    DEr    c                    | j                         }| j                  |d      }| j                  |j                  d      d       | j                  |j                  d      d       |j	                  d       | j                  |j                  d      d       |j	                  d       	 |j                  d	       | j                  d
       | j                  d       | j                  |j                         d       | j                  |j                  d      d       |j                         }| j                  |j                  d      |       y # | j                  $ r}|j                  }Y d }~d }~ww xY w)Nr`  rg  rs  s   efghir      ks   jklmn   0s   opqrwxyz0123456789z'BlockingIOError should have been raisedr6  s   abcdefghijklmnopqrwxyzs	   ABCDEFGHIr   s	   01234567A)r   r  r   rM   r   rY  r   characters_writtenr   r  r\  )r;   r  r  rv  writtenr   s         r   test_write_non_blockingz*BufferedWriterTest.test_write_non_blocking[  s1   '')QW-q1X.2TX.2 	T	AKK-. II?@"%*%	' 	\2A6OO\2A6 ## 	+**G	+s   )E E5E00E5c                 6   | j                         }| j                  |d      }| j                  |j                  d      d       | j                  |j	                         d       |j                  dd       | j                  |j                  d      d       |j                  dd       | j                  |j                         d       | j                  |j                  d      d       |j                          | j                  |j                         d	       y )
Nrs  r  r   r   s   XYr~   s   XYcdefs   123456s   XYcdef123456)r:  r  r   rM   r`   r]   r  r   r;   r  r  s      r   test_write_and_rewindz(BufferedWriterTest.test_write_and_rewindv  s    llnQY/3q)

1aU+Q/

1a3Y/39r    c                     | j                         }| j                  |d      }|j                  d       |j                          | j	                  d|j
                  d          y Nr`  r	  r   )rp   r  rM   r   r   rD   r;   r  r  s      r   
test_flushzBufferedWriterTest.test_flush  sN    !"F!4!4Q!78r    c                     g d}| j                         }| j                  |d      }|j                  |       |j                          | j	                  dj                  |j                        d       y N)r  rI  r  r`  r    r  )rp   r  r  r   r   r   rD   r;   r  r  r  s       r   test_writelinesz"BufferedWriterTest.test_writelines  sY    !!"&"5"56	Br    c                     t        g d      }| j                         }| j                  |d      }|j                  |       |j	                          | j                  dj                  |j                        d       y r  )r   rp   r  r  r   r   r   rD   r  s       r   test_writelines_userlistz+BufferedWriterTest.test_writelines_userlist  s_    *+!"&"5"56	Br    c                    | j                         }| j                  |d      }| j                  t        |j                  g d       | j                  t        |j                  d        | j                  t        |j                  d       y )Nr`  r  abc)rp   r  r   r   r  r  s      r   test_writelines_errorz(BufferedWriterTest.test_writelines_error  sf    !")U%5%5yA)U%5%5t<)U%5%5u=r    c                     | j                         }| j                  |d      }|j                  d       ~t        j                          | j                  d|j                  d          y r  )rp   r  rM   r   r  r   rD   r  s      r   r  z"BufferedWriterTest.test_destructor  sT    !"F!4!4Q!78r    c                 X   | j                  t        j                  t        j                         | j	                  t        j                  | j
                  d      5 }| j                  |d      }|j                  d       | j                  |j                  d      d       | j                  |j                         d       d d d        | j	                  t        j                  dd      5 }| j                  |j                         d       d d d        y # 1 sw Y   UxY w# 1 sw Y   y xY w)	Nr   r  r`  r  r  r   r  r	  )r,  r   r   r   r/   
write_moder  rM   r   rh   r`   rt   )r;   r  r  r2   s       r   test_truncatez BufferedWriterTest.test_truncate  s    	(()*:*:;YYy''AYF 	.#GGCOEKK	"U^^A.2UZZ\1-		.
 YYy''Y; 	/qQVVXv.	/ 	/	. 	.
	/ 	/s   A%D*!D D D)c                 ,   | j                  t        j                  t        j                         | j	                  t        j                  d      5 }|j                  ddz         d d d        g d}|D ]  }| j	                  t        j                  d|      5 }|j                  d|dz   z         |j                  d       |j                          | j                  |j                         |dz          d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)	Nr      i'  )r(  r'     zr+br  r9   r~   )
r,  r   r   r   r/   rM   rt   rh   r   r`   )r;   r2   buffer_sizesr*  s       r   test_truncate_after_writez,BufferedWriterTest.test_truncate_after_write  s     		(()*:*:;YYy''. 	%!GGGeO$	% )' 	<K9++UkJ <a;?34q	

  ;?;< <	<		% 	%
< <s   C>AD
>D
D	ro  c                 t   	 d}t        t        d            |z  }t        ddg      }d}t               |t	        |      k  r6t        |      }j                  ||||z           ||z  }|t	        |      k  r6~| j                  t        j                  | j                  d      5 }| j                  |d      g fd}t        d	      D cg c]  }t        j                  |
       }	}t        j                  |	      5  t!        j"                  d       d d d        | j%                  dz         j'                          d d d        | j                  t        j                  d      5 }|j)                         }
d d d        t        d      D ]-  }| j+                  
j-                  t        |g            |       / 	 t        j.                  t        j                         y c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t        j.                  t        j                         w xY w)Nrq  rr  r9   rt  r   r  r`  c                      	 	 	 j                         } j                  |        ## t        $ r Y y w xY w# t        $ r}j	                  |        d }~ww xY wrJ   )popleftrb   rM   ru  rK   )r   rv  r  rw  queues     r   r2   z*BufferedWriterTest.test_threads.<locals>.f  sa    	"'$)MMO "KKN # $. ' &' % a(s,   6 ' 6 	36 36 	AAAr  ry  rz  r{  r  )r   r  r   r   r   r~  rK   r/   r   r   r  r  r   r-  r   r  r   r   r  r   rt   r   r   r   )r;   r  r  r  re   rP  r  r2   r"  r  r   r  r  rw  r  s               @@@r   r  zBufferedWriterTest.test_threads  s   +	/ AU3Z(1,H1b'NEAGEc(m#E{Xa$/0T	 c(m#  9++T__J cQ
 @ERyI!9++15II%33G< %JJt$%  >GI'( 9++T2 aFFH3Z 9  s!4a89 Y--. J% % ( 
 Y--.sm   A5H ;-H ()G:G).G:G.-G:(H 0HAH )G:.G7	3G::H?H HH %H7c                    | j                         }| j                  |d      }| j                  t        |j                  d       | j                  t        |j
                         | j                  t        |j                  d       d |_        y )Nr   r   r  c                       y rJ   r&   r&   r    r   r  z7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>  r  r    )r{   r  r   r   r]   r`   rM   r   r  s      r   r  z%BufferedWriterTest.test_misbehaved_io  si    $$&q!'5::q1'5::.'5;;	: #r    c                     | j                  t              5  | j                  | j                         dd       d d d        y # 1 sw Y   y xY wNr`  r   r   r   r  rp   r:   s    r   test_max_buffer_size_removalz/BufferedWriterTest.test_max_buffer_size_removal   s<    y) 	-GGDNN$a,	- 	- 	-s   "AA
c                     | j                         }d }||_        | j                  |      }|j                  d       | j                  t        |j
                         | j                  |j                         y )Nc                     t               rJ   r  )r(   s    r   	bad_writez?BufferedWriterTest.test_write_error_on_close.<locals>.bad_write  s	    )Or       spam)rp   rM   r  r   r   r   r  r   )r;   r  r  r(   s       r   test_write_error_on_closez,BufferedWriterTest.test_write_error_on_close  sW    nn		GGCL	'177+!r    c                 t   | j                         }| j                  |d      }t        j                  |j                        }|j                          |j                  j                          | j                  t        |j                  d       | j                  |j                         |j                          y )Nr`  ry  r  )r   r  r   r-  r   r.  r   waitr   r   rM   r  r   r   )r;   r  r  ts       r   test_slow_close_from_threadz.BufferedWriterTest.test_slow_close_from_thread  s~     ##%q!EKK0		*ekk7;%	r    N) r#   r$   r%   r  r8  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    s    JB .8
C	DB(.7$F76:9CC>9	/<$ 1002Wu%,/ & 3,/\#-" 1002	 3	r    r  c                   Z    e Zd Zej                  Z edddd      d        Zd Zd Z	d Z
y)	CBufferedWriterTestTr  r  c                    t         j                  |        t        j                  dkD  r]| j	                         }| j                  |      }| j                  t        t        t        f|j                  |t        j                         y y r  )r  r8  rZ  r  rp   r  r   r  r  r   rH   r  s      r   r8  z$CBufferedWriterTest.test_constructor  r  r    c                    | j                         }| j                  |      }| j                  t        |j                  |d       | j                  t        |j
                  d       | j                  t        |j                  |d       | j                  t        |j
                  d       | j                  t        |j                  |d       | j                  t        |j
                  d       y )Nr   r)  r  r7  r   )rp   r  r   r   rH   rM   r  s      r   r  z'CBufferedWriterTest.test_initialization,  s     *enneK*ekk6:*enneM*ekk6:*enneL*ekk6:r    c                 ~   | j                  t        j                  t        j                         t	        j
                  dt        f      5  | j                  t        j                  d      }| j                  |      }|j                  d       ||_
        t        j                  |      }~t        j                          d d d        | j                          |       | j!                  t        j                  d      5 }| j#                  |j%                         d       d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr  r  s   123xxxr  )r,  r   r   r   r   r  r  r&  r  rM   r"  r  r  r   r  r  r/   r   rt   r  s       r   r  z+CBufferedWriterTest.test_garbage_collection6  s     		(()*:*:;++R,AB 	!KK	 0 0%8EAGGIACQB 	! 	"$#YYy''. 	2!QVVXy1	2 	2	! 	!	2 	2s   
A4D'=!D3'D03D<c                     | j                  t        d      5  | j                  | j                         ddd       d d d        y # 1 sw Y   y xY w)Nr6  r5  r  r:   s    r   r  z#CBufferedWriterTest.test_args_errorG  r  r  N)r#   r$   r%   r   r6  r  r   r8  r  r  r  r&   r    r   r  r    sA    			BdDGH4H4;2"6r    r  c                   $    e Zd Zej                  Zy)PyBufferedWriterTestN)r#   r$   r%   r   r6  r  r&   r    r   r  r  M  r  r    r  c                       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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)BufferedRWPairTestc                     | j                  | j                         | j                               }| j                  |j                         y rJ   )r  rp   r  r   r;   pairs     r   r8  z#BufferedRWPairTest.test_constructorR  s2    wwt~~')9:%r    c                    | j                   j                  | j                         }~| j                   j                  | j                         }| j                  t        t        fd|j
                  d       | j                  t        t        fd|j                  d       |j                  | j                         | j                                | j                  |j                  d      d       | j                  |j                  d      d       y r:  )
r  r<  r^  r   r  rt   rM   rH   rp   r   r!  s     r   r=  z%BufferedRWPairTest.test_uninitializedV  s    wwtww'wwtww'
N;?#yy!	- 	
N;?#zz3	0 	dnn&(891s+C!,r    c                     | j                  | j                         | j                               }| j                  | j                  |j                         y rJ   )r  rp   r   r   r  r!  s     r   r  zBufferedRWPairTest.test_detachd  s:    wwt~~')9:$33T[[Ar    c                     | j                  t              5  | j                  | j                         | j                         dd       d d d        y # 1 sw Y   y xY wr
  r  r:   s    r   (test_constructor_max_buffer_size_removalz;BufferedRWPairTest.test_constructor_max_buffer_size_removalh  sE    y) 	?GGDNN$dnn&62>	? 	? 	?s   1AAc                      G d dt               }| j                  t        | j                   |       | j                                y )Nc                       e Zd Zd Zy)JBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablec                      yr   r&   r:   s    r   rW   zSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readablen      r    Nr#   r$   r%   rW   r&   r    r   NotReadabler)  m      r    r-  rp   r   r   r  )r;   r-  s     r   "test_constructor_with_not_readablez5BufferedRWPairTest.test_constructor_with_not_readablel  s1    	) 	 	'477KM4>>;KLr    c                      G d dt               }| j                  t        | j                  | j                          |              y )Nc                       e Zd Zd Zy)LBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablec                      yr   r&   r:   s    r   rP   zUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableu  r+  r    N)r#   r$   r%   rP   r&   r    r   NotWriteabler3  t  r.  r    r5  r/  )r;   r5  s     r   #test_constructor_with_not_writeablez6BufferedRWPairTest.test_constructor_with_not_writeables  s1    	9 	 	'477DNN,<lnMr    c                    | j                  | j                  d      | j                               }| j                  |j	                  d      d       | j                  |j	                  d      d       | j                  |j	                         d       | j                  | j                  d      | j                               }| j                  |j	                  d       d       y )Nr  r  r	  r9   r
  r  )r  r:  rp   r   rt   r!  s     r   r@  zBufferedRWPairTest.test_readz  s    wwt||I.0@A1v.1t,e,wwt||F+T^^-=>4&1r    c                       fd} j                   |       j                         g d        j                   |       j                         g d        j                   |       j                  d      ddg       y )Nc                  b     j                   j                  d       j                               S )Ns	   abc
def
h)r  r:  rp   r:   s   r   r  z3BufferedRWPairTest.test_readlines.<locals>.<lambda>  s"    twwt||N;T^^=MN r    )rp  rq  r   r   rp  rq  r\  r!  s   ` r   r]  z!BufferedRWPairTest.test_readlines  sb    N))+-GH))+-GH))!,x.BCr    c                     | j                  | j                  d      | j                               }| j                  |j	                  d      d       | j                  |j	                         d       y )Nr  r  r	  r  )r  r:  rp   r   rQ  r!  s     r   rE  zBufferedRWPairTest.test_read1  sR     wwt||I.0@AA/v.r    c           	      L   dD ]  }| j                  |      5  | j                  | j                  d      | j                               }t	        d      }| j                   t        ||      |      d       | j                  t        |      d       d d d         y # 1 sw Y   xY w)NrS  r  s        r   s   abcde)rU  r  r:  rp   r   r   rT  r   )r;   rV  r"  r   s       r   rJ  z BufferedRWPairTest.test_readinto  s    / 	8Ff% 8wwt||I68HI +  !6v!6t!<a@  th78 8	88 8s   A8BB#	c                 D   | j                         }| j                  | j                         |      }|j                  d       |j                          t	        d      }|j                  |       d|d d  |j                          | j                  |j                  ddg       y )Nr	  r  r  )rp   r  rM   r   r   r   rD   )r;   r  r"  r   s       r   r  zBufferedRWPairTest.test_write  s{    NNwwt~~'+

6

6"

6q	

&&)9:r    c                    | j                  | j                  d      | j                               }| j                  |j	                  d      j                  d             | j                  |j                  d      d       y )Nr  r  r	  )r  r:  rp   r  rN  r\  r   rt   r!  s     r   	test_peekzBufferedRWPairTest.test_peek  sY    wwt||I.0@A		!//781v.r    c                     | j                  | j                         | j                               }| j                  |j                                y rJ   )r  rp   r  rW   r!  s     r   test_readablez BufferedRWPairTest.test_readable  2    wwt~~')9:(r    c                     | j                  | j                         | j                               }| j                  |j                                y rJ   )r  rp   r  rP   r!  s     r   test_writeablez!BufferedRWPairTest.test_writeable  rA  r    c                     | j                  | j                         | j                               }| j                  |j                                y rJ   )r  rp   r  rY   r!  s     r   test_seekablez BufferedRWPairTest.test_seekable  s6     wwt~~')9:)r    c                     | j                  | j                         | j                               }| j                  |j                         |j	                          | j                  |j                         y rJ   )r  rp   r  r   r   r  r!  s     r   test_close_and_closedz(BufferedRWPairTest.test_close_and_closed  sK    wwt~~')9:%

$r    c                    d }| j                         }||_        | j                         }| j                  ||      }| j                  t              5 }|j                          d d d        | j                  dt        j                               | j                  |j                         | j                  |j                         | j                  |j                         d |_        y # 1 sw Y   xY w)Nc                      t          y rJ   reader_non_existingr&   r    r   reader_closezIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_close      r    rK  c                       y rJ   r&   r&   r    r   r  zEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>  r  r    )rp   r   r  r   r  r  r'  r(  r  r   r  )r;   rL  rw  r  r"  r  s         r    test_reader_close_error_on_closez3BufferedRWPairTest.test_reader_close_error_on_close  s    	 !#!wwvv&y) 	SJJL	+S-?@$'& $	 	s   C**C3c                    d }| j                         }| j                         }||_        | j                  ||      }| j                  t              5 }|j                          d d d        | j                  dt        j                               | j                  |j                         | j                  |j                         | j                  |j                         d |_        d }t        j                         5  t        j                         5  d }t        j                          d d d        t        j                          d d d        y # 1 sw Y   xY w# 1 sw Y   2xY w# 1 sw Y   y xY w)Nc                      t          y rJ   writer_non_existingr&   r    r   writer_closezIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_close  rM  r    rS  c                       y rJ   r&   r&   r    r   r  zEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>  r  r    )rp   r   r  r   r  r  r'  r(  r  r   r  r   r  r  )r;   rT  rw  r  r"  r  s         r    test_writer_close_error_on_closez3BufferedRWPairTest.test_writer_close_error_on_close  s&   	 !!#wwvv&y) 	SJJL	+S-?@%&' $ //1 	!335 %""$%  	! 	!	 	% %	! 	!s0   E?E(E+E(EE%	!E((E1c                    d }d }| j                         }||_        | j                         }||_        | j                  ||      }| j                  t              5 }|j                          d d d        | j                  dt        j                               | j                  |j                  j                  t               | j                  dt        |j                  j                               | j                  |j                         | j                  |j                         | j                  |j                         d |_        d |_        y # 1 sw Y   xY w)Nc                      t          y rJ   rJ  r&   r    r   rL  zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_close  rM  r    c                      t          y rJ   rR  r&   r    r   rT  zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_close  rM  r    rK  rS  c                       y rJ   r&   r&   r    r   r  zLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>	  r  r    c                       y rJ   r&   r&   r    r   r  zLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>	  r  r    )rp   r   r  r   r  r  r'  r(  r
  r  r  r   )r;   rL  rT  rw  r  r"  r  s          r   'test_reader_writer_close_error_on_closez:BufferedRWPairTest.test_reader_writer_close_error_on_close  s   	 	 !#!#wwvv&y) 	SJJL	+S-?@cmm77C+S1J1J-KL%'' $#	 	s   EEc                 
    G d dt               }| j                   |d       |d            }| j                  |j                                | j                   |d       |d            }| j	                  |j                                | j                   |d       |d            }| j	                  |j                                | j                   |d       |d            }| j	                  |j                                y )Nc                       e Zd Zd Zd Zy)8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttyc                 <    t         j                  |        || _        y rJ   )rp   rH   _isatty)r;   isattys     r   rH   zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__	  s    ""4(%r    c                     | j                   S rJ   )ra  r:   s    r   rb  z?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isatty	  s    ||#r    N)r#   r$   r%   rH   rb  r&   r    r   SelectableIsAttyr_  	  s    &$r    rd  FT)rp   r  r  rb  r  )r;   rd  r"  s      r   test_isattyzBufferedRWPairTest.test_isatty	  s    	$y 	$ ww'.0@0GH'ww'-/?/FG&ww'.0@0FG&ww'-/?/EF&r    c                     | j                  | j                         | j                               }t        j                  |      }d }d }y rJ   )r  rp   r  r  )r;   brwr  s      r   test_weakref_clearingz(BufferedRWPairTest.test_weakref_clearing	  s8    ggdnn&(89kk#r    N)r#   r$   r%   r8  r=  r  r&  r0  r6  r@  r]  rE  rJ  r  r>  r@  rC  rE  rG  rO  rV  r\  re  rh  r&   r    r   r  r  P  so    &-B?MN2D/8
;/))*%$"!4$.'*r    r  c                   $    e Zd Zej                  Zy)CBufferedRWPairTestN)r#   r$   r%   r   r=  r  r&   r    r   rj  rj   	  s    			Br    rj  c                   $    e Zd Zej                  Zy)PyBufferedRWPairTestN)r#   r$   r%   r   r=  r  r&   r    r   rl  rl  #	  r  r    rl  c                       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 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y)BufferedRandomTestrb+zwb+c                 X    t         j                  |        t        j                  |        y rJ   )r3  r8  r  r:   s    r   r8  z#BufferedRandomTest.test_constructor+	  s    ++D1++D1r    c                 X    t         j                  |        t        j                  |        y rJ   )r3  r=  r  r:   s    r   r=  z%BufferedRandomTest.test_uninitialized/	      --d3--d3r    c                    | j                  d      }| j                  |d      }| j                  d|j                  d             |j	                  d       |j	                  d       | j                  |j                         | j                  d|j                                | j                  d|j                  d	          y )
N)   asdf   ghjkr`     asr~   s   ddds   eeeru  s   dddeeer   )rp   r  r   rt   rM   r  rD   r;   r  rP  s      r   test_read_and_writez&BufferedRandomTest.test_read_and_write3	  s    nn/0WWS!_
+

))*"''),C$4$4Q$78r    c                    | j                  d      }| j                  |      }| j                  d|j                  d             | j                  d|j	                                |j                  dd       | j                  d|j                  d             |j                  d       |j                  dd       | j                  d|j                                | j                  d	|j	                                |j                  d
d       | j                  d|j	                                |j                  dd       | j                  d|j	                                | j                  d|j                  d             |j                          | j                  d|j                                | j                  t        |j
                  d       y )Ns	   asdfghjklrv  r~   r   rt  rs  s   123fs	   asdf123flr   r   r9   rr  s   fl   r   )r:  r  r   rt   r`   r]   rM   r   r  r   r   rw  s      r   test_seek_and_tellz%BufferedRandomTest.test_seek_and_tell>	  sH   ll<(WWS\
+BGGI&
1"''!*-

1rwwy1BGGI&
ABGGI&
1BGGI&,

s||~6)RWWc2r    c                 Z   | j                  d      }| j                  |      }| j                  d ||d             |j                  d       | j                  d ||d             | j                  d|j	                                |j                          | j                  d|j	                                | j                  d ||             |j                  dd       |j                  d	       |j                          |j                  dd       | j                  d	 ||d
             y )Nr_  r  r~   r  r  r   r  r   s   XYZr  )r:  r  r   rM   r`   r   r]   )r;   	read_funcr  r  s       r   check_flush_and_readz'BufferedRandomTest.check_flush_and_readU	  s    ll<(	% 34E	% 34EJJL)EJJL)5!12A		&

1a5!!45r    c                 (    | j                  d        y )Nc                       | j                   | S rJ   )rt   )r  r   s     r   r  z8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>h	  s    zuzz47H r    r  r:   s    r   test_flush_and_readz&BufferedRandomTest.test_flush_and_readg	  s    !!"HIr    c                 .    dd}| j                  |       y )Nc                 d    t        |dk\  r|nd      }| j                  |      }t        |d |       S )Nr   '  )r   rf   r   r  re   r(   s      r   	_readintoz=BufferedRandomTest.test_flush_and_readinto.<locals>._readintok	  s2    qAv!40Aq!A2A<r    r   r  )r;   r  s     r   test_flush_and_readintoz*BufferedRandomTest.test_flush_and_readintoj	  s    	  	!!),r    c                 .    dd}| j                  |       y )Nc                 r    | j                  |      }|dk7  r|d | }| j                  t        |      d       |S Nr   r9   )rN  r]   r   r  s      r   _peekz5BufferedRandomTest.test_flush_and_peek.<locals>._peekr	  s:     

1ABwbqEJJs1vq!Hr    r  r  r;   r  s     r   test_flush_and_peekz&BufferedRandomTest.test_flush_and_peekq	  s    	 	!!%(r    c                 p   | j                  d      }| j                  |      }|j                  d       |j                          |j                  d       |j                          |j	                  dd       | j                  d|j                                | j                  d|j                                y )Nr_     123s   45r   s	   12345fghi)r:  r  rM   r   r]   r   r  rt   r  s      r   test_flush_and_writez'BufferedRandomTest.test_flush_and_write|	  s    ll<(FE

1as||~6uzz|4r    c                 X    t         j                  |        t        j                  |        y rJ   )r3  r  r  r:   s    r   r  zBufferedRandomTest.test_threads	  s    ''-''-r    c                 T    d }| j                  |       d }| j                  |       y )Nc                 &    | j                  d       y r   )rN  r  s    r   r  z6BufferedRandomTest.test_writes_and_peek.<locals>._peek	  s    JJqMr    c                     | j                         }| j                  dd       | j                  d       | j                  |d       y )Nr   r9   r   )r`   r]   rN  r  s     r   r  z6BufferedRandomTest.test_writes_and_peek.<locals>._peek	  s4    **,CJJr1JJqMJJsAr    r  r  s     r   test_writes_and_peekz'BufferedRandomTest.test_writes_and_peek	  s*    	% 	
 	% r    c                 ,    d }| j                  |       y )Nc                 J    | j                  dd       | j                  d       y r  )r]   rt   r  s    r   _readz7BufferedRandomTest.test_writes_and_reads.<locals>._read	  s    JJr1JJqMr    r  r;   r  s     r   test_writes_and_readsz(BufferedRandomTest.test_writes_and_reads	  s    	 	% r    c                 ,    d }| j                  |       y )Nc                 J    | j                  dd       | j                  d       y r  )r]   rQ  r  s    r   _read1z9BufferedRandomTest.test_writes_and_read1s.<locals>._read1	  s    JJr1KKNr    r  )r;   r  s     r   test_writes_and_read1sz)BufferedRandomTest.test_writes_and_read1s	  s    	 	&!r    c                 ,    d }| j                  |       y )Nc                 \    | j                  dd       | j                  t        d             y r  )r]   rf   r   r  s    r   r  z;BufferedRandomTest.test_writes_and_readintos.<locals>._read	  s     JJr1NN9Q<(r    r  r  s     r   test_writes_and_readintosz,BufferedRandomTest.test_writes_and_readintos	  s    	) 	% r    c                    dD ]  }| j                  d      }| j                  |d      }| j                  |j                  d      d       | j                  |j	                         d       |j                  d|z         | j                  |j	                         |dz          |j                          | j                  |j	                         |dz          |j                         }| j                  |dd|z  z   dd|z
  z  z           y )N)r9   r   r  rs  r9      A   Br   )r:  r  r   rt   r`   rM   r   r  )r;   overwrite_sizer  r  r   s        r   test_write_after_readaheadz-BufferedRandomTest.test_write_after_readahead	  s     % 	LN,,y)CGGCOEUZZ]D1UZZ\1-KK~-.UZZ\>A+=> KKMUZZ\>A+=>AQtn,,tq>7I/JJL	Lr    c           	      f   d }d}t        dt        |            D ]  }t        |t        |            D ]z  }| j                  |      }| j                  |d      } ||||       |j	                          t        |      }d||<   d||<   | j                  |j                         |d||fz         |  y )Nc                     ||k\  sJ | j                  |       | j                  ||z
         | j                  d       | j                  |       | j                  d       y )N      )r]   rt   rM   )r  pos1pos2s      r   mutatez:BufferedRandomTest.test_write_rewind_write.<locals>.mutate	  sP    4<<JJtJJtd{#KK  JJtKK r    s   r   r)  r~   r9   zfailed result for i=%d, j=%d)r  r   r:  r  r   r   r   r  )r;   r  r(   r  jr  r  expecteds           r   test_write_rewind_writez*BufferedRandomTest.test_write_rewind_write	  s    		! $q#a&! 
	JA1c!f% 	Jll1oS)ua#$Q<  !?1a&!HJ	J
	Jr    c                 N   | j                  d      }| j                  |d      }| j                  |j                  d      d       | j                  |j	                         d       | j                  |j                  d      d       | j                  |j	                         d       y )Nr  r)  r~   s   AAs   BBrs  )r:  r  r   rt   rh   rM   r  s      r   !test_truncate_after_read_or_writez4BufferedRandomTest.test_truncate_after_read_or_write	  s    ll9%S!A.)1-U+Q/)1-r    c                 X    t         j                  |        t        j                  |        y rJ   )r3  r  r  r:   s    r   r  z%BufferedRandomTest.test_misbehaved_io	  rr  r    c                 H   | j                  d      5 }| j                  |d      5 }|j                  d       | j                  |j	                  d      d       |j                  d       | j                  |j                  d      d       |j                  d       t        d      }|j                  |       | j                  |d	       |j                  d
       | j                  |j                  d      d       |j                          | j                  |j                         d       d d d        d d d        | j                  d      5 }| j                  |d      5 }| j                  |j	                  d      d       |j                  d       | j                  |j	                  d      d       |j                          | j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Ns   abcdefghr)  r  r9   rC     2r
  rR     f   4r   s   1b2d3f4hr	  rB  r  s   a2c)r:  r  rM   r   rt   rQ  r   rf   rN  r   r  )r;   r  r2   rc   s       r   test_interleaved_read_writez.BufferedRandomTest.test_interleaved_read_write	  s   \\+& 	>#c" >a  D1  T2l

3  d+  D1	  =>	> \\&! 	9Sc" 9a  D1  D1	  89	9 	9> >	> 	> 9 9	9 	9sH   H DG4+H HBH#H4G=	9H  H	H	HH!c                 &   | j                  d      5 }| j                  |d      5 }|j                  d       | j                  |j	                  d      d       |j                          | j                  |j                         d       d d d        d d d        | j                  d      5 }| j                  |d      5 }|j                  d       | j                  |j	                         d       |j                          | j                  |j                         d       d d d        d d d        | j                  d      5 }| j                  |d      5 }|j                  d       | j                  |j	                  d      d d d       |j                          | j                  |j                         d       d d d        d d d        y # 1 sw Y   CxY w# 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)	Nr  r  r  r9   rC  s   1bcdefs   bcdr)  )r:  r  rM   r   rQ  r   r  r;   r  r2   s      r   test_read1_after_writez)BufferedRandomTest.test_read1_after_write	  s   \\)$ 	<a <A  T2	  ;	<	< \\)$ 	<a <A  F3	  ;	<	< \\)$ 	<a <A   bq!16:	  ;<	< 	<< <	< 	<< <	< 	<< <	< 	<sm   GA#G	G)G/<A"G#G/?HA&G;8H	G	GG #G,	(G//G8;H	 HHc                 "   | j                  d      5 }| j                  |      5 }|j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                          | j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Ns
   ab
cdef
g
r  s   b
r  rq  rR     
s
   1b
2def
3
)r:  r  rM   r   r  r   r  r  s      r   test_interleaved_readline_writez2BufferedRandomTest.test_interleaved_readline_write
  s    \\*+ 		Cs C  v6  x8  u5	  1ABC		C 		CC C		C 		Cs#   DCC9(D9D	>DDN)r#   r$   r%   r~  r  r8  r=  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r&   r    r   rn  rn  '	  s    IJ24	93.6$J-	)
5.	!!"!L(J4.492<,
C O "&r    rn  c                   T    e Zd Zej                  Z edddd      d        Zd Zd Z	y)CBufferedRandomTestTr  r  c                    t         j                  |        t        j                  dkD  r]| j	                         }| j                  |      }| j                  t        t        t        f|j                  |t        j                         y y r  )rn  r8  rZ  r  rp   r  r   r  r  r   rH   r  s      r   r8  z$CBufferedRandomTest.test_constructor)
  r  r    c                 X    t         j                  |        t        j                  |        y rJ   )r  r  r  r:   s    r   r  z+CBufferedRandomTest.test_garbage_collection6
  s    33D933D9r    c                     | j                  t        d      5  | j                  | j                         ddd       d d d        y # 1 sw Y   y xY w)Nr9  r5  r  r:   s    r   r  z#CBufferedRandomTest.test_args_error:
  r  r  N)
r#   r$   r%   r   r9  r  r   r8  r  r  r&   r    r   r  r  &
  s<    			BdDGH4H4:6r    r  c                   $    e Zd Zej                  Zy)PyBufferedRandomTestN)r#   r$   r%   r   r9  r  r&   r    r   r  r  @
  r  r    r  c                   B    e Zd ZdZddZd Zd Zd Zd ZddZ	d	 Z
dZy
)StatefulIncrementalDecodera  
    For testing seek/tell behavior with a stateful, buffering decoder.

    Input is a sequence of words.  Words may be fixed-length (length set
    by input) or variable-length (period-terminated).  In variable-length
    mode, extra periods are ignored.  Possible words are:
      - 'i' followed by a number sets the input length, I (maximum 99).
        When I is set to 0, words are space-terminated.
      - 'o' followed by a number sets the output length, O (maximum 99).
      - Any other word is converted into a word followed by a period on
        the output.  The output word consists of the input word truncated
        or padded out with hyphens to make its length equal to O.  If O
        is 0, the word is output verbatim without truncating or padding.
    I and O are initially set to 1.  When I changes, any buffered input is
    re-scanned according to the new I.  EOF also terminates the last word.
    c                 d    t         j                  j                  | |       | j                          y rJ   )codecsIncrementalDecoderrH   reset)r;   rw  s     r   rH   z#StatefulIncrementalDecoder.__init__a
  s!    !!**48

r    c                     dt        |       z  S )Nz<SID %x>)idr:   s    r   __repr__z#StatefulIncrementalDecoder.__repr__e
  s    BtH$$r    c                 >    d| _         d| _        t               | _        y r   )r  or   r   r:   s    r   r  z StatefulIncrementalDecoder.reseth
  s    kr    c                 x    | j                   dz  | j                  dz  }}t        | j                        |dz  |z   fS )Nr9   r)  )r  r  r   r   )r;   r  r  s      r   getstatez#StatefulIncrementalDecoder.getstatem
  s7    vvz466A:1T[[!1S519,,r    c                 v    |\  }}t        |      | _        t        |d      \  }}|dz  |dz  c| _        | _        y )Nr)  r9   )r   r   divmodr  r  )r;   stater   r   r  r  s         r   setstatez#StatefulIncrementalDecoder.setstateq
  s=    
'b#1QAr    Fc                    d}|D ]  }| j                   dk(  rK|t        d      k(  r!| j                  s-|| j                         z  }A| j                  j	                  |       ]| j                  j	                  |       t        | j                        | j                   k(  s|| j                         z  } |r| j                  r|| j                         z  }|S )Nr  r   .)r  ordr   process_wordrK   r   )r;   inputfinaloutputr(   s        r   decodez!StatefulIncrementalDecoder.decodew
  s     
	2Avv{C={{$"3"3"55KK&&q)""1%t{{#tvv-d//11F
	2 T[[d''))Fr    c                    d}| j                   d   t        d      k(  r,t        dt        | j                   dd  xs d            | _        n| j                   d   t        d      k(  r,t        dt        | j                   dd  xs d            | _        ne| j                   j                  d      }t        |      | j
                  k  r|d| j
                  z  z  }| j
                  r|d | j
                   }|d	z  }t               | _         |S )
Nr  r   r  c   r9   r  rD  -r  )	r   r  rp  intr  r  r  r   r   )r;   r  s     r   r  z'StatefulIncrementalDecoder.process_word
  s    ;;q>SX%SQR!5A67DF[[^s3x'SQR!5A67DF[[''0F6{TVV##dff*$vvcMFkr    N)strictr  )r#   r$   r%   ri   rH   r  r  r  r  r  r  codecEnabledr&   r    r   r  r  O
  s1    "%"
-&"  Lr    r  c           	          t         j                  rE| dk(  r?t        j                  d      }t        j                  d|j
                  d d d d t               S y y )Ntest_decoderr,   )r5  encoder  incrementalencoderstreamreaderstreamwriterincrementaldecoder)r  r  r  lookup	CodecInfor  )r5  latin1s     r   lookupTestDecoderr  
  sR    !..4>3Iy)d#D9	; 	; 4J.r    c                       e Zd ZdZg dZd Zy)StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))rg  Fza.b.c.d.)   oiabcdTabcd.)s   oi...abcd...Tr  )s   i.o6.x.xyz.toolongtofit.Fzx-----.xyz---.toolon.)s
   i.i2.o6xyzTzxy----.z-----.)s   i.o3.i6.abcdefghijklmnopTzabc.ghi.mno.)s;   i.o29.a.b.cde.o15.abcdefghijabcdefghij.i3.a.b.c.d.ei00k.l.mTza----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.l--------------.m--------------.c                     | j                   D ]2  \  }}}t               }| j                  |j                  ||      |       4 t               }| j                  |j                  d      d       | j                  |j                  dd      d       y )Nr  r  r    r9   r  )
test_casesr  r   r  )r;   r  eofr  r  s        r   r  z+StatefulIncrementalDecoderTest.test_decoder
  s}    "&// 	;E3*,AQXXeS16:	;
 '(),b1#q)73r    N)r#   r$   r%   ri   r  r  r&   r    r   r  r  
  s    J6	4r    r  c                   h   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z ej                  ej                   j"                  d      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* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5e6jn                   e8jr                         d0               Z:d1 Z;d2 Z<d3 Z=d4 Z>d5 Z?d6 Z@d7 ZAd8 ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQdH ZRdI ZSdJ ZTdK ZUdL ZVyM)NTextIOWrapperTestc                     d| _         dj                  d      | _        t        j                  t        j
                         t        j                  t               | j                  t        j                  t               y )Ns   AAA
BBBCCC
DDD
EEE
s   AAA
BBB
CCC
DDD
EEE
rD  )testdatar  
normalizedr   r   r   r  registerr  r,  
unregisterr:   s    r   r   zTextIOWrapperTest.setUp
  sQ    :6==gF))*)*))+<=r    c                 J    t        j                  t         j                         y rJ   r   r:   s    r   r   zTextIOWrapperTest.tearDown
  r   r    c                    | j                  d      }| j                  |d      }| j                  |d      }|j                  |dd       | j	                  |j
                  d       | j	                  |j                  d       |j                  |dd	
       | j	                  |j
                  d       | j	                  |j                  d	       | j	                  d|j                                | j                  rt        nt        }| j                  |      5  |j                  |d       d d d        | j                  t              5  |j                  |d       d d d        | j                  t              5  |j                  |d       d d d        | j                  |      5  |j                  |dd       d d d        t        j                  s&t        j                   j"                  s| j                  r2| j                  t              5  |j                  |dd       d d d        t        j                  s&t        j                   j"                  s| j                  r2| j                  t              5  |j                  |dd       d d d        | j                  t              5  |j                  |dd       d d d        | j                  t              5  |j                  |dd       d d d        | j                  t              5  |j                  |dd       d d d        | j                  t              5  |j                  |dd       d d d        y # 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N   é

rq  r  r-   r,   
rG  FT)r.   line_buffering   é
rT      zutf-8 r.   rw  zreplace 
 r  )r:  r2  rF  rH   r   r.   r  r  is_Cr   r   r   UnicodeEncodeErrorr   Py_DEBUGrZ  r  dev_mode)r;   r+   r(   r  invalid_types        r   r8  z"TextIOWrapperTest.test_constructor
  s#   LL)4(q73	

1y&
9Y/))51	

1wt
<W-))401::<0$(IIy:|, 	'JJq2J&	'12 	-JJq8J,	-z* 	.JJq9J-	.|, 	7JJq72J6	7syy11TYY""#56 A

1wx
@Asyy11TYY"":. D

1w{
CDy) 	8JJq7BJ7	8z* 	>JJq7HJ=	>z* 	<JJq7FJ;	<z* 	=JJq7GJ<	= 	=)	' 	'	- 	-	. 	.	7 	7A AD D	8 	8	> 	>	< 	<	= 	=sx   M	M*:M7'NN7N)N+N7O?OM'*M47NNNN(+N47O OOc                    | j                   j                  | j                         }~| j                   j                  | j                         }| j                  t        t        |       | j                  t        t        fd|j                  d       |j                  | j                         d       | j                  |j                  d      d       y )Nr;  r   r  r-   r  )rF  r<  r   ru  r  r^  r   r  rt   rH   rp   r   r;   r  s     r   r=  z$TextIOWrapperTest.test_uninitialized  s    &&t'9'9:&&t'9'9:)T1-
N;? vvq	* 	


4>>#g
6B'r    c                     | j                         }| j                  |      }| j                  t        d      5  | j	                  |d       d d d        y # 1 sw Y   y xY w)Nzis not a text encodinghexr-   )r:  r6  r^  LookupErrorrF  )r;   r+   r(   s      r   *test_non_text_encoding_codecs_are_rejectedz<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejected  sX     LLN"##K1IJ 	2q51	2 	2 	2s   AAc                    | j                         }| j                  |      }| j                  |d      }| j                  |j	                         |       | j                  |d      }|j                  d       | j                  |j                                |j	                          | j                  |j                         d       | j                  t        |j                         t        |       | j                  |j                  d       | j                  |j                  d       | j                  |j                         | j                  |j                         y )NrD  r-   howdys   howdyr  )r:  r6  rF  r  r  rM   r  r  r   r   r   r  r.   rw  r  write_throughr;   r+   r(   r  s       r   r  zTextIOWrapperTest.test_detach  s   LLN"q73ahhj!$q73	&	
x0*ahh/ 	QW-8,))*)r    c                    | j                  dj                  d            }| j                  |      }| j                  |d      }| j                  j                  }| j                  t        |      d|z         d|_        | j                  t        |      d|z         d|_        | j                  t        |      d|z         d	|_        | j                  t        |      d
|z         |j                  j                          t        |       y )Nhellor  r-   z'<(%s\.)?TextIOWrapper encoding='utf-8'>r  z4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>r+   z=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>r  z><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r:  r  r2  rF  r$   r  r  r5  moder   r  )r;   r  r(   r  modnames        r   r  zTextIOWrapperTest.test_repr)  s    ll7>>'23$q73$$//aCgM	OaPSZZ	\aY\cc	eaZ]dd	f 	
Qr    c                     | j                         }| j                  |d      }t        j                  |d|      5  	 t	        |       d d d        y # t
        $ r Y w xY w# 1 sw Y   y xY w)Nr  r-   r5  )r:  rF  r   r  r  r  r;   r  r  s      r   r  z%TextIOWrapperTest.test_recursive_repr=  sn    llnsW5sFA. 	Q	 	   	 	s(   A A	AA AA  A)c                    | j                         }| j                  |d      }| j                  |ddd      }|j                  d       | j	                  |j                         d       |j                  d       | j	                  |j                         d	       |j                  d
       | j	                  |j                         d       y )Nrq  r  
Tr.   rH  r  Xr    zY
Zs   XY
ZzABs   XY
ZAB)r:  r6  rF  rM   r   r  r  s       r   test_line_bufferingz%TextIOWrapperTest.test_line_bufferingG  s    LLN4(q7DQUV	s+	x0	|4r    c                    | j                         }| j                  |d      }| j                  |ddd      }|j                  d       | j	                  |j                         d       |j                  d	       | j	                  |j                         d
       |j                  d       | j	                  |j                         d       |j                  d       | j	                  |j                         d       |j                  d	       | j	                  |j                         d       |j                  d       | j	                  |j                         d       |j                          |j                  d 	       | j	                  |j                  d       |j                  d	       |j                          |j                  d 	       | j	                  |j                  d       y )Nrq  r  r   Fr!  zAB
Cr    Tr  s   AB
CzDEF
Gs	   AB
CDEF
GHs
   AB
CDEF
GHIJ)r:  r6  rF  rM   r   r  reconfigurer  r  s       r   test_reconfigure_line_bufferingz1TextIOWrapperTest.test_reconfigure_line_bufferingR  sq   LLN4(q7DQVW	s+	T*x0	~6	~6	U+7	7 	
	T*))51	T*		T*))40r    zutf-8 mode is enabledc                    t        t        j                        }	 dD ]&  }|t        j                  v st        j                  |= ( t        j                         }| j                         }t        j                         5  t        j                  dt               | j                  |      }d d d        | j                  j                  |       t        j                  j                          t        j                  j                  |       y # 1 sw Y   cxY w# t        j                  j                          t        j                  j                  |       w xY w)N)LC_ALLLANGLC_CTYPErb  )r  r%  environlocalegetencodingr:  rc  rd  re  EncodingWarningrF  r   r.   clearupdate)r;   old_environkeycurrent_locale_encodingr(   r  s         r   test_default_encodingz'TextIOWrapperTest.test_default_encodingm  s    2::&	+ 6 ("**$

3( '-&8&8&:#A((* *%%h@&&q)* QZZ)@AJJJJk** *
 JJJJk*s)   D AD >,D*$D DD ?Ec                    | j                         }| j                  |d      }| j                  |j                  d       t	        j
                         5  t	        j                  dt               | j                  |      }d d d        | j                  |j                         t        j                  |j                         y # 1 sw Y   DxY w)Nr  r-   rb  )r:  rF  r   r.   rc  rd  re  r1  assertIsNotNoner  r  r;   r(   r  s      r   test_encodingzTextIOWrapperTest.test_encoding  s    LLNq73W-$$& 	&!!(O<""1%A	& 	QZZ(ajj!		& 	&s   ,CCc                 *   | j                  d      }| j                  |d      }| j                  t        |j                         | j                  d      }| j                  |dd      }| j                  t        |j                         | j                  d      }| j                  |dd      }| j                  |j	                         d       | j                  d      }| j                  |dd      }| j                  |j	                         d	       y )
Ns   abc

rD  r-   r  r  rb  zabc

replaceu   abc
�
)r:  rF  r   UnicodeErrorrt   r   r:  s      r   test_encoding_errors_readingz.TextIOWrapperTest.test_encoding_errors_reading  s    LL(q73,/LL(q78D,/LL(q78D9-LL(q79E?3r    c                    | j                         }| j                  |d      }| j                  t        |j                  d       | j                         }| j                  |dd      }| j                  t        |j                  d       | j                         }| j                  |ddd      }|j	                  d	       |j                          | j                  |j                         d
       | j                         }| j                  |ddd      }|j	                  d	       |j                          | j                  |j                         d       y )NrD  r-      ÿr  r  rb  r   )r.   rw  rH  u	   abcÿdef
s   abcdef
r=  s   abc?def
)r:  rF  r   r>  rM   r   r   r  r:  s      r   test_encoding_errors_writingz.TextIOWrapperTest.test_encoding_errors_writing  s   LLNq73,8LLNq78D,8LLNq78%)  +			{3LLNq79%)  +			|4r    c           
         g d}d g dgd|gdg dgdddggd	g d
gg}d}|D ]4  }t        dj                  |      j                  |            }dD ]  }t        dd      D ]  }|D ]  \  }}	| j	                  | j                  |      |      }
| j                  |
||      }|rXg }	 |j                  d      }|dk(  rnI| j                  t        |      d       |j                  ||j                         z          Ut        |      }t        ||	      D ]  \  }}| j                  ||        | j                  t        |      t        |	                7 y )N)unix
	windows
zos9last
nonl)rD  zwindows
zos9
rF  rG  r  r   )rD  rE  z	os9last
rG  r  zunix
windows
zos9last
nonl)zunix
windowsz
os9z	last
nonl)r  r,   utf-16	utf-16-le	utf-16-beutf-32	utf-32-le	utf-32-be)FTr9   r  rH  r.   r~   )r   r   r  r  r2  r:  rF  rt   r   r   rK   r  rB   zip)r;   input_linesr]  	encodingsr.   r   do_readsr  rH  	exp_linesr  textio	got_linesc2got_lineexp_lines                   r   test_newlineszTextIOWrapperTest.test_newlines  s   L HJ+FH+->@BBD

	 " 	IH-44X>?D) I$Q| IG.3 I* $ 3 3DLL4F P!%!3!3E7;C "4 "E#(*I"&%+[[^#%8$) $ 0 0R! < ) 0 0foo6G1G H #' )-VI25i2K A.Hh ,,Xx@A((YYH#III	Ir    c                    d}|j                  dd      j                  dd      }d |j                  d      j                  d      fd|j                  d      j                  d      fd	g d
fdg dfdg dffD ]  \  }}| j                  |      }| j	                  |d|      }| j                  |j                         |       |j                  d       | j                  |j                         dj                  |              y )Ns   AAA
BB B
CCCDDDEEE
FFF
GGGs   
r     rD  T)keependsr  r   )zAAA
zBB B
zCCCDDDEEE
FFF
GGGr  )zAAA
BB B
CCCDDDEEE
r^  r_  rH  )zAAA
BB B
CCCzDDDzEEEz
FFFz
GGGrG  r   )
r=  r  
splitlinesr:  rF  r   r  r]   rt   r   )r;   r  r  rH  r  rc   txts          r   test_newlines_inputz%TextIOWrapperTest.test_newlines_input  s    ?%%gu5==eUK
:$$W-88$8GH)44d4CDPQJKQR" 	<GX ,,x(C$$S7G$LCS]]_h7HHQKSXXZ):;	<r    c                    ddddd}d |t         j                     fgt        |j                               z   }|D ]  \  }}| j	                         }| j                  |d|      }|j                  d       |j                  d       |j                  d	       |j                          | j                  |j                  d
       | j                  |j                         |        y )Ns   AAA
BBB
CCC
XY
Zs   AAABBBCCCXYZs   AAA
BBB
CCC
XY
Z)r  r   rH  r  rD  rG  zAAA
BzBB
CCC
zXY
ZF)r%  linesepsortedr  r:  rF  rM   r   r   r   r  )r;   testdictr]  rH  r  rc   ra  s          r   test_newlines_outputz&TextIOWrapperTest.test_newlines_output  s    +--7	 ,-.8H1II!& 	7GX,,.C$$S7G$LCIIhIIk"IIk"IIKSZZ/S\\^X6	7r    c                     g | j                    G fdd      } |       }| j                  |d      }|j                  d       ~t        j                          | j                  dg       y )Nc                       e Zd Z fdZy)4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOc                 f    j                  | j                                j                  |        y rJ   )rK   r  r   )r;   r  r  s    r   r   z:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.close  s!    )

4 r    Nr  )r  r  s   r   	MyBytesIOrj    s    !r    rl  rD  r-   r  r	  )r:  rF  rM   r   r  r   )r;   rl  r(   r  r  r  s       @@r   r  z!TextIOWrapperTest.test_destructor  sg    ||	! 	! Kq73	&1%r    c                     g  G fdd| j                         }| j                         } ||d      }~t        j                          | j	                  g d       y )Nc                   :     e Zd Z fdZ fdZ fdZ xZS )<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOc                 j    j                  d       	 t        |   } |        y # t        $ r Y y w xY wr   r  r  s     r   r  zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__  r  r  c                 D    j                  d       t        | 	          y r}   r  r  s    r   r   zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.close  r  r    c                 D    j                  d       t        | 	          y r  r  r  s    r   r   zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flush  r  r    r  r  s   @r   MyTextIOro    r  r    rs  rD  r-   r  )rF  r:  r   r  r   )r;   rs  r(   r  r  s       @r   r  z*TextIOWrapperTest.test_override_destructor  sR    	 t)) 	  LLNQ)+r    c                    | j                         }t        j                         5 }| j                  t              5  | j                  |d      j                   d d d        t        s| j                  |j                         n6|j                  *| j                  |j                  j                  t               d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr  r-   )r   r   r  r   r  rF  r  r  r  r  r   r  r   r  s      r   r  z/TextIOWrapperTest.test_error_through_destructor(  s     ##%//1 	BR"">2 B""57";AAB +!!"--0*  !7!7A	B 	BB B	B 	Bs#   CCA CC	CCc                 j   dD ]  }dD ]  }| j                  t        j                  d|      }||_        | j	                  |j                  d      d       |j                          | j                  t        j                  d|      }||_        | j	                  |j                         d       | j	                  |j                         d       |j                         }| j	                  |j                  d      d       | j	                  |j                  d       d       |j                  d       | j	                  |j                  d	      d
       | j	                  |j                  d      d       | j	                  |j                  d      d       | j	                  |j                         d       | j	                  |j                         |       | j	                  |j                  d      d       | j	                  |j                  dd	      |       | j	                  |j                  d      d       | j	                  |j                  |      |       | j	                  |j                         d       |j                  d      r| j                  ||       |j                            y )N)r9   r~   r  rs  r   r  r6            !   ?   @   A   )rD  r,   r  w+r-   r  r  r+r   r~   r  r9   r  r  defutf)r/   r   r   r1   r   rM   r   r`   rt   r]   r\  multi_line_test)r;   	chunksizeencr2   cookies        r   test_basic_iozTextIOWrapperTest.test_basic_io7  s   L 	I2 IIi..sIC )  3	IIi..sIC )  1-  51  A.  u5q	  D1  C0  B/  2.  62  A.  1v6  3  8  51>>%(((C0	3	r    c           	         |j                  d       |j                          d}g }dD ]z  }g }t        |      D ]"  }|j                  ||t	        |      z            $ dj                  |      dz   }|j                  |j                         |f       |j                  |       | |j                  d       g }		 |j                         }
|j                         }|sn|	j                  |
|f       7| j                  |	|       y )Nr   u	   sÿ࿿￿)r   r9   r~   r  rs  r      rw  rx  ry  >   rz  r{  r|  rq  r  r   )
r]   rh   r  rK   r   r   r`   rM   r  r   )r;   r2   r  samplewlinesrP  charsr  linerlinesr   s              r   r  z!TextIOWrapperTest.multi_line_testT  s    	q		

$L 	DE4[ 6VAFO456775>D(DMM1668T*+GGDM	 	
q	&&(C::<DMM3+&  	(r    c                 B   | j                  t        j                  dd      }|j                         }|j	                  d       |j                         }|j	                  d       |j                         }|j                  d       | j                  |j                         |       | j                  |j                         d       | j                  |j                         |       | j                  |j                         d       | j                  |j                         |       |j                  d       |D ]4  }| j                  |d       | j                  t        |j                         6 | j                  |j                         |       |j                          y )Nr}  r  r-   u   ÿ
r   )r/   r   r   r`   rM   r]   r   r  r   r   r   )r;   r2   p0p1p2r  s         r   test_tellingzTextIOWrapperTest.test_tellingj  s-   IIi&&wI?VVX	VVX	VVX	q	2&x02&x02&	q	 	/DT8,gqvv.	/ 	2&		r    c                    t               }|dz
  }d|z  }t        |j                  d            }| j                  t	        |      t	        |             d}t        |j                  d            }||z   }| j                  t        j                  d      5 }|j                  |dz         d d d        | j                  t        j                  dd      5 }|j                  |      }	| j                  |	t        |d             | j                  |j                         |       | j                  |j                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr~   r  r     袈
r  r+   r-   rD  )r3   r   r  r   r   r/   r   r   rM   rt   r'  r`   r  )
r;   
chunk_sizeprefix_sizeu_prefixprefixu_suffixsuffixr  r2   r   s
             r   test_seekingzTextIOWrapperTest.test_seeking~  s(   (*
 1n$xw/0XF4xw/0YYy''. 	!GGDFO	YYy''wY? 	51{#AQFG 45QVVX{3QZZ\84		5 	5	 		5 	5s   E
A.E
EEc                 h   d}| j                  t        j                  d      5 }|j                  |       d d d        | j                  t        j                  dd      5 }|j                   d|_        |j                          |j                          d d d        y # 1 sw Y   hxY w# 1 sw Y   y xY w)Ns   ࿿
r  r+   r  r-   r~   )r/   r   r   rM   r1   r  r`   )r;   r   r2   s      r   test_seeking_tooz"TextIOWrapperTest.test_seeking_too  s     YYy''. 	!GGDM	YYy''wY? 	1MMAMJJLFFH		 		 		 	s   B4B(B%(B1c                 ,    dd fd	}dt         _        	 t        j                  D ]  \  }}} ||        t        j                  D ]-  \  }}}t	        |      dz  z
  }d|z  }|dz  } |||z   |       / 	 dt         _        y # dt         _        w xY w)N   r   c           	         j                  t        j                  d      }|j                  |        |j	                          j                  t        j                  d      }|_        |j                         }|j	                          t        |t        |      dz         D ]  }ddt        |      |z
  fD ]  }j                  t        j                  d      }j                  |j                  |      |d|        |j                         }j                  |j                  |      ||||z           |j                  |       j                  |j                         ||d        |j	                            y)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.r  r  r-   r9   r   N)r/   r   r   rM   r   r1   rt   r  r   r   r`   r]   )	r   min_posr2   decodedr  r  r  
CHUNK_SIZEr;   s	          r   test_seek_and_tell_with_datazJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_data  s4    		)**D1AGGDMGGI		)**^	DA&AMffhGGGI7CL1$45 QGq 01 A		)"2"2^	LA$$QVVAY<VVXF$$QVVAY!a%0@AFF6N$$QVVXwqr{;GGIr    r9   r~      .r   )r  r  r  r  r   )r;   r  r  r  offsetr  r  r  s   `      @r   r|  z$TextIOWrapperTest.test_seek_and_tell  s     
	, 34"/	8=HH 4q!,U34  >HH Fq!#c%j!m3f (,Ve^WEF 78&3a&3s   A!B Bc                 P   | j                  t        j                  dd      }|j                  d       |j	                          | j                  t        j                  dd      }| j                  |j                         d       |j                         }| j                  |j                         d       |j                         }|j                  |       | j                  |j                         d       | j                  |j                         |       |j	                          y )Nr  euc_jpr-   u
   AB
うえ
r+   zAB
u   うえ
)	r/   r   r   rM   r   r   r  r`   r]   )r;   r2   r  r  s       r   test_multibyte_seek_and_tellz.TextIOWrapperTest.test_multibyte_seek_and_tell  s    IIi&&hI?	$%		IIi&&hI?v.VVX'78VVX	r
'782&		r    c                    | j                  t        j                  dd      }|j                  d       |j	                         }|j                  d       |j                  |       |j                  d       |j                          | j                  t        j                  dd      }| j                  |j                         d       |j                          y )	Nr  euc_jis_2004r-   u   æ̀   æu   ̀r+   u   æ̀̀)	r/   r   r   rM   r`   r]   r   r   r  )r;   r2   r  s      r   test_seek_with_encoder_statez.TextIOWrapperTest.test_seek_with_encoder_state  s    IIi&&nIE	VVX		r
			IIi&&nIE';<		r    c                    d}d}|D ]  }| j                         }| j                  ||      }|j                  |       |j                  |       |j                  d       | j	                  |j                         |dz         |j                  d       | j	                  |j                         |dz         | j	                  |j                         |dz  j                  |              y )N
1234567890)rI  rJ  rK  rL  rM  rN  r-   r   r~   )r:  rF  rM   r]   r   rt   r  r  )r;   r   r]  r.   rc   r2   s         r   test_encoded_writesz%TextIOWrapperTest.test_encoded_writes  s      
	JH,,.C""3":AGGDMGGDMFF1IQVVXtax0FF1IQVVXtax0S\\^dQh->->x-HI
	Jr    c                      G d d| j                         }| j                   |       d      }| j                  t        |j                         y )Nc                       e Zd Zd Zy)5TextIOWrapperTest.test_unreadable.<locals>.UnReadablec                      yr   r&   r:   s    r   rW   z>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readable  r+  r    Nr,  r&   r    r   
UnReadabler    r.  r    r  r  r-   )r:  rF  r   r   rt   )r;   r  ra  s      r   test_unreadablez!TextIOWrapperTest.test_unreadable  s?    	 	    @'388,r    c                     | j                  | j                  d      d      }d}	 |j                  d      }|sn||z  }| j                  |d       y )Ns   AA
BBr  r-   r  r9   zAA
BBrF  r:  rt   r   r;   ra  readsr  s       r   test_read_one_by_onez&TextIOWrapperTest.test_read_one_by_one   s[      k!:W MAQJE	 
 	)r    c                 \   | j                  | j                  d      d      }| j                  |j                         g d       |j	                  d       | j                  |j                  d       g d       |j	                  d       | j                  |j                  d      ddg       y )	Ns   AA
BB
CCr  r-   )AA
BB
CCr   r   r  r  )rF  r:  r   r  r]   r;   ra  s     r   r]  z TextIOWrapperTest.test_readlines
  s      m!<w O*@At,.DEq)FF+;<r    c                     | j                  | j                  d      d      }d}	 |j                  d      }|sn||z  }| j                  |d       y )Ns   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br  r-   r  r  zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br  r  s       r   test_read_by_chunkz$TextIOWrapperTest.test_read_by_chunk  s\      .C!Dw WAQJE	 
 	.r    c                     g d}| j                         }| j                  |d      }|j                  |       |j                          | j	                  |j                         d       y N)r  cdefr  r-   r  )r:  rF  r  r   r   r  r;   r  rc   ra  s       r   r  z!TextIOWrapperTest.test_writelines  sR    lln  w 7q		3r    c                     t        g d      }| j                         }| j                  |d      }|j                  |       |j	                          | j                  |j                         d       y r  )r   r:  rF  r  r   r   r  r  s       r   r  z*TextIOWrapperTest.test_writelines_userlist&  sX    '(lln  w 7q		3r    c                    | j                  | j                         d      }| j                  t        |j                  g d       | j                  t        |j                  d        | j                  t        |j                  d       y )Nr  r-   r  r	  )rF  r:  r   r   r  r  s     r   r  z'TextIOWrapperTest.test_writelines_error.  s_      ' B)S^^Y?)S^^T:)S^^V<r    c                     | j                  | j                  | j                        d      }d}	 |j                  d      }|sn||z  }| j	                  || j
                         y )NrD  r-   r  r9   )rF  r:  r  rt   r   r  r  s       r   test_issue1395_1z"TextIOWrapperTest.test_issue1395_14  se      dmm!<w O AQJE	 
 	0r    c                     | j                  | j                  | j                        d      }d|_        d}	 |j	                  d      }|sn||z  }| j                  || j                         y )NrD  r-   rs  r  rF  r:  r  r1   rt   r   r  r  s       r   test_issue1395_2z"TextIOWrapperTest.test_issue1395_2@  sj      dmm!<w OAQJE	 
 	0r    c                 ^   | j                  | j                  | j                        d      }d|_        |j	                  d      }||j	                  d      z  }||j                         z  }||j                         z  }||j                         z  }| j                  || j                         y NrD  r-   rs  )rF  r:  r  r1   rt   r  r   r  r;   ra  r  s      r   test_issue1395_3z"TextIOWrapperTest.test_issue1395_3L  s      dmm!<w O!0r    c                     | j                  | j                  | j                        d      }d|_        |j	                  d      }||j	                         z  }| j                  || j                         y r  r  r  s      r   test_issue1395_4z"TextIOWrapperTest.test_issue1395_4W  s\      dmm!<w O0r    c                 2   | j                  | j                  | j                        d      }d|_        |j	                  d      }|j                         }|j                  d       |j                  |       | j                  |j	                  d      d       y )NrD  r-   rs  r   zBBB
)rF  r:  r  r1   rt   r`   r]   r   )r;   ra  r  r   s       r   test_issue1395_5z"TextIOWrapperTest.test_issue1395_5_  sq      dmm!<w Ohhj!g.r    c                     | j                  | j                        }| j                  |d      }| j                  |j	                         |j	                                y NrD  r-   )r:  r  rF  r   rY   )r;   r   ra  s      r   test_issue2282z TextIOWrapperTest.test_issue2282i  sF    dmm,  ' :*CLLN;r    c                    t         j                  }dD ]  }| j                  |d|      5 }|j                  d       |j	                         }d d d        | j                  |d      5 }| j                  |j                         dj                  |             d d d        | j                  |d|      5 }|j                  d       d d d        | j                  |d      5 }| j                  |j                         dj                  |             d d d         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   6xY w)	N	utf-8-sigrI  rL  r  r-   aaar  r  xxxaaaxxx)r   r   r/   rM   r`   r   rt   r  r;   filenamecharsetr2   r   s        r   test_append_bomz!TextIOWrapperTest.test_append_bomo  s+   ##8 
	EG8S7; qffh 8T* Ba  5<<+@AB 8S7; q8T* Ea  8??7+CDE E
	E B B E Es/   "D'0D'3D30D?D$	'D0	3D<	?E		c                 N   t         j                  }dD ]  }| j                  |d|      5 }|j                  d       |j	                         }d d d        | j                  |d|      5 }|j                         |j                  d       |j                  d       |j                  d       d d d        | j                  |d	      5 }| j                  |j                         d
j                  |             d d d         y # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   xY w)Nr  r  r-   r  r~  zzzr   bbbr  bbbzzz)	r   r   r/   rM   r`   r]   r   rt   r  r  s        r   test_seek_bomzTextIOWrapperTest.test_seek_bom~  s   ##8 
	EG8S7; qffh 8TG< sq		
 8T* Ea  8??7+CDE E
	E  
E Es$   "D(AD0DD	D	D$	c                     t         j                  }dD ]  }| j                  |d|      5 }|j                  d       d d d        | j                  |d|      5 }|j	                  d       |j	                  d| j
                         |j                  d       d d d        | j                  |d      5 }| j                  |j                         d	j                  |             d d d         y # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   xY w)
Nr  r  r-   r  r  r   r  r  r  )	r   r   r/   rM   r]   r  r   rt   r  )r;   r  r  r2   s       r   test_seek_append_bomz&TextIOWrapperTest.test_seek_append_bom  s    ##8 	EG8S7; q8S7; qq	q$--( 8T* Ea  8??7+CDE E	E  E Es#   C,?C810D,C5	8D	D	c                 R   | j                  t        j                  dd      5 }| j                  |j                  d       d d d        | j                  t        j                  ddd      5 }| j                  |j                  d       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)Nr  r  r-   r  r=  r  )r/   r   r   r   rw  r  s     r   test_errors_propertyz&TextIOWrapperTest.test_errors_property  s    YYy''wY? 	11QXXx0	1YYy''wyYQ 	2UVQXXy1	2 	2	1 	1	2 	2s   B+BBB&c                    t        j                         | j                  t        j                  ddd      5 fd}t        d      D cg c]  }t        j                  ||f       }}t        j                  |j                        5  t        j                  d       d d d        d d d        | j                  t        j                  d	      5 j                         }t        d      D ]&  }| j                  |j                  d
|z        d       ( 	 d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  r9   r@  c                 R    d| z  }j                          j                  |       y )NThread%03d
)r  rM   )re   texteventr2   s     r   runz1TextIOWrapperTest.test_threads_write.<locals>.run  s!    %)

r    r  r*  rz  r-   r  )r   r   r/   r   r   r  r-  r   r  r   r   r   rt   r   r   )r;   r  r"  r  contentre   r  r2   s         @@r   test_threads_writez$TextIOWrapperTest.test_threads_write  s+    !YYy''w!YL 	!PQ
 !&b	+ !''s!> +G +!//C !

4 !	! YYy'''Y: 	GaffhG2Y G  ~/A!BAFG	G 	G	+! !	! 	!	G 	GsB   D6D%-"D6D*%D6AE%D6*D3	/D66D?Ec                    | j                  | j                  | j                        d      g fd}|_        | j	                  t
        j                         | j                  j                         | j                  j                  j                         | j                         | j                  d          | j                  d          d _        y )NrD  r-   c                  b    j                   j                  j                   g d d  t               rJ   )r   r   r   )r   ra  s   r   r  z>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flush  s&    SZZ%6%67F1I)Or    r   r9   c                       y rJ   r&   r&   r    r   r  z=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>  r  r    )rF  r:  r  r   r   r   r   r  r   r   r  )r;   r  r   ra  s     @@r   r  z+TextIOWrapperTest.test_flush_error_on_close  s       dmm!<w O	 	'399-

#

))*## 	r    c                 R   | j                  | j                        }d }d }||_        | j                  |d      }||_        | j                  t              5 }|j                          d d d        | j                  j                  j                  d       | j                  |j                  j                  t               | j                  |j                  j                  j                  d       | j                  |j                         d |_        d |_        y # 1 sw Y   xY w)	Nc                      t        d      r  r  r&   r    r   r  z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flush  r  r    c                      t        d      r  r  r&   r    r   r  z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_close  r  r    rD  r-   r  r  c                       y rJ   r&   r&   r    r   r  z=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>  r  r    c                       y rJ   r&   r&   r    r   r  z=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>  r  r    )r:  r  r   rF  r   r   r   r   r(  r   r
  r  r  r   r;   r   r  r  ra  r  s         r   r  z+TextIOWrapperTest.test_close_error_on_close  s    dmm,	#	#   ' :	w' 	3IIK	++Z8cmm77A2277D$ $ 		 	s   DD&c                 N   | j                  | j                        }d }d }||_        | j                  |d      }||_        | j                  t              5 }|j                          d d d        | j                  dt        j                               | j                  |j                  j                  t               | j                  dt        |j                  j                               | j                  |j                         d |_        d |_        y # 1 sw Y   xY w)	Nc                      t         rJ   r  r&   r    r   r  zLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flush  r  r    c                      t         rJ   r  r&   r    r   r  zLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_close  r  r    rD  r-   r  r  c                       y rJ   r&   r&   r    r   r  zKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>  r  r    c                       y rJ   r&   r&   r    r   r  zKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>  r  r    )r:  r  r   rF  r   r   r  r  r'  r(  r
  r  r  r   r  s         r   r  z9TextIOWrapperTest.test_nonnormalized_close_error_on_close  s    dmm,	%	%   ' :	y) 	SIIK	*C,>?cmm77C*C0I0I,JK$ $ 		 	s   DD$c                     | j                  | j                  | j                        d      }|j                          |j                          |j                          | j	                  t
        |j                         y r  )rF  r:  r  r   r   r   r   r  s     r   r  z"TextIOWrapperTest.test_multi_close  sS      dmm!<w O						*cii0r    c                     | j                  | j                  | j                        d      }| j                  | j                  |j
                         | j                  | j                  |j                  d       y )Nr  r-   r   )rF  r   r  r   r   r`   r]   r  s     r   r   z!TextIOWrapperTest.test_unseekable  s]      !6!6t}}!EPW X$33SXX>$33SXXqAr    c                     | j                  | j                  | j                        d      }| j                  | j                        }| j                  t              5  ||_        d d d        y # 1 sw Y   y xY wr  )rF  r:  r  r   r  r   )r;   ra  rc   s      r   r#  z*TextIOWrapperTest.test_readonly_attributes  s`      dmm!<w Oll4==)~. 	CJ	 	 	s   A..A7c                    | j                  g d      }| j                  |dd      }| j                  |j                  d      d       | j                  |j	                         d       | j                  t        |      dd	g       y )
Nr	  r  s   ghi
jkl
opq
rD  r   rG  rs  abcdzefghi
zjkl
zopq
)rp   rF  r   rt   r  rB   r;   r  ra  s      r   
test_rawiozTextIOWrapperTest.test_rawio  sq     nnAB  w E!f-3cWg$67r    c                    | j                  g d      }| j                  |ddd      }|j                  d       |j                  d       |j                  d       | j                  d	j	                  |j
                        d
       y )Nr  rD  r   T)r.   rH  r  1z23
45r    s   123
45)rp   rF  rM   r   r   rD   r	  s      r   test_rawio_write_throughz*TextIOWrapperTest.test_rawio_write_through
  sp    nnAB  w/3 ! 5		#		'		##"2"23Z@r    c                    g g c G fdd| j                         }| j                         }d} ||t        |      dz        }| j                  |dd      }|j	                  d      }|j                  |       | j                         | j                         | j                  |j                         d       g |j                  |d	z         | j                         | j                  |j                         |d
z         y )Nc                   .     e Zd Z fdZ fdZ xZS )BTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriterc                 D    j                  d       t        |   |i |S rO   r  )r;   r   r  r   flush_calleds      r   r   zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flush  %    ##D)w}d5f55r    c                 D    j                  d       t        |   |i |S rO   )rK   r   rM   )r;   r   r  r   write_calleds      r   rM   zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write  r  r    )r#   r$   r%   r   rM   r   )r   r  r  s   @r   r6  r    s    66 6r    r6  rB  r~   rD  T)r.   r  r    r  r{  )
r6  r:  r   rF  r  rM   r  r  r   r  )	r;   r6  r  r   r  rU  r  r  r  s	          @@r   test_bufio_write_throughz*TextIOWrapperTest.test_bufio_write_through  s     &("l	6T00 	6 uc$ik2##EG26 $ 8 {{7#T 	&%)3/TBY%)4"95r    c                    | j                  g       }| j                  |dd      }|j                  d       |j                  d       | j	                  |j
                  d       | j	                  dj                  |j                        d       |j                  d	       | j	                  dj                  |j                        d
       |j                  d       | j	                  |j
                  d       |j                  d       |j                          | j	                  dj                  |j                        d       |j                          |j                  d        | j	                  |j
                  d       |j                  d       |j                          |j                  d        | j	                  |j
                  d       y )NrD  r   rG  r  Tr  r    r  23r  F45rN  )	rp   rF  rM   r(  r   r  r   rD   r   r  s      r   test_reconfigure_write_throughz0TextIOWrapperTest.test_reconfigure_write_through4  sV   nnR sWdC		D)$/#"2"23T:	#"2"23V<	E*%0			#"2"23X>		D)%0	D)		D)$/r    c                    | j                  | j                  d      d      }| j                  t        |j                  d       | j                  | j                  d      d      }| j                  t        |j
                         | j                  | j                  d      d      }| j                  t        |j                         y )Nr  r  r-   r9   )rF  rT  r   r   rt   r  r  s     r   test_read_nonbytesz$TextIOWrapperTest.test_read_nonbytesK  s     t}}S1GD)QVVQ/t}}S1GD)QZZ0t}}S1GD)QVV,r    c                    t        j                  d      }t        j                  |dd      5  | j	                  | j                  d      d      }d d d        | j                  t        j                  d       y # 1 sw Y   +xY w)Nrot13_is_text_encodingT   foor-   r  )	r  r  r   r  rF  r:  r   r   rM   )r;   r   r  s      r   test_illegal_encoderz&TextIOWrapperTest.test_illegal_encoderU  sr     g&u&94@ 	K""4<<#7'"JA	K)QWWe4	K 	Ks   #A::Bc                      fd        } j                  t        |j                  d               } j                  t        |j                                 } j                  t        |j                         fd} |d      } j                  t        |j                  d        |d      } j                  t        |j                  d        |d      } j                  t        |j                  d       y )Nc                      t        j                  d      } d| _        	 j                  j	                  d      dd      }d| _        |S # d| _        w xY w)NquopriTs   aaaaaar   rO  F)r  r  r!  rF  r:  )r&  r  r;   s     r   _make_illegal_wrapperzETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapper`  s_    ]]8,F'+F$1&&t||I'>/3h ' H ,1(H ,1(s   #A 	Ar9   c                       G  fdd      fd}t        j                  d      }t        j                  |d|      5          cd d d        S # 1 sw Y   y xY w)Nc                       e Zd Z fdZy)^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoderc                     S rJ   r&   )r;   getstate_ret_vals    r   r  zgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstatev  s	    ++r    N)r#   r$   r%   r  )r,  s   r   
BadDecoderr*  u  s    ,r    r-  c                             S rJ   r&   )r  r-  s    r   _get_bad_decoderzdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderx  s    !|#r    r&  r  )r  r  r   r  )r,  r/  r&  r-  r'  s   `  @r   _make_very_illegal_wrapperzJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrappert  sQ    , ,$]]8,F""6+?#35 /,./ / /s   AArT   r&   )r9   r~   )r   r   rt   r  )r;   r  r0  r'  s   `  @r   test_illegal_decoderz&TextIOWrapperTest.test_illegal_decoder]  s    	 "#)QVVQ/!#)QZZ0!#)QVV,
		/ 'r*)QVVR0&r*)QVVR0&v.)QVVR0r    c                 l    | j                   j                  }dj                  ||      }t        d|      S )Na  if 1:
            import codecs
            import {iomod} as io

            # Avoid looking up codecs at shutdown
            codecs.lookup('utf-8')

            class C:
                def __init__(self):
                    self.buf = io.BytesIO()
                def __del__(self):
                    io.TextIOWrapper(self.buf, **{kwargs})
                    print("ok")
            c = C()
            )iomodr  -c)r   r#   r  r   )r;   r  r3  codes       r   _check_create_at_shutdownz+TextIOWrapperTest._check_create_at_shutdown  s<        U62 	  d++r    c                     | j                         \  }}}|r+| j                  | j                  |j                                y | j	                  d|j                         j                                y )Nok)r6  r  shutdown_errorr  r   stripr;   rcoutr  s       r   (test_create_at_shutdown_without_encodingz:TextIOWrapperTest.test_create_at_shutdown_without_encoding  sT    557C MM$--szz|<T3::<#5#5#78r    c                     | j                  dd      \  }}}| j                  |       | j                  d|j                         j	                                y )Nr  r  r  r8  )r6  r  r   r  r:  r;  s       r   %test_create_at_shutdown_with_encodingz7TextIOWrapperTest.test_create_at_shutdown_with_encoding  sP    55w=E 6 GCszz|1134r    c                     t        d      }| j                  |d      }t        |j                               j	                         }| j                  |j                  d      |j                  d             y )Ns   Just some random string
r  r   )MemviewBytesIOrF  _to_memoryviewr  r  r   rt   r  )r;   r+   r  	bytes_vals       r   test_read_byteslikez%TextIOWrapperTest.test_read_byteslike  s]    78q'*
 $AJJL199;	i&6&6w&?@r    c                      G d dt               }t        d      D ]  }	 | j                   |       d        d |_        | j                   |       d      }y # t        $ r Y Jw xY w)Nc                       e Zd Zd Zd Zd Zy),TextIOWrapperTest.test_issue22849.<locals>.Fc                      yrO   r&   r:   s    r   rW   z5TextIOWrapperTest.test_issue22849.<locals>.F.readable      tr    c                      yrO   r&   r:   s    r   rP   z5TextIOWrapperTest.test_issue22849.<locals>.F.writable  rJ  r    c                      yrO   r&   r:   s    r   rY   z5TextIOWrapperTest.test_issue22849.<locals>.F.seekable  rJ  r    N)r#   r$   r%   rW   rP   rY   r&   r    r   FrH    s    +++r    rM  r  r  r-   c                      yrA   r&   r"  s    r   r  z3TextIOWrapperTest.test_issue22849.<locals>.<lambda>  r  r    )objectr  rF  ru  r`   )r;   rM  r  r  s       r   test_issue22849z!TextIOWrapperTest.test_issue22849  sq    	, 	,
 r 	A""13"9	 qsW5	  s   A	A&%A&c                 h    | j                  | j                  d            }|j                  d       y )N   testr/  r-   )rF  r:  r(  )r;   wrappers     r   test_reconfigure_localez)TextIOWrapperTest.test_reconfigure_locale  s,    $$T\\'%:;X.r    c                    dj                  d      dj                  d      z   }| j                  |      }| j                  |dd      }| j                  |j	                         d       | j                  | j                        5  |j                  d       d d d        | j                  | j                        5  |j                  d 	       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)
N   abcé
r     déf
utf8r   rG  r  r-   rH  )r  r:  rF  r   r  r   r   r(  )r;   r   r  ra  s       r   test_reconfigure_encoding_readz0TextIOWrapperTest.test_reconfigure_encoding_read  s     !!(+j.?.?.GGll4   x F5t889 	.OOWO-	.t889 	*OODO)	* 	*	. 	.	* 	*s   C:C"C"C+c                    | j                         }| j                  |dd      }|j                  d       |j                  d       |j                  d       |j	                          | j                  |j                         d       y )	NrD  r   rG  foo
r  r-   r  s   foo
é
)r:  rF  rM   r(  r   r   r  r	  s      r    test_reconfigure_write_fromasciiz2TextIOWrapperTest.test_reconfigure_write_fromascii  sl     lln  w E		'-		(		);<r    c                 d   | j                         }| j                  |dd      }|j                  d       |j                  d       | j	                  |j                         d       |j                  d       |j                          | j	                  |j                         d	       | j                         }| j                  |d
d      }|j                  d       |j                  d       |j                  d       |j                          | j	                  |j                         d       y )Nr  r   rG  rW  r  r-   s   abc
rX  s
   abc
déf
rD  abc
r  s	   abc
déf
)r:  rF  rM   r(  r   r  r   r	  s      r   test_reconfigure_writez(TextIOWrapperTest.test_reconfigure_write  s    lln  x F		+)6		*		)AB lln  w E		'-		*		)=>r    c                 2   | j                         }d |_        d |_        | j                  |dd      }|j	                  d       |j                  d       |j	                  d       |j                          | j                  |j                         d	       y )
Nc                       yr   r&   r&   r    r   r  zGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>  r  r    rD  r   rG  r`  r  r-   rX  s   abc
﻿déf
)	r:  rY   r]   rF  rM   r(  r   r   r  r	  s      r   #test_reconfigure_write_non_seekablez5TextIOWrapperTest.test_reconfigure_write_non_seekable  sz    lln$  w E		'-		*		 	*JKr    c                 d   | j                  | j                         ddd      }|j                  d        | j                  |j                  d       | j                  |j
                  d       |j                  d       |j                  d       | j                  |j                  d       | j                  |j
                  d       |j                  d	       | j                  |j                  d       | j                  |j
                  d       |j                  d
       |j                  dd        | j                  |j
                  d       |j                  d       | j                  |j                         d       | j                  |j                         j                         d       y )NrD  r=  r   r-   LF
r  rZ  rb  rw  CRLF
r  rG  r  r   zLF
CRLF
s	   LF
CRLF
)rF  r:  r(  r   r.   rw  rM   r]   rt   r  r  r  s     r   test_reconfigure_defaultsz+TextIOWrapperTest.test_reconfigure_defaults  s<     )TJ&w/Y/		&'w/Y/x(w/X.		($7X.\2..0/Br    c                 	   | j                  | j                         ddd      }| j                  t              5  |j	                  d       d d d        | j
                  r`| j                  t              5  |j	                  d       d d d        | j                  t              5  |j	                  d       d d d        | j                  t              5  |j	                  d       d d d        | j
                  r0| j                  t              5  |j	                  d       d d d        | j                  t              5  |j	                  d	       d d d        | j                  t              5  |j	                  d	       d d d        | j                  t              5  |j	                  d
	       d d d        | j
                  s0| j                  t              5  |j	                  d	       d d d        | j
                  r| j                  t              5  |j	                  t                      d d d        | j                  t              5  |j	                  ddz         d d d        | j                  t              5  |j	                  t                      d d d        | j                  t              5  |j	                  ddz         d d d        | j                  t              5  |j	                  t               t                      d d d        | j                  |j                  d       | j                  |j                  d       | j                  |j                   d       | j                  |j"                  d       |j	                  ddddd       | j                  |j                  d       | j                  |j                  d       | j                  |j                   d       | j                  |j"                  d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   TxY w# 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)NrD  r=  rH  rT   r-   r  zlocale rg  rZ  xyzr	  r%  r~   rq  r  )r  r  Fr  rb  r  T)r.   rw  rH  r  r  )rF  r:  r   r   r(  r
  r  r  r   r  r6   r  r   r.   rw  r  r  r  r  s     r   test_reconfigure_errorsz)TextIOWrapperTest.test_reconfigure_errors  s     )TJy) 	)OORO(	)99""#56 323"";/ 545 y) 	'OO2O&	'99""#56 1x01 y) 	(OOBO'	(z* 	.OOHO-	.z* 	+OOEO*	+yy"":. 0/099""#45 ;xz:;""=1 8q$w78""#45 :hj9:""=1 7ag67""#45 :xz.6j   :: 	w/Y/c((%0c''/(F'+4 	 	Ax0X.c(($/c''.c	) 	)3 35 5	' 	'1 1	( 	(	. 	.	+ 	+0 0; ;8 8: :7 7: :s   P4P$P,P9Q Q0Q  Q-Q:RRR!<R./$R;PP),P69QQQ Q*-Q7:RRR!R+.R8;Sc                    | j                  d      }| j                  |dd      }|j                  d        | j                  |j	                         d       | j                  d      }| j                  |dd      }|j                  d       | j                  |j	                         d       | j                  d      }| j                  |dd	      }|j                  d       | j                  |j	                         d
       | j                  d      }| j                  |dd      }|j                  d	       | j                  |j	                         d       | j                  d      }| j                  |dd	      }|j                  d       | j                  |j	                         d       | j                  | j                         dd	      }|j                  d        |j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  d	       |j                  d       |j                  d       |j                  d       dt        j                  z   dz   }| j                  |j                         j                         j                  d      |       y )Ns   CREOFrD  r   rZ  zCR
r  zCRs	   CRLF
EOFrH  zCRLF
s	   LF
CREOFzLF
CRs   CRCRLF
EOFr  z	CRCRLF
zlinesep
rf  rh  rd  zLF
LF
CRCRLF
)r:  rF  r(  r   r  rM   r%  rd  r  r  r  )r;   r  ra  r  s       r   test_reconfigure_newlinez*TextIOWrapperTest.test_reconfigure_newlineM  sM   ll:&  gt <%0ll:&  gt <#0ll>*  gt <%4ll>*  gt <%4ll-.  gt <'8  $ G%		+#		&%		&%		&'		(rzz),BB..077@(Kr    c                 R   | j                  | j                  d      d      }|j                  d       |j                          |j                          | j                  | j                  d      d      }|j                  d       |j	                  d       |j                          y )NrS  rD  r-   r9   r"  )rF  r:  rt   r`   rM   r  s     r   test_issue25862z!TextIOWrapperTest.test_issue25862q  sz    t||G4wG	q			t||G4wG	q			r    c                 0   | j                  | j                  d      | j                               }| j                  |      }|j                         }| j	                  |d       |j                  |       | j	                  ||j                         z   d       y )Ns   foo
bar
r]  zfoo
bar
)r=  r:  rF  r  r   rM   )r;   pr2   r   s       r   test_issue35928z!TextIOWrapperTest.test_issue35928|  st    ] ;T\\^Lq!jjlg&	qzz|+\:r    N)Wr#   r$   r%   r   r   r8  r=  r  r  r  r  r#  r)  r  r  rZ  r  	utf8_moder7  r;  r?  rB  rZ  rb  rg  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   
no_tracingr   r  r  r  r  r  r  r   r#  r
  r  r  r  r  r#  r1  r6  r>  r@  rE  rQ  rU  r[  r^  ra  rd  ri  rl  rn  rp  rs  r&   r    r   r  r  
  s   >+!=F	(2*((	516 X__SYY((*AB+ C+(	"4$50(IT< 7$&,.B:),(5"	-8^J(-*=	/44=
1
1	11/<EEE2 0002G 3 G"!"!(!*1B
	8A6@0.-5&1P,*95	A6/
*
=?*LC.3/j"LH	;r    r  c                   ,     e Zd ZdZ fdZ fdZ xZS )rB  zOA BytesIO object whose read method returns memoryviews
       rather than bytesc                 4    t        t        | 	  |            S rJ   )rC  r   rQ  r;   len_r   s     r   rQ  zMemviewBytesIO.read1  s    egmD122r    c                 4    t        t        | 	  |            S rJ   )rC  r   rt   rx  s     r   rt   zMemviewBytesIO.read  s    egl4011r    )r#   r$   r%   ri   rQ  rt   r   r   s   @r   rB  rB    s    32 2r    rB  c                     t        j                   d      }t        |       t        |       |j                  z  z
  }|j                  | d|        t	        |      S )z6Convert bytes-object *buf* to a non-trivial memoryviewr  N)r)   r   itemsize	frombytesr   )rc   arridxs      r   rC  rC    sI     ++c
C
c(SX,
,CMM#ds)c?r    c                   2    e Zd ZeZdZd Zd Zd Zd Zd Z	y)CTextIOWrapperTest$LookupError: unknown encoding: asciic                 x   | j                  d      }| j                  |d      }| j                  |d      }| j                  t        |j
                  |dd       | j                  t        |j                         | j                  j                  | j                        }| j                  t        t        |       y )Nr  rq  r  r-   r  rG  )
r:  r2  rF  r   r   rH   rt   r<  ru  r  r  s       r   r  z&CTextIOWrapperTest.test_initialization  s    LL)4(q73*ajj!gwW*aff-&&t'9'9:)T1-r    c                 H   t        j                  dt        f      5  | j                  t        j
                  d      }| j                  |      }| j                  |d      }|j                  d       ||_	        t        j                  |      }~t        j                          d d d        | j                          |       | j                  t        j
                  d      5 }| j!                  |j#                         d       d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr  r  rD  r-   456defr  s   456def)r   r  r  r&  r   r   r6  rF  rM   r"  r  r  r   r  r  r/   r   rt   )r;   r  r(   r  r  r2   s         r   r  z*CTextIOWrapperTest.test_garbage_collection  s     ++R,AB 	!KK	 0 0$7E##E*A""1w"7AGGHACQB 	! 	"$#YYy''. 	2!QVVXy1	2 	2	! 	!	2 	2s   BD"!DDD!c                 l   t        d      D ]  }| j                  | j                         | j                               }| j                  |d      }| j                  | j                         | j                               }| j                  |d      }||_        ||_         t        j                          y )Nrq  rD  r-   )r  r=  rp   rF  buddyr   r  )r;   r  b1t1b2t2s         r   !test_rwpair_cleared_before_textioz4CTextIOWrapperTest.test_rwpair_cleared_before_textio  s     t 	A$$T^^%5t~~7GHB##B#9B$$T^^%5t~~7GHB##B#9BBHBH	 	r    c                     | j                  | j                         d      }| j                  t              5  |`d d d        y # 1 sw Y   y xY wr  )rF  r:  r   r  r1   r  s     r    test_del__CHUNK_SIZE_SystemErrorz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemError  sE    t||~@~. 		 	 	s   AAc                 J   d G fdd| j                         } |       }| j                  |d      }|j                  |j                  d       |j                  d       | j	                  g |j
                         | j                  t              5  |j                  dd	z   z         d d d        | j	                  d
g|j
                         |j                  d       |j                  dz         | j	                  d
ddz  g|j
                         y # 1 sw Y   nxY w)Nr(  c                   "     e Zd Z fdZ xZS )<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOc                 J    t        |      kD  rt        t        |   |      S rJ   )r   r  r   rM   )r;   r   r   r  s     r   rM   zBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write  s$    t9z)&&w}T**r    )r#   r$   r%   rM   r   )r   r  s   @r   MockIOr    s    + +r    r  rD  r-   r  r  r"  r9   r  ghir  r  )rp   rF  r1   rM   r   rD   r   r  )r;   r  rc   r  r  s       @r   test_internal_buffer_sizez,CTextIOWrapperTest.test_internal_buffer_size  s     
	+T^^ 	+ hsW5]]
		S--.|, 	(GGCA&'	( 	)c&6&67		J)VT*_=s?O?OP	( 	(s   DD"N)
r#   r$   r%   r   r9  r  r  r  r  r  r&   r    r   r  r    s&    	B;N.2"
Qr    r  c                       e Zd ZeZdZy)PyTextIOWrapperTestr  N)r#   r$   r%   r   r   r9  r&   r    r   r  r    s    	B;Nr    r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)IncrementalNewlineDecoderTestc                       fd} |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        j                  t        j                  dd	
       j                           |dd        |dd        |ddd	
        |ddd	
        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |dd       y )Nc                     j                         }j                   j                  | fi ||       j                  |       j                   j                  | fi ||       y rJ   )r  r   r  r  )r(   r   r  r  decoderr;   s       r   _check_decodezPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decode  s_    $$&E^W^^A88!<U#^W^^A88!<r    s   袈u   袈   r        r    T)r  r  r   r\  rB  z
a   
z

s   
as   袈
r  s   袈)r   UnicodeDecodeErrorr  r  )r;   r  r  s   `` r   check_newline_decoding_utf8z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8  s   	= 	ox0gr"gr"gx(gr"gr"gx(gr",gnncNeT"eR c4t,eT.eR dE"i(eR eT"fe$):6ox0eT"'2eT"r    c                    g |" t        j                  |             fd}nd fd}| j                  j                  d         |d       | j                  j                  d        |d       | j                  j                  d        |d       | j                  j                  d        |d       | j                  j                  d	        |d       | j                  d
j	                        d       j                          d}!j                          j                  |      }| j                  j                  |      d       | j                  j                  d        y )Nc                     j                  |       D ],  }j                  j                  t        |g                   . y rJ   )r  rK   r  r   )r   r(   r  encoderrn  s     r   _decode_bytewisezNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewise  s6     * >AMM'..s"<=>r    c                 T    | D ]"  }j                  j                  |             $ y rJ   )rK   r  )r   r  r  rn  s     r   r  zNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewise!  s'     5AMM'.."345r    zabc
r   z
abc)r   r  zabcr  )rH  r   r  r  zabc

abcabc
abcabc)r  getincrementalencoderr   newlinesr   r  r  r  )r;   r  r.   r  r  r  rn  s    `   @@r   check_newline_decodingz4IncrementalNewlineDecoderTest.check_newline_decoding  s@   <f228<>G>
 G5 	))40#))40!))>:!))>:))+?@!*ABMMONN5)E.6))40r    c                 Z   d}|D ]E  }|xr  t        j                  |             }| j                  |d      }| j                  ||       G  t        j                  d             }| j                  |d      }| j	                  |       | j                  t        |j                  d       y )N)	Nr  r,   rI  rJ  rK  rL  rM  rN  T	translater  rT   )r  getincrementaldecoderr  r  r  r   r   r  )r;   rR  r  r  s       r   test_newline_decoderz2IncrementalNewlineDecoderTest.test_newline_decoder8  s    
	  	6CA?f::3?AG44W4MG''5	6 8&..w7900D0I((1)W%5%5r:r    c                 |      fd} j                  d d      } ||        j                  d d      } ||       y )Nc                 2   j                  | j                  d        j                  | j                  d      d       j                  | j                  d        j                  | j                  d      d       j                  | j                  d        y )Nu   ഀu   ਀)r   r  r  )decr;   s    r   _checkz@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkK  sq    S\\40SZZ18<S\\40SZZ18<S\\40r    Fr  T)r  )r;   r  r  s   `  r   test_newline_bytesz0IncrementalNewlineDecoderTest.test_newline_bytesI  sB    	1 ,,TU,Cs,,TT,Bsr    c                 (   dD ]?  } t        j                  d             }| j                  ||      }| j                  |       A  t        j                  d             }| j                  |d      }| j	                  |j                  d      d       y )N)r0  r   r9   r~   r  r   r  r  z
)r  r  r  r  r   r  )r;   r  r  s      r   test_translatez,IncrementalNewlineDecoderTest.test_translateV  s    ' 	6I;f227;=G44WiHG,,W5	6 8&..w7900A0F	2H=r    N)r#   r$   r%   r  r  r  r  r  r&   r    r   r  r    s    (#T1B;">r    r  c                   0    e Zd Zej                  d        Zy)CIncrementalNewlineDecoderTestc                 R   | j                   j                  | j                         }| j                  t        |j                  d       | j                  t        |j
                         | j                  t        |j                  d       | j                  t        |j                         y )N   bar)r"  r   )r  r<  r   r   r  r  r  r  )r;   uninitializeds     r   r=  z1CIncrementalNewlineDecoderTest.test_uninitializeda  s}    66>>**,*m&:&:FC*m&<&<=*m&<&<kJ*m&9&9:r    N)r#   r$   r%   r   r1  r=  r&   r    r   r  r  `  s    ; ;r    r  c                       e Zd Zy)PyIncrementalNewlineDecoderTestNr"   r&   r    r   r  r  k  rl   r    r  c                   V   e Zd ZdZdZdZd Zd Zd Zd Z	 e
j                  ej                  d       e
j                   eed      d	      d
               Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e
j                   eed      d	      d        Zd Z e
j                  ej                  d      d        Z e
j                  ej                  d      d        Z e
j                   eed      d       e
j                   eed      d	      d               Zd Z d Z!d Z"d Z#d Z$d  Z%y)!
MiscIOTestNr&   c                 J    t        j                  t         j                         y rJ   r   r:   s    r   r   zMiscIOTest.tearDownx  r   r    c                     t        j                  | | j                  | j                  | j                  | j
                         y )N)extranot_exported)r   check__all__r   name_of_moduleextra_exportedr  r:   s    r   test___all__zMiscIOTest.test___all__{  s2    T477D,?,?#'#6#6*.*;*;	=r    c                    | j                  t        j                  dd      }| j                  |j                  d       |j                          | j                  t        j                  dd      }| j                  |j                  d       | j                  |j                  j                  d       | j                  |j                  j                  j                  d       | j                  |j                         dd	      }| j                  |j                  d       | j                  |j                  j                  d       | j                  |j                  |j                                | j                  |j                  j                  |j                                |j                          |j                          y )
Nr  r   r  r}  r  r-   ro  Fr  )
r/   r   r   r   r  r   r   r  rU   r5  )r;   r2   gs      r   test_attributeszMiscIOTest.test_attributes  s-   IIi&&I:&		IIi&&wI?D1E2**E2IIahhj$I6T*T*QXXZ0QXXZ0				r    c                     dD ]e  }| j                  t              5 }| j                  t        j                  |       d d d        | j                  dt        j                               g y # 1 sw Y   1xY w)N)UrUzr+Uzinvalid mode)r   r   r/   r   r   r  r'  r(  )r;   r  r*  s      r   test_removed_u_modezMiscIOTest.test_removed_u_mode  sa    & 	=D"":. 2"		)**D12MM.#bll*;<	=2 2s   !A,,A5	r   r!  r"  c                 6   t        j                         \  }}| j                  t         j                  |       | j	                  |dd      }| j                  |j                         t
        j                  dk7  r | j                  |j                                y y )Nr  r  r-   r  )	r%  r!  r,  r   r/   rZ  r[  r  rY   )r;   r+   r  r2   s       r   test_open_pipe_with_appendz%MiscIOTest.test_open_pipe_with_append  sp     wwy1!$IIawI/  <<7"QZZ\* #r    c                    ddiddidddddddddddidd	iddddddd	dddd
iddid
ddd
dddddfD ]  }d|d   vrd|d<    | j                   t        j                  fi |}|j                          | j	                  t
        |j                         | j	                  t
        |j                         | j	                  t
        |j                         | j	                  t
        |j                         t        |d      r!| j	                  t
        |j                  d       | j	                  t
        |j                         t        |d      rA| j	                  t
        |j                  d       | j	                  t
        |j                         t        |d      r | j	                  t
        |j                         t        |d      r*| j	                  t
        |j                  t!        d             t        |d      r*| j	                  t
        |j"                  t!        d             | j	                  t
        |j$                         | j	                  t
        |j&                         | j	                  t
        |j&                  d       | j	                  t
        |j(                  d       | j	                  t
        |j*                         | j	                  t
        |j,                         | j	                  t
        |j.                  d|d   v rdnd       | j	                  t
        |j0                  g        | j	                  t
        t2        |        y )Nr  r  r  r9   r  r  r~   r   r+   r  r}  r  r(   r  r.   rN  rQ  r5  re  rf   r  r    r  )r/   r   r   r   r   r   r   rU   rb  __iter__r  rN  rt   rQ  re  rf   r   r  r  r  r]   r`   rh   rM   r  r~  )r;   r  r2   s      r   test_io_after_closezMiscIOTest.test_io_after_close  s   1-1-A.1-1-A.A.A.Q/ .	3F" &.(%,z"		)**5f5AGGIj!''2j!((3j!((3j!**5q&!!!*affa8j!&&1q'"!!*aggt<!!*agg6q)$!!*aii8q*%!!*ajj)D/Jq+&!!*akk9T?Kj!**5j!++6j!++q9j!&&!4j!&&1j!**5j!''%(F6N%:cDj!,,;j$2].	3r    c                      G d dt               } |d      }| j                  d|      }||_        ||_        t	        j
                  |      }~~t        j                          | j                   |       |       y )Nc                       e Zd Zy)*MiscIOTest.test_blockingioerror.<locals>.CNr"   r&   r    r   Cr    s    r    r  r  r9   )	r'  r   r(   r  r  r  r   r  r  )r;   r  r  r(   r  s        r   test_blockingioerrorzMiscIOTest.test_blockingioerror  sg    	 	bE  A&[[^q"$#r    c                 T   | j                  | j                  t        j                         | j                  | j                  t        j                         | j                  | j
                  t        j                         | j                  | j                  t        j                         y rJ   )r
  r|  r  ABCMetarX  rB  rW  r:   s    r   	test_abcszMiscIOTest.test_abcs  sd    dkk3;;7dnnckk:d113;;?doos{{;r    c                    | j                  t        j                  dd      5 }| j                  ||j                         | j                  ||j
                         | j                  ||j                         | j                  ||j                         d d d        | j                  t        j                  d      5 }| j                  ||j                         | j                  ||j
                         | j                  ||j                         | j                  ||j                         d d d        | j                  t        j                  dd      5 }| j                  ||j                         | j                  ||j
                         | j                  ||j                         | j                  ||j                         d d d        y # 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   y xY wNr  r   r  r  r  r-   )	r/   r   r   r
  r|  rX  assertNotIsInstancerB  rW  )r;   	abcmoduler2   s      r   _check_abc_inheritancez!MiscIOTest._check_abc_inheritance  s   YYy''Y; 	>q!!!Y%5%56!!!Y%8%89$$Q	(@(@A$$Q	(<(<=		>
 YYy''. 	>!!!!Y%5%56$$Q	(;(;<!!!Y%=%=>$$Q	(<(<=		>
 YYy''wY? 	;1!!!Y%5%56$$Q	(;(;<$$Q	(@(@A!!!Y%9%9:		; 	;	> 	>
	> 	>
	; 	;s&   A1G<A1GA1G*GG'*G3c                 &    | j                  |        y rJ   )r  r:   s    r   test_abc_inheritancezMiscIOTest.test_abc_inheritance  s    ##D)r    c                 .    | j                  t               y rJ   )r  r   r:   s    r   test_abc_inheritance_officialz(MiscIOTest.test_abc_inheritance_official  s     	##B'r    c                    t        |i |}t        |      }| j                  t              5 }d }t	        j
                          d d d        | j                  |t        j                  j                  d                y # 1 sw Y   <xY wrA   )
r/   r  assertWarnsr  r   r  r  r'  warningr   )r;   r   r  r2   r+   r*  s         r   _check_warn_on_deallocz!MiscIOTest._check_warn_on_dealloc  sr    $!&!Go. 	!"A 	! 	aRZZ__Q/01	! 	!s   A>>Bc                     | j                  t        j                  dd       | j                  t        j                  d       | j                  t        j                  dd       y r  )r  r   r   r:   s    r   test_warn_on_dealloczMiscIOTest.test_warn_on_dealloc  sN    ##I$4$4da#H##I$4$4d;##I$4$4cG#Lr    c                 P   g fd}| j                  |       t        j                         \  }}||fz   | j                  |g|i | t        j                         \  }}||fz  t	        j
                  |       5  t        |g|ddi| d d d        y # 1 sw Y   y xY w)Nc                      D ]  } 	 t        j                  |         y # t        $ r(}|j                  t        j                  k7  r Y d }~Hd }~ww xY wrJ   )r%  r   r   r7  r8  )r  rv  fdss     r   cleanup_fdsz9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fds  sL     HHRL  ww%++- .s    	AAAr  F)r,  r%  r!  r  r   rB  r/   )r;   r   r  r  r+   r  r  s         @r   _check_warn_on_dealloc_fdz$MiscIOTest._check_warn_on_dealloc_fd  s    	 	$wwy1q!t###A777wwy1q!t66t< 	43T353F3	4 	4 	4s   BB%c                 r    | j                  dd       | j                  d       | j                  dd       y )Nr  r   r  r+   r  r-   )r  r:   s    r   test_warn_on_dealloc_fdz"MiscIOTest.test_warn_on_dealloc_fd'  s6    &&tq&9&&t,&&sW&=r    c                    d}ddiddidddddiddiddddd	idd
id
ddf	D ]  }d|d   vrd|d<   t        t        j                  dz         D ]}  }| j                  ||      5   | j                  t
        j                  fi |5 }| j                  t        |      5  t        j                  ||       d d d        d d d        d d d          y # 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   xY w)Nzcannot pickler  r  r  r   r  r+   r  r}  r  r(   r  r.   r9   )protocolr  )
r  pickleHIGHEST_PROTOCOLrU  r/   r   r   r^  r   dumps)r;   r  r  r  r2   s        r   test_picklingzMiscIOTest.test_pickling.  s   A.A.Q/
 	6F &.(%,z"!&"9"9A"=> 6\\8F\C 6"9#3#3>v> 6!!33IsC 6"LLH5666 66	6 6 66 66 6s<   $"C)C	C4C	<C)CC	C&"C))C2c                 &    | j                  d       y )Ni @  _test_nonblock_pipe_writer:   s    r   test_nonblock_pipe_write_bigbufz*MiscIOTest.test_nonblock_pipe_write_bigbufD  s     	&&w/r    c                 &    | j                  d       y )Nr5  r  r:   s    r   !test_nonblock_pipe_write_smallbufz,MiscIOTest.test_nonblock_pipe_write_smallbufJ  s     	&&t,r    set_blockingz(os.set_blocking() required for this testc                    g }g }t        j                         \  }}t        j                  |d       t        j                  |d       | j                  |dd|      }| j                  |dd|      }|5  |5  dD ]B  }	 d}		 t	        |	dz  d	z   g      |z  }
|j                  |
       |j                  |
       |	d
z  }	= 	 	 |j                          	 |t        |j                  d       z  }d d d        d d d        dj!                  |      dj!                  |      }}| j                  ||       | j#                  |j$                         | j#                  |j$                         y # | j                  $ r}| j                  |j                  d   t        j                         | j                  |j                  d   |j                         |d   d |j                   |d<   |j                  |j                                d}
|j                  |
       |j                  |
       Y d }~d }~ww xY w# | j                  $ r}| j                  |j                  d   t        j                         | j                  |j                  d   |j                         | j                  |j                  d       |j                  |j                                Y d }~nd }~ww xY w # 1 sw Y   xY w# 1 sw Y   xY w)NFr  T)r  r  r  r  )r  I   i  r      a   r9   r~   r   s   BLOCKEDr    )r%  r!  r   r/   r   rK   rM   r   r   r   r7  EAGAINr  rt   r   iterr   r  r   )r;   r  sentreceivedr+   r  rfwfr  r  r  rv  s               r   r  z$MiscIOTest._test_nonblock_pipe_writeP  s    wwy1
5!
5! YYqtTWYEYYqtTWYE 	, 	,# %%A#QVb[M2Q6C(Q	 %$ /HHJ RWWd++H;	, 	,> $();hx(		"		"1 ++ %$$QVVAY=$$QVVAY0D0DE#Bx(=)=)=>DHOOBGGI.$CHHSMKK$$% ++ /$$QVVAY=$$QVVAY0D0DE$$Q%9%91=OOBGGI..	/	 '	, 	, 	, 	,s{   4K-7K >A E&>K H1K +K-&H.	5B.H)	#K )H.	.K 1K BKK KK  K*	%K--K7c                     | j                  t        j                  dd      5  	 d d d        | j                  t        | j                   t        j                  dd       y # 1 sw Y   <xY w)Nr  r  r-   r"  )r/   r   r   r   FileExistsErrorr:   s    r   test_create_failzMiscIOTest.test_create_fail  sV    YYy''wY? 		/499i6F6FV]^	 	s   A  A)c                 :   | j                  t        j                  d      5 }|j                  d       d d d        | j                  t        j                  d      5 }| j	                  d|j                                d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nxbr  r  r  r  s     r   test_create_writeszMiscIOTest.test_create_writes  s    YYy''. 	!GGG	YYy''. 	0!Waffh/	0 	0	 		0 	0r  c                 h    | j                  t        | j                  t        j                  dd       y )Nzrwax+r  r-   r  r:   s    r   test_open_allargszMiscIOTest.test_open_allargs  s&    *dii1A1A7U\]r    c                     | j                   j                  }t        }d}t        j                  d| d|d|d|d|d|d|d	|d
      }t        ddd|      }| j                  |j                  d|       y )NzBoom, Shaka Laka, Boom!z)
            import sys
            from zC import open, TextIOWrapper

            try:
                open(z, encoding=z)
            except LookupError:
                pass
            else:
                sys.exit(21)

            try:
                open(z	, errors=z})
            except LookupError:
                pass
            else:
                sys.exit(22)

            fp = open(za, "rb")
            with fp:
                try:
                    TextIOWrapper(fp, encoding=z)
                except LookupError:
                    pass
                else:
                    sys.exit(23)

                try:
                    TextIOWrapper(fp, errors=z)
                except LookupError:
                    pass
                else:
                    sys.exit(24)

            sys.exit(10)
        -Xdevr4  r  )r   r#   r0   textwrapdedentr	   r   r<  )r;   modr  rF  r5  procs         r   test_check_encoding_errorsz%MiscIOTest.test_check_encoding_errors  s     gg+ $  \WK 8 \7+ 6  l #0 18{ ;. /6[ 9	9#  #H %T5$="d+r    c           	         | j                   j                  }t        }t        j                  d| d|d|d      }t        ddd|      }|j                  j                         }| j                  t        |      d       | j                  |d	   j                  d
             | j                  |d   j                  d             y )Nz(            import sys
            from zN import open, TextIOWrapper
            import pathlib

            with open(zJ) as f:           # line 5
                pass

            pathlib.Path(z ).read_text()  # line 8
        r  warn_default_encodingr4  r~   r   s   <string>:5: EncodingWarning: r9   s   <string>:8: EncodingWarning: )r   r#   r0   r  r  r   r  r`  r   r   r  r\  )r;   r  r  r5  r  rc  s         r   test_check_encoding_warningz&MiscIOTest.test_check_encoding_warning  s     gg $   l # # &		  	  &=tTJ88&&(X*QK""#CD	FQK""#CD	Fr    c                     d}t        ddd|      }| j                  d|j                  j                                t        ddd|      }| j                  d|j                  j                                y )Nz(import io; print(io.text_encoding(None))r  zutf8=0r4  s   localezutf8=1s   utf-8)r   r   r=  r:  )r;   r5  r  s      r   test_text_encodingzMiscIOTest.test_text_encoding  s_     :hd;DHHNN$45hd;488>>#34r    )&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    r   r  r  q  s    NNL+=
$= X__F XV,.BC	+ D	+/3b$<;"*(
2M
4& XV,.BC> D>6, X__F00 X__F-- X^4CEXV,.BC0# DE0#d_0^+,ZF.	5r    r  c                       e Zd ZeZdZdZd Zd Z ej                          e
j                  d      d               Z ej                          e
j                  d      d               Zy)	CMiscIOTest)r   r  )r   c                      G d d| j                   j                        } |       }t        d      }| j                  t        |j
                  |       y )Nc                       e Zd ZddZy)<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderc                     ddz  S )Nr  i@B r&   rs   s     r   rt   zACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.read  s    e|#r    Nr  ru   r&   r    r   	BadReaderr$    s    $r    r&  r~   )r   rB  r   r   r   rf   )r;   r&  r  r(   s       r   test_readinto_buffer_overflowz)CMiscIOTest.test_readinto_buffer_overflow  s@    	$.. 	$ aL*enna8r    c                 >   dj                  t                     }t        d|      \  }}|j                  j	                         }|j
                  dk7  r,dj                  t                     }| j                  ||       y | j                  |j                  d             y )Na  if 1:
            import sys
            import time
            import threading
            from test.support import SuppressCrashReport

            file = sys.{stream_name}

            def run():
                while True:
                    file.write('.')
                    file.flush()

            crash = SuppressCrashReport()
            crash.__enter__()
            # don't call __exit__(): the crash occurs at Python shutdown

            thread = threading.Thread(target=run)
            thread.daemon = True
            thread.start()

            time.sleep(0.5)
            file.write('!')
            file.flush()
            r4  r   zFatal Python error: _enter_buffered_busy: could not acquire lock for <(_io\.)?BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!)	
format_maplocalsr
   r  r  r<  r  r  r:  )r;   stream_namer5  r   r  r  patterns          r   &check_daemon_threads_shutdown_deadlockz2CMiscIOTest.check_daemon_threads_shutdown_deadlock  s    0 
68$1 	2 &dD1Qggnn66Q;) *4FH)=	 
 S'*SYYt_-r    walltimec                 &    | j                  d       y )Nstdoutr-  r:   s    r   ,test_daemon_threads_shutdown_stdout_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlock       	33H=r    c                 &    | j                  d       y )Nstderrr1  r:   s    r   ,test_daemon_threads_shutdown_stderr_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlock"  r3  r    N)r#   r$   r%   r   r  r  r'  r-  r   r  r   r  r2  r6  r&   r    r   r!  r!    s    	B N'N9'.R 1002Wz*> + 3> 1002Wz*> + 3>r    r!  c                       e Zd ZeZdZdZdZy)PyMiscIOTest)_pyior   )r   	open_code)valid_seek_flagsN)r#   r$   r%   r   r   r  r  r  r&   r    r   r8  r8  (  s    	B"N4N&Lr    r8  ntz%POSIX signals required for this test.c                   :   e Zd Zd Zd Zd Zd Ze ej                   e
ed      d      d               Ze ej                   e
ed      d      d               Ze ej                   e
ed      d      d	               Zej                   d
        Zed        Zed        Zd Ze ej*                  d      d               Ze ej*                  d      d               Zd Ze ej*                  d      d               Ze ej*                  d      d               Zy)SignalsTestc                 j    t        j                   t         j                  | j                        | _        y rJ   )signalSIGALRMalarm_interruptoldalrmr:   s    r   r   zSignalsTest.setUp2  s    }}V^^T5I5IJr    c                 `    t        j                   t         j                  | j                         y rJ   )r@  rA  rC  r:   s    r   r   zSignalsTest.tearDown5  s    fnndll3r    c                     ddz   y r8   r&   )r;   sigframes      r   rB  zSignalsTest.alarm_interrupt8  r=   r    c                   
 t        j                          g 
fd}t        j                  |      }d|_        t        j                         \  
}d|d<   |t         j                  t        |      z  dz   z  }	  | j                  j                  |fi |}t        t        d      rwt        j                  t        j                  t        j                  g       |j!                          t        j                  t        j"                  t        j                  g       n|j!                          t        j$                  d       	 | j'                  t(        |j*                  |       t        j$                  d       |j-                          j/                  t        j0                  
d             | j3                  |dd |dd	 g       t        j4                  |       t        j4                  
       	 |j5                          y
# t        j$                  d       |j-                          w xY w# t6        $ r(}	|	j8                  t8        j:                  k7  r Y d
}	~	y
d
}	~	ww xY w# t        j4                  |       t        j4                  
       	 j5                          w # t6        $ r(}	|	j8                  t8        j:                  k7  r Y d
}	~	w d
}	~	ww xY wxY w)zCheck that a partial write, when it gets interrupted, properly
        invokes the signal handler, and bubbles up the exception raised
        in the latter.c                  T    t        j                  d      } j                  |        y r   )r%  rt   rK   )r   r+   read_resultss    r   r  z2SignalsTest.check_interrupted_write.<locals>._readY  s     1A"r    ry  TFr  r9   pthread_sigmaskr   r~   N)r   r  r   r-  daemonr%  r!  PIPE_MAX_SIZEr   r   r/   r  r@  rK  	SIG_BLOCKrA  r.  SIG_UNBLOCKr4   r   r  rM   r   rK   rt   r   r   r   r7  r8  )r;   itemr   fdopen_kwargsr  r  r  
large_datawiorv  r+   rJ  s             @@r   check_interrupted_writez#SignalsTest.check_interrupted_write;  s   6 		# E*wwy1#(i W22c$i?!CD
$	$'',,q2M2Cv01&&v'7'7&..9IJ	&&v'9'9FNN;KL	 LLO!!"3SYY
KQ 1.\E!AJa
+CDHHQKHHQK		 Q  77ekk) * HHQKHHQK		 77ekk) *sh   ;C	I$ !H &A$I$ 5H0 'H--I$ 0	I!9II!$+KJ! K!	K*KKKKr!  r"  c                 .    | j                  dddd       y )Nrr  r  r   r  rT  r:   s    r   !test_interrupted_write_unbufferedz-SignalsTest.test_interrupted_write_unbuffered  s     	$$UE$Jr    c                 ,    | j                  ddd       y Nrr  r  r  rV  r:   s    r   test_interrupted_write_bufferedz+SignalsTest.test_interrupted_write_buffered  s     	$$UE$=r    c                 .    | j                  dddd       y )Nxyrr  r  rD  r  r.   rV  r:   s    r   test_interrupted_write_textz'SignalsTest.test_interrupted_write_text  s     	$$T5sW$Mr    c                 z  	 	fd}t        j                   t         j                  |       t        j                         \  }} | j                  j
                  |fi |		 t        j                  d       | j                  t        t        f      5 }	 t        d      D ]#  }	j                         	j                          % t        j                  |t              dz         T# 1 sw Y   nxY wj                  }t!        |t              r3| j#                  t%        |      j'                  d      t%        |             t        j                  d       	j)                          t        j(                  |       y # t        j                  d       	j)                          t        j(                  |       w xY w)Nc                  2    j                         ddz   y r8   )rM   )r   r   rS  s    r   on_alarmz3SignalsTest.check_reentrant_write.<locals>.on_alarm  s    IIdOaCr    r9   r)  zreentrant callr   )r@  rA  r%  r!  r   r/   r4   r   r  r  r  rM   r   rt   r   r(  rV  r  r'  r\  r   )
r;   r   rQ  rb  r+   r  r*  r  r  rS  s
    `       @r   check_reentrant_writez!SignalsTest.check_reentrant_write  s<   	 	fnnh/wwy1dggll1..	LLO ""$5|#DE 0"3Z $		$		$ GGAs4y3/ 0 0 ,,C#|,C 3 34D Es3xPLLOIIKHHQK LLOIIKHHQKs    "0E> AC((C1-AE> ><F:c                 *    | j                  dd       y rY  rc  r:   s    r   test_reentrant_write_bufferedz)SignalsTest.test_reentrant_write_buffered  s    ""5t"4r    c                 ,    | j                  ddd       y )Nr]  r  rD  r^  re  r:   s    r   test_reentrant_write_textz%SignalsTest.test_reentrant_write_text  s    ""4cG"Dr    c                    t        j                         \  }d|d<   fd}t        j                  t        j                  |       	  | j                  j
                  |fi |}t        j                  d       t        j                  d       | j                   ||j                  d            d       t        j                  d       |j                          t        j                         t        j                  |       y	# t        j                  d       j                          t        j                         t        j                  |       w xY w)
zCheck that a buffered read, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.Fr  c                 2    t        j                  d       y )Nr  )r%  rM   )rF  rG  r  s     r   alarm_handlerz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handler  s    HHQr    r"  r9   r   foobarr   N)r%  r!  r@  rA  r   r/   rM   r4   r   rt   r   )r;   r  rQ  r+   rk  rior  s         @r   check_interrupted_read_retryz(SignalsTest.check_interrupted_read_retry  s     wwy1#(i 	 fnnm4	$'',,q2M2CHHQLLO
 VCHHQK0(;LLOIIKHHQKHHQK LLOIIKHHQKHHQKs   A/D AEr.  c                 ,    | j                  d d       y )Nc                 $    | j                  d      S )Nr  )r  rO  s    r   r  zBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>  s    AHHX4F r    r  rZ  rn  r:   s    r   $test_interrupted_read_retry_bufferedz0SignalsTest.test_interrupted_read_retry_buffered  s     	))*F/3 	* 	5r    c                 .    | j                  d dd       y )Nc                     | S rJ   r&   rO  s    r   r  z>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>  s    A r    r+   r  r^  rq  r:   s    r    test_interrupted_read_retry_textz,SignalsTest.test_interrupted_read_retry_text  s     	))+/2X 	* 	Gr    c                    t        j                  d      t        j                  }t	        j
                         \  }d|d<   g ddfd}t        j                  |      d_        fd}fd	||z  }t        j                  t        j                  |       	  | j                  j                  |fi |}t        j                  d
       |j                  |      }	| j                  ||	       |j!                          dj#                          | j%                         | j                  |t'        d D                     t        j                  d       dt	        j(                  |       t	        j(                         	 |j)                          y# t*        $ r(}
|
j,                  t,        j.                  k7  r Y d}
~
yd}
~
ww xY w# t        j                  d       dt	        j(                  |       t	        j(                         	 j)                          w # t*        $ r(}
|
j,                  t,        j.                  k7  r Y d}
~
w d}
~
ww xY wxY w)zCheck that a buffered write, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.selectFr  Nc                      	 s`j                  gg g d      d   v rBt        j                  d      } j                  |        j                  gg g d      d   v rBs_y y # t        $ r}|Y d }~y d }~ww xY w)Ng      ?r   r5  )rw  r%  rt   rK   BaseException)r   r  errorr+   rJ  rw  write_finisheds     r   r  z8SignalsTest.check_interrupted_write_retry.<locals>._read  s    (v}}aS"b#>qAAGGAt,$++A. v}}aS"b#>qAA ) ! s   AA& !A& &	A;/A66A;ry  Tc                 x    t        j                   t         j                         t        j                  d       y r   )r@  rA  r4   )rF  rG  alarm2s     r   alarm1z9SignalsTest.check_interrupted_write_retry.<locals>.alarm1  s     MM&..&1LLOr    c                 &    j                          y rJ   )r.  )rF  rG  r  s     r   r}  z9SignalsTest.check_interrupted_write_retry.<locals>.alarm2  s    GGIr    r9   c              3   2   K   | ]  }t        |        y wrJ   )r   ).0r"  s     r   	<genexpr>z<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>  s     #AqCF#As   r   )r   r  r   rM  r%  r!  r   r-  rL  r@  rA  r   r/   r4   rM   r   r   r   r  sumr   r   r7  r8  )r;   rP  rQ  r  r  r  r~  rR  rS  r  rv  r}  rz  r+   rJ  rw  r  r{  s              @@@@@@@r   check_interrupted_write_retryz)SignalsTest.check_interrupted_write_retry  s    ,,X6 !!wwy1#(i 
 	 	 E*		 AX
fnnf-	$'',,q2M2CLLO ii
+GQ(IIK!NFFHe$Q#AL#A ABLLO!NHHQKHHQK		 77ekk) * LLO!NHHQKHHQK		 77ekk) *sP   )B*G F& &	G/GGAI"H.-I".	I7II"II"c                 *    | j                  dd       y )Nr  r  rZ  r  r:   s    r   %test_interrupted_write_retry_bufferedz1SignalsTest.test_interrupted_write_retry_buffered#  s     	**4d*;r    c                 ,    | j                  ddd       y )Nr"  r  r  r^  r  r:   s    r   !test_interrupted_write_retry_textz-SignalsTest.test_interrupted_write_retry_text(  s     	**3S8*Lr    N)r#   r$   r%   r   r   rB  rT  requires_alarmr  r  r  r%  rW  r[  r_  r   ru  rc  rf  rh  rn  r  rr  ru  r  r  r  r&   r    r   r>  r>  /  s   K4KZ XV,.BCK D K XV,.BC> D > XV,.BCN D N  6 5 5 E E0 Wz*5 + 5 Wz*G + GBH Wz*< + < Wz*M + Mr    r>  c                       e Zd ZeZy)CSignalsTestN)r#   r$   r%   r   r&   r    r   r  r  .  s    	Br    r  c                       e Zd ZeZdZdZy)PySignalsTestN)r#   r$   r%   r   r   rf  rh  r&   r    r   r  r  1  s    	B %)! $r    r  c                     t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        t        t         t"        t$        t&        t(        f}t*        t,        t.        t0        t2        t4        t6        t8        t:        f	}t<        j>                  }|D ci c]  }|tA        t<        |       }}|D ci c]  }|tA        tB        |       }}tE               |jG                  fd|D               |jG                  fd|D               |D ]  }|jH                  jK                  d      r-|jM                         D ]  \  }}	tO        |||	        d|_(        K|jH                  jK                  d      sg|jM                         D ]  \  }}	tO        |||	        d|_(         | jS                         }
|D ]"  }|
jU                  | jW                  |             $ |
S c c}w c c}w )Nc              3   Z   K   | ]"  }|j                   d |j                   z      f $ yw)r  Nr#   r  r"  globss     r   r  zload_tests.<locals>.<genexpr>P  s(     HQAJJcAJJ&6 78H   (+c              3   Z   K   | ]"  }|j                   d |j                   z      f $ yw)PyNr  r  s     r   r  zload_tests.<locals>.<genexpr>Q  s(     JqQZZtajj'8!9:Jr  r  Tr  F),r  r  r  r  r  r  r  rj  rl  r  r  r  r  r  r  r  r!  r8  r  r  r  rp   r{   r   r   r   r   r?   r   r   r   __all__rT  r   globalsr3  r#   r\  r  setattrr
  
suiteClassaddTestloadTestsFromTestCase)loaderr]  r,  mocksall_membersr5  c_io_nspy_io_nsr^  r   suiter  s              @r   
load_testsr  :  s   h "6 "6 "6 "6++-L!4,=,
E ^!#35I46E **K4?@Dtgb$''@G@7BCtwtT**CHCIENNH%HHOOJEJJ ==##C($]]_ )	cdC()DI]]%%d+%^^- )	cdC()DI E :f22489:L% ACs   0G6G;__main__)ri   r  r)   r7  r/  r%  r  r|  r@  rZ  r  r   r   r  rc  r  collectionsr   r   	itertoolsr   r   r^  r   test.support.script_helperr   r	   r
   test.supportr   r   r   r   r   test.support.os_helperr   r  r   r9  r   r   r   	Structurer   ImportErrorr  r  r  r  r3   r  r  r  r6   r?   rX  rk   rn   rp   rw   ry   r{   r   r   r   r   r   r   r   r   r   r:  r   r   r   r   r   r   r   r   r   r   r   TestCaser   r  r1  r  r  r  r  r%  r3  r  r  r  r  r  r  rj  rl  rn  r  r  r  r  r  r  r  rB  rC  r  r  r  r  r  r  r!  r8  r  r5  r>  r  r  r  r#   mainr&   r    r   <module>r     sP   #*     	    
       ' " C C & " ) ( * +  	 
f&& 
 #++Asyy/A/A 
 %$$FG<
 6 6p	0",, 		14>> 	$ 	BLL 		)T^^ 	i "	 		 	Y 	nbll 		~t~~ 	Y 	nbll 		~t~~ 	  	*bjj 		:t|| 	8 83("** 35)4<< 5j 	6

 		 7 	. .`)0",, )+14>> +A$X A$H$f $( 	VG8$$ VG VGp	v 	 	hh'' h hj jZ5 5,L6**,? L6^
AA,j AAH- d**,? dP	.6,j .6b- N** N`, - |&+-? |&~6,j 64- I!:!: I\;)4X%6%6 )4Vp;)) p;f%2RZZ 2KQ* KQ\<+ <
s>H$5$5 s>j;%B ;	&C 	r5"" r5j?>* ?>D': ' D"IJ{M(## {M K{M|; %K %%N zHMMO UY  333s   U   UU