
    0hh                        S r SSKrSSKJr  SSKrSSKrSSKrSSKrSSK	r	SSK
r
 " S S5      r " S S5      r " S S	5      r " S
 S\\\R                  5      r " S S5      r " S S\\\\R                  5      r " S S\\R                  5      r " S S\5      r " S S\5      r " S S\5      r\S:X  a  \R.                  " 5         gg)zdUnit tests for memory-based file-like objects.
StringIO -- for unicode strings
BytesIO -- for bytes
    N)supportc                   $    \ rS rSrS rS r\rSrg)IntLike   c                     Xl         g N_num)selfnums     ;/opt/python-3.13.8/usr/lib/python3.13/test/test_memoryio.py__init__IntLike.__init__   s    	    c                     U R                   $ r   r	   r   s    r   	__index__IntLike.__index__   s    yyr   r	   N)__name__
__module____qualname____firstlineno__r   r   __int____static_attributes__ r   r   r   r      s    Gr   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	MemorySeekTestMixin   c                 H    U R                  S5      nU R                  U5      ng N
1234567890)buftypeioclassr   bufbytesIos      r   testInitMemorySeekTestMixin.testInit   s    ll<(,,s#r   c                 t   U R                  S5      nU R                  U5      nU R                  US S UR                  S5      5        U R                  USS UR                  S5      5        U R                  USS  UR                  S5      5        U R                  U R                  UR                  5       5        g )Nr!              r"   r#   assertEqualreadEOFr$   s      r   testReadMemorySeekTestMixin.testRead   s    ll<(,,s#Ra',,q/2Qq7<<?3QR',,s"347<<>2r   c                     U R                  S5      nU R                  U5      nU R                  XR                  5       5        U R                  U R                  UR                  5       5        g r    r.   r$   s      r   testReadNoArgs"MemorySeekTestMixin.testReadNoArgs&   sL    ll<(,,s#lln-7<<>2r   c                 t   U R                  S5      nU R                  U5      nUR                  S5        UR                  S5        U R	                  XR                  5       5        UR                  S5        U R	                  USS  UR                  5       5        U R                  [        UR                  S5        g )Nr!   r+   r              )r"   r#   r0   seekr/   assertRaises	TypeErrorr$   s      r   testSeekMemorySeekTestMixin.testSeek-   s    ll<(,,s#QQlln-QQR',,.1)W\\37r   c                 L   U R                  S5      nU R                  U5      nU R                  SUR                  5       5        UR	                  S5        U R                  SUR                  5       5        UR	                  S5        U R                  SUR                  5       5        g Nr!   r   r+   i'  )r"   r#   r/   tellr:   r$   s      r   testTellMemorySeekTestMixin.testTell9   sw    ll<(,,s#GLLN+QGLLN+U/r   r   N)
r   r   r   r   r'   r2   r5   r=   rB   r   r   r   r   r   r      s    $33
80r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)MemoryTestMixinD   c                 p    U R                  5       nU R                  U R                  UR                  5        g r   )r#   r;   UnsupportedOperationdetachr   r%   s     r   test_detachMemoryTestMixin.test_detachF   s'    lln$33SZZ@r   c                    U R                  UR                  U" S5      5      S5        U R                  UR                  S5      S5        U R                  UR                  U" S5      5      S5        U R                  UR                  5       S5        U R                  UR                  S5      S5        U R                  UR                  5       S5        U R                  UR                  U" S5      5      S5        U R                  UR                  S5      S5        U R                  UR                  U" S5      5      S	5        U R                  UR	                  S
5      S
5        U R                  UR                  5       S	5        g )Nzblah.r+   r   zHello.   z	 world


	   hr*      )r/   writer:   rA   truncate)r   fts      r   	write_opsMemoryTestMixin.write_opsJ   s   7,a0A&8-q11%A&1%>!23Q7A&3!,B,1%r   c                    U R                  S5      nU R                  U5      nU R                  X R                   5        U R                  UR	                  5       U5        U R                  5       nU R                  X R                   5        U R                  UR	                  5       U5        U R                  [        UR                  S 5        UR                  5         U R                  [        UR                  U R                  S5      5        g )Nzhello world
 )
r"   r#   rV   r/   getvaluer;   r<   rR   close
ValueErrorr   r%   memios      r   
test_writeMemoryTestMixin.test_writeW   s    ll?+S!ull+)3/ull+)3/)U[[$7*ekk4<<3CDr   c                    U R                  S5      nU R                  5       nU R                  UR                  U/S-  5      S 5        U R                  UR	                  5       US-  5        UR                  / 5        U R                  UR	                  5       US-  5        U R                  5       nU R                  [        UR                  U/S/-   5        U R                  UR	                  5       U5        U R                  [        UR                  S 5        UR                  5         U R                  [        UR                  / 5        g )Nr!   d   r*   )	r"   r#   r/   
writelinesrZ   r;   r<   r[   r\   r]   s      r   test_writelinesMemoryTestMixin.test_writelinesd   s    ll<())3%#+6=)395)395)U%5%5us{C)3/)U%5%5t<*e&6&6;r   c                 ~   ^  T R                  5       nU 4S jnT R                  [        UR                  U" 5       5        g )Nc               3   >   >#    T R                  S5      v   [        e7f)Nspam)r"   KeyboardInterruptr   s   r   	error_gen8MemoryTestMixin.test_writelines_error.<locals>.error_genu   s     ,,v&&##s   )r#   r;   ri   rc   )r   r^   rj   s   `  r   test_writelines_error%MemoryTestMixin.test_writelines_errors   s0    	$ 	+U-=-=y{Kr   c                    U R                  S5      nU R                  U5      nU R                  [        UR                  S5        U R                  [        UR                  [        S5      5        UR                  S5        U R                  UR	                  [        S5      5      S5        U R                  UR                  5       US S 5        U R                  UR	                  5       S5        U R                  UR                  5       US S 5        U R                  UR	                  S5      S5        U R                  UR                  5       US S 5        U R                  UR                  5       S5        UR                  SS5        UR                  U5        U R                  UR                  5       US S U-   5        UR                  5       nU R                  UR	                  S 5      U5        U R                  UR                  5       U5        U R                  [        UR                  S5        UR                  5         U R                  [        UR                  S5        U R                  [        UR                  [        S5      5        g )	Nr!   rN      r,   r      0)r"   r#   r;   r\   rS   r   r:   r/   rZ   rA   rR   r<   r[   )r   r%   r^   poss       r   test_truncateMemoryTestMixin.test_truncate{   s   ll<(S!*ennb9*enngbkB

1
3Q7)3r73)1-)3r73*A.)3r73q)

1aC)3r7S=9jjl-s3s+)U^^S9*enna8*enngajAr   c                    U R                  S5      nU R                  U5      nU R                  UR                  5       U5        U R                  S 5      nU R                  UR                  5       U R                  5        UR                  US-  5        U R                  UR                  5       US-  5        UR                  U5        U R                  UR                  5       U5        U R                  [        UR
                  / 5        g )Nr!   rq   )r"   r#   r/   rZ   r1   r   r;   r<   r]   s      r   	test_initMemoryTestMixin.test_init   s    ll<(S!)3/T")4884sQw)373s)3/)U^^R8r   c                 	   U R                  S5      nU R                  U5      nU R                  UR                  S5      U R                  5        U R                  UR                  S5      US S 5        U R                  UR                  S5      USS 5        U R                  UR                  S5      USS  5        U R                  UR                  5       U R                  5        UR                  S5        U R                  UR                  [        S5      5      U R                  5        U R                  UR                  [        S5      5      US S 5        U R                  UR                  [        S5      5      USS 5        U R                  UR                  [        S5      5      USS  5        UR                  S5        U R                  UR                  5       U5        U R                  UR                  5       U R                  5        U R                  UR                  5       S5        UR                  S5        U R                  UR                  S5      U5        UR                  S5        U R                  UR                  [        S5      5      U5        UR                  S5        U R                  [        UR                  5       5      [        U5      5        UR                  S	5        U R                  [        UR                  5       5      [        U5      5        UR                  S5        U R                  UR                  S 5      U5        U R                  [        UR                  S
5        UR                  [        U5      S-   5        U R                  UR                  S5      U R                  5        UR                  [        U5      S-   5        U R                  UR                  [        S5      5      U R                  5        UR                  [        U5      S-   5        U R                  UR                  5       U R                  5        UR                  5         U R                  [        UR                  5        g )Nr!   r   r*   r,   r+   r-   
   ro   rb   rY   )r"   r#   r/   r0   r1   r:   r   rA   typer;   r<   lenr[   r\   r]   s      r   	test_readMemoryTestMixin.test_read   s   ll<(S!A1ABQ0AAa1C#ab'2txx0

1GAJ/:GAJ/Ra9GAJ/Qq:GCL13qr7;

1s+txx0r*

1B-

1GBK0#6

1ejjl+T#Y7

3ejjl+T#Y7

1D)3/)UZZ4

3s8a< A1

3s8a< GAJ/:

3s8a< txx0*ejj1r   c                 *	   U R                  S5      nU R                  US-  5      nU R                  UR                  S5      U R                  5        U R                  UR                  [        S5      5      U R                  5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U R                  5        UR                  S5        U R                  UR                  S5      US S 5        U R                  UR                  S5      USS 5        U R                  UR                  S5      USS 5        UR                  S5        U R                  UR                  [        S5      5      US S 5        U R                  UR                  [        S5      5      USS 5        U R                  UR                  [        S5      5      USS 5        UR                  S5        U R                  UR                  S5      U5        UR                  S5        U R                  UR                  [        S5      5      U5        UR                  S5        U R                  UR                  S5      U R                  5        U R                  UR                  [        S5      5      U R                  5        UR                  [        U5      S-  S-   5        U R                  UR                  5       U R                  5        U R                  S5      nU R                  US	-  S S 5      nU R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       US S 5        U R                  UR                  5       U R                  5        UR                  S5        U R                  [        UR                  5       5      [        U5      5        U R                  UR                  5       U5        U R                  [        UR                  S
5        UR                  5         U R                  [        UR                  5        g )N1234567890
rq   r   r+   rz      ro   r*   r8   rY   )r"   r#   r/   readliner1   r   r:   r|   r{   r;   r<   r[   r\   r]   s      r   test_readlineMemoryTestMixin.test_readline   sO   ll>*S1W%*DHH5
3TXX>)3/)3/)4884

1*CG4*C"I6*C2J7

1
3S!W=
3S2Y?
3SBZ@

1+S1

14c:

1*DHH5
3TXX>

3s8a<!#$)4884ll>*cAgs^,)3/)3/)3s84)4884

1enn./c;)3/)U^^R8*u~~6r   c                 l   U R                  S5      nU R                  US-  5      nU R                  UR                  5       U/S-  5        UR	                  S5        U R                  UR                  5       USS  /U/S-  -   5        UR	                  S5        U R                  UR                  S5      U/S-  5        UR	                  S5        U R                  UR                  S5      U/S-  5        UR	                  S5        U R                  UR                  S5      U/S-  5        UR	                  S5        U R                  [        UR                  5       S   5      [        U5      5        UR	                  S5        U R                  UR                  S 5      U/S-  5        U R                  [        UR                  S	5        UR	                  [        U5      S-  S
-   5        U R                  UR                  5       / 5        UR                  5         U R                  [        UR                  5        g )Nr   rz   r+   rO   r   r   rq   ro   rY   r*   )r"   r#   r/   	readlinesr:   r{   r;   r<   r|   r[   r\   r]   s      r   test_readlinesMemoryTestMixin.test_readlines   s   ll>*S2X&*SEBJ7

1*SWI	,AB

1,seai8

1,sebj9

1+cURZ8

1eoo/23T#Y?

1.
;)U__b9

3s8b=1$%*B/*eoo6r   c                    U R                  S5      nU R                  US-  5      nU R                  [        U5      U5        U R	                  [        US5      5        U R	                  [        US5      5        SnU H  nU R                  XA5        US-  nM     U R                  US5        UR                  S5        SnU H  nU R                  XA5        US-  nM     U R                  US5        UR                  [        U5      S-  S-   5        U R                  [        U5      / 5        U R                  US-  5      nUR                  5         U R                  [        UR                  5        g )Nr   rz   __iter____next__r   r*   rq   )r"   r#   r/   iter
assertTruehasattrr:   r|   listr[   r;   r\   r   )r   r%   r^   ilines        r   test_iteratorMemoryTestMixin.test_iterator  s3   ll>*S2X&ee,z23z23DT'FA  	B

1DT'FA  	B

3s8b=1$%eb)S1W%*enn5r   c                 Z   U R                  S5      nU R                  U5      nU R                  UR                  5       U5        UR	                  5         U R                  UR                  5       U5        U R                  [        UR                  5       5      [        U5      5        U R                  US-  5      nU R                  UR                  5       SS  U R                  S5      5        U R                  U5      nUR                  5         U R                  [        UR                  5        g )Nr!     890)	r"   r#   r/   rZ   r0   r{   r[   r;   r\   r]   s      r   test_getvalueMemoryTestMixin.test_getvalue   s    ll<(S!)3/

)3/enn./c;S4Z()"#.U0CDS!*enn5r   c                    U R                  S5      nU R                  U5      nUR                  S5        U R                  [        UR
                  S5        U R                  [        UR
                  SS5        U R                  [        UR
                  SS5        U R                  UR                  S5      S5        U R                  UR                  SS5      S5        U R                  UR                  5       U5        U R                  UR                  S5      S5        U R                  UR                  SS5      S5        U R                  UR                  5       USS  5        U R                  UR                  [        U5      5      [        U5      5        U R                  UR                  5       U R                  5        UR                  [        U5      S-   5        U R                  UR                  5       U R                  5        U R                  UR                  SS5      [        U5      5        U R                  UR                  5       U R                  5        UR                  5         U R                  [        UR
                  S5        g )Nr!   r+   ro   r*   r8   r   rq   )
r"   r#   r0   r;   r\   r:   r/   r|   r1   r[   r]   s      r   	test_seekMemoryTestMixin.test_seek.  s   ll<(S!

1*ejj"5*ejj!R8*ejj!Q7A*Aq)1-s+A*Aq)1-s12w/CH-s3x8txx0

3s8a< txx0Aq)3s84txx0*ejj!4r   c                 v   U R                  S5      nU R                  U5      nU R                  UR                  [	        U5      S-   5      S5        U R                  UR                  5       U R                  5        U R                  UR                  5       S5        U R                  UR                  5       U5        UR                  U R                  5        U R                  UR                  5       U5        UR                  U5        U R                  UR                  5       XR                  S5      -   U-   5        g )Nr!   r*       )
r"   r#   r/   r:   r|   r0   r1   rA   rZ   rR   r]   s      r   test_overseekMemoryTestMixin.test_overseekE  s    ll<(S!CHqL126txx0r*)3/DHH)3/C)3d1C+Cc+IJr   c                    U R                  S5      nU R                  U5      nU R                  UR                  5       S5        UR	                  S5        U R                  UR                  5       S5        UR	                  S5        U R                  UR                  5       S5        UR                  5         U R                  [        UR                  5        g r@   )r"   r#   r/   rA   r:   r[   r;   r\   r]   s      r   	test_tellMemoryTestMixin.test_tellR  s    ll<(S!q)

1q)

5u-*ejj1r   c                     U R                  S5      nU R                  U5      nU R                  UR                  5       S 5        g r    )r"   r#   r/   flushr]   s      r   
test_flushMemoryTestMixin.test_flush^  s4    ll<(S!-r   c                    U R                  5       nU R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        UR                  5         U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR
                  5        U R                  UR                  S5        g )NTF)
r#   r/   writablereadableseekableisattyclosedr[   r;   r\   r   r^   s     r   
test_flagsMemoryTestMixin.test_flagsd  s    )40)40)40/u-*enn5*enn5*enn5*ell3t,r   c                    ^ ^ T R                  S5      mUU 4S jnUU 4S jnT R                  U" 5       T5        T R                  U" 5       T5        g )Nr!   c                  ^   >  " S STR                   5      n U " T5      nUR                  5       $ )Nc                       \ rS rSrSrg)>MemoryTestMixin.test_subclassing.<locals>.test1.<locals>.MemIOiv  r   N)r   r   r   r   r   r   r   r   MemIOr   v  s    r   r   r#   rZ   r   mr%   r   s     r   test1/MemoryTestMixin.test_subclassing.<locals>.test1u  s(     c
A::<r   c                  f   >  " U4S jSTR                   5      n U " TS 5      nUR                  5       $ )Nc                   "   > \ rS rSrU 4S jrSrg)>MemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIOi{  c                 <   > TR                   R                  X5        g r   )r#   r   )meabr   s      r   r   GMemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIO.__init__|  s    LL))"0r   r   Nr   r   r   r   r   r   r   s   r   r   r   {  s    1 1r   r   r   r   s     r   test2/MemoryTestMixin.test_subclassing.<locals>.test2z  s-    1 1 c4 A::<r   )r"   r/   )r   r   r   r%   s   `  @r   test_subclassing MemoryTestMixin.test_subclassings  sA    ll<(	 
	  	#&#&r   c                 V    [        S5       H  nU R                  5       nSUl        M     g )Nrb   r*   )ranger#   foo)r   _r^   s      r   test_instance_dict_leak'MemoryTestMixin.test_instance_dict_leak  s$     sALLNEEI r   c           	        ^  T R                  S5      nT R                  U5      nSUl        UR                  S5         " U 4S jST R                  5      nSS KnSUl        UR                  Ul        X4l        U" US5      nUR                  S5        [        S[        R                  S	-   5       GH  nX%4 GH	  n[        R                  " [        R                  " XvS
95      nT R                  UR                  5       UR                  5       5        T R                  UR                   UR                   5        T R                  UR                  UR                  5        T R                  UR#                  5       UR#                  5       5        UR%                  5         T R'                  [(        [        R                  X5        GM     GM     U?g )Nr!   *   rq   c                   "   > \ rS rSrU 4S jrSrg)6MemoryTestMixin.test_pickling.<locals>.PickleTestMemIOi  c                 H   > TR                   R                  X5        X l        g r   )r#   r   r   )r   	initvaluer   r   s      r   r   ?MemoryTestMixin.test_pickling.<locals>.PickleTestMemIO.__init__  s    %%b4r   r   Nr   r   s   r   PickleTestMemIOr     s     r   r   r   __main__P   r*   )protocol)r"   r#   r   r:   r   r   r   r   r   r   pickleHIGHEST_PROTOCOLloadsdumpsr/   rZ   	__class__rA   r[   r;   r\   )	r   r%   r^   r   r   submemioprotoobjobj2s	   `        r   test_picklingMemoryTestMixin.test_pickling  sK   ll<(S!	

1	dll 	 	%/"'6'?'?$#2 "3+a 1f559:E(||FLL$EF  A  ?  $((3  TYY[9

!!*fllDH ) ; $r   r   N)r   r   r   r   rK   rV   r_   rd   rl   rt   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   rE   D   sm    A&E<LB2
9$2L'7R706265.K
2.-' #%r   rE   c                       \ rS rSr\R
                  r\S 5       r\R                  r	Sr
S rS rS rS rS rS	 rS
 rS rS rSrg)PyBytesIOTesti  c                 $    U R                  S5      $ )Nascii)encode)ss    r   r"   PyBytesIOTest.buftype  s    xx  r   r   c                    U R                  S5      nUR                  5       nU R                  [        U5      S5        UR	                  S5        UR                  5       nU R                  [        U5      S5        U R                  [        UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  UR                  5        SUSS& U R                  [        U5      S5        U R                  UR                  5       S5        A[        R                  " 5         UR                  5         UR                  5         U R                  [        UR                  5        g )N
   1234567890r+   sd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs   abcr8   rN   s
   123abc7890)r#   	getbufferr/   bytesr:   r;   BufferErrorrR   rS   r[   assertFalser   rZ   r   
gc_collectr\   )r   r^   r%   s      r   test_getbufferPyBytesIOTest.test_getbuffer  s   ]+oos]3

1oos]3 	+u{{J?+u~~6+u{{3&Aas]3)=9 *eoo6r   c                    U R                  5       nUR                  5       nU R                  [        U5      S5        U R	                  [
        UR                  S5        UR                  5       nU R	                  [
        UR                  S5        UR                  5         U R	                  [
        UR                  S5        UR                  5         UR                  S5        g )Nr      x)r#   r   r/   r   r;   r   rR   release)r   r^   r%   buf2s       r   test_getbuffer_empty"PyBytesIOTest.test_getbuffer_empty  s    oosS) 	+u{{D9 +u{{D9+u{{D9Dr   c                 
   U R                  S5      nUR                  5       n[        R                  " U5      n[        R                  " U5      nU/nUR	                  U5        [
        R                  " 5          AS S S 5        AA[
        R                  " 5          [        R                  " 5         S S S 5        U R                  U" 5       5        U R                  U" 5       5        g ! , (       d  f       Np= f! , (       d  f       NL= f)Nr   )
r#   r   weakrefrefappendr   catch_unraisable_exceptiongccollectassertIsNone)r   r^   r%   memiowrbufwrr   s         r   test_getbuffer_gc_collect'PyBytesIOTest.test_getbuffer_gc_collect  s    ]+oo++e$C E	//1 2//1JJL 2')$%'" 21
 21s   7C#C4#
C14
Dc                     U R                  S5      nU R                  U R                  U5      R                  5       U5        U R                  U R                  U5      R                  S5      U5        g )Nr!   ro   )r"   r/   r#   read1rJ   s     r   
test_read1PyBytesIOTest.test_read1  sV    ll<(c*002C8c*004c:r   c                    U R                  S5      nU R                  U5      n[        S5      nU R                  UR	                  U5      S5        U R                  US5        U R                  UR	                  U5      S5        U R                  US5        U R                  UR	                  U5      S5        U R                  US5        [        S5      nUR                  S5        U R                  UR	                  U5      S5        U R                  US	5        [        S
5      nUR                  S5        U R                  UR	                  U5      S5        U R                  US
5        U R                  [        UR                  S5        SS KnUR                  SS5      nU R                  U5      nUR	                  U5        U R                  UR                  5       S	5        UR                  5         U R                  [        UR                  U5        U R                  S5      n[        5       nUR                  S5        UR	                  U5        U R                  US
5        g )Nr!   s   hellor+   s   12345s   67890r   s   hello worldrz   s   1234567890dr   rY   r   s   123r   )r"   r#   	bytearrayr/   readintor:   r;   r<   arraytobytesr[   r\   )r   r%   r^   r   r  r   s         r   test_readintoPyBytesIOTest.test_readinto  s   ll<(S!h*A.H%*A.H%*A.H%n%

1*B/N+cN

1*A.C )U^^R8KK^,S!qn5*enna8V$K

2qC r   c                    U R                  S5      nU R                  U5      nU R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S	5        U R                  UR                  SS5      S
5        UR                  SS5        U R                  UR	                  5       USS  5        UR                  S5        UR                  SS5        U R                  UR	                  5       USS  5        g )Nr!   ro   r*   r   r8   rq   rO   rz   r   r   )r"   r#   r/   r:   r0   r]   s      r   test_relative_seek PyBytesIOTest.test_relative_seek  s   ll<(S!B*A.Aq)1-B*A.B*A.Aq)2.Aq)2.

2qs23x0

1

1as12w/r   c                     U R                  5       nU R                  [        U R                   S5        U R                  [        UR                  S5        U R                  [        UR                  S/5        g r    )r#   r;   r<   rR   rc   r   s     r   test_unicodePyBytesIOTest.test_unicode+  sS    )T\\<@)U[[,?)U%5%5~Fr   c                 *   SnSS K nUR                  S[        U5      5      nU R                  U5      nU R                  UR	                  5       U5        U R                  UR                  U5      S5        U R                  UR	                  5       U5        g )Nr   r   r   rz   )r  r   r#   r/   rZ   rR   )r   r%   r  r   r^   s        r   test_bytes_arrayPyBytesIOTest.test_bytes_array2  sq    KKT#Y'Q)3/Q,)3/r   c                     U R                  S5      nU R                  US9  U R                  [        U R                  US S9  g )Nr!   )initial_bytes)r   )r"   r#   r;   r<   rJ   s     r   test_issue5449PyBytesIOTest.test_issue5449;  s9    ll<(3')T\\3DAr   r   N)r   r   r   r   pyiorH   staticmethodr"   BytesIOr#   r1   r   r   r  r	  r  r  r  r  r  r   r   r   r   r   r     s`      44! !llG
C72#&;
!B0 G0Br   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TextIOTestMixiniA  c                   ^ U R                  S S9mU4S jnU R                  TR                  S 5        TR                  S5        U" 5         U R                  TR                  S5        TR                  S5        U" 5         U R                  TR                  S5        TR                  S5        U" 5         U R                  TR                  S5        g )	Nnewlinec                  H   > T R                  S5        T R                  5         g )Nr   )r:   r0   r^   s   r   force_decode<TextIOTestMixin.test_newlines_property.<locals>.force_decodeH  s    JJqMJJLr   a

b
)r-  
cd)r-  r/  )r#   r/   newlinesrR   )r   r*  r^   s     @r   test_newlines_property&TextIOTestMixin.test_newlines_propertyC  s    T*	 	.E.G8F)=>r   c                    U R                  5       nU R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g )Nro   r*   r8   r   rq   )r#   r;   OSErrorr:   r   s     r   r  "TextIOTestMixin.test_relative_seekV  s    '5::r15'5::q!4'5::r15'5::r15'5::q!4'5::q!4r   c                     U R                  5       nU R                  UR                  5        U R                  UR                  5        U R	                  UR
                  5        g r   )r#   r  encodingerrorsr   line_bufferingr   s     r   test_textio_properties&TextIOTestMixin.test_textio_properties`  sG     	%..)%,,'--.r   c                    U R                  S5      nU R                  [        U5      / SQ5        U R                  UR                  5       S5        U R                  5       nU R                  UR	                  S5      S5        UR                  S5        U R                  [        U5      / SQ5        U R                  UR                  5       S5        g )Na
b
cdr,  r.  r0  rp   r   r#   r/   r   rZ   rR   r:   r   s     r   test_newline_default$TextIOTestMixin.test_newline_defaulti  s    ^,e&>?)>:^4a8

1e&>?)>:r   c                    U R                  SS S9nU R                  [        U5      / SQ5        UR                  S5        U R                  UR	                  S5      S5        U R                  UR	                  S5      S5        U R                  UR	                  S5      S	5        U R                  UR	                  S5      S
5        U R                  UR                  5       S5        U R                  S S9nU R                  SUR                  S5      5        U R                  SUR                  S5      5        U R                  SUR                  S5      5        UR                  S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        U R                  SS S9nU R                  UR	                  S5      S5        g )Nr?  r&  )r,  zb
zc
dr   r*   r   rq   z
b
cr-  za
b
c
dr,  r8   r.  r0  za
bza
br#   r/   r   r:   r0   rZ   rR   r   s     r   test_newline_none!TextIOTestMixin.test_newline_nonet  sh   ^T:e&@A

1A,A.A.A-)<8T*EKK./EKK01EKK/0

1|4)<8Xt4A/r   c                 H   U R                  SSS9nU R                  [        U5      / SQ5        UR                  S5        U R                  UR	                  S5      S5        U R                  UR	                  S5      S	5        U R                  UR	                  S
5      S5        U R                  UR                  5       S5        U R                  SS9nU R                  SUR                  S5      5        U R                  SUR                  S5      5        U R                  SUR                  S	5      5        U R                  SUR                  S5      5        UR                  S5        U R                  [        U5      / SQ5        U R                  UR                  5       S5        g )Nr?  rY   r&  )r,  r.  crE  r   r,   za
brq   rF  r*   r1  r,  bzdrG  r   s     r   test_newline_empty"TextIOTestMixin.test_newline_empty  s>   ^R8e&BC

1A1A.A-)>:R(EKK./EKK./EKK./EKK./

1e&BC)>:r   c                    U R                  SSS9nU R                  [        U5      / SQ5        U R                  UR                  5       S5        U R                  SS9nU R                  UR	                  S5      S5        UR                  S5        U R                  [        U5      / SQ5        U R                  UR                  5       S5        g )Nr?  r-  r&  r@  rp   r   rA  r   s     r   test_newline_lfTextIOTestMixin.test_newline_lf  s    ^T:e&>?)>:T*^4a8

1e&>?)>:r   c                 b   U R                  SSS9nU R                  UR                  5       S5        UR                  S5        U R                  [	        U5      / SQ5        U R                  UR                  5       S5        U R                  SS9nU R                  UR                  S5      S5        UR                  S5        U R                  [	        U5      / SQ5        UR                  S5        U R                  UR                  5       / SQ5        U R                  UR                  5       S5        g )Nr?  r1  r&  zabcdr   )zarL  r1  rK  rE  rp   )r#   r/   r0   r:   r   rZ   rR   r   r   s     r   test_newline_crTextIOTestMixin.test_newline_cr  s    ^T:~6

1e&FG)>:T*^4a8

1e&FG

1*,LM)>:r   c                 b   U R                  SSS9nU R                  UR                  5       S5        UR                  S5        U R                  [	        U5      / SQ5        UR                  S5        U R                  UR                  5       / SQ5        U R                  UR                  5       S5        U R                  SS9nU R                  UR                  S5      S5        UR                  S5        U R                  [	        U5      / SQ5        U R                  UR                  5       S5        g )Nr?  r/  r&  z
a
b
cdr   )za
zb
r0  rp   )r#   r/   r0   r:   r   r   rZ   rR   r   s     r   test_newline_crlf!TextIOTestMixin.test_newline_crlf  s    ^V<'9:

1e&BC

1*,HI)+=>V,^4a8

1e&BC)+=>r   c                     U R                  SS S9nU R                  UR                  S5      S5        U R                  UR                  5       S5        g )Nza
b
r&  r+   za
b
)r#   r/   r0   rZ   r   s     r   test_issue5265TextIOTestMixin.test_issue5265  sC    \48A1)84r   c                     U R                  [        U R                  SS9  U R                  [        U R                  SS9  S H  nU R                  US9  M     g )N   
r&  error)NrY   r-  r1  r/  )r;   r<   r#   r\   )r   r'  s     r   test_newline_argument%TextIOTestMixin.test_newline_argument  sL    )T\\5A*dllGD5GLLL) 6r   r   N)r   r   r   r   r3  r  r<  rB  rH  rM  rP  rS  rV  rY  r^  r   r   r   r   r$  r$  A  s9    ?&5/	;0,;&
;; ? 5*r   r$  c                   R    \ rS rSr\r\R                  r\R                  r	Sr
S rSrg)PyStringIOTesti  rY   c                     U R                  S5      nU R                  UR                  5       S5        U R                  5       nUR                  S5        U R                  UR	                  5       S5        g )Nu   )r#   r/   r0   rR   rZ   r   s     r   test_lone_surrogates#PyStringIOTest.test_lone_surrogates  sT    X&x0H)84r   r   N)r   r   r   r   strr"   r   StringIOr#   rH   r1   rc  r   r   r   r   ra  ra    s&    GmmG44
C5r   ra  c                   b    \ rS rSrSr\r\R                  rSr	 " S S\R                  5      rSrg)PyStringIOPickleTesti  zETest if pickle restores properly the internal state of StringIO.
    rY   c                        \ rS rSrS rS rSrg)PyStringIOPickleTest.ioclassi  c           	      ~    [         R                  " [         R                  " [        R                  " U0 UD65      5      $ r   )r   r   r   r   rf  clsargskwargss      r   __new__$PyStringIOPickleTest.ioclass.__new__  s(    <<T]]D-KF-K LMMr   c                     g r   r   r   rn  ro  s      r   r   %PyStringIOPickleTest.ioclass.__init__      r   r   Nr   r   r   r   rp  r   r   r   r   r   r#   rj    s    	N	r   r#   r   N)r   r   r   r   __doc__re  r"   r   rH   r1   rf  r#   r   r   r   r   rh  rh    s-    G44
C$-- r   rh  c                   "   \ rS rSr\R
                  r\R                  rS rS r	\
R                  r\
R                  S 5       rS r\
R                  S 5       r\
R                  S 5       r\
R                  S 5       r\
R                  S	 5       rS
rg)CBytesIOTesti  c                 f   U R                  5       nUR                  5       nU R                  [        U5      S5        [	        US   5        U R                  US   [        5        US   b  U R                  US   [        5        UR                  5         U R                  [        UR                  5        g )Nr8   r   r*   rq   )r#   __getstate__r/   r|   r  assertIsInstanceintdictr[   r;   r\   r   r^   states      r   test_getstateCBytesIOTest.test_getstate  s    ""$UQ'%(eAh,8!!%(D1*e&8&89r   c                    U R                  5       nUR                  S5        UR                  [        S5      SS 45        UR                  SSSS045        U R                  [        UR                  S5        U R                  [
        UR                  S5        U R                  [
        UR                  S5        U R                  [
        UR                  S	5        U R                  [
        UR                  S
5        U R                  [
        UR                  5        U R                  [
        UR                  S5        UR                  5         U R                  [        UR                  S5        g )N)   no errorr   Nr  r   rh   r8   )r   ro   N)unicoder   N)r   r9   N)r   r   r   )s   len-testr   )s   closedr   N)r#   __setstate__r  r;   r\   r<   r[   r   s     r   test_setstateCBytesIOTest.test_setstate  s   12Ik2At<=KVQK89*e&8&8/J)U%7%79MN)U%7%79IJ)U%7%7E)U%7%79IJ)U%7%78)U%7%7;*e&8&8:NOr   c                 h   [         R                  " S5      nU R                  nU R                  [        R                  [        R                  " 5       5      U5        U" [        R                  " 5       U5        SnU" [        R                  " SU-  5      U[        R                  " SU-  5      -   5        g )NP2n2Pnr      a)
r   calcobjsizecheck_sizeofr/   object
__sizeof__ior"  sys	getsizeof)r   basesizecheckns       r   test_sizeofCBytesIOTest.test_sizeof  s|    &&x0!!**2::<8(CbjjlH&bjj"Hs}}TAX/F$FGr   c                 "   SR                  S5      n[        R                  " U5      nU R                  U5      nU R	                  [        R                  " U5      US-   5        U" U5        U R	                  [        R                  " U5      U5        g )Na                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r   r*   )r   r  getrefcountr#   r/   )r   mutationimmold_rcr^   s        r   _test_cow_mutationCBytesIOTest._test_cow_mutation"  sk    !!'*%S!-vz:-v6r   c                 ,    S nU R                  U5        g )Nc                 &    U R                  S5        g )Nr*   )rS   r)  s    r   r  0CBytesIOTest.test_cow_truncate.<locals>.mutation.  s    NN1r   r  r   r  s     r   test_cow_truncateCBytesIOTest.test_cow_truncate+  s    	)r   c                 ,    S nU R                  U5        g )Nc                 H    U R                  S5        U R                  S5        g )Nr   s   foo)r:   rR   r)  s    r   r  -CBytesIOTest.test_cow_write.<locals>.mutation5  s    JJqMKKr   r  r  s     r   test_cow_writeCBytesIOTest.test_cow_write2  s    	  	)r   c                 v   ^ U R                  S5      nUR                  5       mU4S jnU R                  U5        g )Ns   fooooooc                 (   > U R                  T5        g r   )r  )r^   r  s    r   r  0CBytesIOTest.test_cow_setstate.<locals>.mutation?  s    u%r   )r#   r{  r  )r   r^   r  r  s      @r   test_cow_setstateCBytesIOTest.test_cow_setstate:  s4     Z(""$	&)r   c                     [        S5      n[        R                  " U5      nU R                  U5      nU R	                  [        R                  " U5      U5        g )Ni   )r  r  r  r#   r/   )r   bar  r^   s       r   test_cow_mutableCBytesIOTest.test_cow_mutableC  sB    
 t_$R ,f5r   r   N)r   r   r   r   r  r"  r#   rH   r  r  r   r  cpython_onlyr  r  r  r  r  r  r   r   r   r   ry  ry    s    jjG22	:P  ''LH H7 * * * * * * 6 6r   ry  c                   V    \ rS rSr\R
                  r\R                  rS rS r	S r
Srg)CStringIOTestiM  c                 ^   U R                  S5      nU R                  U5      nU R                  UR                  5       U5        U R                  UR	                  U5      [        U5      5        U R                  UR                  5       [        U5      5        U R                  UR                  5       U5        U R                  UR	                  U5      [        U5      5        U R                  UR                  5       [        U5      S-  5        U R                  UR                  5       X-   5        g )Nu   𠌊𠍇rq   )r"   r#   r/   rZ   rR   r|   rA   r]   s      r   test_widecharCStringIOTest.test_widecharS  s    ll12S!)3/S)3s84s3x0)3/S)3s84s3x!|4)395r   c                    U R                  5       nUR                  5       nU R                  [        U5      S5        U R	                  US   [
        5        U R	                  US   [
        5        U R	                  US   [        5        US   b  U R	                  US   [        5        UR                  5         U R                  [        UR                  5        g )Nr,   r   r*   rq   r8   )r#   r{  r/   r|   r|  re  r}  r~  r[   r;   r\   r  s      r   r  CStringIOTest.test_getstate_  s    ""$UQ'eAh,eAh,eAh,8!!%(D1*e&8&89r   c                 &   U R                  5       nUR                  S5        UR                  SSSSS045        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S	5        U R                  [        UR                  S
5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  5        U R                  [        UR                  S5        UR                  5         U R                  [        UR                  S5        g )N)no errorr-  r   Nr  rY   r   rh   r8   )rY   rT   r   N)rY   rY   ro   N)r   rY   r   N)rY   r   r   N)rY   rY   r9   N)rY   rY   r   r   )zlen-testr   )r   rY   r   N)r#   r  r;   r\   r<   r[   r   s     r   r  CStringIOTest.test_setstatek  s4   67JA{;<*e&8&8:LM*e&8&8:LM)U%7%79KL)U%7%79KL)U%7%79LM)U%7%7H)U%7%7I)U%7%78)U%7%7;*e&8&8:QRr   r   N)r   r   r   r   r  rf  r#   rH   r  r  r  r   r   r   r   r  r  M  s'    kkG22
6
:Sr   r  c                   V    \ rS rSr\R
                  r " S S\R                  5      rSrg)CStringIOPickleTesti}  c                        \ rS rSrS rS rSrg)CStringIOPickleTest.ioclassi  c           	      ~    [         R                  " [         R                  " [        R                  " U0 UD65      5      $ r   )r   r   r   r  rf  rl  s      r   rp  #CStringIOPickleTest.ioclass.__new__  s(    <<R[[$-I&-I JKKr   c                     g r   r   rs  s      r   r   $CStringIOPickleTest.ioclass.__init__  ru  r   r   Nrv  r   r   r   r#   r    s    	L	r   r#   r   N)	r   r   r   r   r  rH   rf  r#   r   r   r   r   r  r  }  s    22"++ r   r  r   )rw  unittesttestr   r   r  _pyior   r   r  r   r   r   rE   TestCaser   r$  ra  rh  ry  r  r  r   mainr   r   r   <module>r     s   
   	 	   
  *0 *0Zi% i%XNBO%8(:K:K NBbS* S*l5_&9$h&7&75"?H,=,= U6= U6n-SN -S`.  zMMO r   