
    <e>                    	   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(j*                  Z+n# e,$ r d Z)Y nw xY w e-e	d          pe	j.        j/        Z0d Z1 ej2         e-ed          d          Z3 G d d          Z4 G d de4e%j5                  Z6 G d de4e'j5                  Z7 G d de4          Z8 G d de8e%j5                  Z9 G d d e8e'j5                  Z: G d! d"e8          Z; G d# d$e;e%j5                  Z< G d% d&e;e'j5                  Z= G d' d(e8          Z> G d) d*e>e%j5                  Z? G d+ d,e>e'j5                  Z@ G d- d.e8          ZA G d/ d0eAe%j5                  ZB G d1 d2eAe'j5                  ZC G d3 d4          ZD G d5 d6eDe%jE                  ZF G d7 d8eDe'jE                  ZG G d9 d:          ZH G d; d<eHe%jE                  ZI G d= d>eHe'jE                  ZJ G d? d@          ZK G dA dBeKe%j5                  ZL G dC dDeKe'j5                  ZM G dE dFejN                  ZO G dG dHeO          ZP G dI dJeO          ZQejR         G dK dLejN                              ZS G dM dN          ZT G dO dP          ZU G dQ dRejN        eT          ZV G dS dTeVeU          ZW G dU dVeV          ZX G dW dXejN        eT          ZY G dY dZeYeU          ZZ G d[ d\eY          Z[ G d] d^ejN                  Z\ G d_ d`e\          Z] G da dbe\          Z^ G dc ddeVeY          Z_ G de dfe_eU          Z` G dg dhe_          Za G di dje$jb                  Zcdk Zd G dl dmejN                  Ze G dn doejN                  Zf G dp dqe%jE                  Zgdr Zh G ds dtef          Zi G du dvef          Zj G dw dxejN                  Zk G dy dzek          Zl G d{ d|ek          Zm G d} d~ejN                  Zn G d den          Zo G d den          Zp ejq        ejr        dk    d           G d dejN                              Zs G d des          Zt G d des          Zud Zvewdk    r ejx                     dS dS )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          |                              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       #/usr/lib/python3.11/test/test_io.py	bytesliker   ;   s\    c R  mmc3t99%%%'+
3S!!!!!$
    c                       e Zd ZdS )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 1222r    gettotalrefcountc                  r    t          t          dd          5 } | j        cddd           S # 1 swxY w Y   dS )z(Get the default TextIOWrapper chunk sizerlatin-1encodingN)open__file___CHUNK_SIZE)fs    r   _default_chunk_sizer4   J   s}    	hi	0	0	0 A}                 s   ,00alarmztest requires signal.alarm()c                   R    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dS )MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().r&   c                 X    t          |          | _        g | _        d| _        d| _        d S Nr   )list_read_stack_write_stack_reads_extraneous_reads)self
read_stacks     r   __init__zMockRawIOWithoutRead.__init__X   s/    
++!"r    c                 n    | j                             t          |                     t          |          S N)r<   appendr   r   r?   r(   s     r   writezMockRawIOWithoutRead.write^   s*      q***1vvr    c                     dS NTr&   r?   s    r   writablezMockRawIOWithoutRead.writableb       tr    c                     dS N*   r&   rI   s    r   filenozMockRawIOWithoutRead.filenoe   s    rr    c                     dS rH   r&   rI   s    r   readablezMockRawIOWithoutRead.readableh   rK   r    c                     dS rH   r&   rI   s    r   seekablezMockRawIOWithoutRead.seekablek   rK   r    c                     dS r9   r&   r?   r   whences      r   seekzMockRawIOWithoutRead.seekn       qr    c                     dS r9   r&   rI   s    r   tellzMockRawIOWithoutRead.tellq   rX   r    c                 d   | xj         dz  c_         t          |          }	 | j        d         }n!# t          $ r | xj        dz  c_        Y dS w xY w|
| j        d= d S t          |          }t          |          |k    r| j        d= ||d |<   |S |d |         |d d <   ||d          | j        d<   |S N   r   )r=   r   r;   
IndexErrorr>   )r?   bufmax_lenr   ns        r   readintozMockRawIOWithoutRead.readintot   s    qc((	#A&DD 	 	 	""a'""11	 < #4IIt99 #CGH(7(^CF"&wxx.DQNs   / AANc                     |S rC   r&   )r?   r   s     r   truncatezMockRawIOWithoutRead.truncate   s    
r    )r&   rC   )r#   r$   r%   __doc__rA   rF   rJ   rO   rQ   rS   rW   rZ   rb   rd   r&   r    r   r7   r7   T   s        , ,# # # #                *     r    r7   c                       e Zd ZdS )CMockRawIOWithoutReadNr"   r&   r    r   rg   rg              Dr    rg   c                       e Zd ZdS )PyMockRawIOWithoutReadNr"   r&   r    r   rj   rj      rh   r    rj   c                       e Zd ZddZdS )	MockRawIONc                     | xj         dz  c_         	 | j                            d          S #  | xj        dz  c_        Y dS xY w)Nr]   r   r    )r=   r;   popr>   r?   ra   s     r   readzMockRawIO.read   sR    q	#''***	""a'""33s	   , ArC   r#   r$   r%   rp   r&   r    r   rl   rl      s(             r    rl   c                       e Zd ZdS )
CMockRawIONr"   r&   r    r   rs   rs      rh   r    rs   c                       e Zd ZdS )PyMockRawIONr"   r&   r    r   ru   ru      rh   r    ru   c                   @     e Zd Z fdZd fd	Zd Zd Z fdZ xZS )MisbehavedRawIOc                 L    t                                          |          dz  S N   )superrF   )r?   r(   	__class__s     r   rF   zMisbehavedRawIO.write   s    ww}}Q!##r    Nc                 L    t                                          |          dz  S ry   )r{   rp   )r?   ra   r|   s     r   rp   zMisbehavedRawIO.read   s    ww||A""r    c                     dS )Nir&   rU   s      r   rW   zMisbehavedRawIO.seek   rK   r    c                     dS )Ni8r&   rI   s    r   rZ   zMisbehavedRawIO.tell   rK   r    c                 j    t                                          |           t          |          dz  S )N   )r{   rb   r   )r?   r_   r|   s     r   rb   zMisbehavedRawIO.readinto   s+    3xx!|r    rC   )	r#   r$   r%   rF   rp   rW   rZ   rb   __classcell__r|   s   @r   rw   rw      s        $ $ $ $ $# # # # # #            r    rw   c                       e Zd ZdS )CMisbehavedRawIONr"   r&   r    r   r   r      rh   r    r   c                       e Zd ZdS )PyMisbehavedRawIONr"   r&   r    r   r   r      rh   r    r   c                   $     e Zd Z fdZd Z xZS )SlowFlushRawIOc                 x    t                                                       t          j                    | _        d S rC   )r{   rA   	threadingEventin_flush)r?   r|   s    r   rA   zSlowFlushRawIO.__init__   s,    !))r    c                 `    | j                                          t          j        d           d S )Ng      ?)r   settimesleeprI   s    r   flushzSlowFlushRawIO.flush   s,    
4r    )r#   r$   r%   rA   r   r   r   s   @r   r   r      sG        * * * * *      r    r   c                       e Zd ZdS )CSlowFlushRawIONr"   r&   r    r   r   r      rh   r    r   c                       e Zd ZdS )PySlowFlushRawIONr"   r&   r    r   r   r      rh   r    r   c                       e Zd ZdZd ZdS )CloseFailureIOr   c                 0    | j         sd| _         t          d S Nr]   closedOSErrorrI   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dS )CCloseFailureIONr"   r&   r    r   r   r      rh   r    r   c                       e Zd ZdS )PyCloseFailureIONr"   r&   r    r   r   r      rh   r    r   c                   4     e Zd Z fdZd fd	Z fdZ xZS )
MockFileIOc                 X    g | _         t                                          |           d S rC   )read_historyr{   rA   )r?   r   r|   s     r   rA   zMockFileIO.__init__   s)    r    Nc                     t                                          |          }| j                            |d nt	          |                     |S rC   )r{   rp   r   rD   r   )r?   ra   resr|   s      r   rp   zMockFileIO.read   s@    ggll1oo  #c((CCC
r    c                 ~    t                                          |          }| j                            |           |S rC   )r{   rb   r   rD   )r?   r(   r   r|   s      r   rb   zMockFileIO.readinto   s6    ggq!!  %%%
r    rC   )r#   r$   r%   rA   rp   rb   r   r   s   @r   r   r      so                 
        r    r   c                       e Zd ZdS )CMockFileIONr"   r&   r    r   r   r      rh   r    r   c                       e Zd ZdS )PyMockFileIONr"   r&   r    r   r   r      rh   r    r   c                   &    e Zd Zd Zd Zd Zd ZdS )MockUnseekableIOc                     dS NFr&   rI   s    r   rS   zMockUnseekableIO.seekable   s    ur    c                 ,    |                      d          Nznot seekableUnsupportedOperationr?   argss     r   rW   zMockUnseekableIO.seek       ''777r    c                 ,    |                      d          r   r   r   s     r   rZ   zMockUnseekableIO.tell   r   r    c                 ,    |                      d          r   r   r   s     r   rd   zMockUnseekableIO.truncate   r   r    N)r#   r$   r%   rS   rW   rZ   rd   r&   r    r   r   r      sP          8 8 88 8 88 8 8 8 8r    r   c                       e Zd Zej        ZdS )CMockUnseekableION)r#   r$   r%   ior   r&   r    r   r   r      s        2r    r   c                       e Zd Zej        ZdS )PyMockUnseekableION)r#   r$   r%   pyior   r&   r    r   r   r     s        4r    r   c                   @    e Zd Zd Zd Zd Zd Zd ZddZd Z	d	 Z
d
S )MockNonBlockWriterIOc                 "    g | _         d | _        d S rC   )r<   _blocker_charrI   s    r   rA   zMockNonBlockWriterIO.__init__  s    !r    c                 R    d                     | j                  }g | j        d d <   |S Nr    )joinr<   )r?   ss     r   pop_writtenz MockNonBlockWriterIO.pop_written  s,    HHT&''!!!!r    c                     || _         dS )z'Block when a given char is encountered.N)r   )r?   chars     r   block_onzMockNonBlockWriterIO.block_on  s    !r    c                     dS rH   r&   rI   s    r   rQ   zMockNonBlockWriterIO.readable  rK   r    c                     dS rH   r&   rI   s    r   rS   zMockNonBlockWriterIO.seekable  rK   r    r   c                     dS r9   r&   rU   s      r   rW   zMockNonBlockWriterIO.seek  s    qr    c                     dS rH   r&   rI   s    r   rJ   zMockNonBlockWriterIO.writable  rK   r    c                 @   t          |          }d}| j        r^	 |                    | j                  }|dk    r$| j                            |d |                    |S d | _        d S # t
          $ r Y nw xY w| j                            |           t          |          S )Nr   )r   r   indexr<   rD   
ValueErrorr   )r?   r(   ra   s      r   rF   zMockNonBlockWriterIO.write"  s    !HH 	  GGD.// q55%,,QrrU333H *.D&4     	  ###1vvs   A' '
A43A4Nr   )r#   r$   r%   rA   r   r   rQ   rS   rW   rJ   rF   r&   r    r   r   r     s        " " "  
" " "             r    r   c                       e Zd Zej        ZdS )CMockNonBlockWriterION)r#   r$   r%   r   BlockingIOErrorr&   r    r   r   r   6  s        (OOOr    r   c                       e Zd Zej        ZdS )PyMockNonBlockWriterION)r#   r$   r%   r   r   r&   r    r   r   r   9  s        *OOOr    r   c                      e Zd Zd Zd Zd Zd7d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/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6S )8IOTestc                 B    t          j        t           j                   d S rC   r   unlinkTESTFNrI   s    r   setUpzIOTest.setUp?      )*****r    c                 B    t          j        t           j                   d S rC   r   rI   s    r   tearDownzIOTest.tearDownB  r   r    c                    |                      |                    d          d           |                    d           |                      |                                d           |                    d           |                      |                    d          d           |                      |                    d          d           |                      |                    d          d           |                      |                                d           |                      |                    dd          d           |                      |                                d           t          d          }|                      |                    |          d	           d
|d d <   |                      |                    d          d           |                      |                    d          d           |                      |                    dd          d           |                      |                                d           |                      |                    d          d           |                      |                                d           |                     t          |j        d           d S )Ns   blah.r   r   s   Hello.   r   r]   s	    world


	   s	   *********   hrz                 )assertEqualrF   rd   rZ   rW   	bytearrayassertRaises	TypeError)r?   r3   buffers      r   	write_opszIOTest.write_opsE  s:   **A...	

11%%%	q			**A...A&&&++Q///1%%%A***1%%%?++!,,,qqq	A&&&***A+++2&&&B,,,2&&&)QVS11111r    Fc                 .   |                     d          }|                     |d           t          |          }|                     |                    |          d           |                     t	          |          d           t          d          }|                     |                    |          d           |                     t          |          d           |                     |d d         d           |                     |                    d          d           |                     |                     d          d           |                     |                     d	          d
           |                     |                    t          d                    d           |                     |                    dd          d           |                     |                     d          d           |                     |                     d          d
           |                     |                    t                                d           |                     |                    dd	          d           |                     |                     d          d           |                     |                                d           | 	                    t          |j        d           |r|                    d           |                     |                                 d           |                    d           |                     |                                 d           |                     |                                 d
           |                    d           t          d          }|                     |                    |          d           |                     t	          |          d           d S d S )Nr   s   hellos    worlrz      d
r         hello world
r]   r       xir   s   world
   r   s   world
)rp   r   r   rb   r   r   r   rW   rZ   r   r   	readinto1)r?   r3   bufferedr   s       r   read_opszIOTest.read_ops]  sK   vvayyx(((D))1---th///||D))1---TA&&&bqb6***A&&&%5666C(((IdOO44a888A***H---C(((IKK00!444A***H---2&&&)QVS111 		4FF1IIIQVVXX'7888FF1IIIQVVXXz222QVVXXs+++FF1IIIQ<<DQ[[..222U4[[(33333		4 		4r    l        c                    |                                 sJ |                                sJ 	 |                     |                    | j                  | j                   n,# t
          t          f$ r |                     d           Y nw xY w|                     |                                | j                   |                     |	                    d          d           |                     |                                | j        dz              |                     |                    dd          | j        dz              |                     |
                                | j        dz              |                     |                                | j        dz              |                     |                    dd          | j        dz              |                     |
                    | j        dz             | j        dz              |                     |                                | j        dz              |                     |                    dd          | j        dz              |                     |                    dd          | j                   |                     |                    d          d           d S )	Nzno largefile support   xxx   r   r]   rz   r   r   )rQ   rJ   r   rW   LARGEOverflowErrorr   skipTestrZ   rF   rd   rp   r?   r3   s     r   large_file_opszIOTest.large_file_ops  sQ   zz||zz||	2QVVDJ//<<<<z* 	2 	2 	2MM011111	24:...!,,,4:>222A
Q777tzA~6664:>2221tzA~666DJN33TZ!^DDD4:>2221tzA~666A
333D)))))s   3A" "&B
Bc                    | j         }|                     t          j        dd          5 }|                     ||j                   |                     ||j                   d d d            n# 1 swxY w Y   |                     t          j        d          5 }|                     ||j                   |                     ||j                   d d d            n# 1 swxY w Y   |                     t          j        dd          5 }|                     ||j                   |                     ||j                   d d d            n# 1 swxY w Y   |                     t          j        dd          5 }|                     ||j        d           |                     ||j        d	g           d d d            n# 1 swxY w Y   |                     t          j        d          5 }|                     ||j        d           |                     ||j        d	g           d d d            n# 1 swxY w Y   |                     t          j        d
d          5 }|                     ||j        d           |                     ||j        dg           |                     ||j	        d| j
                   |                     ||j	        d| j                   d d d            d S # 1 swxY w Y   d S )Nwutf-8r.   wbr   	bufferingrbs   blahs   blah
r,   blahzblah
r]   r   )r   r0   r   r   r   rp   readlinerF   
writelinesrW   SEEK_CURSEEK_END)r?   excfps      r   test_invalid_operationszIOTest.test_invalid_operations  s   'YYy'wY?? 	02c27+++c2;///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 YYy'.. 	0"c27+++c2;///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 YYy'Y;; 	0rc27+++c2;///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 YYy'Y;; 	?rc28W555c2=9+>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? YYy'.. 	?"c28W555c2=9+>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? YYy'wY?? 	?2c28V444c2=8*===c27At}===c27B>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?sl   7A--A14A17CC"C7EEE8:F>>GG):H//H36H3A>K''K+.K+%fstat() of a pipe fd is not supportedpiperequires os.pipe()c                      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 ]\  }
}                     |
          5   |
            5 }d|v }                     |                                |           d|v }                     |                                |           t          | j                  rd}n4t          | j         j	        f          rd}n 
                    d           d|v r|                                 n                      t          |j                   |r*|                    d           |                                 nA                     t          |j        d                                t          |j                   |r|                    |           n!                     t          |j        |           t           j                            d          r|
||fv r	 d d d            d d d            d|v }                     |                                |           |r*|                                 |                    d           nA                     t          |j                                        t          |j        d           |r,|r*|                                 |                    d           nA                     t          |j                                        t          |j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    d S )Nc                      t          j                    \  } }t          j        |                               | d          S )Nr,   )osr  r   FileIO)r,   r  r?   s     r   pipe_readerz3IOTest.test_optional_abilities.<locals>.pipe_reader  s3    WYYFQHQKKK;;q#&&&r    c                  <   t          j                    \  } }                    t           j        |            t	          j        t           j        | df          }|                                                     |j                   	                    |d          S )Nd   targetr   r  )
r  r  
addCleanupr   r   Threadrp   startr   r  )r,   r  threadr?   s      r   pipe_writerz3IOTest.test_optional_abilities.<locals>.pipe_writer  sx    WYYFQOOBHa(((%RWAs8DDDFLLNNNOOFK(((;;q#&&&r    c                  R                                                                     S rC   )BufferedReaderr   rI   s   r   buffered_readerz7IOTest.test_optional_abilities.<locals>.buffered_reader  #    &&t'<'<'>'>???r    c                  R                                                                     S rC   )BufferedWriterr   rI   s   r   buffered_writerz7IOTest.test_optional_abilities.<locals>.buffered_writer  r&  r    c                  R                                                                     S rC   )BufferedRandomBytesIOrI   s   r   buffered_randomz7IOTest.test_optional_abilities.<locals>.buffered_random  s    &&t||~~666r    c                  x                                                                                                      S rC   )BufferedRWPairr   rI   s   r   buffered_rw_pairz8IOTest.test_optional_abilities.<locals>.buffered_rw_pair  s8    &&t'<'<'>'>%%'') ) )r    c                  j     G fddj                   }                      |             d          S )Nc                   @    e Zd Z j        j        Z j        j        ZdS )MIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)r#   r$   r%   BufferedIOBaserJ   rF   rI   s   r   UnseekableReaderr3    s%        .7+1r    r5  asciir   TextIOWrapper)r5  r?   s    r   text_readerz3IOTest.test_optional_abilities.<locals>.text_reader  s\    2 2 2 2 2 2 24#8 2 2 2 %%&6&6&8&8'BBBr    c                  j     G fddj                   }                      |             d          S )Nc                   @    e Zd Z j        j        Z j        j        ZdS )MIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)r#   r$   r%   r4  rQ   rp   rI   s   r   UnseekableWriterr<    s%        .7*/r    r=  r6  r7  )r=  r?   s    r   text_writerz3IOTest.test_optional_abilities.<locals>.text_writer  s\    0 0 0 0 0 0 04#8 0 0 0 %%&6&6&8&8'BBBr    frfwr,   r  rwsrw3   3zUnknown base classr3   r]   winr   r   )r,  StringIOsubTestr   rQ   rJ   
isinstance
TextIOBaser4  	RawIOBasefailrO   r   r   rp   rF   sysplatform
startswithrS   rZ   rW   rd   )r?   r  r"  r%  r)  r-  r0  r9  r>  teststest	abilitiesr   rQ   rJ   r   rS   s   `                r   test_optional_abilitieszIOTest.test_optional_abilities  s   	' 	' 	' 	' 	'
	' 	' 	' 	' 	'	@ 	@ 	@ 	@ 	@	@ 	@ 	@ 	@ 	@	7 	7 	7 	7 	7	) 	) 	) 	) 	)	C 	C 	C 	C 	C	C 	C 	C 	C 	C $+t!4c"_c$:e$'7&>#c 2\5!DM5#9
 "' 2	@ 2	@T9d## 1@ 1@TTVV 1@s)+  :::)+  :::c4?33 4DDd&94>%JKK 4DDII2333)##JJLLLL%%gsz::: 9HHQKKKHHJJJJ%%gsx;;;%%gsx888 @IIdOOOO%%gsy$???<**511 d#[?2 72 72 C1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@D )+  ::: <HHJJJHHQKKKK%%gsx888%%gsx;;; @ @LLNNNLLOOOO%%gs|<<<%%gs|Q???c1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@ 1@2	@ 2	@sD   1M)<F*M&M)>DMM)MM)MM))M-	0M-	c                 F   d}|                      t          | j        |dd           t          |d          }t	          j                    5  t	          j        dt                     |                      t          | j        |dd           d d d            d S # 1 swxY w Y   d S )Nzfoo barr  r  r.   r6  ignore)r   r   r0   r   warningscatch_warningssimplefilterDeprecationWarning)r?   fn_with_NULbytes_fns      r   test_open_handles_NUL_charsz"IOTest.test_open_handles_NUL_chars  s     *dicGTTTg..$&& 	V 	V!(,>???j$)XsWUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   
?BBBc                 $   |                      t          j        dd          5 }|                     |                                d           |                     |                                d           |                     |                                d           |                     |           d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|                     |                                d           |                     |                                d           |                     |                                d           |                     |           d d d            d S # 1 swxY w Y   d S )Nr  r   r  FTr	  	r0   r   r   r   rQ   rJ   rS   r   r   r  s     r   test_raw_file_iozIOTest.test_raw_file_io"  s   YYy'Y;; 	qQZZ\\5111QZZ\\4000QZZ\\4000NN1		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 YYy'Y;; 	qQZZ\\4000QZZ\\5111QZZ\\4000MM!		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s%   BB==CC*BFF	F	c                    |                      t          j        d          5 }|                     |                                d           |                     |                                d           |                     |                                d           |                     |           d d d            n# 1 swxY w Y   |                      t          j        d          5 }|                     |                                d           |                     |                                d           |                     |                                d           |                     |d           d d d            d S # 1 swxY w Y   d S )Nr  FTr	  r]  r  s     r   test_buffered_file_iozIOTest.test_buffered_file_io.  s   YYy'.. 	!QZZ\\5111QZZ\\4000QZZ\\4000NN1		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 YYy'.. 	#!QZZ\\4000QZZ\\5111QZZ\\4000MM!T"""		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s%   BB;;B?B?&BFF	Fc                    |                      t          j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        d          5 }|                     |                                d           |                     |                    d          d           |                     |                    d          d           |                     |                    d	          d
           |                     |                                d           |                     |                    d           d           |                     t          |j        d           d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|                     t          |j        d           d d d            d S # 1 swxY w Y   d S )Nr  s"   abc
def
xyzzy
foo bar
another liner	     abc
r      def
rz      xy   s   zzy
s   foo bar
s   another lineg333333@r,   r  r.   )r0   r   r   rF   r   r  r   r   r  s     r   test_readlinezIOTest.test_readline:  sg   YYy'.. 	B!GG@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	BYYy'.. 	:!QZZ\\8444QZZ^^X666QZZ]]E222QZZ]]H555QZZ\\?;;;QZZ--???iS999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: YYy'wY?? 	:1iS999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s6   AA
A.DFFF="G,,G03G0c                      G d d| j                   }|                     t          t          ft           |                       d S )Nc                       e Zd Zd ZdS )+IOTest.test_readline_nonsizeable.<locals>.Rc                     d S rC   r&   rI   s    r   r  z4IOTest.test_readline_nonsizeable.<locals>.R.readlineL      tr    N)r#   r$   r%   r  r&   r    r   Rri  K  #            r    rl  )IOBaser   r   StopIterationnextr?   rl  s     r   test_readline_nonsizeablez IOTest.test_readline_nonsizeableH  sY    	 	 	 	 	 	 	 	 	9m4dAACC@@@@@r    c                 ~     G d d| j                   }|                     t           |            j        d           d S )Nc                       e Zd Zd ZdS )'IOTest.test_next_nonsizeable.<locals>.Rc                     d S rC   r&   rI   s    r   __next__z0IOTest.test_next_nonsizeable.<locals>.R.__next__T  rk  r    N)r#   r$   r%   rw  r&   r    r   rl  ru  S  rm  r    rl  r]   )rn  r   r   	readlinesrq  s     r   test_next_nonsizeablezIOTest.test_next_nonsizeableP  sV    	 	 	 	 	 	 	 	 	)QQSS]A66666r    c                    |                                  }|                     |           |                                }|                     |d           |                      |          }|                     |d           d S )Nr   T)r,  r   getvaluer   r   )r?   r3   r   s      r   test_raw_bytes_iozIOTest.test_raw_bytes_ioX  sp    LLNNqzz||/000LLar    c                    t           j        d d         dk    st           j        dk    rt          j        dd| j        z             |                     t          j        dd          5 }|                     |           d d d            n# 1 swxY w Y   |                     t          j        d          5 }|                     |           d d d            d S # 1 swxY w Y   d S )Nr   rE  darwin	largefilez-test requires %s bytes and a long time to runw+br   )	rL  rM  r   requiresr   r0   r   r   r  r  s     r   test_large_file_opszIOTest.test_large_file_ops`  sX    <u$$(@(@?$*LN N N YYy'22 	#a"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#YYy'// 	#1"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s$   'B		BB4CCCc                    dD ]}d }|                      t          j        d|          5 }|                    d           d d d            n# 1 swxY w Y   |                     |j        d           d }	 |                      t          j        d|          5 }ddz   d d d            n# 1 swxY w Y   |                     d           # t          $ r |                     |j        d           Y w xY wd S )N)r   r  r  r   Tr]   r   z1/0 didn't raise an exception)r0   r   r   rF   r   r   rK  ZeroDivisionError)r?   bufsizer3   s      r   test_with_openzIOTest.test_with_openm  s    	; 	;GA9+T7;;  q                             QXt,,,A;YYy/w?? 1aCC              
 		9:::: % 1 1 1  4000001	; 	;sG   A

A	A	3!CB&C&B*	*C-B*	.C%C/.C/c                    |                      t          j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|                     |                                d           d d d            n# 1 swxY w Y   |                      t          j        d          5 }|                     |                                d           d d d            n# 1 swxY w Y   |                      t          j        dd	          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )
Nr  r   abr   r  r   ar  r.   )r0   r   r   rF   r   rZ   assertGreaterr  s     r   test_append_mode_tellzIOTest.test_append_mode_tell}  s&   YYy'.. 	!GGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'Y;; 	*qQVVXXq)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*YYy'.. 	*!QVVXXq)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*YYy'wY?? 	,1qvvxx+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sG   AA
A0)B%%B),B))DD	D	2)E((E,/E,c                    g  G fdd| j                   }t          j        dt          f          5   |t          j        d          }|                    d           ~t          j                     | 	                    g d           | 
                    t          j        d          5 }| 	                    |                                d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                   :     e Zd Z fdZ fdZ fdZ xZS )(IOTest.test_destructor.<locals>.MyFileIOc                                          d           	 t                      j        } |             d S # t          $ r Y d S w xY wr   rD   r{   __del__AttributeErrorr?   r3   r|   records     r   r  z0IOTest.test_destructor.<locals>.MyFileIO.__del__  Z    a   A ACCCCC &   DD   7 
AAc                 r                         d           t                                                       d S ry   rD   r{   r   r?   r|   r  s    r   r   z.IOTest.test_destructor.<locals>.MyFileIO.close  *    a   r    c                 r                         d           t                                                       d S Nr   rD   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    z                                           r    r   r  r   r]   rz   r   r	  )r  r   check_warningsResourceWarningr   r   rF   r   
gc_collectr   r0   rp   )r?   r  r3   r  s      @r   test_destructorzIOTest.test_destructor  s   	  	  	  	  	  	  	 t{ 	  	  	  +R,ABB 	3 	3)400AGGFOOO   VYYY///9+T22 3a  62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   A8C9,)C!C9!C%	%C9(C%	)C99C= C=c                     g  G fdd|          } |            }~t          j                     |                     g d           d S )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                 0    d| _         d| _        d| _        d S )Nr]   rz   r   )on_delon_closeon_flushrI   s    r   rA   z4IOTest._check_base_destructor.<locals>.MyIO.__init__  s    
   ! !r    c                                          | j                   	 t                      j        } |             d S # t          $ r Y d S w xY wrC   )rD   r  r{   r  r  r  s     r   r  z3IOTest._check_base_destructor.<locals>.MyIO.__del__  s\    dk***A ACCCCC &   DDs   < 
A
	A
c                 |                         | j                   t                                                       d S rC   )rD   r  r{   r   r  s    r   r   z1IOTest._check_base_destructor.<locals>.MyIO.close  ,    dm,,,r    c                 |                         | j                   t                                                       d S rC   )rD   r  r{   r   r  s    r   r   z1IOTest._check_base_destructor.<locals>.MyIO.flush  r  r    )r#   r$   r%   rA   r  r   r   r   r  s   @r   MyIOr    s        " " "                                   r    r  r  )r   r  r   )r?   baser  r3   r  s       @r   _check_base_destructorzIOTest._check_base_destructor  s{    	  	  	  	  	  	  	 4 	  	  	 . DFF+++++r    c                 :    |                      | j                   d S rC   )r  rn  rI   s    r   test_IOBase_destructorzIOTest.test_IOBase_destructor  s    ##DK00000r    c                 :    |                      | j                   d S rC   )r  rJ  rI   s    r   test_RawIOBase_destructorz IOTest.test_RawIOBase_destructor  s    ##DN33333r    c                 :    |                      | j                   d S rC   )r  r4  rI   s    r   test_BufferedIOBase_destructorz%IOTest.test_BufferedIOBase_destructor  s    ##D$788888r    c                 :    |                      | j                   d S rC   )r  rI  rI   s    r   test_TextIOBase_destructorz!IOTest.test_TextIOBase_destructor  s    ##DO44444r    c                 b   |                      t          j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr  r   r	  r0   r   r   rF   r   rp   r  s     r   test_close_flusheszIOTest.test_close_flushes  s   YYy'.. 	!GGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'.. 	/!QVVXXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/#   AA
A.)B$$B(+B(c                 r    t          j         dt          d                    t                                                     fd} |                                             |                     t          j        d                      |                      	                                                      | 
                     	                                                      |                      	                                 	                                                     d S )Nir   c                     | 5                       |                                          |                     f           d d d            d S # 1 swxY w Y   d S rC   )r   rF   r  )r3   r  ra   r?   s    r   checkz'IOTest.test_array_writes.<locals>.check  s     # #  Q///aT"""# # # # # # # # # # # # # # # # # #s   A AAAr  )r)   ranger   tobytesr,  r  r   r   r(  rl   r+  r/  )r?   r  r  ra   s   ` @@r   test_array_writeszIOTest.test_array_writes  s   KU2YY''			# 	# 	# 	# 	# 	# 	# 	dllnndkk)*C00111d!!$.."2"233444d!!$.."2"233444d!!$.."2"2DNN4D4DEEFFFFFr    c                 d    |                      t          | j        t          j        ddd           d S )Nr  r  Fr/   closefdr   r   r0   r   r   rI   s    r   test_closefdzIOTest.test_closefd  s;    *di1A3#*E 	 	; 	; 	; 	; 	;r    c                    |                      t          j        dd          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|                      |                                ddd          }|                     |                                d           |                    d           |                                 | 	                    t          |j                   d d d            n# 1 swxY w Y   |                      t          j        d	          5 }|                      |                                d	d
          }|                     |                                d d         d           |                                 | 	                    t          |j        t          d                     d d d            d S # 1 swxY w Y   d S )Nr  r  r.   egg
r,   Fr  r   r	  r  r   s   eggr]   )r0   r   r   rF   rO   r   rp   rW   r   r   r   rb   r   r?   r3   files      r   test_read_closedzIOTest.test_read_closed  s`   YYy'wY?? 	1GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'wY?? 	5199QXXZZw9NNDTYY[['222IIaLLLJJLLLj$)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 YYy'.. 	G!99QXXZZu9==DTYY[[!_f555JJLLLj$-1FFF		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs7   AA	A	2BDD"DBG00G47G4c                 d    |                      t          | j        t          j        ddd           d S )Nr,   r  Fr  r  rI   s    r   test_no_closefd_with_filenamez$IOTest.test_no_closefd_with_filename  s;    *di1A3#*E 	 	; 	; 	; 	; 	;r    c                     |                      t          j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|                     |j        j        j        d           |                      |                                ddd          }|                     |j        j        j        d           d d d            d S # 1 swxY w Y   d S )	Nr  s   egg
r,   r  r.   TFr  )	r0   r   r   rF   r   r   rawr  rO   r  s      r   test_closefd_attrzIOTest.test_closefd_attr  sT   YYy'.. 	!GGH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'wY?? 	=1QX\1488899QXXZZw9NNDT[_4e<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s$   AA
A0A6C33C7:C7c                 2   t          j        dt          f          5  |                     t          j        d          }|                    d           ||_        t          j	        |          }~t          j                     d d d            n# 1 swxY w Y   |                      |            |           |                     t          j        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr  r  s   abcxxxr	  )r   r  r  r  r   r   rF   r3   weakrefrefr   r  assertIsNoner0   r   rp   )r?   r3   wrs      r   test_garbage_collectionzIOTest.test_garbage_collection  sq    +R,ABB 	! 	!I,d33AGGIACQB   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	""$$###YYy'.. 	2!QVVXXy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$   A%BBB)DDDc                    d}t           j                            |          s(|                     d                    |                     t
          j        dk    r|                     d           t          j        t          j	        k     r|                     d           | 
                    |dd          5 }|                     t          |j                   d d d            n# 1 swxY w Y   | 
                    |d          5 }|                     t          |j                   d d d            n# 1 swxY w Y   | 
                    |d	          5 }|                     t          |j                   d d d            d S # 1 swxY w Y   d S )
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   formatrL  maxsizer   real_max_memuse_2Gr0   r   r   rp   )r?   zeror3   s      r   test_unbounded_filezIOTest.test_unbounded_file  s   w~~d## 	=MM.55d;;<<<;##MMGHHH"W[00MMBCCCYYtTQY// 	51mQV444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5YYtT"" 	5amQV444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5YYtS!! 	5QmQV444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s6   6!C##C'*C'!D11D58D5!F  FFc                 &    | j         |i |g fd}|_        |                     t          j                   |                     j                   |                                |                     d                    d _        d S )Nc                  :    j         g d d <   t                      rC   r   )r   r3   s   r   	bad_flushz4IOTest.check_flush_error_on_close.<locals>.bad_flush!  s    
F111I))Or    r   c                      d S rC   r&   r&   r    r   <lambda>z3IOTest.check_flush_error_on_close.<locals>.<lambda>)      $ r    )r0   r   r   r   r   
assertTruer   assertFalse)r?   r   kwargsr  r   r3   s       @@r   check_flush_error_on_closez!IOTest.check_flush_error_on_close  s     DIt&v&&	 	 	 	 	 	 '17+++!!!###,r    c                    |                      t          j        dd           t          j        t          j        t          j        t          j        z            }|                      |dd           t          j        t          j        t          j        t          j        z            }|                      |ddd           t          j        |           |                      t          j        d           t          j        t          j        t          j        t          j        z            }|                      |d           t          j        t          j        t          j        t          j        z            }|                      |dd           t          j        |           |                      t          j        dd	           t          j        t          j        t          j        t          j        z            }|                      |dd	           t          j        t          j        t          j        t          j        z            }|                      |ddd
           t          j        |           d S )Nr  r   r  F)r  r  r  r  r  r.   r  )r  r   r   r  r0   O_WRONLYO_CREATr   )r?   fds     r   test_flush_error_on_closez IOTest.test_flush_error_on_close+  s    	''	(8$!'LLLWY%r{2:'=>>''DA'>>>WY%r{2:'=>>''DAu'MMM
''	(8$???WY%r{2:'=>>''D111WY%r{2:'=>>''D%'@@@
''	(8#'PPPWY%r{2:'=>>''C''BBBWY%r{2:'=>>''C'5'QQQ
r    c                    |                      t          j        dd          }|                                 |                                 |                                 |                     t
          |j                   d S )Nr  r   r  )r0   r   r   r   r   r   r   r  s     r   test_multi_closezIOTest.test_multi_closeC  sa    IIi&I::												*ag.....r    c                    |                      d          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d            |                     |                    d          d           |                     |                    d          d           |                     |                    d          d            |                     |                    d          d           d S )	N)   abc   dN   efgNrz      ab   cr     ef   gr    )r7   r   rp   r?   rawios     r   test_RawIOBase_readzIOTest.test_RawIOBase_readJ  s    ))*LMMA...A---A---A---A...A---A---A,,,,,r    c                    |                                  |                                 |                                 |                                 |                                 f}|D ]%}|                     t          |d                     &d S )N__dict__)rn  rJ  rI  rF  r,  r  hasattr)r?   rP  r   s      r   test_types_have_dictzIOTest.test_types_have_dictW  s~    KKMMNNOOMMOOLLNN
  	6 	6COOGC445555	6 	6r    c                    |                      t          j        dd          5 }|                    d           d d d            n# 1 swxY w Y   t	          j         t          j        t          j                  fd}|                      ddd|          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )	Nr  r  r.   r  c                     S rC   r&   )r  flagsr  s     r   openerz"IOTest.test_opener.<locals>.openerf  s    Ir    non-existentr,   )r/   r  )r0   r   r   rF   r  O_RDONLYr   rp   )r?   r3   r  r  s      @r   test_openerzIOTest.test_openerb  sK   YYy'wY?? 	1GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	WY%r{33	 	 	 	 	YY~sWVYLL 	0PQQVVXXw///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s#   AA
A
)CCCc                     d }|                      t                    5 }t          dd|           d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nc                     dS Nr   r&   fnamer  s     r   	badopenerz4IOTest.test_bad_opener_negative_1.<locals>.badopenerm      2r    r  r,   r  zopener returned -1r   r   r0   r   str	exceptionr?   r  cms      r   test_bad_opener_negative_1z!IOTest.test_bad_opener_negative_1k      	 	 	z** 	8bY7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8R\**,@AAAAA   =AAc                     d }|                      t                    5 }t          dd|           d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nc                     dS )Nr&   r  s     r   r  z8IOTest.test_bad_opener_other_negative.<locals>.badopeneru  r  r    r  r,   r  zopener returned -2r  r  s      r   test_bad_opener_other_negativez%IOTest.test_bad_opener_other_negatives  r  r  c                    t          j                    |                     t                    5 }|                     dfd           d d d            n# 1 swxY w Y   |                     |j        j        t          j                   d S )Nfooc                     S rC   r&   )namer  r  s     r   r  z/IOTest.test_opener_invalid_fd.<locals>.<lambda>  s     r    r  )	r   make_bad_fdr   r   r0   r   r  errnoEBADF)r?   r  r  s     @r   test_opener_invalid_fdzIOTest.test_opener_invalid_fd{  s     "$$w'' 	<2IIe$:$:$:$:I;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<+U[99999s   AAAc                    |                      t          d          5 }|                      t          d          5 }|                     |                                d          }|                    |                                d           |                                 |                                 |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr	  Fr  )r0   r1   r  rO   rA   r  r   )r?   f1f2fileios       r   test_fileio_closefdzIOTest.test_fileio_closefd  s@   YYx&& 	"YYx&&	*,[[e[<<FOOBIIKKO777KKMMMLLNNNKKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   C+BCC+C	C+C	C++C/2C/c                 
   t          j        |           5  |                     t                    5  |                     t
          j        ddd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r   r/   r  r   check_no_resource_warningr   r   r0   r   r   rI   s    r   test_nonbuffered_textiozIOTest.test_nonbuffered_textio  s"   6t<< 	P 	P"":.. P P		)*C'Q	OOOP P P P P P P P P P P P P P P	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P4   A8$A A8 A$	$A8'A$	(A88A<?A<c                 
   t          j        |           5  |                     t                    5  |                     t
          j        ddd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  invalidr/   newliner3  rI   s    r   test_invalid_newlinezIOTest.test_invalid_newline  s"   6t<< 	V 	V"":.. V V		)*C'9	UUUV V V V V V V V V V V V V V V	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vr6  c           	      b    G d d| j                   } |            }dD ]}|                     |          5  t          d          }|                      t	          ||          |          d           |                     t          |          d           d d d            n# 1 swxY w Y   d S )Nc                       e Zd Zd ZeZdS )3IOTest.test_buffered_readinto_mixin.<locals>.Streamc                     dS )N   12345r&   r?   sizes     r   rp   z8IOTest.test_buffered_readinto_mixin.<locals>.Stream.read  s    xr    N)r#   r$   r%   rp   read1r&   r    r   Streamr>    s"             EEEr    rD  rb   r   r   r@  )r4  rG  r   r   getattrr   )r?   rD  streammethodr   s        r   test_buffered_readinto_mixinz#IOTest.test_buffered_readinto_mixin  s   	 	 	 	 	T( 	 	 	 / 	: 	:Ff%% : :"1  !8!8!8!@!@!DDD  v999: : : : : : : : : : : : : : :	: 	:s   A B##B'	*B'	c                 <     fd} |t          t          j                              |t          t          j        t          j                                                            t          j        dd          5 }t          |                                          }                     t                    5                       |dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d           }                     t                    5                       |dd           d d d            n# 1 swxY w Y   t          t                    }                     t                    5                       |dd           d d d            n# 1 swxY w Y    
                    t          d          5                       t          t          j                  dd           d d d            d S # 1 swxY w Y   d S )Nc                 D                        | dd          5 }|                    d           d d d            n# 1 swxY w Y                        | dd          5 }                    |                                d           d d d            d S # 1 swxY w Y   d S )Nr  r  r.   r  r,   )r0   rF   r   rp   )r  r3   r?   s     r   check_path_succeedsz7IOTest.test_fspath_support.<locals>.check_path_succeeds  s   4w77 !1   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 4w77 41  73334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s!   <A A )BBBr  r  r.   zread/write/append moderwxa)r   r   r   r  fsencoder0   rO   r   r   FloatingPointErrorassertRaisesRegexr   )r?   rL  r3   bad_paths   `   r   test_fspath_supportzIOTest.test_fspath_support  s7   	4 	4 	4 	4 	4 	HY%566777HR[1A%B%BCCDDDYYy'wY?? 	;1

++H""9-- ; ;		(C'	:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;
 D>>y)) 	7 	7IIhgI666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 .//122 	7 	7IIhgI666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ##J0HII 	L 	LIIhy/00&7IKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Lsl   ?<C7;C C7 C$	$C7'C$	(C77C;>C;+EEE	F..F25F20HHHc                     |                      d          }|                     |                                d           |                      d          }|                     |                                d           d S Nr  r  r     abcdefg)r7   r   rp   readallr  s     r   test_RawIOBase_readallzIOTest.test_RawIOBase_readall  sn     ))*@AAz222))*@AA*55555r    c           	          G d d| j                   }d}d}|D ]>}|                     |          5  |\  }}}} |t          t          |                              }	t	          |f|z            }
t          |	|          }|                      ||
          |           |                     t          |
          |           |                     |
d |         t          |                     |f||z
  z  }|                     |
|d          |           |                     t          |	j	                  ||z
             d d d            n# 1 swxY w Y   @d S )Nc                        e Zd Zd Zd Zd ZdS )3IOTest.test_BufferedIOBase_readinto.<locals>.Readerc                     || _         d S rC   avail)r?   r^  s     r   rA   z<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__  s    "


r    c                 L    | j         d |         }| j         |d          | _         |S rC   r]  )r?   rB  results      r   rp   z8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read  s)    ETE*!Z.
r    c                 H    |                      t          |d                    S )z$Returns no more than 5 bytes at oncer   )rp   minrA  s     r   rC  z9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1  s    yyT1...r    N)r#   r$   r%   rA   rp   rC  r&   r    r   Readerr[    sA        # # #  / / / / /r    rc  )
)rb   r   r   r   )rb   r   r   r   )rb   r   r   r   )rb   r      r   )rb   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   rd  r   )r   r   r   r      )
r4  rG  r   r  r   rF  r   r   assertSequenceEqualr^  )r?   rc  rO  UNUSED_BYTErP  rH  r^  requestr`  readerr   unuseds               r   test_BufferedIOBase_readintoz#IOTest.test_BufferedIOBase_readinto  s   		/ 		/ 		/ 		/ 		/T( 		/ 		/ 		/
  	D 	DDd## 
D 
D15.weEll 3 344"K>G#;<< 00  888  Vg666((%--HHH%7V+;<((&AAA  V\!2!2EFNCCC
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D	D 	Ds   DEE	E	c                      G d d| j                   } |            }|                     t          |j                   d |_        d S )Nc                       e Zd Zd Zd ZdS )#IOTest.test_close_assert.<locals>.Rc                     d S rC   r&   )r?   r'  values      r   __setattr__z/IOTest.test_close_assert.<locals>.R.__setattr__      r    c                     t                      rC   r   rI   s    r   r   z)IOTest.test_close_assert.<locals>.R.flush  s    iir    N)r#   r$   r%   rq  r   r&   r    r   rl  rn    s2                   r    rl  c                     d S rC   r&   rI   s    r   r  z*IOTest.test_close_assert.<locals>.<lambda>      t r    )rn  r   r   r   r   )r?   rl  r3   s      r   test_close_assertzIOTest.test_close_assert  sc    	  	  	  	  	  	  	  	 
 ACC'17+++ $#r    NF);r#   r$   r%   r   r   r   r   r   r  r  unittestskipIfr   is_emscripten
skipUnlessr  r  rR  r[  r^  r`  rf  rr  ry  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+  r0  r5  r;  rI  rR  rX  rk  rw  r&   r    r   r   r   =  sg       + + ++ + +2 2 204 4 4 4B E* * *(? ? ?2 X_F  XV,,.BCCf@ f@ DC f@PV V V
 
 

# 
# 
#: : :A A A7 7 7  # # #; ; ; , , ,3 3 34, , ,<1 1 14 4 49 9 95 5 5/ / /G G G; ; ;G G G; ; ;
= = =2 2 25 5 5     0/ / /- - -	6 	6 	60 0 0B B BB B B: : :
 
 
P P P
V V V
: : :L L L86 6 6'D 'D 'DR$ $ $ $ $r    r   c                       e Zd Zd ZdS )CIOTestc                      G d d| j                   } |              |            }||_        t          j        |          }~~t	          j                     |                      |            |           d S )Nc                       e Zd Zd ZdS )*CIOTest.test_IOBase_finalize.<locals>.MyIOc                     d S rC   r&   rI   s    r   r   z0CIOTest.test_IOBase_finalize.<locals>.MyIO.close  rr  r    Nr#   r$   r%   r   r&   r    r   r  r    s#            r    r  )rn  r   r  r  r   r  r  )r?   r  r   r  s       r   test_IOBase_finalizezCIOTest.test_IOBase_finalize  s    	 	 	 	 	4; 	 	 	
 	dff[""$$#####r    N)r#   r$   r%   r  r&   r    r   r~  r~    s#        $ $ $ $ $r    r~  c                       e Zd ZdS )PyIOTestNr"   r&   r    r   r  r    rh   r    r  c                       e Zd Zd Zd ZdS )APIMismatchTestc                     t          j        t          j        t          j        d          }|                     |t                      d           dS )z:Test that pyio RawIOBase class has all c RawIOBase methods)__weakref__)rT  z6Python RawIOBase does not have all C RawIOBase methodsmsgN)r   detect_api_mismatchr   rJ  r   r   r   r?   mismatchs     r   test_RawIOBase_io_in_pyio_matchz/APIMismatchTest.test_RawIOBase_io_in_pyio_match  sM    .t~r|6FH H H355.fgggggr    c                     t          j        t          j        t          j                  }|                     |t                      d           dS )z:Test that c RawIOBase class has all pyio RawIOBase methodsz6C RawIOBase does not have all Python RawIOBase methodsr  N)r   r  r   rJ  r   r   r   r  s     r   test_RawIOBase_pyio_in_io_matchz/APIMismatchTest.test_RawIOBase_pyio_in_io_match"  s>    .r|T^LL355.fgggggr    N)r#   r$   r%   r  r  r&   r    r   r  r    s:        h h hh h h h hr    r  c                   b    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S )CommonBufferedTestsc                    |                                  }|                     |          }|                     |                                |           |                     t
          |j                   t          |           d S rC   )rl   tpassertIsdetachr   r   reprr?   r  r_   s      r   test_detachzCommonBufferedTests.test_detach+  sc    nnggcllcjjllC(((*cj111S					r    c                     |                                  }|                     |          }|                     d|                                           d S rM   )rl   r  r   rO   r?   r  bufios      r   test_filenozCommonBufferedTests.test_fileno3  sD      U\\^^,,,,,r    c                     |                                  }|                     |          }|                     t          |j        dd           |                     t          |j        dd           d S )Nr   r   r   )rl   r  r   r   rW   r  s      r   test_invalid_argsz%CommonBufferedTests.test_invalid_args9  s^      *ej!R888*ej!Q77777r    c                     | j         }g  G fdd|          }|                                 } ||          }~t          j                     |                     g d           d S )Nc                   :     e Zd Z fdZ fdZ fdZ xZS )BCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOc                                          d           	 t                      j        } |             d S # t          $ r Y d S w xY wr   r  r  s     r   r  zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__D  r  r  c                 r                         d           t                                                       d S ry   r  r  s    r   r   zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closeL  r  r    c                 r                         d           t                                                       d S r  r  r  s    r   r   zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushO  r  r    r  r  s   @r   MyBufferedIOr  C  r  r    r  r  )r  rl   r   r  r   )r?   r  r  r  r  r  s        @r   test_override_destructorz,CommonBufferedTests.test_override_destructor@  s    W	  	  	  	  	  	  	 2 	  	  	    U##+++++r    c                     |                                  }|                     |          fd} |             |                     t          |           d S )Nc                  @     5  	 d d d            d S # 1 swxY w Y   d S rC   r&   r  s   r   _withz7CommonBufferedTests.test_context_manager.<locals>._with\  sp                       s   )rl   r  r   r   )r?   r  r  r  s      @r   test_context_managerz(CommonBufferedTests.test_context_managerX  se      	 	 	 	 	 	 	*e,,,,,r    c                    |                                  }t          j                    5 }|                     t                    5  |                     |          j         d d d            n# 1 swxY w Y   t          s|                     |j	                   n,|j	        %| 
                    |j	        j        t                     d d d            d S # 1 swxY w Y   d S rC   )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_destructord  s[    ##%%/11 	BR"">22 % %$$% % % % % % % % % % % % % % % + B!!"-0000*  !7AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs6   CA*C*A.	.C1A.	2ACCCc                    |                                  }|                     |          }d| j        j        d| j        j        }|                     t          |          d|z             d|_        |                     t          |          d|z             d|_        |                     t          |          d|z             d S )N(z\.)?z<%s>dummyz<%s name='dummy'>   dummyz<%s name=b'dummy'>)rl   r  r$   r%   assertRegexr  r'  )r?   r  r(   clsnames       r   	test_reprzCommonBufferedTests.test_reprq  s    nnGGCLL"&'"4"4"4dg6J6JKa&7"2333a"5"?@@@a"6"@AAAAAr    c                     |                                  }|                     |          }t          j        |d|          5  	 t	          |           n# t
          $ r Y nw xY wd d d            d S # 1 swxY w Y   d S )Nr'  )rl   r  r   	swap_attrr  RuntimeErrorr?   r  r(   s      r   test_recursive_reprz'CommonBufferedTests.test_recursive_repr{  s    nnGGCLLsFA.. 	 	Q   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6    A/AA/
AA/AA//A36A3c                    |                                  g fd}|_        |                               |                     t          j                   |                     j                   |                     j                   |                                |                     d                    |                     d                    d _        d S )Nc                  F     j         j         gd d <   t                      rC   r   )r(   r   r  s   r   r  z@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flush  s"    3:.F111I))Or    r   r]   c                      d S rC   r&   r&   r    r   r  z?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>      D r    )	rl   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	 	 	 	 	 	 	 	GGCLL'17+++!!!
######### L			r    c                 4   |                                  }d }d }||_        |                     |          }||_        |                     t
                    5 }|                                 d d d            n# 1 swxY w Y   |                     |j        j        d           | 	                    |j        j
        t
                     |                     |j        j
        j        d           |                     |j                   d |_        d |_        d S )Nc                       t          d          Nr   rt  r&   r    r   r  z@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flush      '"""r    c                       t          d          Nr   rt  r&   r    r   	bad_closez@CommonBufferedTests.test_close_error_on_close.<locals>.bad_close  r  r    r   r   c                      d S rC   r&   r&   r    r   r  z?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>  r  r    c                      d S rC   r&   r&   r    r   r  z?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>  r  r    )rl   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  sA   nn	# 	# 	#	# 	# 	#	GGCLLw'' 	3GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+Z888cm7AAA27DDD""" !L	,   A99A= A=c                 T   |                                  }d }d }||_        |                     |          }||_        |                     t
                    5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             | 	                    |j        j
        t
                     |                     dt          |j        j
                             |                     |j                   d |_        d |_        d S )Nc                      t           rC   non_existing_flushr&   r    r   r  zNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flush      $$r    c                      t           rC   non_existing_closer&   r    r   r  zNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_close  r  r    r  r  c                      d S rC   r&   r&   r    r   r  zMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>  r  r    c                      d S rC   r&   r&   r    r   r  zMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>  r  r    )rl   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  sI   nn	% 	% 	%	% 	% 	%	GGCLLy)) 	SGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*C,>,>???cm7CCC*C0I,J,JKKK""" , L			r  c                    |                                  }|                     |          }|                                 |                                 |                                 |                     t          |j                   d S rC   )rl   r  r   r   r   r   r  s      r   r  z$CommonBufferedTests.test_multi_close  se    nnGGCLL												*ag.....r    c                     |                      |                     d                    }|                     | j        |j                   |                     | j        |j        d           d S )N
   AAAAAAAAAAr   )r  r   r   r   rZ   rW   r?   r  s     r   test_unseekablez#CommonBufferedTests.test_unseekable  s_    --i8899$3UZ@@@$3UZCCCCCr    c                     |                                  }|                     |          }|                                  }|                     t                    5  ||_        d d d            d S # 1 swxY w Y   d S rC   )rl   r  r   r  r  )r?   r  r_   xs       r   test_readonly_attributesz,CommonBufferedTests.test_readonly_attributes  s    nnggcllNN~.. 	 	CG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A--A14A1N)r#   r$   r%   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&   r    r   r  r  (  s          - - -8 8 8, , ,0
- 
- 
-B B BB B B  ! ! !$  (! ! !*/ / /D D D
    r    r  c                   N    e Zd Zej        d             Zej        d             ZdS )
SizeofTestc                 >   d}d}|                                  }|                     ||          }t          j        |          |z
  }|                                  }|                     ||          }|                     t          j        |          ||z              d S )N       buffer_size)rl   r  rL  	getsizeofr   )r?   bufsize1bufsize2r  r  rB  s         r   test_sizeofzSizeofTest.test_sizeof  s      844}U##h.  844u--th?????r    c                    d}|                                  }|                     ||          }t          j        |          |z
  }|                                 |                     t          j        |          |           d S )Nr  r  )rl   r  rL  r  r   r   )r?   r  r  r  rB  s        r   test_buffer_freeingzSizeofTest.test_buffer_freeing  sr      733}U##g-u--t44444r    N)r#   r$   r%   r   cpython_onlyr  r  r&   r    r   r  r    sS        @ @ @ 5 5 5 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        d           ej                    d                         Zd Zd Zd Zd Zd ZdS )BufferedReaderTestr	  c                    |                      dg          }|                     |          }|                    |           |                    |d           |                    |d           |                     d|                                           |                     t          |j        |d           |                     t          |j        |d           |                     t          |j        |d           |                      dg          }|                    |           |                     d|                                           d S )Nr     r     r   r   )rl   r  rA   r   rp   r   r   r  s      r   test_constructorz#BufferedReaderTest.test_constructor  s&   x((uu$///u"---...*eneKKK*eneMMM*eneLLLx((u.....r    c                 v   | j                             | j                   }~| j                             | j                   }|                     t          t          fd|j        d           |                    |                                            |                     |                    d          d           d S Nuninitialized|has no attributer   r    )	r  __new__rP  r   r  rp   rA   rl   r   r  s     r   test_uninitializedz%BufferedReaderTest.test_uninitialized  s    ((((
N;?$z1	. 	. 	. 	t~~''(((A,,,,,r    c                     dD ]U}|                      d          }|                     |          }|                     d|                    |                     V|                     t
          |j        d           d S )N)Nrd  rU  rV  r"  )rl   r  r   rp   r   r   )r?   argr  r  s       r   	test_readzBufferedReaderTest.test_read  su     	: 	:CNN#9::EGGENNEZC9999*ej"55555r    c                    |                      d          }|                     |          }|                     d|                    d                     |                     d|                    d                     |                     |j        d           |                     d|                    d                     |                     d|                    d                     |                     |j        d           |                     d	|                    d                     |                     |j        d
           |                     d|                    d                     |                     |j        d           |                     d|                    d                     |                     |j        d           d S )NrU     ar]      br    r   r  r  r  rz   r  r   re  rl   r  r   rp   rC  r=   r  s      r   
test_read1zBufferedReaderTest.test_read1  s   566uzz!}}---u{{1~~...q)))ekk!nn---u{{3//000q)))u{{3//000q)))S!1!1222q)))ekk#..///q)))))r    c                 Z   |                      d          }|                     |          }|                     d|                    d                     |                     d|                                           |                     d|                                           |                     d|                    d                     |                     |j        d           |                     d	|                                           |                     |j        d
           d S )NrU  r  r]   s   bcr  r  r   r   r    re  r  r  s      r   test_read1_arbitraryz'BufferedReaderTest.test_read1_arbitrary  s    566uzz!}}---...u{{}}---R111q)))ekkmm,,,q)))))r    c                 >   |                      d          }|                     |          }t          d          }|                     |                    |          d           |                     |d           |                     |                    |          d           |                     |d           |                     |                    |          d           |                     |d           |                     |                    |          d           |                     |d           |                     |                    |          d           |                     |d           |                      d	          }|                     |          }|                     |                    |          d           |                     |d           |                     |                    |          d           |                     |d
           d S )NrU  rz   r     cdr   r]   s   gfr   )r  Ns   cb)rl   r  r   r   rb   )r?   r  r  r(   s       r   test_readintoz BufferedReaderTest.test_readinto)  s   566aLL**A...E"""**A...E"""**A...E"""**A...E"""**A...E"""~..**A...E"""**A...E"""""r    c                    d}|                      d          }|                     ||          }t          d          }|                     |                    d          d           |                     |j        d           |                     |                    |          d           |                     |d           |                     |j        d           |                     |                    |          d           |                     |d d         d	           |                     |j        d           |                     |                    |          d           |                     |d
           |                     |j        d           t          d|z            }|                     |                    d          d           |                     |j        d           |                     |                    |          d           |                     |d d         d           |                     |j        d           d S )Nr   )r     de   fghs   jklr  rz   r   r  r]   r  r  r  r  r   s   fghjklre  )rl   r  r   r   peekr=   r   )r?   r  r  r  r(   s        r   test_readinto1z!BufferedReaderTest.test_readinto1>  s   >??;77aLLA///q)))++Q///E"""q)))++Q///2A2%%%q)))++Q///E"""q)))am$$A///q)))++Q///2A2	***q)))))r    c           	      n   d}d}|                      |f          }|                     ||          }t          j        dd          }t          |          dk    sJ |                    |          }|                     |t          |                     t          |                              d          }|                     |t          |                     | 	                    |d |         |d |                    | 	                    ||d          dt          ||d                    z             d S 	N<   s   aaaaaaaaaaaaaaaaaaaaaaaaaar  r  s    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr  r   r   )
rl   r  r)   r   rb   r  r   r   
assertLessr   r?   r  r   r  r  r(   ra   bms           r   test_readinto_arrayz&BufferedReaderTest.test_readinto_arrayU  s   w'';77 KY''1vv|||| NN11c!ff%%% ]]$$3r77###BQBbqb***ABBRV!566666r    c           	      n   d}d}|                      |f          }|                     ||          }t          j        dd          }t          |          dk    sJ |                    |          }|                     |t          |                     t          |                              d          }|                     |t          |                     | 	                    |d |         |d |                    | 	                    ||d          dt          ||d                    z             d S r  )
rl   r  r)   r   r   r  r   r   r  r   r  s           r   test_readinto1_arrayz'BufferedReaderTest.test_readinto1_arrayj  s   w'';77 KY''1vv|||| OOA1c!ff%%% ]]$$3r77###BQBbqb***ABBRV!566666r    c                 B     fd}                       |                                            g d                                  |                                d          ddg                                  |                                d           g d           d S )Nc                  X                         d          }                     |           S )Nrb  r   r   )rl   r  )r  r?   s    r   r  z0BufferedReaderTest.test_readlines.<locals>.bufio  s%    NN#<==E775>>!r    r$  r   rb  r   r   rx  r  s   ` r   test_readlinesz!BufferedReaderTest.test_readlines  s    	" 	" 	" 	" 	" 	**,,.G.G.GHHH**1--&/ABBB**4002K2K2KLLLLLr    c           	      z   d}t          |          }dg d|dggdg d|ggdg dg dgg}|D ]\  }}}|                     |          }|                     ||	          }d}	|D ];}
|                     |                    |
          ||	|	|
z                       |	|
z  }	<|                     |j        |           d S )
N	   abcdefghir  )r   r]   re     r   )r   r   r   re  )r]   rz   re  rz   )re  re  r]   r  )r   r   r  r   rp   r   )r?   r   dlenrO  r  buf_read_sizesraw_read_sizesr  r  r   nbytess              r   test_bufferingz!BufferedReaderTest.test_buffering  s   4yy >>>T1;0:::T80>>>;;;0
 8= 	A 	A3G^^OOD))EGGEwG77EC(    F!3!3T#c&j.5IJJJvU/@@@@	A 	Ar    c                    |                      d          }|                     |          }|                     d|                    d                     |                     d|                    d                     |                     d|                                           |                     d|                    d                     |                     |                                           |                     d|                                           |                      d          }|                     d	|                                           |                     |                                           d S )
N)r  r  Nr  NNN   abcdr      er]   s   fgr    )r  NNr  )rl   r  r   rp   r  r  rW  r  s      r   test_read_non_blockingz)BufferedReaderTest.test_read_non_blocking  s-   MNN%**Q--000uzz!}}---

---ejjmm,,,%**,,'''ejjll+++122u}}///%--//*****r    c                     |                      d          }|                     |          }|                     d|                    d                     d S )NrU  rV  i(#  rl   r  r   rp   r  s      r   test_read_past_eofz%BufferedReaderTest.test_read_past_eof  sK    566UZZ%5%566666r    c                     |                      d          }|                     |          }|                     d|                                           d S rT  r4  r  s      r   test_read_allz BufferedReaderTest.test_read_all  sG    566UZZ\\22222r    cpuc                 R  	
 	 d}t          t          d                    |z  }t          j        |           t	          t          |                    }|                     t          j        d          5 

	                    |           d d d            n# 1 swxY w Y   |                     t          j        | j
        d          5 }|                     |d          g 	g 	fd

fdt          d	          D             }t          j        |          5  t          j        d
           d d d            n# 1 swxY w Y   |                     	d	z             d                              }t          d          D ]H}t	          t          |g                    }|                     |                    |          |           I	 d d d            n# 1 swxY w Y   t          j        t          j                   d S # t          j        t          j                   w xY w)N     r  r   r  r)  c                      	 t          ddg          D ]1}                     |           }|s d S                     |           2d S # t          $ r}                    |            d }~ww xY w)Nr]      )r   rp   rD   	Exception)ra   r   er  errorsresultss      r   r3   z*BufferedReaderTest.test_threads.<locals>.f  s    
!&2w . .A %

1A#$ & %#NN1----. . %   a(((s   +A A 
A-A((A-c                 :    g | ]}t          j                   S r  r   r  .0r  r3   s     r   
<listcomp>z3BufferedReaderTest.test_threads.<locals>.<listcomp>  '    III!9+1555IIIr    r   {Gz?(the following exceptions were caught: %rr    )r:   r  randomshuffler   r   r0   r   r   rF   	read_moder  r   start_threadsr   r   r  r   r   r   r   )r?   Nlr   r  threadsr  cr  r@  r3   rA  s           @@@@r   test_threadszBufferedReaderTest.test_threads  s   $	/ AU3ZZ  1$AN1ill##A9+T22 a


              9+T^qII 4SQ       JIIIuRyyIII%3G<< % %Jt$$$% % % % % % % % % % % % % % %  >GI I IHHW%%s 4 4Ainn--A$$QWWQZZ33334-4 4 4 4 4 4 4 4 4 4 4 4 4 4 44 Y-.....IY-....sz   A1H 7BH BH  B!*H AGD=1G=E	GE	B	GH GH "G#H  H&c                    |                      |                     d                    }|                     | j        |j                   |                     | j        |j        d           |                    d           |                     | j        |j        d           |                     | j        |j                   d S )Nr  r   r]   )r  r   r   r   rZ   rW   rp   r  s     r   r  z"BufferedReaderTest.test_unseekable  s    --i8899$3UZ@@@$3UZCCC

1$3UZCCC$3UZ@@@@@r    c                     |                      d          }|                     |          }|                     t          |j        d           |                     t          |j                   d |_        d S )NrU  r   c                      d S rC   r&   r&   r    r   r  z7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>      d r    )rw   r  r   r   rW   rZ   r   r  s      r   test_misbehaved_ioz%BufferedReaderTest.test_misbehaved_io  sf    $$%;<<'5:q111'5:... #lr    c           	      |   d}d|dz
  ||dz   |dz  fD ]'}|                      d|z  g          }|                     ||          }|                     |                    |          d|z             |                     |j        dd                    ||j                             |                      d|dz
  z  dg          }|                     ||          }|                     |                    |          d|z             |                     |j        dd                    ||j                             )d S )Nr  rz   r]   r   r   zfailed for {}: {} != 0)rl   r  r   rp   r>   r  )r?   r  ra   r  r  s        r   test_no_extraneous_readz*BufferedReaderTest.test_no_extraneous_read  sX    Wq['7Q;!D 	Z 	ZANND1H:..EGGE7++EUZZ]]D1H555U4a5<<Q@WXXZ Z Z NNDAEND#9::EGGE7++EUZZ]]D1H555U4a5<<Q@WXXZ Z Z Z	Z 	Zr    c                 &   t          j        t          j        d                    }|                    d           |                                 |                     t          |j                   |                     t          |j        d           d S )N   12r]   )	r   r$  r,  rp   r   r   r   r  rC  rE   s     r   test_read_on_closedz&BufferedReaderTest.test_read_on_closed  sp    bj//00	q							*af---*agq11111r    c                 *   |                      d          }|                     |          }|                     |                                           |                     | j        |j                   |                     | j        |j        d           d S )Nr  r   )r   r  r  rJ   r   r   rd   r  s      r   test_truncate_on_read_onlyz-BufferedReaderTest.test_truncate_on_read_only  s~    ''))***$3U^DDD$3U^QGGGGGr    N)r#   r$   r%   rN  r  r  r	  r  r  r  r  r  r!  r&  r.  r2  r5  r7  r   requires_resourcer   requires_working_threadingrT  r  rY  r[  r^  r`  r&   r    r   r  r    s       I/ / /- - -6 6 6* * * 	* 	* 	*# # #** * *.7 7 7*7 7 7*M M MA A A(+ + +7 7 73 3 3 Wu%%0022%/ %/ 32 &%%/NA A A# # #Z Z Z(2 2 2H H H H Hr    r  c                   n    e Zd Zej        Z eddd          d             Zd Zd Z	d Z
d Zd	 Zd
 ZdS )CBufferedReaderTestTLsanitizer defaults to crashing instead of returning NULL for malloc failure.memoryaddressreasonc                 "   t                               |            t          j        dk    rd|                                 }|                     |          }|                     t          t          t          f|j
        |t          j                   d S d S Nr  )r  r  rL  r  rl   r  r   r   MemoryErrorr   rA   r  s      r   r  z$CBufferedReaderTest.test_constructor       	++D111 ;##NN$$EGGENNE}k:Fs{4 4 4 4 4 $#r    c                    |                      dg          }|                     |          }|                     t          |j        |d           |                     t          |j                   |                     t          |j        |d           |                     t          |j                   |                     t          |j        |d           |                     t          |j                   d S )Nr  r   r  r   r   )rl   r  r   r   rA   rp   r  s      r   test_initializationz'CBufferedReaderTest.test_initialization#  s    x((*eneKKK*ej111*eneMMM*ej111*eneLLL*ej11111r    c                     |                      d          }|                     |          }|                     t          |j        d           d S )NrU  r   )rw   r  r   r   rp   r  s      r   test_misbehaved_io_readz+CBufferedReaderTest.test_misbehaved_io_read-  sG    $$%;<< 	'5:r22222r    c                    |                      t          j        t          j                   t	          j        dt          f          5  |                     t          j        d          }|                     |          }||_	        t          j        |          }~t          j                     d d d            n# 1 swxY w Y   |                      |            |           d S )Nr  r  )r  r   r   r   r   r  r  r  r  r3   r  r  r   r  r  r?   r  r3   r  s       r   r  z+CBufferedReaderTest.test_garbage_collection4  s     		()*:;;;+R,ABB 	! 	!KK	 0%88EAACQB   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	""$$#####s   A%B77B;>B;c                     |                      t          d          5  |                     t          j                    ddd           d d d            d S # 1 swxY w Y   d S )Nr$  r  rP  r   r  r   r,  rI   s    r   test_args_errorz#CBufferedReaderTest.test_args_errorA      ##I/?@@ 	4 	4GGBJLL$d333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4   *AAAc                 V   t          j        t          j        d                    }d |_        |                     |          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     |j	        j
                   d S )Nr]  c                     dS r  r&   r_   s    r   r  z=CBufferedReaderTest.test_bad_readinto_value.<locals>.<lambda>H  s    R r    )r   r$  r,  rb   r  r   r   r  r  r  	__cause__r?   r  r  r  s       r   test_bad_readinto_valuez+CBufferedReaderTest.test_bad_readinto_valueF  s    !"*U"3"344'w'' 	2NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	",011111   A??BBc                 b   t          j        t          j        d                    }d |_        |                     |          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     |j	        j
        t                     d S )Nr]  c                     dS r   r&   r{  s    r   r  z<CBufferedReaderTest.test_bad_readinto_type.<locals>.<lambda>P  s    S r    )r   r$  r,  rb   r  r   r   r  r  r  r|  r   r}  s       r   test_bad_readinto_typez*CBufferedReaderTest.test_bad_readinto_typeN  s    !"*U"3"344(w'' 	2NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	bl4i@@@@@r  N)r#   r$   r%   r   r$  r  r   r  ro  rq  r  rv  r~  r  r&   r    r   rd  rd    s        		BdD ;G H H H4 4H H42 2 23 3 3$ $ $4 4 4
2 2 2A A A A Ar    rd  c                       e Zd Zej        ZdS )PyBufferedReaderTestN)r#   r$   r%   r   r$  r  r&   r    r   r  r  W          		BBBr    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j        d           ej                    d                         Zd Zd Zd Z ej                    d             ZdS )BufferedWriterTestr  c                 *   |                                  }|                     |          }|                    |           |                    |d           |                    |d           |                     d|                    d                     |                                 |                     t          |j        |d           |                     t          |j        |d           |                     t          |j        |d           |                    |           |                     d|                    d	                     |                                 |                     d
                    |j	                  d           d S )Nr  r  r  r   r  r   r   r      ghir    s   abcghi)
rl   r  rA   r   rF   r   r   r   r   r<   r  s      r   r  z#BufferedWriterTest.test_constructor^  sV     uu$///u"---EKK//000*eneKKK*eneMMM*eneLLLuEKK//000%"455yAAAAAr    c                 v   | j                             | j                   }~| j                             | j                   }|                     t          t          fd|j        d           |                    |                                            |                     |                    d          d           d S )Nr  r    r   )	r  r  rP  r   r  rF   rA   rl   r   r  s     r   r  z%BufferedWriterTest.test_uninitializedn  s    ((((
N;?${C	1 	1 	1 	t~~''(((S))1-----r    c                    |                                  }|                     |          }|                    d           |                     |j                   |                                 |                     |j        dg           d S )Ns   howdy!)rl   r  rF   r  r<   r  r   r  s      r   test_detach_flushz$BufferedWriterTest.test_detach_flushx  sw    nnggcll		))***

)I;77777r    c                    |                                  }|                     |d          }|                    d           |                     |j                   t          d          }|                    |           d|d d <   |                                 |                     d                    |j                  d           d S )Nr)  r     def   ***r       abcdef)	rl   r  rF   r  r<   r   r   r   r   )r?   writerr  r   s       r   
test_writezBufferedWriterTest.test_write  s    !!""F,---6""Fqqq	&"566	BBBBBr    c                 v   |                                  }|                     |d          }d}t          dt          |          d          D ]"}|                    |||dz                       #d                    |j                  }|                     |                    |d d                   |           d S )Nr)  s   abcdefghijklmnopr   r   r    i)	rl   r  r  r   rF   r   r<   r  rN  )r?   r  r  contentsra   flusheds         r   test_write_overflowz&BufferedWriterTest.test_write_overflow  s    !!""&q#h--++ 	) 	)AKK1Q3((((((6.// 	**8CRC=997CCCCCr    c                 h   t          t          d                    dz  }d}|                                 }|                     |d          }d } |            }|t	          |          k     rt          t          |          t	          |          |z
            }|                     |                    ||||z                      |            ||           ||z  }|t	          |          k     |	                                 |                     |d
                    |j                             d S )Nr;  r:  r   r   c               3   Z   K   t          d          D ]} t          d          D ]}| V  d S )Nr]      )r   r  )rB  r  s     r   	gen_sizesz2BufferedWriterTest.check_writes.<locals>.gen_sizes  sJ      a  r  AJJJJ r    r    )r   r  rl   r  r   rb  rp  r   rF   r   r   r<   )	r?   intermediate_funcr  ra   r  r  r  sizesrB  s	            r   check_writeszBufferedWriterTest.check_writes  s$   s$$t+!!##	 	 	 	#h--tE{{CMMA$566DU[[!AdF();<<dCCCe$$$IA	 #h--
 	388F,?#@#@AAAAAr    c                 2    |                      d            d S )Nc                     d S rC   r&   r  s    r   r  z0BufferedWriterTest.test_writes.<locals>.<lambda>  s     r    r  rI   s    r   test_writeszBufferedWriterTest.test_writes  s     ,,-----r    c                 2    |                      d            d S )Nc                 *    |                                  S rC   r  r  s    r   r  z<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>  s     r    r  rI   s    r   test_writes_and_flushesz*BufferedWriterTest.test_writes_and_flushes  s     5566666r    c                 f    d }|                      |           d }|                      |           d S )Nc                     |                                  }|                     |dz   d           |                     |dz
  d           |                     |d           d S r\   )rZ   rW   r  r   s     r   _seekabsz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabs  sY    **,,CJJsQw"""JJsQw"""JJsAr    c                     |                      dd          }|                      dd           |                      dd           |                      |d           d S )Nr   r]   r   )rW   r  s     r   _seekrelz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrel  sW    **Q""CJJr1JJr1JJsAr    r  )r?   r  r  s      r   test_writes_and_seeksz(BufferedWriterTest.test_writes_and_seeks  sR    	 	 	
 	(###	 	 	
 	(#####r    c                 2    |                      d            d S )Nc                 P    |                      |                                           S rC   )rd   rZ   r  s    r   r  z>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>  s    uzz||(D(D r    r  rI   s    r   test_writes_and_truncatesz,BufferedWriterTest.test_writes_and_truncates  s     DDEEEEEr    c                    |                                  }|                     |d          }|                     |                    d          d           |                     |                    d          d           |                    d           |                     |                    d          d           |                    d           	 |                    d	           |                     d
           n# | j        $ r}|j        }Y d }~nd }~ww xY w|                     |d           |                     |                                d           |                     |                    d          d           |                                }| 	                    |
                    d          |           d S )Nr)  r0  re  s   efghir      ks   jklmn   0s   opqrwxyz0123456789z'BlockingIOError should have been raisedr  s   abcdefghijklmnopqrwxyzs	   ABCDEFGHIr   s	   01234567A)r   r  r   rF   r   rK  r   characters_writtenr   r  rN  )r?   r  r  r?  writtenr   s         r   test_write_non_blockingz*BufferedWriterTest.test_write_non_blocking  s   ''))QW--q111X..222TX..222 	T	AKK-... II?@@@@ # 	+ 	+ 	+*GGGGGG	+ 	"%%%**%	' 	' 	' 	\22A666OO\22A66666s   C< <
DDDc                    t          j                    }|                     |d          }|                     |                    d          d           |                     |                                d           |                    dd           |                     |                    d          d           |                    dd           |                     |                                d           |                     |                    d          d           |                                 |                     |                                d	           d S )
Nre  r  r   r   s   XYrz   s   XYcdefs   123456s   XYcdef123456)	r   r,  r  r   rF   rZ   rW   r{  r   r?   r  r  s      r   test_write_and_rewindz(BufferedWriterTest.test_write_and_rewind  s   jllQY//333q)))

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

1a333Y//33399999r    c                     |                                  }|                     |d          }|                    d           |                                 |                     d|j        d                    d S Nr)  r  r   )rl   r  rF   r   r   r<   r?   r  r  s      r   
test_flushzBufferedWriterTest.test_flush  sg    !!""F!4Q!788888r    c                    g d}|                                  }|                     |d          }|                    |           |                                 |                     d                    |j                  d           d S N)r  r  r   r)  r    r  )rl   r  r  r   r   r   r<   r?   rQ  r  r  s       r   test_writelinesz"BufferedWriterTest.test_writelines  s{    !!!!!""&"566	BBBBBr    c                 *   t          g d          }|                                 }|                     |d          }|                    |           |                                 |                     d                    |j                  d           d S r  )r   rl   r  r  r   r   r   r<   r  s       r   test_writelines_userlistz+BufferedWriterTest.test_writelines_userlist  s    ***++!!""&"566	BBBBBr    c                 $   |                                  }|                     |d          }|                     t          |j        g d           |                     t          |j        d            |                     t          |j        d           d S )Nr)  r  abc)rl   r  r   r   r  r  s      r   test_writelines_errorz(BufferedWriterTest.test_writelines_error  s    !!"")U%5yyyAAA)U%5t<<<)U%5u=====r    c                     |                                  }|                     |d          }|                    d           ~t          j                     |                     d|j        d                    d S r  )rl   r  rF   r   r  r   r<   r  s      r   r  z"BufferedWriterTest.test_destructor  sl    !!""F!4Q!788888r    c                    |                      t          j        t          j                   |                     t          j        | j        d          5 }|                     |d          }|                    d           |                     |	                    d          d           |                     |
                                d           d d d            n# 1 swxY w Y   |                     t          j        dd          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )	Nr   r  r)  r  r   r   r	  r  )r  r   r   r   r0   
write_moder  rF   r   rd   rZ   rp   )r?   r  r  r3   s       r   test_truncatez BufferedWriterTest.test_truncate  s   	()*:;;;YYy'AYFF 	.#GGCOOEKK	"""U^^A..222UZZ\\1---		. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
 YYy'Y;; 	/qQVVXXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s%   A=CC"C)D>>EEc                 ^   |                      t          j        t          j                   |                     t          j        d          5 }|                    ddz             d d d            n# 1 swxY w Y   g d}|D ]}|                     t          j        d|          5 }|                    d|dz   z             |                    d           |                                 |                     |	                                |dz              d d d            n# 1 swxY w Y   d S )	Nr      i'  )r  r     zr+br  r]   rz   )
r  r   r   r   r0   rF   rp   rd   r   rZ   )r?   r3   buffer_sizesr  s       r   test_truncate_after_writez,BufferedWriterTest.test_truncate_after_write  s    		()*:;;;YYy'.. 	%!GGGeO$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% )((' 	< 	<K9+UkJJ <a;?3444q			

  ;?;;;< < < < < < < < < < < < < < <	< 	<s%   A00A47A4%A0D!!D%	(D%	r8  c                   
 	 d}t          t          d                    |z  }t          ddg          }d}t                      |t	          |          k     rGt          |          }                    ||||z                       ||z  }|t	          |          k     G~|                     t          j	        | j
        d          5 }|                     |d          
g 
fdfd	t          d
          D             }t          j        |          5  t          j        d           d d d            n# 1 swxY w Y   |                     dz             
                                 d d d            n# 1 swxY w Y   |                     t          j	        d          5                                 }d d d            n# 1 swxY w Y   t          d          D ]9}	|                     |                    t          |	g                    |           :	 t          j        t          j	                   d S # t          j        t          j	                   w xY w)Nr:  r;  r]   r=  r   r  r)  c                      	 	 	                                  } n# t          $ r Y d S w xY w                    |            =# t          $ r}                    |            d }~ww xY wrC   )popleftr^   rF   r>  rD   )r   r?  r  r@  queues     r   r3   z*BufferedWriterTest.test_threads.<locals>.fE  s    	+'$)MMOO#- ' ' ' &'!KKNNN+ %   a(((s2   A  A 
(A (A 
A&A!!A&c                 :    g | ]}t          j                   S rC  rE  rF  s     r   rH  z3BufferedWriterTest.test_threads.<locals>.<listcomp>P  rI  r    r   rJ  rK  r	  )r   r  r   r   r   rp  rD   r0   r   r   r  r  r   rO  r   r   r  r   rp   r   r   r   )r?   rP  r  r  ra   rB  r  rR  r   r  r  r@  r3   r  s             @@@@r   rT  zBufferedWriterTest.test_threads-  s   +	/ AU3ZZ((1,H1b'NNEAGGEc(mm##E{{Xa$h/000T	 c(mm##  9+T_JJ cQ
 
 
 
 
 
 
 JIIIuRyyIII%3G<< % %Jt$$$% % % % % % % % % % % % % % %  >GI I I'              ( 9+T22 aFFHH              3ZZ 9 9  s!4!4a88889 Y-.....IY-....sz   CH? 
AE>D:.E>:D>	>E>D>	0E>2H? >FH? F#H? )G
>H? 
GH? GAH? ? Ic                 .   |                                  }|                     |d          }|                     t          |j        d           |                     t          |j                   |                     t          |j        d           d |_        d S )Nr   r   r  c                      d S rC   r&   r&   r    r   r  z7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>e  rX  r    )rw   r  r   r   rW   rZ   rF   r   r  s      r   rY  z%BufferedWriterTest.test_misbehaved_io]  s    $$&&q!!'5:q111'5:...'5;	::: #lr    c                     |                      t                    5  |                     |                                 dd           d d d            d S # 1 swxY w Y   d S Nr)  r   r   r   r  rl   rI   s    r   test_max_buffer_size_removalz/BufferedWriterTest.test_max_buffer_size_removalg  s    y)) 	- 	-GGDNN$$a,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   *AAAc                 
   |                                  }d }||_        |                     |          }|                    d           |                     t          |j                   |                     |j                   d S )Nc                     t                      rC   rt  )r(   s    r   	bad_writez?BufferedWriterTest.test_write_error_on_close.<locals>.bad_writem  s    ))Or       spam)rl   rF   r  r   r   r   r  r   )r?   r  r  r(   s       r   test_write_error_on_closez,BufferedWriterTest.test_write_error_on_closek  sz    nn	 	 		GGCLL	'17+++!!!!!r    c                    |                                  }|                     |d          }t          j        |j                  }|                                 |j                                         |                     t          |j
        d           |                     |j                   |                                 d S )Nr)  rD  r  )r   r  r   r  r   r   r   waitr   r   rF   r  r   r   )r?   r  r  ts       r   test_slow_close_from_threadz.BufferedWriterTest.test_slow_close_from_threadu  s     ##%%q!!EK000				*ek7;;;%%%	r    N) r#   r$   r%   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ra  r   rb  rT  rY  r  r  r  r&   r    r   r  r  [  s       JB B B . . .8 8 8
C 
C 
C	D 	D 	DB B B(. . .7 7 7$ $ $F F F7 7 76: : :9 9 9C C CC C C> > >9 9 9	/ 	/ 	/< < <$ Wu%%0022,/ ,/ 32 &%,/\# # #- - -" " " 1022	 	 32	 	 	r    r  c                   \    e Zd Zej        Z eddd          d             Zd Zd Z	d Z
dS )	CBufferedWriterTestTre  rf  c                 "   t                               |            t          j        dk    rd|                                 }|                     |          }|                     t          t          t          f|j
        |t          j                   d S d S rk  )r  r  rL  r  rl   r  r   r   rl  r   rA   r  s      r   r  z$CBufferedWriterTest.test_constructor  rm  r    c                    |                                  }|                     |          }|                     t          |j        |d           |                     t          |j        d           |                     t          |j        |d           |                     t          |j        d           |                     t          |j        |d           |                     t          |j        d           d S )Nr   r  r  r   r   )rl   r  r   r   rA   rF   r  s      r   ro  z'CBufferedWriterTest.test_initialization  s      *eneKKK*ek6:::*eneMMM*ek6:::*eneLLL*ek6:::::r    c                    |                      t          j        t          j                   t	          j        dt          f          5  |                     t          j        d          }|                     |          }|	                    d           ||_
        t          j        |          }~t          j                     d d d            n# 1 swxY w Y   |                      |            |           |                     t          j        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr  r  s   123xxxr	  )r  r   r   r   r   r  r  r  r  rF   r  r  r  r   r  r  r0   r   rp   rs  s       r   r  z+CBufferedWriterTest.test_garbage_collection  s    		()*:;;;+R,ABB 	! 	!KK	 0%88EAGGIACQB   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	""$$###YYy'.. 	2!QVVXXy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s%   A:CCC)EEEc                     |                      t          d          5  |                     t          j                    ddd           d d d            d S # 1 swxY w Y   d S )Nr(  r  ru  rI   s    r   rv  z#CBufferedWriterTest.test_args_error  rw  rx  N)r#   r$   r%   r   r(  r  r   r  ro  r  rv  r&   r    r   r  r    s        		BdD ;G H H H4 4H H4; ; ;2 2 2"4 4 4 4 4r    r  c                       e Zd Zej        ZdS )PyBufferedWriterTestN)r#   r$   r%   r   r(  r  r&   r    r   r  r    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dS )BufferedRWPairTestc                     |                      |                                 |                                           }|                     |j                   d S rC   )r  rl   r  r   r?   pairs     r   r  z#BufferedRWPairTest.test_constructor  sE    wwt~~'')9)9::%%%%%r    c                 @   | j                             | j                   }~| j                             | j                   }|                     t          t          fd|j        d           |                     t          t          fd|j        d           |                    |                                 |                                            | 	                    |                    d          d           | 	                    |                    d          d           d S r  )
r  r  rP  r   r  rp   rF   rA   rl   r   r  s     r   r  z%BufferedRWPairTest.test_uninitialized  s    wtw''wtw''
N;?#y!	- 	- 	- 	
N;?#z3	0 	0 	0 	dnn&&(8(89991s+++C!,,,,,r    c                     |                      |                                 |                                           }|                     | j        |j                   d S rC   )r  rl   r   r   r  r  s     r   r  zBufferedRWPairTest.test_detach  sJ    wwt~~'')9)9::$3T[AAAAAr    c                     |                      t                    5  |                     |                                 |                                 dd           d d d            d S # 1 swxY w Y   d S r  r  rI   s    r   (test_constructor_max_buffer_size_removalz;BufferedRWPairTest.test_constructor_max_buffer_size_removal  s    y)) 	? 	?GGDNN$$dnn&6&62>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   =A%%A),A)c                      G d dt                     }|                     t          | j         |            |                                             d S )Nc                       e Zd Zd ZdS )JBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablec                     dS r   r&   rI   s    r   rQ   zSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readable      ur    Nr#   r$   r%   rQ   r&   r    r   NotReadabler    #            r    r  rl   r   r   r  )r?   r  s     r   "test_constructor_with_not_readablez5BufferedRWPairTest.test_constructor_with_not_readable  s`    	 	 	 	 	) 	 	 	 	'47KKMM4>>;K;KLLLLLr    c                      G d dt                     }|                     t          | j        |                                   |                       d S )Nc                       e Zd Zd ZdS )LBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablec                     dS r   r&   rI   s    r   rJ   zUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writable  r  r    N)r#   r$   r%   rJ   r&   r    r   NotWriteabler    r  r    r  r  )r?   r  s     r   #test_constructor_with_not_writeablez6BufferedRWPairTest.test_constructor_with_not_writeable  s`    	 	 	 	 	9 	 	 	 	'47DNN,<,<llnnMMMMMr    c                 8   |                      |                     d          |                                           }|                     |                    d          d           |                     |                    d          d           |                     |                                d           |                      |                     d          |                                           }|                     |                    d           d           d S )Nr  r   r  r]   r  r   )r  r,  rl   r   rp   r  s     r   r	  zBufferedRWPairTest.test_read  s    wwt||I..0@0@AA1v...1t,,,e,,,wwt||F++T^^-=-=>>4&11111r    c                 @     fd}                       |                                            g d                                  |                                            g d                                  |                                d          ddg           d S )Nc                  z                                               d                                                     S )Ns	   abc
def
h)r  r,  rl   rI   s   r   r  z3BufferedRWPairTest.test_readlines.<locals>.<lambda>  s+    twwt||N;;T^^=M=MNN r    )rb  rc  r   r   rb  rc  r%  r  s   ` r   r&  z!BufferedRWPairTest.test_readlines  s    NNNN))++-G-G-GHHH))++-G-G-GHHH))!,,x.BCCCCCr    c                    |                      |                     d          |                                           }|                     |                    d          d           |                     |                                d           d S )Nr  r   r  r  )r  r,  rl   r   rC  r  s     r   r  zBufferedRWPairTest.test_read1  sq     wwt||I..0@0@AAA///v.....r    c           	         dD ]}|                      |          5  |                     |                     d          |                                           }t	          d          }|                      t          ||          |          d           |                     t          |          d           d d d            n# 1 swxY w Y   d S )NrE  r  s        r   s   abcde)rG  r  r,  rl   r   r   rF  r   )r?   rH  r  r   s       r   r  z BufferedRWPairTest.test_readinto  s    / 	8 	8Ff%% 8 8wwt||I668H8HII ++  !6v!6!6t!<!<a@@@  th7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   BCC	C	c                    |                                  }|                     |                                  |          }|                    d           |                                 t	          d          }|                    |           d|d d <   |                                 |                     |j        ddg           d S )Nr  r  r  )rl   r  rF   r   r   r   r<   )r?   r  r  r   s       r   r  zBufferedRWPairTest.test_write   s    NNwwt~~''++

6

6""

6qqq	

&&)9:::::r    c                 D   |                      |                     d          |                                           }|                     |                    d                              d                     |                     |                    d          d           d S )Nr  r   r  )r  r,  rl   r  r  rN  r   rp   r  s     r   	test_peekzBufferedRWPairTest.test_peek  s{    wwt||I..0@0@AA		!//778881v.....r    c                     |                      |                                 |                                           }|                     |                                           d S rC   )r  rl   r  rQ   r  s     r   test_readablez BufferedRWPairTest.test_readable  I    wwt~~'')9)9::(((((r    c                     |                      |                                 |                                           }|                     |                                           d S rC   )r  rl   r  rJ   r  s     r   test_writeablez!BufferedRWPairTest.test_writeable  r  r    c                     |                      |                                 |                                           }|                     |                                           d S rC   )r  rl   r  rS   r  s     r   test_seekablez BufferedRWPairTest.test_seekable  sM     wwt~~'')9)9::)))))r    c                 
   |                      |                                 |                                           }|                     |j                   |                                 |                     |j                   d S rC   )r  rl   r  r   r   r  r  s     r   test_close_and_closedz(BufferedRWPairTest.test_close_and_closed#  sf    wwt~~'')9)9::%%%

$$$$$r    c                    d }|                                  }||_        |                                  }|                     ||          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             |                     |j	                   | 
                    |j	                   |                     |j	                   d |_        d S )Nc                      t            d S rC   reader_non_existingr&   r    r   reader_closezIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_close*      r    r  c                      d S rC   r&   r&   r    r   r  zEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>8  rv  r    )rl   r   r  r   r  r  r  r  r  r   r  )r?   r  ri  r  r  r  s         r    test_reader_close_error_on_closez3BufferedRWPairTest.test_reader_close_error_on_close)  s(   	  	  	 !!#!!wwvv&&y)) 	SJJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+S-?-?@@@$$$'''&&& $|s   #BBBc                     d }|                                  }|                                  }||_        |                     ||          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             |                     |j	                   | 
                    |j	                   |                     |j	                   d |_        d }t          j                    5  t          j                    5  d }t          j                     d d d            n# 1 swxY w Y   t          j                     d d d            d S # 1 swxY w Y   d S )Nc                      t            d S rC   writer_non_existingr&   r    r   writer_closezIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_close;  r  r    r  c                      d S rC   r&   r&   r    r   r  zEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>I  rv  r    )rl   r   r  r   r  r  r  r  r  r   r  r   r  r  )r?   r   ri  r  r  r  s         r    test_writer_close_error_on_closez3BufferedRWPairTest.test_writer_close_error_on_close:  s)   	  	  	 !!!!#wwvv&&y)) 	SJJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+S-?-?@@@%%%&&&''' $| /11 	! 	!355 % %"$$$% % % % % % % % % % % % % % %    	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!sH   #BBB"F6EFE	FE	 FF
Fc                    d }d }|                                  }||_        |                                  }||_        |                     ||          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             |                     |j        j	        t                     |                     dt          |j        j	                             | 
                    |j                   | 
                    |j                   | 
                    |j                   d |_        d |_        d S )Nc                      t            d S rC   r  r&   r    r   r  zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closeU  r  r    c                      t            d S rC   r  r&   r    r   r   zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closeW  r  r    r  r  c                      d S rC   r&   r&   r    r   r  zLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>h  rv  r    c                      d S rC   r&   r&   r    r   r  zLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>i  rv  r    )rl   r   r  r   r  r  r  r  r  r  r  r   )r?   r  r   ri  r  r  r  s          r   'test_reader_writer_close_error_on_closez:BufferedRWPairTest.test_reader_writer_close_error_on_closeT  s   	  	  	 	  	  	 !!#!!#wwvv&&y)) 	SJJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+S-?-?@@@cm7CCC+S1J-K-KLLL%%%'''''' $|#|s   -BBBc                     G d dt                     }|                      |d           |d                    }|                     |                                           |                      |d           |d                    }|                     |                                           |                      |d           |d                    }|                     |                                           |                      |d           |d                    }|                     |                                           d S )Nc                       e Zd Zd Zd ZdS )8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttyc                 H    t                               |            || _        d S rC   )rl   rA   _isatty)r?   isattys     r   rA   zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__m  s!    ""4(((%r    c                     | j         S rC   )r-  rI   s    r   r.  z?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyq  s
    |#r    N)r#   r$   r%   rA   r.  r&   r    r   SelectableIsAttyr+  l  s2        & & &$ $ $ $ $r    r0  FT)rl   r  r  r.  r  )r?   r0  r  s      r   test_isattyzBufferedRWPairTest.test_isattyk  sJ   	$ 	$ 	$ 	$ 	$y 	$ 	$ 	$ ww''..0@0@0G0GHH'''ww''--/?/?/F/FGG&&&ww''..0@0@0F0FGG&&&ww''--/?/?/E/EFF&&&&&r    c                     |                      |                                 |                                           }t          j        |          }d }d }d S rC   )r  rl   r  r  )r?   brwr  s      r   test_weakref_clearingz(BufferedRWPairTest.test_weakref_clearing  sF    ggdnn&&(8(899k#r    N)r#   r$   r%   r  r  r  r  r  r  r	  r&  r  r  r  r
  r  r  r  r  r  r"  r(  r1  r4  r&   r    r   r  r    s[       & & &- - -B B B? ? ?M M MN N N2 2 2D D D/ / /8 8 8
; 
; 
;/ / /) ) )) ) )* * *% % %$ $ $"! ! !4$ $ $.' ' '*    r    r  c                       e Zd Zej        ZdS )CBufferedRWPairTestN)r#   r$   r%   r   r/  r  r&   r    r   r6  r6    s        		BBBr    r6  c                       e Zd Zej        ZdS )PyBufferedRWPairTestN)r#   r$   r%   r   r/  r  r&   r    r   r8  r8    r  r    r8  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S )BufferedRandomTestrb+zwb+c                 n    t                               |            t                              |            d S rC   )r  r  r  rI   s    r   r  z#BufferedRandomTest.test_constructor  s0    ++D111++D11111r    c                 n    t                               |            t                              |            d S rC   )r  r  r  rI   s    r   r  z%BufferedRandomTest.test_uninitialized  0    --d333--d33333r    c                    |                      d          }|                     |d          }|                     d|                    d                     |                    d           |                    d           |                     |j                   |                     d|                                           |                     d|j        d	                    d S )
N)   asdf   ghjkr)     asrz   s   ddds   eeerA  s   dddeeer   )rl   r  r   rp   rF   r  r<   r?   r  rB  s      r   test_read_and_writez&BufferedRandomTest.test_read_and_write  s    nn/00WWS!__

+++

)***"'')),,,C$4Q$788888r    c                 t   |                      d          }|                     |          }|                     d|                    d                     |                     d|                                           |                    dd           |                     d|                    d                     |                    d           |                    dd           |                     d|                                           |                     d	|                                           |                    d
d           |                     d|                                           |                    dd           |                     d|                                           |                     d|                    d                     |                                 |                     d|                                           | 	                    t          |j        d           d S )Ns	   asdfghjklrB  rz   r   r@  re  s   123fs	   asdf123flr   r   r]   rd  s   fl   r   )r,  r  r   rp   rZ   rW   rF   r   r{  r   r   rC  s      r   test_seek_and_tellz%BufferedRandomTest.test_seek_and_tell  s   ll<((WWS\\

+++BGGII&&&
1"''!**---

1rwwyy111BGGII&&&
ABGGII&&&
1BGGII&&&,,,



s||~~666)RWc22222r    c                    |                      d          }|                     |          }|                     d ||d                     |                    d           |                     d ||d                     |                     d|                                           |                                 |                     d|                                           |                     d ||                     |                    dd           |                    d	           |                                 |                    dd           |                     d	 ||d
                     d S )Nr(  r  rz   r]  r   r   r  r   s   XYZr   )r,  r  r   rF   rZ   r   rW   )r?   	read_funcr  r  s       r   check_flush_and_readz'BufferedRandomTest.check_flush_and_read  sM   ll<((		% 3 3444E		% 3 3444EJJLL)))EJJLL)))5!1!1222A		&

1a5!!4!455555r    c                 2    |                      d            d S )Nc                      | j         | S rC   )rp   )r  r   s     r   r  z8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>  s    zuz47H r    rK  rI   s    r   test_flush_and_readz&BufferedRandomTest.test_flush_and_read  s     !!"H"HIIIIIr    c                 8    dd}|                      |           d S )Nr   c                     t          |dk    r|nd          }|                     |          }t          |d |                   S )Nr   '  )r   rb   r   r  ra   r(   s      r   	_readintoz=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto  s@    qAvv!!400Aq!!A2A2<<r    r   rN  )r?   rT  s     r   test_flush_and_readintoz*BufferedRandomTest.test_flush_and_readinto  s2    	  	  	  	  	!!),,,,,r    c                 8    dd}|                      |           d S )Nr   c                     |                      |          }|dk    r
|d |         }|                     t          |          d           |S Nr   r]   )r  rW   r   rS  s      r   _peekz5BufferedRandomTest.test_flush_and_peek.<locals>._peek  sH     

1ABwwbqbEJJs1vvq!!!Hr    rU  rN  r?   rZ  s     r   test_flush_and_peekz&BufferedRandomTest.test_flush_and_peek  s2    	 	 	 	 	!!%(((((r    c                    |                      d          }|                     |          }|                    d           |                                 |                    d           |                                 |                    dd           |                     d|                                           |                     d|                                           d S )Nr(     123s   45r   s	   12345fghi)r,  r  rF   r   rW   r   r{  rp   r  s      r   test_flush_and_writez'BufferedRandomTest.test_flush_and_write  s    ll<((FE

1as||~~666uzz||44444r    c                 n    t                               |            t                              |            d S rC   )r  rT  r  rI   s    r   rT  zBufferedRandomTest.test_threads  s0    ''---''-----r    c                 f    d }|                      |           d }|                      |           d S )Nc                 0    |                      d           d S r   )r  r  s    r   rZ  z6BufferedRandomTest.test_writes_and_peek.<locals>._peek  s    JJqMMMMMr    c                     |                                  }|                     dd           |                     d           |                     |d           d S )Nr   r]   r   )rZ   rW   r  r  s     r   rZ  z6BufferedRandomTest.test_writes_and_peek.<locals>._peek  sL    **,,CJJr1JJqMMMJJsAr    r  r[  s     r   test_writes_and_peekz'BufferedRandomTest.test_writes_and_peek  sP    	 	 	%   	 	 	
 	%     r    c                 6    d }|                      |           d S )Nc                 \    |                      dd           |                     d           d S rY  )rW   rp   r  s    r   _readz7BufferedRandomTest.test_writes_and_reads.<locals>._read  s)    JJr1JJqMMMMMr    r  r?   rg  s     r   test_writes_and_readsz(BufferedRandomTest.test_writes_and_reads  s-    	 	 	 	%     r    c                 6    d }|                      |           d S )Nc                 \    |                      dd           |                     d           d S rY  )rW   rC  r  s    r   _read1z9BufferedRandomTest.test_writes_and_read1s.<locals>._read1	  s)    JJr1KKNNNNNr    r  )r?   rl  s     r   test_writes_and_read1sz)BufferedRandomTest.test_writes_and_read1s	  s-    	 	 	 	&!!!!!r    c                 6    d }|                      |           d S )Nc                 v    |                      dd           |                     t          d                     d S rY  )rW   rb   r   r  s    r   rg  z;BufferedRandomTest.test_writes_and_readintos.<locals>._read
	  s4    JJr1NN9Q<<(((((r    r  rh  s     r   test_writes_and_readintosz,BufferedRandomTest.test_writes_and_readintos		  s-    	) 	) 	) 	%     r    c                    dD ]:}|                      d          }|                     |d          }|                     |                    d          d           |                     |                                d           |                    d|z             |                     |                                |dz              |                                 |                     |                                |dz              |                                }|                     |dd|z  z   dd|z
  z  z              <d S )N)r]   r   r  re  r]      A   Br   )r,  r  r   rp   rZ   rF   r   r{  )r?   overwrite_sizer  r  r   s        r   test_write_after_readaheadz-BufferedRandomTest.test_write_after_readahead	  s9    % 	L 	LN,,y))CGGCOOEUZZ]]D111UZZ\\1---KK~-...UZZ\\>A+=>>> KKMMMUZZ\\>A+=>>>AQtn,,tq>7I/JJL L L L	L 	Lr    c           	         d }d}t          dt          |                    D ]}t          |t          |                    D ]}|                     |          }|                     |d          } ||||           |                                 t          |          }d||<   d||<   |                     |                                |d||fz             d S )Nc                     ||k    sJ |                      |           |                     ||z
             |                     d           |                      |           |                     d           d S )N      )rW   rp   rF   )r  pos1pos2s      r   mutatez:BufferedRandomTest.test_write_rewind_write.<locals>.mutate%	  su    4<<<<JJtJJtd{###KK    JJtKK     r    s   r   r  rz   r]   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 
	JA1c!ff%% 	J 	Jll1ooS))ua###$Q<<  !?1a&!HJ J J J	J
	J 
	Jr    c                    |                      d          }|                     |d          }|                     |                    d          d           |                     |                                d           |                     |                    d          d           |                     |                                d           d S )Nr  r  rz   s   AAs   BBre  )r,  r  r   rp   rd   rF   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                 n    t                               |            t                              |            d S rC   )r  rY  r  rI   s    r   rY  z%BufferedRandomTest.test_misbehaved_ioE	  r>  r    c                 D   |                      d          5 }|                     |d          5 }|                    d           |                     |                    d          d           |                    d           |                     |                    d          d           |                    d           t          d          }|                    |           |                     |d	           |                    d
           |                     |                    d          d           |	                                 |                     |
                                d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                      d          5 }|                     |d          5 }|                     |                    d          d           |                    d           |                     |                    d          d           |	                                 |                     |
                                d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ns   abcdefghr     1r]   r     2r  rD     f   4r   s   1b2d3f4hr  r  r  s   a2c)r,  r  rF   r   rp   rC  r   rb   r  r   r{  )r?   r  r3   r_   s       r   test_interleaved_read_writez.BufferedRandomTest.test_interleaved_read_writeI	  s   \\+&& 	>#c"" >a  D111  T222ll

3  d+++  D111			  ===> > > > > > > > > > > > > > >	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> \\&!! 	9Sc"" 9a  D111  D111			  8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sl   FEE?3F?F	FF	FFF6JB$I=1J=J	JJ	JJJc                    |                      d          5 }|                     |          5 }|                    d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           |                                 |                     |                                d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Ns
   ab
cdef
g
r  s   b
r  rc  rD     
s
   1b
2def
3
)r,  r  rF   r   r  r   r{  )r?   r  r3   s      r   test_interleaved_readline_writez2BufferedRandomTest.test_interleaved_readline_writeb	  s   \\*++ 		Cs C  v666  x888  u555			  1ABBBC C C C C C C C C C C C C C C		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		Cs5   EC4D, E,D0	0E3D0	4EEEN)r#   r$   r%   rN  r  r  r  rD  rH  rK  rO  rV  r\  r_  rT  rd  ri  rm  rp  ru  r  r  rY  r  r  r  r`  r&   r    r   r:  r:    sa       IJ2 2 24 4 4	9 	9 	93 3 3.6 6 6$J J J- - -	) 	) 	)
5 
5 
5. . .	! 	! 	!! ! !" " "! ! !L L L(J J J4. . .4 4 49 9 92
C 
C 
C O "&r    r:  c                   V    e Zd Zej        Z eddd          d             Zd Zd Z	dS )CBufferedRandomTestTre  rf  c                 "   t                               |            t          j        dk    rd|                                 }|                     |          }|                     t          t          t          f|j
        |t          j                   d S d S rk  )r:  r  rL  r  rl   r  r   r   rl  r   rA   r  s      r   r  z$CBufferedRandomTest.test_constructory	  rm  r    c                 n    t                               |            t                              |            d S rC   )rd  r  r  rI   s    r   r  z+CBufferedRandomTest.test_garbage_collection	  s0    33D99933D99999r    c                     |                      t          d          5  |                     t          j                    ddd           d d d            d S # 1 swxY w Y   d S )Nr+  r  ru  rI   s    r   rv  z#CBufferedRandomTest.test_args_error	  rw  rx  N)
r#   r$   r%   r   r+  r  r   r  r  rv  r&   r    r   r  r  v	  sw        		BdD ;G H H H4 4H H4: : :4 4 4 4 4r    r  c                       e Zd Zej        ZdS )PyBufferedRandomTestN)r#   r$   r%   r   r+  r  r&   r    r   r  r  	  r  r    r  c                   D    e Zd ZdZddZd Zd Zd Zd Zdd	Z	d
 Z
dZdS )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.
    strictc                 n    t           j                            | |           |                                  d S rC   )codecsIncrementalDecoderrA   reset)r?   r@  s     r   rA   z#StatefulIncrementalDecoder.__init__	  s,    !**4888

r    c                 &    dt          |           z  S )Nz<SID %x>)idrI   s    r   __repr__z#StatefulIncrementalDecoder.__repr__	  s    BtHH$$r    c                 H    d| _         d| _        t                      | _        d S r   )r  or   r   rI   s    r   r  z StatefulIncrementalDecoder.reset	  s    kkr    c                 b    | j         dz  | j        dz  }}t          | j                  |dz  |z   fS )Nr]   r  )r  r  r   r   )r?   r  r  s      r   getstatez#StatefulIncrementalDecoder.getstate	  s4    vz46A:1T[!!1S519,,r    c                     |\  }}t          |          | _        t          |d          \  }}|dz  |dz  c| _        | _        d S )Nr  r]   )r   r   divmodr  r  )r?   stater   r   r  r  s         r   setstatez#StatefulIncrementalDecoder.setstate	  sF    
''b#1QAr    Fc                    d}|D ]}| j         dk    rM|t          d          k    r| j        r||                                 z  }?| j                            |           Z| j                            |           t          | j                  | j         k    r||                                 z  }|r| j        r||                                 z  }|S )Nr  r   .)r  ordr   process_wordrD   r   )r?   inputfinaloutputr(   s        r   decodez!StatefulIncrementalDecoder.decode	  s     
	2 
	2Av{{C=={ 6$"3"3"5"55K&&q))))""1%%%t{##tv--d//111F 	*T[ 	*d'')))Fr    c                 $   d}| j         d         t          d          k    r2t          dt          | j         dd          pd                    | _        n| j         d         t          d          k    r2t          dt          | j         dd          pd                    | _        nZ| j                             d          }t          |          | j        k     r|d| j        z  z  }| j        r|d | j                 }|d	z  }t                      | _         |S )
Nr  r   r  c   r]   r  r6  -r  )	r   r  rb  intr  r  r  r   r   )r?   r  s     r   r  z'StatefulIncrementalDecoder.process_word	  s    ;q>SXX%%SQRR!5A6677DFF[^s3xx''SQRR!5A6677DFF[''00F6{{TV###df*$v )cMFkkr    N)r  rx  )r#   r$   r%   re   rA   r  r  r  r  r  r  codecEnabledr&   r    r   r  r  	  s         "   % % %" " "
- - -& & &   "    LLLr    r  c           	          t           j        r?| dk    r;t          j        d          }t          j        d|j        d d d d t                     S d S d S )Ntest_decoderr-   )r'  encoder  incrementalencoderstreamreaderstreamwriterincrementaldecoder)r  r  r  lookup	CodecInfor  )r'  latin1s     r   lookupTestDecoderr  	  sd    !. ;4>3I3Iy))d#D9	; ; ; 	;; ;3I3Ir    c                        e Zd ZdZg dZd ZdS )StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))r0  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                 T   | j         D ]>\  }}}t                      }|                     |                    ||          |           ?t                      }|                     |                    d          d           |                     |                    dd          d           d S )Nr  r  r    r]   r  )
test_casesr  r   r  )r?   r  eofr  ds        r   r  z+StatefulIncrementalDecoderTest.test_decoder
  s    "&/ 	; 	;E3*,,AQXXeS116:::: '((),,b111#q))733333r    N)r#   r$   r%   re   r  r  r&   r    r   r  r  	  s>           J6	4 	4 	4 	4 	4r    r  c                   J   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z 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/ Z5e6j7         e8j9                    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 ZTdKS )LTextIOWrapperTestc                     d| _         d                    d          | _        t          j        t          j                   t          j        t                     | 	                    t          j
        t                     d S )Ns   AAA
BBBCCC
DDD
EEE
s   AAA
BBB
CCC
DDD
EEE
r6  )testdatar  
normalizedr   r   r   r  registerr  r  
unregisterrI   s    r   r   zTextIOWrapperTest.setUp#
  sa    :6==gFF)***)***)+<=====r    c                 B    t          j        t           j                   d S rC   r   rI   s    r   r   zTextIOWrapperTest.tearDown*
  r   r    c                    |                      d          }|                     |d          }|                     |d          }|                    |dd           |                     |j        d           |                     |j        d           |                    |dd	
           |                     |j        d           |                     |j        d	           |                     d|                                           |                     t          |j        |dd           |                     t          |j        |dd           d S )N   é

r:  r  r.   r-   
r9  FT)r/   line_buffering   é
rN   r  )r,  r$  r8  rA   r   r/   r  r  r   r   r   r?   r,   r(   r  s       r   r  z"TextIOWrapperTest.test_constructor-
  s8   LL))4((q733	

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

1wt
<<<W---)40001::<<000)QZWbQQQ*aj!gwWWWWWr    c                    | j                             | j                   }~| j                             | j                   }|                     t          t          |           |                     t          t          fd|j        d           |	                    | 
                                d           |                     |                    d          d           d S )Nr  r   r  r.   r  )r8  r  r   r>  r  rP  r   r  rp   rA   rl   r   r?   r  s     r   r  z$TextIOWrapperTest.test_uninitialized;
  s    &&t'9::&&t'9::)T1---
N;? vq	* 	* 	* 	


4>>##g
666B'''''r    c                     |                                  }|                     |          }|                     t          d          5  |                     |d           d d d            d S # 1 swxY w Y   d S )Nzis not a text encodinghexr.   )r,  r(  rP  LookupErrorr8  )r?   r,   r(   s      r   *test_non_text_encoding_codecs_are_rejectedz<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejectedF
  s     LLNN""##K1IJJ 	2 	2q5111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   A**A.1A.c                 &   |                                  }|                     |          }|                     |d          }|                     |                                |           |                     |d          }|                    d           |                     |                                           |                                 |                     |                                d           | 	                    t          |j                   t          |           |                     |j        d           |                     |j        d           |                     |j                   |                     |j                   d S )Nr6  r.   howdys   howdyr  )r,  r(  r8  r  r  rF   r  r{  r   r   r   r  r/   r@  r  write_throughr  s       r   r  zTextIOWrapperTest.test_detachO
  sO   LLNN""q733ahhjj!$$$q733	&&&	


x000*ah/// 	QW---8,,,)***)))))r    c                 p   |                      d                    d                    }|                     |          }|                     |d          }| j        j        }|                     t          |          d|z             d|_        |                     t          |          d|z             d|_        |                     t          |          d|z             d	|_        |                     t          |          d
|z             |j	        
                                 t          |           d S )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  r$  r8  r$   r  r  r'  moder   r  )r?   r  r(   r  modnames        r   r  zTextIOWrapperTest.test_reprc
  s<   ll7>>'2233$$q733$/aCgM	O 	O 	OaPSZZ	\ 	\ 	\aY\cc	e 	e 	eaZ]dd	f 	f 	f 	
Qr    c                     |                                  }|                     |d          }t          j        |d|          5  	 t	          |           n# t
          $ r Y nw xY wd d d            d S # 1 swxY w Y   d S )Nr  r.   r'  )r,  r8  r   r  r  r  r?   r  r  s      r   r  z%TextIOWrapperTest.test_recursive_reprw
  s    llnnsW55sFA.. 	 	Q   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   A1AA1
A!A1 A!!A11A58A5c                    |                                  }|                     |d          }|                     |ddd          }|                    d           |                     |                                d           |                    d           |                     |                                d	           |                    d
           |                     |                                d           d S )Nr:  r  
Tr/   r:  r  Xr    zY
Zs   XY
ZzABs   XY
ZAB)r,  r(  r8  rF   r   r{  r  s       r   test_line_bufferingz%TextIOWrapperTest.test_line_buffering
  s    LLNN4((q7DQUVV	s+++	x000	|44444r    c                    |                                  }|                     |d          }|                     |ddd          }|                    d           |                     |                                d           |                    d	           |                     |                                d
           |                    d           |                     |                                d           |                    d           |                     |                                d           |                    d	           |                     |                                d           |                    d           |                     |                                d           |                                 |                    d 	           |                     |j        d           |                    d	           |                                 |                    d 	           |                     |j        d           d S )Nr:  r  r  Fr  zAB
Cr    T)r  s   AB
CzDEF
Gs	   AB
CDEF
GHs
   AB
CDEF
GHIJ)r,  r(  r8  rF   r   r{  reconfigurer  r  s       r   test_reconfigure_line_bufferingz1TextIOWrapperTest.test_reconfigure_line_buffering
  s   LLNN4((q7DQVWW	s+++	T***x000	~666	~666	U+++777	777 	
	T***)5111	T***		T***)400000r    zutf-8 mode is enabledc                    t          t          j                  }	 dD ]}|t          j        v rt          j        |= t          j                    }|                                 }t          j                    5  t          j        dt                     | 
                    |          }d d d            n# 1 swxY w Y   |                     |j        |           t          j                                         t          j                            |           d S # t          j                                         t          j                            |           w xY w)N)LC_ALLLANGLC_CTYPErT  )dictr  environlocalegetencodingr,  rU  rV  rW  EncodingWarningr8  r   r/   clearupdate)r?   old_environkeycurrent_locale_encodingr(   r  s         r   test_default_encodingz'TextIOWrapperTest.test_default_encoding
  sb   2:&&	+ 6 ( ("*$$
3&,&8&:&:#A(** * *%h@@@&&q))* * * * * * * * * * * * * * * QZ)@AAAJJk***** JJk****s0   AD 50B1%D 1B55D 8B59D ?Ec                    |                                  }|                     |d          }|                     |j        d           t	          j                    5  t	          j        dt                     |                     |          }d d d            n# 1 swxY w Y   |                     |j                   t          j
        |j                   d S )Nr  r.   rT  )r,  r8  r   r/   rU  rV  rW  r  assertIsNotNoner  r  r?   r(   r  s      r   test_encodingzTextIOWrapperTest.test_encoding
  s    LLNNq733W---$&& 	& 	&!(O<<<""1%%A	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	QZ(((aj!!!!!s   0BBBc                    |                      d          }|                     |d          }|                     t          |j                   |                      d          }|                     |dd          }|                     t          |j                   |                      d          }|                     |dd          }|                     |                                d           |                      d          }|                     |dd          }|                     |                                d	           d S )
Ns   abc

r6  r.   r  r/   r@  rT  zabc

replaceu   abc
�
)r,  r8  r   UnicodeErrorrp   r   r  s      r   test_encoding_errors_readingz.TextIOWrapperTest.test_encoding_errors_reading
  s   LL((q733,///LL((q78DD,///LL((q78DD9---LL((q79EE?33333r    c                 0   |                                  }|                     |d          }|                     t          |j        d           |                                  }|                     |dd          }|                     t          |j        d           |                                  }|                     |ddd          }|                    d	           |                                 |                     |                                d
           |                                  }|                     |ddd          }|                    d	           |                                 |                     |                                d           d S )Nr6  r.      ÿr  r   rT  r  )r/   r@  r:  u	   abcÿdef
s   abcdef
r  s   abc?def
)r,  r8  r   r  rF   r   r   r{  r  s      r   test_encoding_errors_writingz.TextIOWrapperTest.test_encoding_errors_writing
  sb   LLNNq733,888LLNNq78DD,888LLNNq78%)  + +					{333LLNNq79%)  + +					|4444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 ]z}t          d                    |                              |                    }dD ]>}t          dd          D ])}|D ]"\  }}	|                     |                     |          |          }
|                     |
||          }|rng }	 |                    d          }|dk    rnN|                     t          |          d           |
                    ||                                z              jnt          |          }t          ||	          D ]\  }}|                     ||           |                     t          |          t          |	                     $+@|d S )N)unix
	windows
zos9last
nonl)r  zwindows
zos9
r
  r  r  r  )r  r	  z	os9last
r  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)FTr]   r   r:  r/   Trz   )r   r   r  r  r$  r,  r8  rp   r   r   rD   r  r:   zip)r?   input_linesrO  	encodingsr/   r   do_readsr  r:  	exp_linesr  textio	got_linesc2got_lineexp_lines                   r   test_newlineszTextIOWrapperTest.test_newlines
  s    LLL HHHJ+FFFH+->@BBBBD

	 " 	I 	IH--44X>>??D) I I$Q|| I IG.3 I I* $ 3 3DLL4F4F P P!%!3!3E7;C "4 "E "E# 	5(*II%+[[^^#%88$) $ 0 0R! < < < ) 0 0foo6G6G1G H H HI %* )-VI25i2K2K A A.Hh ,,Xx@@@@((YYHHHH#III	I 	Ir    c                 ~   d}|                     dd                               dd          }d |                    d                              d          fd|                    d                              d          fd	g d
fdg dfdg dffD ]\  }}|                     |          }|                     |d|          }|                     |                                |           |                    d           |                     |                                d	                    |                     d S )Ns   AAA
BB B
CCCDDDEEE
FFF
GGGs   
r     r6  T)keependsr  r  )zAAA
zBB B
zCCCDDDEEE
FFF
GGGr  )zAAA
BB B
CCCDDDEEE
r"  r#  r  )zAAA
BB B
CCCzDDDzEEEz
FFFz
GGGr9  r   )
r  r  
splitlinesr,  r8  r   rx  rW   rp   r   )r?   r  r  r:  r~  r_   txts          r   test_newlines_inputz%TextIOWrapperTest.test_newlines_input  sL   ?%%gu55==eUKK
:$$W--88$8GGH))44d4CCDPPPQJJJKQQQR" 	< 	<GX ,,x((C$$S7G$LLCS]]__h777HHQKKKSXXZZ):):;;;;	< 	<r    c                    ddddd}d |t           j                 fgt          |                                          z   }|D ]\  }}|                                 }|                     |d|          }|                    d           |                    d           |                    d	           |                                 |                     |j	        d
           |                     |
                                |           d S )Ns   AAA
BBB
CCC
XY
Zs   AAABBBCCCXYZs   AAA
BBB
CCC
XY
Z)r  r  r  r  r6  r9  zAAA
BzBB
CCC
zXY
ZF)r  linesepsorteditemsr,  r8  rF   r   r   r   r{  )r?   testdictrO  r:  r~  r_   r%  s          r   test_newlines_outputz&TextIOWrapperTest.test_newlines_output+  s   +--7	  ,-.8H8H1I1II!& 	7 	7GX,,..C$$S7G$LLCIIhIIk"""IIk"""IIKKKSZ///S\\^^X6666	7 	7r    c                     g | j          G fdd          } |            }|                     |d          }|                    d           ~t          j                     |                     dg           d S )Nc                       e Zd Z fdZdS )4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOc                                          |                                                                |            d S rC   )rD   r{  r   )r?   r  rQ  s    r   r   z:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeA  s5    )))

4     r    Nr  )r  rQ  s   r   	MyBytesIOr/  @  s3        ! ! ! ! ! ! ! !r    r1  r6  r.   r  r  )r,  r8  rF   r   r  r   )r?   r1  r(   r  r  rQ  s       @@r   r  z!TextIOWrapperTest.test_destructor=  s    |	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! IKKq733	&1%%%%%r    c                     g  G fdd| j                   }|                                 } ||d          }~t          j                     |                     g d           d S )Nc                   :     e Zd Z fdZ fdZ fdZ xZS )<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOc                                          d           	 t                      j        } |             d S # t          $ r Y d S w xY wr   r  r  s     r   r  zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__N  r  r  c                 r                         d           t                                                       d S ry   r  r  s    r   r   zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closeV  r  r    c                 r                         d           t                                                       d S r  r  r  s    r   r   zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushY  r  r    r  r  s   @r   MyTextIOr4  M  r  r    r8  r6  r.   r  )r8  r,  r   r  r   )r?   r8  r(   r  r  s       @r   r  z*TextIOWrapperTest.test_override_destructorK  s    	  	  	  	  	  	  	 t) 	  	  	  LLNNHQ)))+++++r    c                    |                                  }t          j                    5 }|                     t                    5  |                     |d          j         d d d            n# 1 swxY w Y   t          s|                     |j	                   n,|j	        %| 
                    |j	        j        t                     d d d            d S # 1 swxY w Y   d S )Nr  r.   )r   r   r  r   r  r8  r  r  r  r  r   r  r   r  s      r   r  z/TextIOWrapperTest.test_error_through_destructorb  su    ##%%/11 	BR"">22 B B""57";;AAB B B B B B B B B B B B B B B + B!!"-0000*  !7AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs6   CA, C,A0	0C3A0	4ACCCc                    dD ];}dD ]4}|                      t          j        d|          }||_        |                     |                    d          d           |                                 |                      t          j        d|          }||_        |                     |                                d           |                     |                                d           |                                }|                     |	                    d          d           |                     |                    d           d           |	                    d           |                     |                    d	          d
           |                     |                    d          d           |                     |                    d          d           |                     |                                d           |                     |                                |           |                     |	                    d          d           |                     |	                    dd	          |           |                     |                    d          d           |                     |	                    |          |           |                     |                                d           |
                    d          r|                     ||           |                                 6=d S )N)r]   rz   r   re  r   r  r            !   ?   @   A   )r6  r-   r  w+r.   r  r   r+r   rz   r  r]   rS  r  defutf)r0   r   r   r2   r   rF   r   rZ   rp   rW   rN  multi_line_test)r?   	chunksizeencr3   cookies        r   test_basic_iozTextIOWrapperTest.test_basic_ioq  s   L 	 	I2  IIi.sICC )  333			IIi.sICC )  1---  5111  A...  u555q			  D111  C000  B///  2...  6222  A...  1v666  333  888  5111>>%(( 1((C000				3	 	r    c           	      v   |                     d           |                                 d}g }dD ]}g }t          |          D ]-}|                    ||t	          |          z                      .d                    |          dz   }|                    |                                |f           |                    |           |                     d           g }		 |                                }
|                                }|sn|	                    |
|f           C| 	                    |	|           d S )Nr   u	   sÿ࿿￿)r   r]   rz   r   re  r      r<  r=  r>  >   r?  r@  rA  r:  r  r  )
rW   rd   r  rD   r   r   rZ   rF   r  r   )r?   r3   rH  samplewlinesrB  charsr  linerlinesr   s              r   rF  z!TextIOWrapperTest.multi_line_test  s0   	q				

$L 	 	DE4[[ 6 6VAFO45555775>>D(DMM16688T*+++GGDMMMM	q				'&&((C::<<D MM3+&&&	' 	(((((r    c                    |                      t          j        dd          }|                                }|                    d           |                                }|                    d           |                                }|                    d           |                     |                                |           |                     |                                d           |                     |                                |           |                     |                                d           |                     |                                |           |                    d           |D ]8}|                     |d           |                     t          |j                   9|                     |                                |           |
                                 d S )NrB  r  r.   u   ÿ
r   )r0   r   r   rZ   rF   rW   r   r  r   r   r   )r?   r3   p0p1p2rQ  s         r   test_tellingzTextIOWrapperTest.test_telling  s   IIi&wI??VVXX	VVXX	VVXX	q			2&&&x0002&&&x0002&&&	q			 	/ 	/DT8,,,gqv....2&&&						r    c                 T   t                      }|dz
  }d|z  }t          |                    d                    }|                     t	          |          t	          |                     d}t          |                    d                    }||z   }|                     t          j        d          5 }|                    |dz             d d d            n# 1 swxY w Y   |                     t          j        dd          5 }|	                    |          }	|                     |	t          |d                     |                     |                                |           |                     |                                |           d d d            d S # 1 swxY w Y   d S )	Nrz   r  r     袈
r  r,   r.   r6  )r4   r   r  r   r   r0   r   r   rF   rp   r  rZ   r  )
r?   
chunk_sizeprefix_sizeu_prefixprefixu_suffixsuffixrQ  r3   r   s
             r   test_seekingzTextIOWrapperTest.test_seeking  s   (**
 1n$xw//00XF444xw//00YYy'.. 	!GGDFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'wY?? 	51{##AQFG 4 4555QVVXX{333QZZ\\8444		5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s%   4CC CB
FF!$F!c                    d}|                      t          j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|j         d|_        |                                 |                                 d d d            d S # 1 swxY w Y   d S )Ns   ࿿
r  r,   r  r.   rz   )r0   r   r   rF   r2   r  rZ   )r?   r   r3   s      r   test_seeking_tooz"TextIOWrapperTest.test_seeking_too  s#    YYy'.. 	!GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'wY?? 	1MMAMJJLLLFFHHH		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA	A	27B66B:=B:c                 0    dd fd	}dt           _        	 t          j        D ]\  }}} ||           t          j        D ]4\  }}}t	          |          dz  z
  }d|z  }|dz  } |||z   |           5	 dt           _        d S # dt           _        w xY w)N   r   c           	                              t          j        d          }|                    |            |                                                      t          j        d          }|_        |                                }|                                 t          |t          |          dz             D ]}ddt          |          |z
  fD ]}                     t          j        d          }	                    |                    |          |d|                    |
                                }	                    |                    |          ||||z                       |                    |           	                    |                                ||d                    |                                 dS )zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.r  r  r.   r]   r   N)r0   r   r   rF   r   r2   rp   r  r   r   rZ   rW   )	r   min_posr3   decodedr  r}  rI  
CHUNK_SIZEr?   s	          r   test_seek_and_tell_with_datazJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_data  s    		)*D11AGGDMMMGGIII		)*^	DDA&AMffhhGGGIII7CLL1$455  QGq 01  A		)"2^	LLA$$QVVAYY<<<VVXXF$$QVVAYY!a%0@AAAFF6NNN$$QVVXXwqrr{;;;GGIIII r    r]   rz      .r   )r  r  r  r  r   )r?   ri  r  _offsetr]  rf  rh  s   `      @r   rH  z$TextIOWrapperTest.test_seek_and_tell  s     
	 	 	 	 	 	 	, 34"/	8=H 4 4q!,,U3333  >H F Fq!#c%jj!m3f (,,Ve^WEEEEF 78&333a&37777s   AB Bc                    |                      t          j        dd          }|                    d           |                                 |                      t          j        dd          }|                     |                                d           |                                }|                     |                                d           |                                }|                    |           |                     |                                d           |                     |                                |           |                                 d S )Nr  euc_jpr.   u
   AB
うえ
r,   zAB
u   うえ
)	r0   r   r   rF   r   r   r  rZ   rW   )r?   r3   rT  rU  s       r   test_multibyte_seek_and_tellz.TextIOWrapperTest.test_multibyte_seek_and_tell  s
   IIi&hI??	$%%%				IIi&hI??v...VVXX'7888VVXX	r


'78882&&&						r    c                    |                      t          j        dd          }|                    d           |                                }|                    d           |                    |           |                    d           |                                 |                      t          j        dd          }|                     |                                d           |                                 d S )	Nr  euc_jis_2004r.   u   æ̀   æu   ̀r,   u   æ̀̀)	r0   r   r   rF   rZ   rW   r   r   r  )r?   r3   rT  s      r   test_seek_with_encoder_statez.TextIOWrapperTest.test_seek_with_encoder_state  s    IIi&nIEE	VVXX		r


					IIi&nIEE';<<<						r    c                 B   d}d}|D ]}|                                  }|                     ||          }|                    |           |                    |           |                    d           |                     |                                |dz             |                    d           |                     |                                |dz             |                     |                                |dz                      |                     d S )N
1234567890)r  r  r  r  r  r  r.   r   rz   )r,  r8  rF   rW   r   rp   r{  r  )r?   r   rO  r/   r_   r3   s         r   test_encoded_writesz%TextIOWrapperTest.test_encoded_writes  s     
	J 
	JH,,..C""3"::AGGDMMMGGDMMMFF1IIIQVVXXtax000FF1IIIQVVXXtax000S\\^^dQh->->x-H-HIIII
	J 
	Jr    c                      G d d| j                   }|                      |            d          }|                     t          |j                   d S )Nc                       e Zd Zd ZdS )5TextIOWrapperTest.test_unreadable.<locals>.UnReadablec                     dS r   r&   rI   s    r   rQ   z>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readable5  r  r    Nr  r&   r    r   
UnReadablery  4  r  r    r{  r  r.   )r,  r8  r   r   rp   )r?   r{  r%  s      r   test_unreadablez!TextIOWrapperTest.test_unreadable3  sl    	 	 	 	 	 	 	 	    @@'38,,,,,r    c                     |                      |                     d          d          }d}	 |                    d          }|sn||z  }|                     |d           d S )Ns   AA
BBr  r.   r  Tr]   zAA
BBr8  r,  rp   r   r?   r%  readsrS  s       r   test_read_one_by_onez&TextIOWrapperTest.test_read_one_by_one:  sv      k!:!:W MM	A QJE		
 	)))))r    c                    |                      |                     d          d          }|                     |                                g d           |                    d           |                     |                    d           g d           |                    d           |                     |                    d          ddg           d S )	Ns   AA
BB
CCr  r.   )AA
BB
CCr   r   r  r  )r8  r,  r   rx  rW   r?   r%  s     r   r&  z TextIOWrapperTest.test_readlinesD  s      m!<!<w OO*@*@*@AAAt,,.D.D.DEEEq))FF+;<<<<<r    c                     |                      |                     d          d          }d}	 |                    d          }|sn||z  }|                     |d           d S )Ns   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br  r.   r  Trd  zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Br~  r  s       r   test_read_by_chunkz$TextIOWrapperTest.test_read_by_chunkM  sw      .C!D!Dw WW	A QJE		
 	.....r    c                    g d}|                                  }|                     |d          }|                    |           |                                 |                     |                                d           d S N)r  cdefr  r.   r  )r,  r8  r  r   r   r{  r?   rQ  r_   r%  s       r   r  z!TextIOWrapperTest.test_writelinesX  su    llnn  w 77q		33333r    c                     t          g d          }|                                 }|                     |d          }|                    |           |                                 |                     |                                d           d S r  )r   r,  r8  r  r   r   r{  r  s       r   r  z*TextIOWrapperTest.test_writelines_userlist`  s~    '''((llnn  w 77q		33333r    c                 "   |                      |                                 d          }|                     t          |j        g d           |                     t          |j        d            |                     t          |j        d           d S )Nr  r.   r  r  )r8  r,  r   r   r  r  s     r   r  z'TextIOWrapperTest.test_writelines_errorh  sz      ' BB)S^YYY???)S^T:::)S^V<<<<<r    c                     |                      |                     | j                  d          }d}	 |                    d          }|sn||z  }|                     || j                   d S )Nr6  r.   r  Tr]   )r8  r,  r  rp   r   r  r  s       r   test_issue1395_1z"TextIOWrapperTest.test_issue1395_1n  s|      dm!<!<w OO 	A QJE		
 	00000r    c                     |                      |                     | j                  d          }d|_        d}	 |                    d          }|sn||z  }|                     || j                   d S )Nr6  r.   re  r  r8  r,  r  r2   rp   r   r  r  s       r   test_issue1395_2z"TextIOWrapperTest.test_issue1395_2z  s      dm!<!<w OO	A QJE		
 	00000r    c                    |                      |                     | j                  d          }d|_        |                    d          }||                    d          z  }||                                z  }||                                z  }||                                z  }|                     || j                   d S Nr6  r.   re  )r8  r,  r  r2   rp   r  r   r  r?   r%  r  s      r   test_issue1395_3z"TextIOWrapperTest.test_issue1395_3  s      dm!<!<w OO!00000r    c                     |                      |                     | j                  d          }d|_        |                    d          }||                                z  }|                     || j                   d S r  r  r  s      r   test_issue1395_4z"TextIOWrapperTest.test_issue1395_4  sn      dm!<!<w OO00000r    c                 j   |                      |                     | j                  d          }d|_        |                    d          }|                                }|                    d           |                    |           |                     |                    d          d           d S )Nr6  r.   re  r   zBBB
)r8  r,  r  r2   rp   rZ   rW   r   )r?   r%  r  r   s       r   test_issue1395_5z"TextIOWrapperTest.test_issue1395_5  s      dm!<!<w OOhhjj!g.....r    c                     |                      | j                  }|                     |d          }|                     |                                |                                           d S Nr6  r.   )r,  r  r8  r   rS   )r?   r   r%  s      r   test_issue2282z TextIOWrapperTest.test_issue2282  s[    dm,,  ' ::**CLLNN;;;;;r    c                    t           j        }dD ]s}|                     |d|          5 }|                    d           |                                }d d d            n# 1 swxY w Y   |                     |d          5 }|                     |                                d                    |                     d d d            n# 1 swxY w Y   |                     |d|          5 }|                    d           d d d            n# 1 swxY w Y   |                     |d          5 }|                     |                                d                    |                     d d d            n# 1 swxY w Y   ud S )	N	utf-8-sigr  r  r  r.   aaar	  r  xxxaaaxxx)r   r   r0   rF   rZ   r   rp   r  r?   filenamecharsetr3   r   s        r   test_append_bomz!TextIOWrapperTest.test_append_bom  sk   #8 
	E 
	EG8S7;; qffhh               8T** Ba  5<<+@+@AAAB B B B B B B B B B B B B B B 8S7;; q              8T** Ea  8??7+C+CDDDE E E E E E E E E E E E E E E
	E 
	EsG   *A  A$	'A$	<C		C	C	,DD	D	/<E77E;	>E;	c                    t           j        }dD ]I}|                     |d|          5 }|                    d           |                                }d d d            n# 1 swxY w Y   |                     |d|          5 }|                    |           |                    d           |                    d           |                    d           d d d            n# 1 swxY w Y   |                     |d	          5 }|                     |                                d
                    |                     d d d            n# 1 swxY w Y   Kd S )Nr  r  r.   r  rC  zzzr   bbbr	  bbbzzz)	r   r   r0   rF   rZ   rW   r   rp   r  r  s        r   test_seek_bomzTextIOWrapperTest.test_seek_bom  s   #8 
	E 
	EG8S7;; qffhh               8TG<< sq				              
 8T** Ea  8??7+C+CDDDE E E E E E E E E E E E E E E
	E 
	Es6   *A  A$	'A$	AC$$C(	+C(	<EE	E	c                 r   t           j        }dD ]&}|                     |d|          5 }|                    d           d d d            n# 1 swxY w Y   |                     |d|          5 }|                    d           |                    d| j                   |                    d           d d d            n# 1 swxY w Y   |                     |d          5 }|                     |                                d	                    |                     d d d            n# 1 swxY w Y   (d S )
Nr  r  r.   r  r  r   r  r	  r  )	r   r   r0   rF   rW   r  r   rp   r  )r?   r  r  r3   s       r   test_seek_append_bomz&TextIOWrapperTest.test_seek_append_bom  s   #8 	E 	EG8S7;; q              8S7;; qq			q$-(((               8T** Ea  8??7+C+CDDDE E E E E E E E E E E E E E E	E 	Es6   AA	A	/ACC	C	"<D**D.	1D.	c                 ^   |                      t          j        dd          5 }|                     |j        d           d d d            n# 1 swxY w Y   |                      t          j        ddd          5 }|                     |j        d           d d d            d S # 1 swxY w Y   d S )Nr  r  r.   r  r  r   )r0   r   r   r   r@  r  s     r   test_errors_propertyz&TextIOWrapperTest.test_errors_property  s   YYy'wY?? 	11QXx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1YYy'wyYQQ 	2UVQXy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s#   AAA9B""B&)B&c                    t          j                    |                     t          j        ddd          5 fdfdt          d          D             }t          j        |j                  5  t          j
        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          j        d	          5                                 }t          d          D ].}|                     |                    d
|z            d           /	 d d d            d S # 1 swxY w Y   d S )Nr  r  r]   r2  c                 d    d| z  }                                                      |           d S )NThread%03d
)r  rF   )ra   texteventr3   s     r   runz1TextIOWrapperTest.test_threads_write.<locals>.run  s-    %)

r    c                 >    g | ]}t          j        |f           S )r  rE  )rG  r  r  s     r   rH  z8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>  s;     + + + !'s!>>> + + +r    r   rJ  r.   r  )r   r   r0   r   r   r  r   rO  r   r   r   rp   r   r   )r?   rR  contentra   r  r3   r  s       @@@r   test_threads_writez$TextIOWrapperTest.test_threads_write  s-    !!YYy'w!YLL 	!PQ     + + + + %b		+ + +G!/CC ! !
4   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! YYy''Y:: 	GaffhhG2YY G G  ~/A!B!BAFFFFG	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GsH   <B.6BB.B	B.B	B..B25B2AD;;D?D?c                    |                      |                     | j                  d          g fd}|_        |                     t
          j                   |                     j                   |                     j	        j                   |                                | 
                    d                    | 
                    d                    d _        d S )Nr6  r.   c                  P    j         j        j         g d d <   t                      rC   )r   r   r   )r   r%  s   r   r  z>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flush  s%    SZ%67F111I))Or    r   r]   c                      d S rC   r&   r&   r    r   r  z=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>  r  r    )r8  r,  r  r   r   r   r   r  r   r   r  )r?   r  r   r%  s     @@r   r  z+TextIOWrapperTest.test_flush_error_on_close  s       dm!<!<w OO	 	 	 	 	 	 	'39---
###
)***###### L			r    c                 D   |                      | j                  }d }d }||_        |                     |d          }||_        |                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     |j        j	        d           | 
                    |j        j        t                     |                     |j        j        j	        d           |                     |j                   d |_        d |_        d S )	Nc                       t          d          r  rt  r&   r    r   r  z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flush   r  r    c                       t          d          r  rt  r&   r    r   r  z>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_close  r  r    r6  r.   r  r  c                      d S rC   r&   r&   r    r   r  z=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>  rv  r    c                      d S rC   r&   r&   r    r   r  z=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>  r  r    )r,  r  r   r8  r   r   r   r   r  r   r  r  r  r   r?   r   r  r  r%  r  s         r   r  z+TextIOWrapperTest.test_close_error_on_close  sN   dm,,	# 	# 	#	# 	# 	#   ' ::	w'' 	3IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+Z888cm7AAA27DDD$$$ $| L			    BBBc                 d   |                      | j                  }d }d }||_        |                     |d          }||_        |                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j	                             | 
                    |j	        j        t                     |                     dt          |j	        j                             |                     |j                   d |_        d |_        d S )	Nc                      t           rC   r  r&   r    r   r  zLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flush  r  r    c                      t           rC   r  r&   r    r   r  zLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_close  r  r    r6  r.   r  r  c                      d S rC   r&   r&   r    r   r  zKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>$  rv  r    c                      d S rC   r&   r&   r    r   r  zKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>%  r  r    )r,  r  r   r8  r   r   r  r  r  r  r  r  r  r   r  s         r   r  z9TextIOWrapperTest.test_nonnormalized_close_error_on_close  sV   dm,,	% 	% 	%	% 	% 	%   ' ::	y)) 	SIIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*C,>,>???cm7CCC*C0I,J,JKKK$$$ $| L			r  c                    |                      |                     | j                  d          }|                                 |                                 |                                 |                     t
          |j                   d S r  )r8  r,  r  r   r   r   r   r  s     r   r  z"TextIOWrapperTest.test_multi_close'  sm      dm!<!<w OO						*ci00000r    c                     |                      |                     | j                  d          }|                     | j        |j                   |                     | j        |j        d           d S )Nr  r.   r   )r8  r   r  r   r   rZ   rW   r  s     r   r  z!TextIOWrapperTest.test_unseekable.  si      !6!6t}!E!EPW XX$3SX>>>$3SXqAAAAAr    c                    |                      |                     | j                  d          }|                     | j                  }|                     t                    5  ||_        d d d            d S # 1 swxY w Y   d S r  )r8  r,  r  r   r  r   )r?   r%  r_   s      r   r  z*TextIOWrapperTest.test_readonly_attributes3  s      dm!<!<w OOll4=))~.. 	 	CJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $A99A= A=c                 P   |                      g d          }|                     |dd          }|                     |                    d          d           |                     |                                d           |                     t          |          dd	g           d S )
Nr  r  s   ghi
jkl
opq
r6  r  r9  re  abcdzefghi
zjkl
zopq
)rl   r8  r   rp   r  r:   r?   r  r%  s      r   
test_rawiozTextIOWrapperTest.test_rawio9  s     nnAAABB  w EE!f---333cWg$677777r    c                 @   |                      g d          }|                     |ddd          }|                    d           |                    d           |                    d           |                     d	                    |j                  d
           d S )Nr  r6  r  T)r/   r:  r  1z23
45r    s   123
45)rl   r8  rF   r   r   r<   r  s      r   test_rawio_write_throughz*TextIOWrapperTest.test_rawio_write_throughD  s    nnAAABB  w/3 ! 5 5		#		'		##"233Z@@@@@r    c                    g g c G fdd| j                   }|                                 }d} ||t          |          dz            }|                     |dd          }|                    d          }|                    |           |                                |                                |                     |	                                d           g |                    |d	z             |                                |                     |	                                |d
z             d S )Nc                   .     e Zd Z fdZ fdZ xZS )BTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriterc                 `                         d            t                      j        |i |S rH   r  )r?   r   r  r|   flush_calleds      r   r   zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushS  2    ##D)))$uww}d5f555r    c                 `                         d            t                      j        |i |S rH   )rD   r{   rF   )r?   r   r  r|   write_calleds      r   rF   zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.writeV  r  r    )r#   r$   r%   r   rF   r   )r|   r  r  s   @r   r(  r  R  s\        6 6 6 6 6 66 6 6 6 6 6 6 6 6 6r    r(  r  rz   r6  T)r/   r  r    r   rG  )
r(  r,  r   r8  r  rF   r  r  r   r{  )	r?   r(  r  r   r  r  r  r  r  s	          @@r   test_bufio_write_throughz*TextIOWrapperTest.test_bufio_write_throughN  sb    &("l	6 	6 	6 	6 	6 	6 	6 	6T0 	6 	6 	6 uc$iik22##EG26 $ 8 8 {{7##T 	&&&%%%))3///TBY%%%))4"955555r    c                    |                      g           }|                     |dd          }|                    d           |                    d           |                     |j        d           |                     d                    |j                  d           |                    d	           |                     d                    |j                  d
           |                    d           |                     |j        d           |                    d           |                                 |                     d                    |j                  d           |                                 |                    d            |                     |j        d           |                    d           |                                 |                    d            |                     |j        d           d S )Nr6  r  r9  r  T)r  r    r  23r^  F45r@  )	rl   r8  rF   r  r   r  r   r<   r   r  s      r   test_reconfigure_write_throughz0TextIOWrapperTest.test_reconfigure_write_throughn  s   nnR  sWdCC		D)))$///#"233T:::	#"233V<<<	E***%000					#"233X>>>		D)))%000	D)))		D)))$/////r    c                    |                      |                     d          d          }|                     t          |j        d           |                      |                     d          d          }|                     t          |j                   |                      |                     d          d          }|                     t          |j                   d S )Nr  r  r.   r]   )r8  rF  r   r   rp   r  r  s     r   test_read_nonbytesz$TextIOWrapperTest.test_read_nonbytes  s     t}}S11GDD)QVQ///t}}S11GDD)QZ000t}}S11GDD)QV,,,,,r    c                    t          j        d          }t          j        |dd          5  t	          j        t	          j        d          d          }d d d            n# 1 swxY w Y   |                     t          |j	        d           d S )Nrot13_is_text_encodingT   foor.   bar)
r  r  r   r  r   r8  r,  r   r   rF   )r?   r  r  s      r   test_illegal_encoderz&TextIOWrapperTest.test_illegal_encoder  s     g&&u&94@@ 	G 	G F!3!3gFFFA	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G)QWe44444s   )A  A$'A$c                 $     fd             }                      t          |j        d                        }                      t          |j                                }                      t          |j                   fd} |d          }                      t          |j        d            |d          }                      t          |j        d            |d          }                      t          |j        d           d S )Nc                      t          j        d          } d| _        	                                         d          dd          }d| _        n# d| _        w xY w|S )NquopriTs   aaaaaar  r  F)r  r  r  r8  r,  )r  r  r?   s     r   _make_illegal_wrapperzETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapper  st    ]8,,F'+F$1&&t||I'>'>/3h ' H H ,1((5(0000Hs   +A 	Ar]   c                       G  fdd          fd}t          j        d          }t          j        |d|          5               cd d d            S # 1 swxY w Y   d S )Nc                       e Zd Z fdZdS )^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoderc                     S rC   r&   )r?   getstate_ret_vals    r   r  zgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstate  s	    ++r    N)r#   r$   r%   r  )r  s   r   
BadDecoderr    s.        , , , , , , ,r    r  c                                  S rC   r&   )r  r  s    r   _get_bad_decoderzdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoder  s    !z||#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_wrapper  s    , , , , , , , , , ,$ $ $ $ $]8,,F"6+?#35 5 / /,,../ / / / / / / / / / / / / / / / / /s   
AA ArN   r&   )r]   rz   )r   r   rp   r  )r?   r  r  r  s   `  @r   test_illegal_decoderz&TextIOWrapperTest.test_illegal_decoder  s2   	 	 	 	 	 "!##)QVQ///!!##)QZ000!!##)QV,,,
		/ 		/ 		/ 		/ 		/ '&r**)QVR000&&r**)QVR000&&v..)QVR00000r    c                 h    | j         j        }d                    ||          }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  r  codes       r   _check_create_at_shutdownz+TextIOWrapperTest._check_create_at_shutdown  s=       U622 	  d+++r    c                    |                                  \  }}}|r/|                     | j        |                                           d S |                     d|                                                                           d S )Nok)r  r  shutdown_errorr  r   stripr?   rcoutr  s       r   (test_create_at_shutdown_without_encodingz:TextIOWrapperTest.test_create_at_shutdown_without_encoding  sx    5577C 	9 MM$-szz||<<<<<T3::<<#5#5#7#788888r    c                     |                      dd          \  }}}|                     |           |                     d|                                                                           d S )Nr  r  r   r   )r  r  r   r  r  r  s       r   %test_create_at_shutdown_with_encodingz7TextIOWrapperTest.test_create_at_shutdown_with_encoding  sm    55w=E 6 G GCszz||113344444r    c                 .   t          d          }|                     |d          }t          |                                                                          }|                     |                    d          |                    d                     d S )Ns   Just some random string
r  r  )MemviewBytesIOr8  _to_memoryviewr{  r  r   rp   r  )r?   r,   r  	bytes_vals       r   test_read_byteslikez%TextIOWrapperTest.test_read_byteslike  s|    788q'**
 $AJJLL1199;;	i&6&6w&?&?@@@@@r    c                      G d dt                     }t          d          D ]2}	 |                      |            d           ## t          $ r Y /w xY wd |_        |                      |            d          }d S )Nc                        e Zd Zd Zd Zd ZdS ),TextIOWrapperTest.test_issue22849.<locals>.Fc                     dS rH   r&   rI   s    r   rQ   z5TextIOWrapperTest.test_issue22849.<locals>.F.readable      ttr    c                     dS rH   r&   rI   s    r   rJ   z5TextIOWrapperTest.test_issue22849.<locals>.F.writable  r  r    c                     dS rH   r&   rI   s    r   rS   z5TextIOWrapperTest.test_issue22849.<locals>.F.seekable  r  r    N)r#   r$   r%   rQ   rJ   rS   r&   r    r   Fr    s+        +++++++++++r    r  r   r  r.   c                     dS r9   r&   r  s    r   r  z3TextIOWrapperTest.test_issue22849.<locals>.<lambda>  s    1 r    )objectr  r8  r>  rZ   )r?   r  r  r  s       r   test_issue22849z!TextIOWrapperTest.test_issue22849  s    	, 	, 	, 	, 	, 	, 	, 	,
 r 	 	A""1133"9999    qqssW55s   A
AAc                 ~    t          j        t          j        d                    }|                    d           d S )N   testr  r.   )r   r8  r,  r  )r?   wrappers     r   test_reconfigure_localez)TextIOWrapperTest.test_reconfigure_locale  s9    "2:g#6#677X.....r    c                 (   d                     d          d                     d          z   }|                     |          }|                     |dd          }|                     |                                d           |                     | j                  5  |                    d           d d d            n# 1 swxY w Y   |                     | j                  5  |                    d 	           d d d            d S # 1 swxY w Y   d S )
N   abcé
r     déf
utf8r  r9  r  r.   r:  )r  r,  r8  r   r  r   r   r  )r?   r   r  r%  s       r   test_reconfigure_encoding_readz0TextIOWrapperTest.test_reconfigure_encoding_read  s    !!(++j.?.?.G.GGll4    x FF555t899 	. 	.OOWO---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.t899 	* 	*OODO)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s$   B>>CC#DDDc                 V   |                                  }|                     |dd          }|                    d           |                    d           |                    d           |                                 |                     |                                d           d S )	Nr6  r  r9  zfoo
r  r.   r  s   foo
é
)r,  r8  rF   r  r   r   r{  r  s      r    test_reconfigure_write_fromasciiz2TextIOWrapperTest.test_reconfigure_write_fromascii  s     llnn  w EE		'---		(		);<<<<<r    c                    |                                  }|                     |dd          }|                    d           |                    d           |                     |                                d           |                    d           |                                 |                     |                                d	           |                                  }|                     |d
d          }|                    d           |                    d           |                    d           |                                 |                     |                                d           d S )Nr  r  r9  r  r  r.   s   abc
r   s
   abc
déf
r6  abc
r  s	   abc
déf
)r,  r8  rF   r  r   r{  r   r  s      r   test_reconfigure_writez(TextIOWrapperTest.test_reconfigure_write  s>   llnn  x FF		+)))666		*		)ABBB llnn  w EE		'---		*		)=>>>>>r    c                 t   |                                  }d |_        d |_        |                     |dd          }|                    d           |                    d           |                    d           |                                 |                     |                                d	           d S )
Nc                      dS r   r&   r&   r    r   r  zGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>0  s    u r    r6  r  r9  r'  r  r.   r   s   abc
﻿déf
)	r,  rS   rW   r8  rF   r  r   r   r{  r  s      r   #test_reconfigure_write_non_seekablez5TextIOWrapperTest.test_reconfigure_write_non_seekable.  s    llnn$}  w EE		'---		*		 	*JKKKKKr    c                    |                      |                                 ddd          }|                    d            |                     |j        d           |                     |j        d           |                    d           |                    d           |                     |j        d           |                     |j        d           |                    d	           |                     |j        d           |                     |j        d           |                    d
           |                    dd            |                     |j        d           |                    d           |                     |                                d           |                     |	                                
                                d           d S )Nr6  r  r  r.   LF
r  r"  rT  )r@  CRLF
r  r9  r  r   zLF
CRLF
s	   LF
CRLF
)r8  r,  r  r   r/   r@  rF   rW   rp   r  r{  r  s     r   test_reconfigure_defaultsz+TextIOWrapperTest.test_reconfigure_defaults;  s     )TJJ&&&w///Y///		&'''w///Y///x(((w///X...		($777X...\222..00/BBBBBr    c                    |                      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           |                    d           |                    d	           |                    d           |                    d           |                    d           dt          j        z   dz   }|                     |                                	                                
                    d          |           d S )Ns   CREOFr6  r  r"  zCR
r  zCRs	   CRLF
EOFr  zCRLF
s	   LF
CREOFzLF
CRs   CRCRLF
EOFr  z	CRCRLF
zlinesep
r-  r.  r(  zLF
LF
CRCRLF
)r,  r8  r  r   r  rF   r  r(  r  r{  r  )r?   r  r%  r~  s       r   test_reconfigure_newlinez*TextIOWrapperTest.test_reconfigure_newlineR  s   ll:&&  gt <<%%%000ll:&&  gt <<###000ll>**  gt <<%%%444ll>**  gt <<%%%444ll-..  gt <<'''888  $ GG%%%		+###		&%%%		&%%%		&'''		(rz),BB..0077@@(KKKKKr    c                    |                      |                     d          d          }|                    d           |                                 |                                 |                      |                     d          d          }|                    d           |                    d           |                                 d S )Nr  r6  r.   r]   r  )r8  r,  rp   rZ   rF   r  s     r   test_issue25862z!TextIOWrapperTest.test_issue25862v  s    t||G44wGG	q					t||G44wGG	q					r    N)Ur#   r$   r%   r   r   r  r  r  r  r  r  r  r  ry  rz  rL  r  	utf8_moder  r  r  r  r  r&  r,  r  r  r  rJ  rF  rW  r`  rb  rH  ro  rs  rv  r|  r  r&  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   
no_tracingr   rb  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  r3  r&   r    r   r  r  !
  s       > > >+ + +X X X	( 	( 	(2 2 2* * *(  (  	5 	5 	51 1 16 X_SY(*ABB+ + CB+(	" 	" 	"4 4 4$5 5 50(I (I (IT< < < 7 7 7$& & &, , ,.B B B  :) ) ),  (5 5 5"	 	 	-8 -8 -8^    J J J(- - -* * *= = =	/ 	/ 	/4 4 44 4 4= = =
1 
1 
1
1 
1 
1	1 	1 	11 1 1/ / /< < <E E EE E EE E E2 2 2 0022G G 32 G"! ! !"! ! !(! ! !*1 1 1B B B
  	8 	8 	8A A A6 6 6@0 0 0.- - -5 5 5&1 &1 &1P, , ,*9 9 95 5 5	A 	A 	A6 6 6/ / /
* 
* 
*
= 
= 
=? ? ?*L L LC C C."L "L "LH	 	 	 	 	r    r  c                   ,     e Zd ZdZ fdZ fdZ xZS )r
  zOA BytesIO object whose read method returns memoryviews
       rather than bytesc                 `    t          t                                          |                    S rC   )r  r{   rC  r?   len_r|   s     r   rC  zMemviewBytesIO.read1  s!    eggmmD11222r    c                 `    t          t                                          |                    S rC   )r  r{   rp   r8  s     r   rp   zMemviewBytesIO.read  s!    eggll400111r    )r#   r$   r%   re   rC  rp   r   r   s   @r   r
  r
    s[         3 3 3 3 32 2 2 2 2 2 2 2 2r    r
  c                     t          j         d          }t          |           t          |           |j        z  z
  }|                    | d|                    t	          |          S )z6Convert bytes-object *buf* to a non-trivial memoryviewr  N)r)   r   itemsize	frombytesr   )r_   arridxs      r   r  r    sV     +c

C
c((SXX,
,CMM#dsd)c??r    c                   4    e Zd ZeZdZd Zd Zd Zd Zd Z	dS )CTextIOWrapperTest$LookupError: unknown encoding: asciic                    |                      d          }|                     |d          }|                     |d          }|                     t          |j        |dd           |                     t          |j                   | j                            | j                  }|                     t          t          |           d S )Nr  r:  r  r.   r  r9  )
r,  r$  r8  r   r   rA   rp   r  r>  r  r  s       r   ro  z&CTextIOWrapperTest.test_initialization  s    LL))4((q733*aj!gwWWW*af---&&t'9::)T1-----r    c                    t          j        dt          f          5  t          j        t
          j        d          }|                     |          }|                     |d          }|	                    d           ||_
        t          j        |          }~t          j                     d d d            n# 1 swxY w Y   |                      |            |           |                     t
          j        d          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr  r  r6  r.   456defr	  s   456def)r   r  r  r   r  r   r   r(  r8  rF   r  r  r  r   r  r  r0   r   rp   )r?   r  r(   r  r  r3   s         r   r  z*CTextIOWrapperTest.test_garbage_collection  s    +R,ABB 	! 	!Ii.55E##E**A""1w"77AGGHACQB   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	""$$###YYy'.. 	2!QVVXXy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$   BB88B<?B<)D77D;>D;c                    t          d          D ]}|                     |                                 |                                           }|                     |d          }|                     |                                 |                                           }|                     |d          }||_        ||_        t          j                     d S )Nr:  r6  r.   )r  r/  rl   r8  buddyr   r  )r?   r  b1t1b2t2s         r   !test_rwpair_cleared_before_textioz4CTextIOWrapperTest.test_rwpair_cleared_before_textio  s     t 	 	A$$T^^%5%5t~~7G7GHHB##B#99B$$T^^%5%5t~~7G7GHHB##B#99BBHBHHr    c                     |                      |                                 d          }|                     t                    5  |`d d d            d S # 1 swxY w Y   d S r  )r8  r,  r   r  r2   r  s     r    test_del__CHUNK_SIZE_SystemErrorz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemError  s    t||~~@@~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 ~   d G fdd| j                   } |            }|                     |d          }|j        |                    d           |                    d           |                     g |j                   |                     t                    5  |                    dd	z   z             d d d            n# 1 swxY w Y   |                     d
g|j                   |                    d           |                    dz             |                     d
ddz  g|j                   d S )Nr  c                   "     e Zd Z fdZ xZS )<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOc                 z    t          |          k    rt          t                                          |          S rC   )r   r  r{   rF   )r?   r   r|   rZ  s     r   rF   zBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write  s0    t99z))&&ww}}T***r    )r#   r$   r%   rF   r   )r|   rZ  s   @r   MockIOrQ    s>        + + + + + + + + + +r    rS  r6  r.   r  rD  r  r]   r  ghir  r   )rl   r8  r2   rF   r   r<   r   r  )r?   rS  r_   r  rZ  s       @r   test_internal_buffer_sizez,CTextIOWrapperTest.test_internal_buffer_size  s    
	+ 	+ 	+ 	+ 	+ 	+ 	+T^ 	+ 	+ 	+ fhhsW55]
		S-...|,, 	( 	(GGCA&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	)c&6777		J)VT*_=s?OPPPPPs    CCCN)
r#   r$   r%   r   r  ro  r  rL  rN  rU  r&   r    r   rA  rA    sn        	B;N. . .2 2 2"    
Q Q Q Q Qr    rA  c                       e Zd ZeZdZdS )PyTextIOWrapperTestrB  N)r#   r$   r%   r   r   r  r&   r    r   rW  rW    s        	B;NNNr    rW  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )IncrementalNewlineDecoderTestc                      fd} |dd            |dd            |dd            |dd            |dd            |dd            |dd            |dd                                 t          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            |dd           d S )Nc                                                      }                     j        | fi ||                               |                                j        | fi ||           d S rC   )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88!<<<U###^W^A8888!<<<<<r    s   袈u   袈   r        r    T)r  r  r  r   r  z
a   
z

s   
as   袈
rY  s   袈)r   UnicodeDecodeErrorr  r  )r?   r\  r]  s   `` r   check_newline_decoding_utf8z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8  s   	= 	= 	= 	= 	= 	= 	ox000gr"""gr"""gx(((gr"""gr"""gx(((gr""",gncNNNeT"""eR   c4t,,,,eT....eR   dE"""i(((eR   eT"""fe$$$):666ox000eT"""'222eT"""""r    c                 D   g |$ t          j        |                      fd}nd fd}|                     j        d             |d           |                     j        d            |d           |                     j        d            |d           |                     j        d            |d           |                     j        d	            |d           |                     d
                              d                                            d})                                                     |          }|                                         |          d           |                     j        d            d S )Nc                                          |           D ]8}                                        t          |g                               9d S rC   )r  rD   r  r   )r   r(   r\  encoderr`  s     r   _decode_bytewisezNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewise  sQ     ** > >AMM'..s"<"<====> >r    c                 b    | D ]*}                                         |                     +d S rC   )rD   r  )r   rS  r\  r`  s     r   rg  zNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewise  s=     5 5AMM'.."3"344445 5r    zabc
r  z
abc)r  r  zabcr  )r  r  r  r  zabc

abcabc
abcabc)r  getincrementalencoderr   newlinesr   r  r  r  )r?   r\  r/   rg  r  rf  r`  s    `   @@r   check_newline_decodingz4IncrementalNewlineDecoderTest.check_newline_decoding  s   <f28<<>>G> > > > > > > >
 G5 5 5 5 5 5 	)4000###)4000!!!)>:::!!!)>:::)+?@@@!!!*ABBBMMOOONN5))E..666)400000r    c                 |   d}|D ]M}|o t          j        |                      }|                     |d          }|                     ||           N t          j        d                      }|                     |d          }|                     |           |                     t          |j        d           d S )N)	Nr  r-   r  r  r  r  r  r  T	translater  rN   )r  getincrementaldecoderIncrementalNewlineDecoderrk  rc  r   r   r  )r?   r  rH  r\  s       r   test_newline_decoderz2IncrementalNewlineDecoderTest.test_newline_decoder5  s    
	  	6 	6CA?f:3??AAG44W4MMG''55557&.w779900D0II((111)W%5r:::::r    c                       fd}                      d d          } ||                                 d d          } ||           d S )Nc                 N                        | j        d                                 |                     d          d                                | j        d                                 |                     d          d                                | j        d            d S )Nu   ഀu   ਀)r   rj  r  )decr?   s    r   _checkz@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkH  s    S\4000SZZ118<<<S\4000SZZ118<<<S\400000r    Frm  T)rp  )r?   ru  rt  s   `  r   test_newline_bytesz0IncrementalNewlineDecoderTest.test_newline_bytesF  sl    	1 	1 	1 	1 	1 ,,TU,CCs,,TT,BBsr    c                 V   dD ]I} t          j        d                      }|                     ||          }|                     |           J t          j        d                      }|                     |d          }|                     |                    d          d           d S )N)r"  r   r]   rz   r  r   rm  ra  z
)r  ro  rp  rc  r   r  )r?   rn  r\  s      r   test_translatez,IncrementalNewlineDecoderTest.test_translateS  s    ' 	6 	6I;f27;;==G44WiHHG,,W55557&.w779900A0FF	22H=====r    N)r#   r$   r%   rc  rk  rq  rv  rx  r&   r    r   rY  rY    sa        (# (# (#T1 1 1B; ; ;"  > > > > >r    rY  c                   .    e Zd Zej        d             ZdS )CIncrementalNewlineDecoderTestc                 H   | j                             | j                   }|                     t          |j        d           |                     t          |j                   |                     t          |j        d           |                     t          |j                   d S )N   bar)r  r   )rp  r  r   r   r  r  r  r  )r?   uninitializeds     r   r  z1CIncrementalNewlineDecoderTest.test_uninitialized^  s    6>>*, ,*m&:FCCC*m&<===*m&<kJJJ*m&9:::::r    N)r#   r$   r%   r   r  r  r&   r    r   rz  rz  ]  s1        ; ; ; ; ;r    rz  c                       e Zd ZdS )PyIncrementalNewlineDecoderTestNr"   r&   r    r   r  r  h  rh   r    r  c                      e 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"e	j#         e$j%        e&          d                          Z'd!S )"
MiscIOTestc                 B    t          j        t           j                   d S rC   r   rI   s    r   r   zMiscIOTest.tearDownp  r   r    c                    | j         j        D ]}t          | j         |d           }|                     ||           |dv r3d|                                v s|dk    r*|                     t          |t                    |           y|                    d          s(|                     t          || j	                             d S )N)r0   	open_codeerrorr   SEEK_)
r   __all__rF  r  lowerr  
issubclassr>  rN  rn  )r?   r'  r   s      r   test___all__zMiscIOTest.test___all__s  s    GO 	> 	>D$'4..C  d+++,,,DJJLL((D4J,J,J
3	 : :DAAAA__W-- >
3 < <===	> 	>r    c                    |                      t          j        dd          }|                     |j        d           |                                 |                      t          j        dd          }|                     |j        d           |                     |j        j        d           |                     |j        j        j        d           |                      |                                dd	          }|                     |j        d           |                     |j        j        d           |                     |j	        |                                           |                     |j        j	        |                                           |                                 |                                 d S )
Nr  r   r  rB  r  r.   r;  Fr  )
r0   r   r   r   r  r   r   r  rO   r'  )r?   r3   gs      r   test_attributeszMiscIOTest.test_attributes~  s[   IIi&I::&&&				IIi&wI??D111E222*E222IIahhjj$I66T***T***QXXZZ000QXXZZ000										r    c                    dD ]|}|                      t                    5 }|                     t          j        |           d d d            n# 1 swxY w Y   |                     dt          |j                             }d S )N)UrUzr+Uzinvalid mode)r   r   r0   r   r   r  r  r  )r?   r  r  s      r   test_removed_u_modezMiscIOTest.test_removed_u_mode  s    & 	= 	=D"":.. 2"		)*D1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2MM.#bl*;*;<<<<	= 	=s   !AA	A	r  r  r  c                 H   t          j                    \  }}|                     t           j        |           |                     |dd          }|                     |j                   t
          j        dk    r)|                     |                                           d S d S )Nr  r  r.   win32)	r  r  r  r   r0   rL  rM  r  rS   )r?   r,   r  r3   s       r   test_open_pipe_with_appendz%MiscIOTest.test_open_pipe_with_append  s     wyy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 |}|                                 |                     t
          |j                   |                     t
          |j                   |                     t
          |j                   |                     t
          |j	                   t          |d          r!|                     t
          |j        d           |                     t
          |j                   t          |d          rA|                     t
          |j        d           |                     t
          |j                   t          |d          r |                     t
          |j                   t          |d          r.|                     t
          |j        t!          d                     t          |d          r.|                     t
          |j        t!          d                     |                     t
          |j                   |                     t
          |j                   |                     t
          |j        d           |                     t
          |j        d           |                     t
          |j                   |                     t
          |j                   |                     t
          |j        d|d         v rdnd           |                     t
          |j        g            |                     t
          t2          |           ?d S )Nr  r  r  r]   r  r  rz   r   r,   r	  rB  r  r(   r  r/   r  rC  r  rW  rb   r   r    r  )r0   r   r   r   r   r   r   rO   r.  __iter__r  r  rp   rC  rW  rb   r   r   r  rx  rW   rZ   rd   rF   r  rp  )r?   r  r3   s      r   test_io_after_closezMiscIOTest.test_io_after_close  sf   1--1--A..1--1--A..A..A..Q// .	3 .	3F" &.((%,z"	)*55f55AGGIIIj!'222j!(333j!(333j!*555q&!! 9!!*afa888j!&111q'"" 7!!*agt<<<!!*ag666q)$$ 9!!*ai888q*%% K!!*aj)D//JJJq+&& L!!*ak9T??KKKj!*555j!+666j!+q999j!&!444j!&111j!*555j!'%(F6N%:%:ccD D Dj!,;;;j$2222].	3 .	3r    c                     G d dt                     } |d          }|                     d|          }||_        ||_        t	          j        |          }~~t          j                     |                      |            |           d S )Nc                       e Zd ZdS )*MiscIOTest.test_blockingioerror.<locals>.CNr"   r&   r    r   Cr    s        Dr    r  r  r]   )	r  r   r(   rS  r  r  r   r  r  )r?   r  rS  r(   r  s        r   test_blockingioerrorzMiscIOTest.test_blockingioerror  s    	 	 	 	 	 	 	 	AbEE  A&&[^^q""$$#####r    c                 .   |                      | j        t          j                   |                      | j        t          j                   |                      | j        t          j                   |                      | j        t          j                   d S rC   )r  rn  r  ABCMetarJ  r4  rI  rI   s    r   	test_abcszMiscIOTest.test_abcs  sq    dk3;777dnck:::d13;???dos{;;;;;r    c                    |                      t          j        dd          5 }|                     ||j                   |                     ||j                   |                     ||j                   |                     ||j                   d d d            n# 1 swxY w Y   |                      t          j        d          5 }|                     ||j                   |                     ||j                   |                     ||j                   |                     ||j                   d d d            n# 1 swxY w Y   |                      t          j        dd          5 }|                     ||j                   |                     ||j                   |                     ||j                   |                     ||j                   d d d            d S # 1 swxY w Y   d S Nr  r   r  r  r  r.   )	r0   r   r   r  rn  rJ  assertNotIsInstancer4  rI  )r?   	abcmoduler3   s      r   _check_abc_inheritancez!MiscIOTest._check_abc_inheritance  s   YYy'Y;; 	>q!!!Y%5666!!!Y%8999$$Q	(@AAA$$Q	(<===		> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>
 YYy'.. 	>!!!!Y%5666$$Q	(;<<<!!!Y%=>>>$$Q	(<===		> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>
 YYy'wY?? 	;1!!!Y%5666$$Q	(;<<<$$Q	(@AAA!!!Y%9:::		; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s8   A-BB #B A-E  EE-A-G''G+.G+c                 0    |                      |            d S rC   )r  rI   s    r   test_abc_inheritancezMiscIOTest.test_abc_inheritance  s    ##D)))))r    c                 :    |                      t                     d S rC   )r  r   rI   s    r   test_abc_inheritance_officialz(MiscIOTest.test_abc_inheritance_official   s     	##B'''''r    c                 0   t          |i |}t          |          }|                     t                    5 }d }t	          j                     d d d            n# 1 swxY w Y   |                     |t          |j        j	        d                              d S r9   )
r0   r  assertWarnsr  r   r  r  r  warningr   )r?   r   r  r3   r,   r  s         r   _check_warn_on_deallocz!MiscIOTest._check_warn_on_dealloc  s    $!&!!GGo.. 	!"A   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	aRZ_Q/0011111s   AAAc                     |                      t          j        dd           |                      t          j        d           |                      t          j        dd           d S r  )r  r   r   rI   s    r   test_warn_on_dealloczMiscIOTest.test_warn_on_dealloc  s]    ##I$4da#HHH##I$4d;;;##I$4cG#LLLLLr    c                 T   g fd}|                      |           t          j                    \  }}||fz   | j        |g|R i | t          j                    \  }}||fz  t	          j        |           5  t          |g|R ddi| d d d            d S # 1 swxY w Y   d S )Nc                      D ]D} 	 t          j        |            # t          $ r }|j        t          j        k    r Y d }~=d }~ww xY wd S rC   )r  r   r   r)  r*  )r  r?  fdss     r   cleanup_fdsz9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fds  sr      HRLLLL   w%+-- .---- s   
AAAr  F)r  r  r  r  r   r4  r0   )r?   r   r  r  r,   r  r  s         @r   _check_warn_on_dealloc_fdz$MiscIOTest._check_warn_on_dealloc_fd  s(   	 	 	 	 	 	$$$wyy1q!t##A7777777wyy1q!t6t<< 	4 	43T33353F333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   =BB!$B!c                     |                      dd           |                      d           |                      dd           d S )Nr	  r   r  r,   r  r.   )r  rI   s    r   test_warn_on_dealloc_fdz"MiscIOTest.test_warn_on_dealloc_fd%  sN    &&tq&999&&t,,,&&sW&=====r    c                 V   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 ]Y} | j        t          j        fi |5 }|                     t          t          j        ||           d d d            n# 1 swxY w Y   Zd S )Nr  r  r  r   r  r,   r	  rB  r  r(   r  r/   r]   )	r  pickleHIGHEST_PROTOCOLr0   r   r   r   r   dumps)r?   r  protocolr3   s       r   test_picklingzMiscIOTest.test_pickling,  sL    A..A..Q//
 	L 	LF &.((%,z"!&"9A"=>> L LTYy/::6:: La%%iq(KKKL L L L L L L L L L L L L L LL	L 	Ls   ((BB #B c                 0    |                      d           d S )Ni @  _test_nonblock_pipe_writerI   s    r   test_nonblock_pipe_write_bigbufz*MiscIOTest.test_nonblock_pipe_write_bigbuf?  s     	&&w/////r    c                 0    |                      d           d S )Nr  r  rI   s    r   !test_nonblock_pipe_write_smallbufz,MiscIOTest.test_nonblock_pipe_write_smallbufE  s     	&&t,,,,,r    set_blockingz(os.set_blocking() required for this testc                 B   g }g }t          j                    \  }}t          j        |d           t          j        |d           |                     |dd|          }|                     |dd|          }|5  |5  dD ]"}	 d}		 t	          |	dz  d	z   g          |z  }
|                    |
           |                    |
           |	d
z  }	I# | j        $ r}|                     |j	        d         t          j                   |                     |j	        d         |j                   |d         d |j                 |d<   |                    |                                           d}
|                    |
           |                    |
           Y d }~d }~ww xY w	 	 |                                 n# | j        $ r}|                     |j	        d         t          j                   |                     |j	        d         |j                   |                     |j        d           |                    |                                           Y d }~nd }~ww xY w|t          |j        d           z  }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d                    |          d                    |          }}|                     ||           |                     |j                   |                     |j                   d S )NFr	  T)r  r  r  r  )rR  I   i  r      a   r]   rz   r   s   BLOCKEDr    )r  r  r  r0   r   rD   rF   r   r   r   r)  EAGAINr  rp   r   iterr   r  r   )r?   r  sentreceivedr,   r  rfwfrP  r  r  r?  s               r   r  z$MiscIOTest._test_nonblock_pipe_writeK  s    wyy1
5!!!
5!!! YYqtTWYEEYYqtTWYEE 	, 	, 	, 	,# % %%A#QVb[M22Q6C(((Q	 + % % %$$QVAY===$$QVAY0DEEE#Bx(=)=(=>DHOOBGGII...$CHHSMMMKK$$$$$$$$%//HHJJJ+ / / /$$QVAY===$$QVAY0DEEE$$Q%91===OOBGGII........	/	/ RWd+++H;	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,> $(););hx(((	"""	"""""s   9J <J	AC
F 	B<F	J	F 	 J	%F:9J	:
I!BIJ	I!!J	=J 	J	J J	J  J$'J$c                     |                      t          j        dd          5  	 d d d            n# 1 swxY w Y   |                     t          | j         t          j        dd           d S )Nr  r  r.   r  )r0   r   r   r   FileExistsErrorrI   s    r   test_create_failzMiscIOTest.test_create_fail  s    YYy'wY?? 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	/49i6FV]^^^^^s   155c                 b   |                      t          j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        d          5 }|                     d|                                           d d d            d S # 1 swxY w Y   d S )Nxbr  r	  r  r  s     r   test_create_writeszMiscIOTest.test_create_writes  s   YYy'.. 	!GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	YYy'.. 	0!Waffhh///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0r  c                 b    |                      t          | j        t          j        dd           d S )Nzrwax+r  r.   r  rI   s    r   test_open_allargszMiscIOTest.test_open_allargs  s-    *di1A7U\]]]]]r    c                     | j         j        }t          }d}t          j        d| d|d|d|d|d|d|d	|d
          }t          ddd|          }|                     |j        d|           d S )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devr  r   )r   r#   r1   textwrapdedentr	   r   r  )r?   modr  r8  r  procs         r   test_check_encoding_errorsz%MiscIOTest.test_check_encoding_errors  s     g+ # #  # 
 #  # 
 .5#  #  #  #  ,3#  # $  %#  # * 18+#  # 8 /69#  #  #  # #H %T5$=="d+++++r    c           	         | j         j        }t          }t          j        d| d|d|d          }t          ddd|          }|j                                        }|                     t          |          d           | 
                    |d	                             d
                     | 
                    |d                             d                     d S )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_encodingr  rz   r   s   <string>:5: EncodingWarning: r]   s   <string>:8: EncodingWarning: )r   r#   r1   r  r  r   r  r$  r   r   r  rN  )r?   r  r  r  r  rU  s         r   test_check_encoding_warningz&MiscIOTest.test_check_encoding_warning  s    g 	 	  	 
  	  	  #	  	  	  	 	  &=tTJJ8&&((X***QK""#CDD	F 	F 	FQK""#CDD	F 	F 	F 	F 	Fr    c                    d}t          ddd|          }|                     d|j                                                   t          ddd|          }|                     d|j                                                   d S )Nz(import io; print(io.text_encoding(None))r  zutf8=0r  s   localezutf8=1s   utf-8)r   r   r  r  )r?   r  r  s      r   test_text_encodingzMiscIOTest.test_text_encoding  sy     :hd;;DHNN$4$4555hd;;48>>#3#344444r    )categoryc                 Z    |                      | j        j        | j        j                   d S rC   )r  r   OpenWrapperr0   rI   s    r   test_openwrapperzMiscIOTest.test_openwrapper  s'     	dg)47<88888r    N)(r#   r$   r%   r   r  r  r  ry  rz  r   r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ignore_warningsrX  r  r&   r    r   r  r  n  s       + + +	> 	> 	>  $= = = X_F  XV,,.BCC	+ 	+ DC 	+/3 /3 /3b$ $ $< < <; ; ;"* * *( ( (
2 2 2M M M
4 4 4& XV,,.BCC> > DC>L L L& X_F 0 0 0 X_F - - - X^44CE EXV,,.BCC0# 0# DCE E0#d_ _ _0 0 0^ ^ ^+, +, +,ZF F F.	5 	5 	5  %_$.@AAA9 9 BA	 
9 9 9r    r  c                   ~    e Zd ZeZd Zd Z ej                    d             Z ej                    d             Z	dS )CMiscIOTestc                      G d d| j         j                  } |            }t          d          }|                     t          |j        |           d S )Nc                       e Zd ZddZdS )<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderr   c                     ddz  S )Nr   i@B r&   ro   s     r   rp   zACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.read  s    e|#r    NrU  rq   r&   r    r   	BadReaderr    s(        $ $ $ $ $ $r    r  rz   )r   r4  r   r   r   rb   )r?   r  r  r(   s       r   test_readinto_buffer_overflowz)CMiscIOTest.test_readinto_buffer_overflow  si    	$ 	$ 	$ 	$ 	$. 	$ 	$ 	$ 	aLL*ena88888r    c                 x   d                     t                                }t          d|          \  }}|j                                        }|j        dk    r9d                     t                                }|                     ||           d S |                     |                    d                     d S )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()
            r  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_namer  r   rk  r  patterns          r   &check_daemon_threads_shutdown_deadlockz2CMiscIOTest.check_daemon_threads_shutdown_deadlock  s    0 
688$$1 	2 &dD11Qgnn6Q;;) *4FHH)=)=	 
 S'*****SYYt__-----r    c                 0    |                      d           d S )Nstdoutr  rI   s    r   ,test_daemon_threads_shutdown_stdout_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlock      33H=====r    c                 0    |                      d           d S )Nstderrr  rI   s    r   ,test_daemon_threads_shutdown_stderr_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlock"  r  r    N)
r#   r$   r%   r   r  r  r   rb  r  r  r&   r    r   r  r    s        	B9 9 9'. '. '.R 1022> > 32> 1022> > 32> > >r    r  c                       e Zd ZeZdS )PyMiscIOTestN)r#   r$   r%   r   r   r&   r    r   r  r  '  s        	BBBr    r  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d             Zed             Zd Zed             Zed             ZdS )SignalsTestc                 X    t          j         t           j        | j                  | _        d S rC   )signalSIGALRMalarm_interruptoldalrmrI   s    r   r   zSignalsTest.setUp.  s    }V^T5IJJr    c                 N    t          j         t           j        | j                   d S rC   )r  r  r  rI   s    r   r   zSignalsTest.tearDown1  s    fndl33333r    c                     ddz   d S r\   r&   )r?   sigframes      r   r  zSignalsTest.alarm_interrupt4  s    	!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          rit          j        t          j        t          j        g           |                                 t          j        t          j        t          j        g           n|                                 t          j        d           	 |                     t(          |j        |           t          j        d           |                                 n-# t          j        d           |                                 w xY w                    t          j        
d                     |                     |dd         |dd	         g           t          j        |           t          j        
           	 |                                 d
S # t6          $ r!}	|	j        t8          j        k    r Y d
}	~	d
S d
}	~	ww xY w# t          j        |           t          j        
           	 |                                 w # t6          $ r }	|	j        t8          j        k    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          j        d          }                     |            d S r   )r  rp   rD   )r   r,   read_resultss    r   rg  z2SignalsTest.check_interrupted_write.<locals>._readU  s,    1A"""""r    rD  TFr  r]   pthread_sigmaskr   rz   N)r   r  r   r  daemonr  r  PIPE_MAX_SIZEr   r   r0   r  r  r  	SIG_BLOCKr  r   SIG_UNBLOCKr5   r   r  rF   r   rD   rp   r   r   r   r)  r*  )r?   itemr   fdopen_kwargsrg  r  r  
large_datawior?  r,   r  s             @@r   check_interrupted_writez#SignalsTest.check_interrupted_write7  s   6 		# 	# 	# 	# 	# 	# E***wyy1#(i W2c$ii?!CD
$	$',q22M22Cv011 &v'7&.9IJJJ			&v'9FN;KLLLL			 LOOO!!"3SY
KKKQ Q 1...\E!A#Jac
+CDDDHQKKKHQKKK		   7ek)) *))))) HQKKKHQKKK		   7ek)) *))))sh   8B9I& 2!E< )I& <*F&&AI& "H8 8
I#II#&)KJ%$K%
K/K
K
KKr  r  c                 8    |                      dddd           d S )Nrd  r  r   r  r  rI   s    r   !test_interrupted_write_unbufferedz-SignalsTest.test_interrupted_write_unbuffered  s'     	$$UE$JJJJJr    c                 6    |                      ddd           d S Nrd  r  r  r  rI   s    r   test_interrupted_write_bufferedz+SignalsTest.test_interrupted_write_buffered  s%     	$$UE$=====r    c                 8    |                      dddd           d S )Nxyrd  r  r6  r  r/   r  rI   s    r   test_interrupted_write_textz'SignalsTest.test_interrupted_write_text  s'     	$$T5sW$MMMMMr    c                   	 	fd}t          j         t           j        |           t          j                    \  }} | j        j        |fi |		 t          j        d           |                     t          t          f          5 }	 t          d          D ]+}	                               	                                 ,t          j        |t                    dz             a# 1 swxY w Y   |j        }t!          |t                    rC|                     t%          |                              d          t%          |                     t          j        d           	                                 t          j        |           d S # t          j        d           	                                 t          j        |           w xY w)Nc                  <                                    ddz   d S r\   )rF   )r   r   r  s    r   on_alarmz3SignalsTest.check_reentrant_write.<locals>.on_alarm  s    IIdOOOaCCCCr    r]   r  zreentrant callr   )r  r  r  r  r   r0   r5   r   r  r  r  rF   r   rp   r   r  rH  r  r  rN  r   )
r?   r   r  r&  r,   r  r  r  r  r  s
    `       @r   check_reentrant_writez!SignalsTest.check_reentrant_write  s   	 	 	 	 	 	 	fnh///wyy1dgl1....	LOOO ""$5|#DEE 00"3ZZ $ $		$		GAs4yy3///00 0 0 0 0 0 0 0 ,C#|,, QC 3 34D E Es3xxPPPLOOOIIKKKHQKKKKK LOOOIIKKKHQKKKKs,   5F A#C**C..F 1C.2A"F >Gc                 4    |                      dd           d S r  r'  rI   s    r   test_reentrant_write_bufferedz)SignalsTest.test_reentrant_write_buffered  s!    ""5t"44444r    c                 6    |                      ddd           d S )Nr!  r  r6  r"  r)  rI   s    r   test_reentrant_write_textz%SignalsTest.test_reentrant_write_text  s#    ""4cG"DDDDDr    c                    t          j                    \  }d|d<   fd}t          j        t          j        |           	  | j        j        |fi |}t          j        d           t          j        d           |                      ||	                    d                    d           t          j        d           |
                                 t          j
                   t          j
        |           d	S # t          j        d           |
                                 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           d S )Nr|  )r  rF   )r
  r  r  s     r   alarm_handlerz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handler  s    HQr    r  r]   r   foobarr   N)r  r  r  r  r   r0   rF   r5   r   rp   r   )r?   r  r  r,   r/  rior  s         @r   check_interrupted_read_retryz(SignalsTest.check_interrupted_read_retry  s*    wyy1#(i 	  	  	  	  	 fnm444	$',q22M22CHQLOOO
 VVCHHQKK00(;;;LOOOIIKKKHQKKKHQKKKKK LOOOIIKKKHQKKKHQKKKKs   A.D AEc                 6    |                      d d           d S )Nc                 ,    |                      d          S )Nr  )r  r  s    r   r  zBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>  s    AHHX4F4F r    r	  r  r2  rI   s    r   $test_interrupted_read_retry_bufferedz0SignalsTest.test_interrupted_read_retry_buffered  s2    ))*F*F/3 	* 	5 	5 	5 	5 	5r    c                 8    |                      d dd           d S )Nc                     | S rC   r&   r  s    r   r  z>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>  s    A r    r,   r  r"  r5  rI   s    r    test_interrupted_read_retry_textz,SignalsTest.test_interrupted_read_retry_text  s7    ))++/2X 	* 	G 	G 	G 	G 	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
           |                    |          }	|                     ||	           |                                 d                                 |                                |                     |t'          d D                                  t          j        d           dt	          j        |           t	          j                   	 |                                 dS # t*          $ r!}
|
j        t,          j        k    r Y d}
~
dS d}
~
ww xY w# t          j        d           dt	          j        |           t	          j                   	 |                                 w # t*          $ r }
|
j        t,          j        k    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                  "   	 sp                     gg g d          d         v rKt          j        d          }                     |                                 gg g d          d         v Knd S d S # t          $ r}|Y d }~d S d }~ww xY w)Ng      ?r   r  )r;  r  rp   rD   BaseException)r   r  r  r,   r  r;  write_finisheds     r   rg  z8SignalsTest.check_interrupted_write_retry.<locals>._read  s    ( /v}}aS"b#>>qAAAGAt,,$++A... v}}aS"b#>>qAAA ) / / / / / !   s   A0A7 7
BB		BrD  Tc                 n    t          j         t           j                   t          j        d           d S r   )r  r  r5   )r
  r  alarm2s     r   alarm1z9SignalsTest.check_interrupted_write_retry.<locals>.alarm1  s(    M&.&111LOOOOOr    c                 0                                      d S rC   )r   )r
  r  r  s     r   r@  z9SignalsTest.check_interrupted_write_retry.<locals>.alarm2  s    GGIIIIIr    r]   c              3   4   K   | ]}t          |          V  d S rC   )r   )rG  r  s     r   	<genexpr>z<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>  s(      #A#AqCFF#A#A#A#A#A#Ar    r   )r   import_moduler   r  r  r  r   r  r  r  r  r   r0   r5   rF   r   r   r   r  sumr   r   r)  r*  )r?   r  r  rP  r  rg  rA  r  r  r  r?  r@  r  r,   r  r;  r  r>  s              @@@@@@@r   check_interrupted_write_retryz)SignalsTest.check_interrupted_write_retry  s    ,X66 !wyy1#(i 
 	 	 	 	 	 	 	 	 	 E***	 	 	 	 		 	 	 	 	 AX
fnf---	$',q22M22CLOOO ii
++GQ(((IIKKK!NFFHHHe$$$Q#A#AL#A#A#A A ABBBLOOO!NHQKKKHQKKK		   7ek)) *))))) LOOO!NHQKKKHQKKK		   7ek)) *))))sO   B>G F0 0
G:GG?I H32I 3
I=II II c                 4    |                      dd           d S )Nr   r  r  rG  rI   s    r   %test_interrupted_write_retry_bufferedz1SignalsTest.test_interrupted_write_retry_buffered  s!    **4d*;;;;;r    c                 6    |                      ddd           d S )Nr  r  r  r"  rI  rI   s    r   !test_interrupted_write_retry_textz-SignalsTest.test_interrupted_write_retry_text!  s#    **3S8*LLLLLr    N)r#   r$   r%   r   r   r  r  requires_alarmry  r|  r  r  r  r  r#  r   r5  r'  r*  r,  r2  r6  r9  rG  rJ  rL  r&   r    r   r  r  +  s       K K K4 4 4  K K KZ XV,,.BCCK K DC ^K XV,,.BCC> > DC ^> XV,,.BCCN N DC ^N   6 5 5 ^5 E E ^E  0 5 5 ^5 G G ^GB B BH < < ^< M M ^M M Mr    r  c                       e Zd ZeZdS )CSignalsTestN)r#   r$   r%   r   r&   r    r   rO  rO  &  s        	BBBr    rO  c                       e Zd ZeZdZdZdS )PySignalsTestN)r#   r$   r%   r   r   r*  r,  r&   r    r   rQ  rQ  )  s#        	B %)! $r    rQ  c                    t           t          t          t          t          t
          t          t          t          t          t          t          t          t          t          t          t           t"          t$          t&          f}t(          t*          t,          t.          t0          t2          t4          t6          f}t8          j        dgz   }d |D             }d |D             }t=                      |                    fd|D                        |                    fd|D                        |D ]}|j         !                    d          r,|"                                D ]\  }}	tG          |||	           H|j         !                    d          r+|"                                D ]\  }}	tG          |||	           | $                                }
|D ]*}|
%                    | &                    |                     +|
S )Nrp  c                 :    i | ]}|t          t          |          S r&   )rF  r   rG  r'  s     r   
<dictcomp>zload_tests.<locals>.<dictcomp>E  s$    @@@Dtgb$''@@@r    c                 :    i | ]}|t          t          |          S r&   )rF  r   rT  s     r   rU  zload_tests.<locals>.<dictcomp>F  s$    CCCtwtT**CCCr    c              3   F   K   | ]}|j         d |j         z            fV  dS )r  Nr#   rG  r  globss     r   rD  zload_tests.<locals>.<genexpr>H  s6      HHQAJcAJ&6 78HHHHHHr    c              3   F   K   | ]}|j         d |j         z            fV  dS )PyNrX  rY  s     r   rD  zload_tests.<locals>.<genexpr>I  s6      JJqQZtaj'8!9:JJJJJJr    r  r\  )'r~  r  r  rd  r  r  r  r6  r8  r  r  r  rz  r  rA  rW  r  r  rO  rQ  rl   rw   r   r   r   r   r7   r   r   r  globalsr  r#   rN  r*  setattr
suiteClassaddTestloadTestsFromTestCase)loaderrO  r  mocksall_membersc_io_nspy_io_nsrP  r'  r   suiterZ  s              @r   
load_testsrh  2  s   h "6 "6 "6 "6++-L!4,=
E ^!#35IE * ;<<K@@K@@@GCC{CCCHIIENNHHHH%HHHHHHOOJJJJEJJJJJJ ) )=##C(( 	)$]]__ ) )	cdC(((()]%%d++ 	)%^^-- ) )	cdC((((E : :f224889999Lr    __main__)yre   r  r)   r)  r  r  r  rL  r  rL  r  r   r   ry  rU  r  collectionsr   r   	itertoolsr   r   rP  r   test.support.script_helperr   r	   r
   test.supportr   r   r   r   r   test.support.os_helperr   r  r   _pyior   r   r   	Structurer   ImportErrorr  r  dev_moder  r4   r|  rM  r7   rJ  rg   rj   rl   rs   ru   rw   r   r   r   r   r   r   r   r   r   r,  r   r   r   r   r   r   r   r   TestCaser   r~  r  r  r  r  r  r  rd  r  r  r  r  r  r6  r8  r:  r  r  r  r  r  r  r  r
  r  rA  rW  rY  rz  r  r  r  r  rz  r'  r  rO  rQ  rh  r#   mainr&   r    r   <module>ru     sw   # #* 


    				    



          ' ' ' ' ' ' ' ' " " " " " " " "      C C C C C C C C C C & & & & & & " " " " " " ) ) ) ) ) ) ( ( ( ( ( ( * * * * * * + + + + + +  				    MMM
      f&      3 3 33 3 3 3 33  #73(:;;Qsy?Q   
 %$GFG< 
6 6 6 6 6 6 6 6p	 	 	 	 	0", 	 	 		 	 	 	 	14> 	 	 	    $   	 	 	 	 	BL 	 	 		 	 	 	 	)T^ 	 	 	    i   "	 	 	 	 	 	 	 		 	 	 	 	 	 	 	    Y   	 	 	 	 	nbl 	 	 		 	 	 	 	~t~ 	 	 	    Y   	 	 	 	 	nbl 	 	 		 	 	 	 	~t~ 	 	 	        	 	 	 	 	*bj 	 	 		 	 	 	 	:t| 	 	 	8 8 8 8 8 8 8 83 3 3 3 3("* 3 3 35 5 5 5 5)4< 5 5 5. . . . . . . .`) ) ) ) )0", ) ) )+ + + + +14> + + +A$ A$ A$ A$ A$X A$ A$ A$H$ $ $ $ $f $ $ $(	 	 	 	 	v 	 	 	 	h h h h hh' h h hj j j j j j j jZ5 5 5 5 5 5 5 5,fH fH fH fH fH*,? fH fH fHR	@A @A @A @A @A,j @A @A @AF    -   d d d d d*,? d d dP	-4 -4 -4 -4 -4,j -4 -4 -4`    -   N N N N N* N N N`    ,       -   f& f& f& f& f&+-? f& f& f&R4 4 4 4 4,j 4 4 42    -   I I I I I!: I I I\; ; ;)4 )4 )4 )4 )4X%6 )4 )4 )4V^ ^ ^ ^ ^) ^ ^ ^B#2 2 2 2 2RZ 2 2 2  KQ KQ KQ KQ KQ* KQ KQ KQ\< < < < <+ < < <
s> s> s> s> s>H$5 s> s> s>j; ; ; ; ;%B ; ; ;	 	 	 	 	&C 	 	 	x9 x9 x9 x9 x9" x9 x9 x9v;> ;> ;> ;> ;>* ;> ;> ;>|    :    D"IJJwM wM wM wM wM(# wM wM KJwMt    ;   % % % % %K % % %# # #J zHMOOOOO s   B+ +B65B6