python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_io.cpython-312.opt-1.pyc

Αe4
dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZmZddlmZddlmZmZmZddlmZddlmZdd	lmZdd
lm Z ddlm!Z!ddl"m#Z#ddl$Z$ddl%Z%ddl&Z'	ddl(Z(d
Z)Gdde(jTZ+ejZxse	j\j^Z0dZ1e
jde3eddZ4GddZ5Gdde5e%jlZ7Gdde5e'jlZ8Gdde5Z9Gdde9e%jlZ:Gdde9e'jlZ;Gd d!e9Z<Gd"d#e<e%jlZ=Gd$d%e<e'jlZ>Gd&d'e9Z?Gd(d)e?e%jlZ@Gd*d+e?e'jlZAGd,d-e9ZBGd.d/eBe%jlZCGd0d1eBe'jlZDGd2d3ZEGd4d5eEe%jZGGd6d7eEe'jZHGd8d9ZIGd:d;eIe%jZJGd<d=eIe'jZKGd>d?ZLGd@dAeLe%jlZMGdBdCeLe'jlZNGdDdEe
jZPGdFdGePZQejGdHdIe
jZSGdJdKePZTejGdLdMe
jZUGdNdOZVGdPdQZWGdRdSe
jeVZXGdTdUeXeWZYGdVdWeXZZGdXdYe
jeVZ[GdZd[e[eWZ\Gd\d]e[Z]Gd^d_e
jZ^Gd`dae^Z_Gdbdce^Z`GdddeeXe[ZaGdfdgeaeWZbGdhdieaZcGdjdke$jZedlZfGdmdne
jZgGdodpe
jZhGdqdre%jZidsZjGdtduehZkGdvdwehZlGdxdye
jZmGdzd{emZnGd|d}emZoGd~de
jZpGddepZqGddepZre
jejdk(dGdde
jZuGddeuZvGddeuZwdZxeydk(re
jyy#e,$rdZ)Y^wxYw)zUnit tests for the io module.N)dequeUserList)cyclecount)support)assert_python_okassert_python_failurerun_python_until_end)
import_helper)	os_helper)threading_helper)warnings_helper)skip_if_sanitizer)FakePathct|i|}t}tj|t	||t|j
ddd|S)z?Create a bytes-like object having no string or sequence methodsBN)bytesEmptyStructctypesresizelen
memoryviewcast)poskwdataobjs    @/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_io.py	bytesliker;sHc R m

c3t9%'+
3S!!$
ceZdZy)rN__name__
__module____qualname__r rrrBsr rc@tjdt|i|S)Nb)arrayr)rrs  rrr8s{{3s 1b 122r cjttdd5}|jcdddS#1swYyxYw)z(Get the default TextIOWrapper chunk sizerlatin-1encodingN)open__file___CHUNK_SIZE)fs r_default_chunk_sizer3Js,	
hi	0A}}s)2alarmztest requires signal.alarm()cPeZdZdZd
dZdZdZdZdZdZ	dZ
d	Zd
ZddZ
y)MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().cNt||_g|_d|_d|_yNr)list_read_stack_write_stack_reads_extraneous_reads)self
read_stacks  r__init__zMockRawIOWithoutRead.__init__Xs&
+!"r c`|jjt|t|SN)r;appendrrr>r(s  rwritezMockRawIOWithoutRead.write^s#  q*1v
r cyNTr&r>s rwritablezMockRawIOWithoutRead.writablebr cyN*r&rHs rfilenozMockRawIOWithoutRead.filenoesr cyrGr&rHs rreadablezMockRawIOWithoutRead.readablehrJr cyrGr&rHs rseekablezMockRawIOWithoutRead.seekablekrJr cyr8r&r>rwhences   rseekzMockRawIOWithoutRead.seeknr cyr8r&rHs rtellzMockRawIOWithoutRead.tellqrWr c\|xjdz
c_t|}	|jd}||jd=yt|}t||kr|jd=||d||S|d||dd||d|jd<|S#t$r|xjdz
c_YywxYwNr)r<rr:
IndexErrorr=)r>bufmax_lenrns     rreadintozMockRawIOWithoutRead.readintotsqc(	##A&D<  #It9  #CGH(7^CF"&wx.DQN	""a'"	sB

B+*B+Nc|SrBr&)r>rs  rtruncatezMockRawIOWithoutRead.truncates
r )r&rB)r#r$r%__doc__r@rErIrNrPrRrVrYrarcr&r rr6r6Ts9,#*r r6ceZdZy)CMockRawIOWithoutReadNr"r&r rrfrfr rfceZdZy)PyMockRawIOWithoutReadNr"r&r rririrgr riceZdZddZy)	MockRawIONc|xjdz
c_	|jjdS#|xjdz
c_YyxYw)Nr\rr )r<r:popr=r>r`s  rreadzMockRawIO.readsGq	##''**	""a'"s	2ArBr#r$r%ror&r rrkrksr rkceZdZy)
CMockRawIONr"r&r rrrrrrgr rrceZdZy)PyMockRawIONr"r&r rrtrtrgr rtc@eZdZfdZdfd	ZdZdZfdZxZS)MisbehavedRawIOc(t||dzSN)superrE)r>r(	__class__s  rrEzMisbehavedRawIO.writesw}Q!##r c(t||dzSrx)rzro)r>r`r{s  rrozMisbehavedRawIO.readsw|A""r cy)Nir&rTs   rrVzMisbehavedRawIO.seekrJr cy)Ni8r&rHs rrYzMisbehavedRawIO.tellrJr c>t||t|dzS)N)rzrar)r>r^r{s  rrazMisbehavedRawIO.readintos
3x!|r rB)	r#r$r%rErorVrYra
__classcell__r{s@rrvrvs!$#r rvceZdZy)CMisbehavedRawIONr"r&r rrrrgr rceZdZy)PyMisbehavedRawIONr"r&r rrrrgr rc$eZdZfdZdZxZS)SlowFlushRawIOcTt|tj|_yrB)rzr@	threadingEventin_flush)r>r{s rr@zSlowFlushRawIO.__init__s
!)
r cb|jjtjdy)Ng?)rsettimesleeprHs rflushzSlowFlushRawIO.flushs



4r )r#r$r%r@rrrs@rrrs
*r rceZdZy)CSlowFlushRawIONr"r&r rrrrgr rceZdZy)PySlowFlushRawIONr"r&r rrrrgr rceZdZdZdZy)CloseFailureIOrc6|js
d|_tyNr\closedOSErrorrHs rclosezCloseFailureIO.closes{{DKMr N)r#r$r%rrr&r rrrs
Fr rceZdZy)CCloseFailureIONr"r&r rrrrgr rceZdZy)PyCloseFailureIONr"r&r rrrrgr rc4eZdZfdZdfd	ZfdZxZS)
MockFileIOc2g|_t|	|yrB)read_historyrzr@)r>rr{s  rr@zMockFileIO.__init__s
r ct||}|jj|d|St	||SrB)rzrorrCr)r>r`resr{s   rrozMockFileIO.reads>gl1o  C
;>c(C
r c\t||}|jj||SrB)rzrarrC)r>r(rr{s   rrazMockFileIO.readintos+gq!  %
r rB)r#r$r%r@rorarrs@rrrs
r rceZdZy)CMockFileIONr"r&r rrrrgr rceZdZy)PyMockFileIONr"r&r rrrrgr rc$eZdZdZdZdZdZy)MockUnseekableIOcyNFr&rHs rrRzMockUnseekableIO.seekablesr c$|jdNznot seekableUnsupportedOperationr>argss  rrVzMockUnseekableIO.seek''77r c$|jdrrrs  rrYzMockUnseekableIO.tellrr c$|jdrrrs  rrczMockUnseekableIO.truncaterr N)r#r$r%rRrVrYrcr&r rrrs888r rc$eZdZejZy)CMockUnseekableION)r#r$r%iorr&r rrrs22r rc$eZdZejZy)PyMockUnseekableION)r#r$r%pyiorr&r rrrs44r rc>eZdZdZdZdZdZdZd
dZdZ	dZ
y	)MockNonBlockWriterIOc g|_d|_yrB)r;
_blocker_charrHs rr@zMockNonBlockWriterIO.__init__s!r cZdj|j}g|jdd|SNr )joinr;)r>ss  rpop_writtenz MockNonBlockWriterIO.pop_writtens+HHT&&'!!r c||_y)z'Block when a given char is encountered.N)r)r>chars  rblock_onzMockNonBlockWriterIO.block_ons
!r cyrGr&rHs rrPzMockNonBlockWriterIO.readablerJr cyrGr&rHs rrRzMockNonBlockWriterIO.seekablerJr cyr8r&rTs   rrVzMockNonBlockWriterIO.seeksr cyrGr&rHs rrIzMockNonBlockWriterIO.writablerJr c0t|}d}|jrI	|j|j}|dkDr |jj	|d||Sd|_y|jj	|t
|S#t
$rY1wxYw)Nr)rrindexr;rC
ValueErrorr)r>r(r`s   rrEzMockNonBlockWriterIO.write"s!H
 GGD../q5%%,,QrU3H*.D&  #1v


sB			BBNr)r#r$r%r@rrrPrRrVrIrEr&r rrrs*"
"r rc$eZdZejZy)CMockNonBlockWriterION)r#r$r%rBlockingIOErrorr&r rrr6s
((Or rc$eZdZejZy)PyMockNonBlockWriterION)r#r$r%rrr&r rrr9s
**Or rceZdZdZdZdZd6dZdZdZdZ	e
jejde
jeed	d
dZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%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/Z5d0Z6d1Z7d2Z8d3Z9d4Z:y5)7IOTestcJtjtjyrBrunlinkTESTFNrHs rsetUpzIOTest.setUp?))*r cJtjtjyrBrrHs rtearDownzIOTest.tearDownBrr c|j|jdd|jd|j|jd|j	d|j|jdd|j|j	dd|j|jdd|j|jd|j|j	ddd|j|jdtd}|j|j|d	d
|dd|j|j	dd|j|jdd|j|j	ddd
|j|jd
|j|jdd|j|jd
|j
t|jdy)Nsblah.rrsHello.rr\s	 world


	s	*********hry
)assertEqualrErcrYrV	bytearrayassertRaises	TypeError)r>r2buffers   r	write_opszIOTest.write_opsEs*A.	

1
1%	q	*A.A&+Q/1%A*1%?+!,q	A&*A+2&B,2&)QVVS1r c|jd}|j|dt|}|j|j|d|jt	|dtd}|j|j|d|jt
|d|j|ddd|j|jdd|j|jdd|j|jd	d
|j|jtdd|j|jddd
|j|jdd|j|jdd
|j|jtd|j|jdd	d|j|jdd|j|jd|jt|jd|r|jd|j|jd|jd
|j|jd|j|jd
|jdtd}|j|j|d|jt	|dyy)Nrshellos worlryd
rhello world
r\r xirsworld
rsworld
)rorrrarrrrVrYrr	readinto1)r>r2bufferedrs    rread_opszIOTest.read_ops]slvvayx(D)1-th/|D)1-TA&bq6*A&%56C(IdO4a8A*H-C(IK0!4A*H-2&)QVVS1
FF1IQVVX'78
FF1IQVVXz2QVVXs+
FF1IQ<DQ[[.2U4[(3r lc	|j|j|j|j|j|j
|j|j|jdd|j|j
|jdz|j|jdd|jdz|j|j|jdz|j|j
|jdz|j|jdd|jdz|j|j|jdz|jdz|j|j
|jdz|j|jdd|jdz|j|jdd|j|j|jddy#ttf$r|jdY8wxYw)	Nzno largefile supportxxxrr\ryrr)
rrVLARGE
OverflowErrorrskipTestrYrErcror>r2s  rlarge_file_opszIOTest.large_file_opss	2QVVDJJ/<	
4::.!,4::>2A

Q7tzzA~64::>21tzzA~6DJJN3TZZ!^D4::>21tzzA~6A

3D)z*	2MM01	2s5I I0/I0c|j}|jtjdd5}|j	||j
|j	||jddd|jtjd5}|j	||j
|j	||jddd|jtjdd5}|j	||j
|j	||jddd|jtjdd5}|j	||jd|j	||jd	gddd|jtjd5}|j	||jd|j	||jd	gddd|jtjd
d5}|j	||jd|j	||jdg|j	||jd
|j|j	||jd|jdddy#1swYOxYw#1swYxYw#1swYxYw#1swYLxYw#1swYxYw#1swYyxYw)Nwutf-8r-wbr	bufferingrbsblahsblah
r+blahzblah
r\r)rr/rrrroreadlinerE
writelinesrVSEEK_CURSEEK_END)r>excfps   rtest_invalid_operationszIOTest.test_invalid_operationssh''
YYy''wY
?	02c277+c2;;/	0YYy''
.	0"c277+c2;;/	0YYy''Y
;	0rc277+c2;;/	0YYy''Y
;	?rc288W5c2==9+>	?YYy''
.	?"c288W5c2==9+>	?YYy''wY
?	?2c288V4c2==8*=c277At}}=c277B

>	?	?	0	0	0	0	0	0	?	?	?	?	?	?sH9J59K39K<K:<K) BK55J?KKK&)K25K>%fstat() of a pipe fd is not supportedpiperequires os.pipe()cxfd}fd}fd}fd}fd}fd}fd}fd}|d	f|d
f|df|df|d
f|df|df|dfjd
fjd
ff
}	|	D]\}
}j|
5|
5}d|v}
j|j	|
d|v}j|j|t
|jrd}n6t
|jjfrd}njdd|vr|jn jt|j|
r"|jd|jnAjt|jdjt|j|r|jn!jt|jt j"j%dr|
||fvr	ddddddd|v}j|j'||r"|j)|j+dnAjt|j(jt|j*d|r$|r"|j-|j-dnAjt|j,jt|j,dddddddy#1swYxYw#1swYxYw)Nctj\}}tj|j|dS)Nr+)osrrFileIO)r+rr>s  rpipe_readerz3IOTest.test_optional_abilities.<locals>.pipe_readers.WWYFQHHQK;;q#&&r c:tj\}}jtj|t	j
tj|df}|jj|jj|dS)Ndtargetrr)
rr
addCleanuprrThreadrostartrr)r+rthreadr>s   rpipe_writerz3IOTest.test_optional_abilities.<locals>.pipe_writershWWYFQOOBHHa(%%RWWAs8DFLLNOOFKK(;;q#&&r cBjjSrB)BufferedReaderrrHsrbuffered_readerz7IOTest.test_optional_abilities.<locals>.buffered_reader&&t'<'<'>??r cBjjSrB)BufferedWriterrrHsrbuffered_writerz7IOTest.test_optional_abilities.<locals>.buffered_writerr%r cBjjSrB)BufferedRandomBytesIOrHsrbuffered_randomz7IOTest.test_optional_abilities.<locals>.buffered_randoms&&t||~66r c`jjjSrB)BufferedRWPairrrHsrbuffered_rw_pairz8IOTest.test_optional_abilities.<locals>.buffered_rw_pairs-&&t'<'<'>%%')
)r c`Gfddj}j|dS)NcjeZdZWjjZWjj
Zy)MIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)r#r$r%BufferedIOBaserIrErHsrUnseekableReaderr2s%..77++11r r4asciir
TextIOWrapper)r4r>s rtext_readerz3IOTest.test_optional_abilities.<locals>.text_readers.
24#8#8
2%%&6&8'BBr c`Gfddj}j|dS)NcjeZdZWjjZWjj
Zy)MIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)r#r$r%r3rProrHsrUnseekableWriterr;s%..77**//r r<r5r6)r<r>s rtext_writerz3IOTest.test_optional_abilities.<locals>.text_writers.
04#8#8
0%%&6&8'BBr frfwr+rrwsrw33zUnknown base classr2r\winrr)r+StringIOsubTestrrPrI
isinstance
TextIOBaser3	RawIOBasefailrNrrrorEsysplatform
startswithrRrYrVrc)r>rr!r$r(r,r/r8r=teststest	abilitiesrrPrIrrRs`                rtest_optional_abilitieszIOTest.test_optional_abilitiess	'
	'	@	@	7	)	C	C$+t!4
c"_c$:
e$'7&>
#c 2
\\5!DMM5#9
"'2	@T9d#1
@TV1
@s)+  :)+  :c4??3Dd&9&94>>%JKDII23)#JJL%%gszz:HHQKHHJ%%gsxx;%%gsxx8IIdO%%gsyy$?<<**51d#[?272C1
@1
@1
@D)+  :HHJHHQK%%gsxx8%%gsxx;LLNLLO%%gs||<%%gs||Q?c1
@1
@1
@2	@1
@1
@1
@1
@s28L/F
L#
L/C0L#L/#L,(L//L9	c6d}|jt|j|ddt|d}t	j
5t	jdt|jt|j|dddddy#1swYyxYw)Nzfoobarrrr-r5ignore)rrr/rwarningscatch_warningssimplefilterDeprecationWarning)r>fn_with_NULbytes_fns   rtest_open_handles_NUL_charsz"IOTest.test_open_handles_NUL_charss *diicGTg.

$
$
&	V!!(,>?j$))XsWU	V	V	Vs?BBc|jtjdd5}|j|j	d|j|jd|j|j
d|j|ddd|jtjdd5}|j|j	d|j|jd|j|j
d|j|dddy#1swYxYw#1swYyxYw)NrrrFTr	r/rrrrPrIrRrrrs  rtest_raw_file_iozIOTest.test_raw_file_io"s
YYy''Y
;	qQZZ\51QZZ\40QZZ\40NN1		
YYy''Y
;	qQZZ\40QZZ\51QZZ\40MM!					
		sA2D:?A2E:EEc|jtjd5}|j|j	d|j|jd|j|j
d|j|ddd|jtjd5}|j|j	d|j|jd|j|j
d|j|ddddy#1swYxYw#1swYyxYw)NrFTrr\rs  rtest_buffered_file_iozIOTest.test_buffered_file_io.s
YYy''
.	!QZZ\51QZZ\40QZZ\40NN1		
YYy''
.	#!QZZ\40QZZ\51QZZ\40MM!T"		#	#		
	#	#sA2D7;A3E7EEcv|jtjd5}|jdddd|jtjd5}|j	|jd|j	|jdd|j	|jdd|j	|jd	d
|j	|jd|j	|jdd|j
t|j
d
ddd|jtjdd5}|j
t|j
d
dddy#1swYexYw#1swYcxYw#1swYyxYw)Nrs"abc
def
xyzzy
foobar
another linerabc
rdef
ryxyszzy
sfoobar
sanother lineg333333@r+rr-)r/rrrErr
rrrs  r
test_readlinezIOTest.test_readline:sX
YYy''
.	B!
GG@A	B
YYy''
.	:!QZZ\84QZZ^X6QZZ]E2QZZ]H5QZZ\?;QZZ-?iS9	:YYy''wY
?	:1iS9	:	:	B	B	:	:	:	:s$FC&F#+"F/F #F,/F8czGdd|j}|jttft|y)NceZdZdZy)+IOTest.test_readline_nonsizeable.<locals>.RcyrBr&rHs rr
z4IOTest.test_readline_nonsizeable.<locals>.R.readlineLr N)r#r$r%r
r&r rRrhK
r rk)IOBaserr
StopIterationnextr>rks  rtest_readline_nonsizeablez IOTest.test_readline_nonsizeableHs-			
9m4dAC@r czGdd|j}|jt|jdy)NceZdZdZy)'IOTest.test_next_nonsizeable.<locals>.RcyrBr&rHs r__next__z0IOTest.test_next_nonsizeable.<locals>.R.__next__Trjr N)r#r$r%rvr&r rrkrtSrlr rkr\)rmrr	readlinesrps  rtest_next_nonsizeablezIOTest.test_next_nonsizeablePs,			
)QS]]A6r c|j}|j||j}|j|d|j|}|j	|dy)NrT)r+rgetvaluerr)r>r2rs   rtest_raw_bytes_iozIOTest.test_raw_bytes_ioXsQLLNqzz|/0LL

ar ctjdddk(stjdk(r#tjdd|jz|jtjdd5}|j|ddd|jtjd5}|j|dddy#1swYDxYw#1swYyxYw)NrrDdarwin	largefilez-test requires %s bytes and a long time to runw+br)	rKrLrrequiresrr/rrrrs  rtest_large_file_opszIOTest.test_large_file_ops`s<<u$(@?$**L
NYYy''
2	#a"	#
YYy''
/	#1"	#	#	#	#	#	#s.C(CCCcdD]}d}|jtjd|5}|jdddd|j	|j
dd}	|jtjd|5}ddzddd|j
dy#1swYkxYw#1swY)xYw#t$r|j	|j
dYwxYw)N)rrrrTr\rz1/0 didn't raise an exception)r/rrrErrrJZeroDivisionError)r>bufsizer2s   rtest_with_openzIOTest.test_with_openms	;GA9++T7;
 q
 QXXt,A
;YYy//w?1aC
		9:	;
 
 
$
1  40
1s5B%"!B=B1	B=%B.	1B:	6B==%C%$C%c|jtjd5}|jdddd|jtjdd5}|j	|jdddd|jtjd5}|j	|jdddd|jtjdd	5}|j
|jddddy#1swYxYw#1swYxYw#1swYmxYw#1swYyxYw)
Nrrabrrrarr-)r/rrrErrY
assertGreaterrs  rtest_append_mode_tellzIOTest.test_append_mode_tell}s
YYy''
.	!
GGFO	
YYy''Y
;	*qQVVXq)	*
YYy''
.	*!QVVXq)	*
YYy''wY
?	,1qvvx+	,	,
			*	*	*	*	,	,s/D!D'&!D31!D?D$'D03D<?EcgGfdd|j}tjdtf5|tj
d}|j
d~tj|jgd|jtj
d5}|j|jdddddddy#1swYxYw#1swYyxYw)Nc:eZdZfdZfdZfdZxZS)(IOTest.test_destructor.<locals>.MyFileIOcjjd	t|}|y#t$rYywxYwrrCrz__del__AttributeErrorr>r2r{records  rrz0IOTest.test_destructor.<locals>.MyFileIO.__del__8

a AC&
&	22cDjdt|	yrxrCrzrr>r{rs rrz.IOTest.test_destructor.<locals>.MyFileIO.close

a 
r cDjdt|	yNrrCrzrrs rrz.IOTest.test_destructor.<locals>.MyFileIO.flushrr r#r$r%rrrrr{rs@rMyFileIOr

 
 
 r rrrr\ryrr)rrcheck_warningsResourceWarningrrrEr
gc_collectrr/ro)r>rr2rs   @rtest_destructorzIOTest.test_destructors	 t{{	 
+
+R,A
B	3))40A
GGFO VY/9++T2
3a  62
3
	3	3
3
3
	3	3s$A2C&(!C	C&C#	C&&C/cgGfdd|}|}~tj|jgdy)Nc@eZdZdZfdZfdZfdZxZS)+IOTest._check_base_destructor.<locals>.MyIOc.d|_d|_d|_y)Nr\ryr)on_delon_closeon_flushrHs rr@z4IOTest._check_base_destructor.<locals>.MyIO.__init__s
  !
 !
r c~j|j	t|}|y#t$rYywxYwrB)rCrrzrrrs  rrz3IOTest._check_base_destructor.<locals>.MyIO.__del__s<

dkk*AC&s
0	<<cXj|jt|
yrB)rCrrzrrs rrz1IOTest._check_base_destructor.<locals>.MyIO.close

dmm,
r cXj|jt|
yrB)rCrrzrrs rrz1IOTest._check_base_destructor.<locals>.MyIO.flushrr )r#r$r%r@rrrrrs@rMyIOrs
"

 
 
 r rr)rrr)r>baserr2rs    @r_check_base_destructorzIOTest._check_base_destructors<	 4	 .
F
+r c:|j|jyrB)rrmrHs rtest_IOBase_destructorzIOTest.test_IOBase_destructors##DKK0r c:|j|jyrB)rrIrHs rtest_RawIOBase_destructorz IOTest.test_RawIOBase_destructors##DNN3r c:|j|jyrB)rr3rHs rtest_BufferedIOBase_destructorz%IOTest.test_BufferedIOBase_destructors##D$7$78r c:|j|jyrB)rrHrHs rtest_TextIOBase_destructorz!IOTest.test_TextIOBase_destructors##DOO4r c:|jtjd5}|jdddd|jtjd5}|j	|jddddy#1swYSxYw#1swYyxYw)Nrrrr/rrrErrors  rtest_close_flusheszIOTest.test_close_flushess~
YYy''
.	!
GGFO	
YYy''
.	/!QVVXv.	/	/			/	/B!BBBctjdtdtjfd}|j	|jtjd|jj|jj|jjjy)Nirc|5j|j|jfdddy#1swYyxYwrB)rrEr)r2rr`r>s rcheckz'IOTest.test_array_writes.<locals>.checksA
#  Q/aT"
#
#
#s4AA
r)r)rangertobytesr+rrrr'rkr*r.)r>rrr`s` @@rtest_array_writeszIOTest.test_array_writessKKU2Y'			#	dlln
dkk)**C01
d!!$.."234
d!!$.."234
d!!$.."2DNN4DEFr cj|jt|jtjdddy)NrrFr.closefdrrr/rrrHs rtest_closefdzIOTest.test_closefds,*dii1A1A3#*E		;r ct|jtjdd5}|jdddd|jtjdd5}|j|j	ddd}|j|j
d|jd|j|jt|jddd|jtjd	5}|j|j	d	d
}|j|j
ddd|j|jt|jtd
dddy#1swYbxYw#1swYxYw#1swYyxYw)Nrrr-egg
r+Frrrrrseggr\)
r/rrrErNrrorVrrrrarr>r2files   rtest_read_closedzIOTest.test_read_closedsV
YYy''wY
?	1
GGG	
YYy''wY
?	5199QXXZw9NDTYY['2IIaLJJLj$))4	5YYy''
.	G!99QXXZu9=DTYY[!_f5JJLj$--1F		G	G			5	5	G	Gs%FBF"BF.F"F+.F7cj|jt|jtjdddy)Nr+rFrrrHs rtest_no_closefd_with_filenamez$IOTest.test_no_closefd_with_filenames,*dii1A1A3#*E		;r c|jtjd5}|jdddd|jtjdd5}|j	|j
jjd|j|jddd}|j	|j
jjddddy#1swYxYw#1swYyxYw)	Nrsegg
r+rr-TFr)	r/rrrErrrawrrNrs   rtest_closefd_attrzIOTest.test_closefd_attrs
YYy''
.	!
GGH	
YYy''wY
?	=1QXX\\114899QXXZw9NDT[[__44e<	=	=			=	=sC*BC6*C36C?ctjdtf5|jtj
d}|j
d||_tj|}~tjddd|j||jtj
d5}|j|jddddy#1swYjxYw#1swYyxYw)Nrrsabcxxxr)rrrrrrrEr2weakrefrefrrassertIsNoner/rro)r>r2wrs   rtest_garbage_collectionzIOTest.test_garbage_collections
+
+R,A
B	!I,,d3A
GGIACQB 
	!	
"$#
YYy''
.	2!QVVXy1	2	2	!	!	2	2sA#C(>!C4(C14C=cd}tjj|s |jdj	|t
jdkDr|jdtjtjkr|jd|j|dd5}|jt|jddd|j|d5}|jt|jddd|j|d	5}|jt|jdddy#1swYxYw#1swYQxYw#1swYyxYw)
Nz	/dev/zeroz{0} does not existz+test can only run in a 32-bit address spacez&test requires at least 2 GiB of memoryrrrr+)rpathexistsrformatrKmaxsizerreal_max_memuse_2Gr/rrro)r>zeror2s   rtest_unbounded_filezIOTest.test_unbounded_filesww~~d#MM.55d;<;;#MMGH""W[[0MMBC
YYtTQY
/	51mQVV4	5
YYtT
"	5amQVV4	5
YYtS
!	5QmQVV4	5	5		5	5	5	5	5	5s$,!E'!E"!E$EE!$E-c|j|i|gfd}|_|jtj|jj|j|jdd_y)Nc8jgddtrBr)rr2sr	bad_flushz4IOTest.check_flush_error_on_close.<locals>.bad_flush!s
F1I)Or rcyrBr&r&r r<lambda>z3IOTest.check_flush_error_on_close.<locals>.<lambda>)r )r/rrrr
assertTruerassertFalse)r>rkwargsrrr2s    @@rcheck_flush_error_on_closez!IOTest.check_flush_error_on_closesv
DIIt&v&	'177+!#r c^|jtjddtjtjtj
tjz}|j|ddtjtjtj
tjz}|j|dddtj||jtjdtjtjtj
tjz}|j|dtjtjtj
tjz}|j|ddtj||jtjdd	tjtjtj
tjz}|j|dd	tjtjtj
tjz}|j|ddd
tj|y)NrrrF)rrrrrr-r)rrrrr/O_WRONLYO_CREATr)r>fds  rtest_flush_error_on_closez IOTest.test_flush_error_on_close+s	
''	(8(8$!'L
WWY%%r{{2::'=
>''DA'>
WWY%%r{{2::'=
>''DAu'M
''	(8(8$?
WWY%%r{{2::'=
>''D1
WWY%%r{{2::'=
>''D%'@
''	(8(8#'P
WWY%%r{{2::'=
>''C''B
WWY%%r{{2::'=
>''C'5'Q
r c|jtjdd}|j|j|j|j	t
|jy)Nrrr)r/rrrrrrrs  rtest_multi_closezIOTest.test_multi_closeCsKIIi&&I:						*agg.r c6|jd}|j|jdd|j|jdd|j|jdd|j|jdd|j|jdd|j|jdd|j|jdd|j|jddy)	N)abcdNefgNryabcrefgr )r6rror>rawios  rtest_RawIOBase_readzIOTest.test_RawIOBase_readJs))*LMA.A-A-A-A.A-A-A,r c|j|j|j|j|j	f}|D]}|jt
|dy)N__dict__)rmrIrHrEr+rhasattr)r>rOrs   rtest_types_have_dictzIOTest.test_types_have_dictWs\KKMNNOOMMOLLN
	6COOGC45	6r c|jtjdd5}|jddddt	jtjtj
fd}|jddd|5}|j
|jddddy#1swYxYw#1swYyxYw)	Nrrr-rcSrBr&)rflagsrs  ropenerz"IOTest.test_opener.<locals>.openerfsIr non-existentr+)r.r)r/rrrErO_RDONLYrro)r>r2rrs   @rtest_openerzIOTest.test_openerbs
YYy''wY
?	1
GGG	
WWY%%r{{
3	
YY~sWVY
L	0PQQVVXw/	0	0		
	0	0sB4
!C4B=C	cd}|jt5}tdd|ddd|jt	j
dy#1swY/xYw)NcyNrr&fnamer
s  r	badopenerz4IOTest.test_bad_opener_negative_1.<locals>.badopenermr rr+rzopener returned -1rrr/rstr	exceptionr>rcms   rtest_bad_opener_negative_1z!IOTest.test_bad_opener_negative_1kR	


z
*	8bY7	8R\\*,@A	8	8AAcd}|jt5}tdd|ddd|jt	j
dy#1swY/xYw)Ncy)Nr&rs  rrz8IOTest.test_bad_opener_other_negative.<locals>.badopenerurr rr+rzopener returned -2rrs   rtest_bad_opener_other_negativez%IOTest.test_bad_opener_other_negativesrrctj|jt5}|j	dfdddd|jjjtjy#1swY>xYw)NfoocSrBr&)namer
rs  rrz/IOTest.test_opener_invalid_fd.<locals>.<lambda>sr r)	rmake_bad_fdrrr/rrerrnoEBADF)r>rrs  @rtest_opener_invalid_fdzIOTest.test_opener_invalid_fd{sg
"
"
$


w
'	<2IIe$:I;	<++U[[9	<	<sA??Bc|jtd5}|jtd5}|j|jd}|j	|jd|j|j
|jddddddy#1swYxYw#1swYyxYw)NrFr)r/r0rrNr@r
r)r>f1f2fileios    rtest_fileio_closefdzIOTest.test_fileio_closefds
YYx
&	"
YYx
&	*,[[e[<FOOBIIKO7KKMLLNKKM						s#B>A3B2!B>2B;	7B>>Cctj|5|jt5|j	t
jdddddddddy#1swYxYw#1swYyxYw)Nrrrr.rrcheck_no_resource_warningrrr/rrrHs rtest_nonbuffered_textiozIOTest.test_nonbuffered_textiosp

6
6t
<	P"":.
P		)**C'Q	O
P	P	P
P
P	P	P"A-$A!A-!A*	&A--A6ctj|5|jt5|j	t
jdddddddddy#1swYxYw#1swYyxYw)Nrrinvalidr.newliner2rHs rtest_invalid_newlinezIOTest.test_invalid_newlinesp

6
6t
<	V"":.
V		)**C'9	U
V	V	V
V
V	V	Vr5c	&Gdd|j}|}dD]d}|j|5td}|jt	|||d|jt|ddddfy#1swYqxYw)NceZdZdZeZy)3IOTest.test_buffered_readinto_mixin.<locals>.Streamcy)N12345r&r>sizes  rroz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readsr N)r#r$r%roread1r&r rStreamr=s
 Er rCrarrr?)r3rFrrgetattrr)r>rCstreammethodrs     rtest_buffered_readinto_mixinz#IOTest.test_buffered_readinto_mixins	T((	/	:Ff%
:"1  !8!8!@!D  v9
:
:	:
:
:sA	BB	cfd}|ttj|ttjtjjtjdd5}t|j
}jt5j|ddddddddtd}jt5j|dddddtt}jt5j|dddddjtd5jttjdddddy#1swYxYw#1swYxYw#1swYxYw#1swYxxYw#1swYyxYw)Ncj|dd5}|jddddj|dd5}j|jddddy#1swYGxYw#1swYyxYw)Nrrr-rr+)r/rErro)rr2r>s  rcheck_path_succeedsz7IOTest.test_fspath_support.<locals>.check_path_succeedss~4w7
!1 
!4w7
41  73
4
4
!
!
4
4sA.!A:.A7:Brrr-zread/write/append moderwxa)rrrrfsencoder/rNrrFloatingPointErrorassertRaisesRegexr)r>rKr2bad_paths`   rtest_fspath_supportzIOTest.test_fspath_supports	4	HY%5%567HR[[1A1A%BCD
YYy''wY
?	;1
+H""9-
;		(C'	:
;	;
D>


y
)	7IIhgI6	7./


1
2	7IIhgI6	7
#
#J0H
I	LIIhy//0&7IK	L	L
;
;	;	;	7	7	7	7	L	LsH:/F#)F>F#.F//F;",GF 	F##F,/F8;GGc|jd}|j|jd|jd}|j|jdyNrrrabcdefg)r6rroreadallrs  rtest_RawIOBase_readallzIOTest.test_RawIOBase_readallsR))*@Az2))*@A*5r c	6Gdd|j}d}d}|D]}|j|5|\}}}}|tt|}	t	|f|z}
t|	|}|j
||
||j
t|
||j|
d|t||f||z
z}|j|
|d||j
t|	j||z
dddy#1swYxYw)NceZdZdZdZdZy)3IOTest.test_BufferedIOBase_readinto.<locals>.Readerc||_yrBavail)r>r]s  rr@z<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__s	"
r cL|jd|}|j|d|_|SrBr\)r>rAresults   rroz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.reads)ET*!ZZ.

r c8|jt|dS)z$Returns no more than 5 bytes at oncer)rominr@s  rrBz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1syyT1..r N)r#r$r%r@rorBr&r rReaderrZs
#

/r rb)
)rarrr)rarrr)rarrr)rarr)rarrr)rrrr)rrrr)rrrr)rrrcr)rrrr)
r3rFrrrrErrassertSequenceEqualr])r>rbrNUNUSED_BYTErOrGr]requestr_readerrunuseds            rtest_BufferedIOBase_readintoz#IOTest.test_BufferedIOBase_readintos"		/T((		/

	DDd#

D15.weEl 34"K>G#;< 0  8  Vg6((%-H%7V+;<((&A  V\\!2EFNC

D

D	D

D

DsCDD	cGdd|j}|}|jt|jd|_y)NceZdZdZdZy)#IOTest.test_close_assert.<locals>.RcyrBr&)r>r&values   r__setattr__z/IOTest.test_close_assert.<locals>.R.__setattr__r ctrBrrHs rrz)IOTest.test_close_assert.<locals>.R.flushs	ir N)r#r$r%rprr&r rrkrms

 r rkcyrBr&rHs rrz*IOTest.test_close_assert.<locals>.<lambda>rr )rmrrrr)r>rkr2s   rtest_close_assertzIOTest.test_close_asserts8	 	 

C'177+$r NF);r#r$r%rrrrrrrunittestskipIfr
is_emscripten
skipUnlessrrrQrZr]r_rerqrxr{rrrrrrrrrrrrrrrrrrrrrrrrr"r*r/r4r:rHrQrWrjrur&r rrr=sR++204B
E*(?2X__FXV,.BCf@Df@PV

#:A7#
; ,34,<1495/G;
G;
=25 
0/-	60BB:
P
V
:L86'DR$r rceZdZdZy)CIOTestcGdd|j}||}||_tj|}~~t	j
|j
||y)NceZdZdZy)*CIOTest.test_IOBase_finalize.<locals>.MyIOcyrBr&rHs rrz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closerqr Nr#r$r%rr&r rrrs
r r)rmrrrrrr)r>rrrs    rtest_IOBase_finalizezCIOTest.test_IOBase_finalizesY	4;;	
	
f
[[
"$#r N)r#r$r%rr&r rr|r|s$r r|c*eZdZdZdZdZdZdZy)TestIOCTypesctjd}|j|j|j|j
|j|j|j|j|j|j|j|j|j|jg|_t"j$dk(r%|j j'|j(||_y)N_iowin32)r
import_moduler.r*r#r'r+rIncrementalNewlineDecoderrEr7_BufferedIOBase_BytesIOBuffer_IOBase
_RawIOBase_TextIOBasetypesrKrLrC_WindowsConsoleIOrr>rs  rrzTestIOCTypes.setUps))%0KKJJ))LLKKNNOO

 <<7"JJc334r c|jD]C}|j|5|jtd5d|_ddddddEy#1swYxYw#1swY\xYw)N)tp	immutablebar)rrFrOrr$)r>rs  rtest_immutable_typesz!TestIOCTypes.test_immutable_types-si**	#B$
#++I{C#"BF#
#
#	###
#
#s"A AA AA  A)	cfdfdj}|j|j|j|j|j
|j|jh|j|jh|j|j|jhii}tjdk(r5||j|jj|j |y)Nc|D]9}j||5jt||ddd;y#1swYFxYw)N)rr)rFr
issubclass)rrrr>s   r
check_subsz5TestIOCTypes.test_class_hierarchy.<locals>.check_subs4sO
:\\Rd\3:OOJr4$89::
:::sAA
	c|jD]I\}}t|tr	|t|tr
||9j	dKy)Nzcorrupt test dataset)itemsrGdictrrJ)dkvrrecursive_checkr>s   rrz:TestIOCTypes.test_class_hierarchy.<locals>.recursive_check9sO	
61a&#A&3'q!$II45

6r r)rrrr.r*r#r'r+rrrrEr7rKrLaddr)r>r	hierarchyrrs`  @@rtest_class_hierarchyz!TestIOCTypes.test_class_hierarchy3s	:
	6hhKK##&&&&&&&&KK&JJ!LL%%"
	$<<7"ckk"3>>266s7L7LM	"r c|j}|jDcic]}|d}}d||j<|jD]q\}}|j	||5|j
d}|f}|rt
||i}n.d}	|jt|	5t
||i}ddddddsycc}w#1swYxYw#1swYxYw)NTF)ris_basetype	_subclassznot an acceptable base type)	rrrrrFr#typerOr)
r>rrdatasetrrr&bases_msgs
          rtest_subclassingzTestIOCTypes.test_subclassingZshh$(JJ/q1d7//&+""#&}}		2OB=
2++i0T5"-A7C//	3?2 ub12
2
2		2022
2
2s)
B;;CC(CC	CC	c\|j}tj||jyrB)rrcheck_disallow_instantiationrrs  rtest_disallow_instantiationz(TestIOCTypes.test_disallow_instantiationjs!hh,,T33E3EFr N)r#r$r%rrrrrr&r rrrs,#%#N2 Gr rceZdZy)PyIOTestNr"r&r rrrnrgr rceZdZdZdZy)APIMismatchTestctjtjtjd}|j|t
dy)z:Test that pyio RawIOBase class has all c RawIOBase methods)__weakref__)rSz6Python RawIOBase does not have all C RawIOBase methodsrN)rdetect_api_mismatchrrIrrrr>mismatchs  rtest_RawIOBase_io_in_pyio_matchz/APIMismatchTest.test_RawIOBase_io_in_pyio_matchus:..t~~r||6FH35.fgr ctjtjtj}|j|t
dy)z:Test that c RawIOBase class has all pyio RawIOBase methodsz6C RawIOBase does not have all Python RawIOBase methodsrN)rrrrIrrrrs  rtest_RawIOBase_pyio_in_io_matchz/APIMismatchTest.test_RawIOBase_pyio_in_io_match{s4..r||T^^L35.fgr N)r#r$r%rrr&r rrrrshhr rc`eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZy)CommonBufferedTestsc|j}|j|}|j|j||j	t
|jt
|yrB)rkrassertIsdetachrrreprr>rr^s   rtest_detachzCommonBufferedTests.test_detachsJnnggcl

cjjlC(*cjj1S	r c|j}|j|}|jd|jyrL)rkrrrNr>rbufios   rtest_filenozCommonBufferedTests.test_filenos1 U\\^,r c|j}|j|}|jt|jdd|jt|jddy)Nrrr)rkrrrrVrs   rtest_invalid_argsz%CommonBufferedTests.test_invalid_argssK *ejj!R8*ejj!Q7r c|j}gGfdd|}|j}||}~tj|j	gdy)Nc:eZdZfdZfdZfdZxZS)BCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOcjjd	t|}|y#t$rYywxYwrrrs  rrzJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__rrcDjdt|	yrxrrs rrzHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closerr cDjdt|	yrrrs rrzHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flushrr rrs@rMyBufferedIOrrr rr)rrkrrr)r>rrrrrs     @rtest_override_destructorz,CommonBufferedTests.test_override_destructorsT
WW	 2	  U#+r c|j}|j|fd}||jt|y)Nc65	dddy#1swYyxYwrBr&rsr_withz7CommonBufferedTests.test_context_manager.<locals>._withs



s)rkrrr)r>rrrs   @rtest_context_managerz(CommonBufferedTests.test_context_managers: 			
*e,r c|j}tj5}|jt5|j|jdddts|j|jn6|j*|j|jjtdddy#1swYjxYw#1swYyxYwrB)
rrcatch_unraisable_exceptionrrrxyzzyIOBASE_EMITS_UNRAISABLEr
unraisablerexc_typerr>rrs   rtest_error_through_destructorz1CommonBufferedTests.test_error_through_destructors##%

/
/
1	BR"">2
%$$
%+!!"--0*  !7!7A	B	B
%
%	B	Bs#CCA CC		CCcv|j}|j|}d|jjd|jj}|j	t|d|zd|_|j	t|d|zd|_|j	t|d|zy)N(z\.)?z<%s>dummyz<%s name='dummy'>dummyz<%s name=b'dummy'>)rkrr$r%assertRegexrr&)r>rr(clsnames    r	test_reprzCommonBufferedTests.test_reprsnnGGCL"&''"4"4dgg6J6JKa&7"23a"5"?@a"6"@Ar c|j}|j|}tj|d|5	t	|dddy#t
$rYwxYw#1swYyxYw)Nr&)rkrr	swap_attrrRuntimeErrorr>rr(s   rtest_recursive_reprz'CommonBufferedTests.test_recursive_reprsgnnGGCL


sFA
.	
Q		 

		s(AA	AAAAA'c|jgfd}|_|j|jtj
|j
j|j
j|j
|jd|jdd_y)NcNjjgddtrBr)r(rrsrrz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushs 3::.F1I)Or rr\cyrBr&r&r rrz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>rr )	rkrrrrrrrr)r>rr(rrs  @@@rrz-CommonBufferedTests.test_flush_error_on_closesnn		GGCL'177+!

### 	r c8|j}d}d}||_|j|}||_|j	t
5}|jddd|j
jjd|j|jjt
|j
|jjjd|j|jd|_d|_y#1swYxYw)NctdNrrsr&r rrz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flush
'""r ctdNrrsr&r r	bad_closez@CommonBufferedTests.test_close_error_on_close.<locals>.bad_closerr rrcyrBr&r&r rrz?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>rr cyrBr&r&r rrz?CommonBufferedTests.test_close_error_on_close.<locals>.<lambda>rr )
rkrrrrrrrrassertIsInstance__context__rrr>rrrr(errs      rtest_close_error_on_closez-CommonBufferedTests.test_close_error_on_closesnn	#	#	GGCL


w
'	3
GGI	++Z8cmm77A2277D"!			sDDc4|j}d}d}||_|j|}||_|j	t
5}|jddd|j
dtj|j|jjt
|j
dt|jj|j|jd|_d|_y#1swYxYw)NctrBnon_existing_flushr&r rrzNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flush$$r ctrBnon_existing_closer&r rrzNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_close	rr rrcyrBr&r&r rrzMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>rr cyrBr&r&r rrzMCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.<lambda>rr )
rkrrrr	NameErrorassertInrrrrrrrs      r'test_nonnormalized_close_error_on_closez;CommonBufferedTests.test_nonnormalized_close_error_on_closesnn	%	%	GGCL


y
)	S
GGI	

*C

,>?cmm77C

*C

0I0I,JK" 			sDDc|j}|j|}|j|j|j|jt|j
yrB)rkrrrrrrs   rrz$CommonBufferedTests.test_multi_closesJnnGGCL						*agg.r c|j|jd}|j|j|j|j|j|j
dy)N
AAAAAAAAAAr)rrrrrYrVr>rs  rtest_unseekablez#CommonBufferedTests.test_unseekable!sQ--i89$33UZZ@$33UZZCr c|j}|j|}|j}|jt5||_dddy#1swYyxYwrB)rkrrrr)r>rr^xs    rtest_readonly_attributesz,CommonBufferedTests.test_readonly_attributes&sQnnggclNN


~
.	CG			sAA!N)r#r$r%rrrrrrrrrrrrrrr&r rrrsK-8,0
-BB!$(!*/D
r rcTeZdZejdZejdZy)
SizeofTestcd}d}|j}|j||}tj||z
}|j}|j||}|j	tj|||zy)N buffer_size)rkrrK	getsizeofr)r>bufsize1bufsize2rrrAs      rtest_sizeofzSizeofTest.test_sizeof0sx 84}}U#h. 84u-th?r cd}|j}|j||}tj||z
}|j	|jtj||y)Nrr)rkrrKrrr)r>rrrrAs     rtest_buffer_freeingzSizeofTest.test_buffer_freeing;sZ 73}}U#g-

u-t4r N)r#r$r%rcpython_onlyrr!r&r rrr.s6@@
55r rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZej&ej*ddZdZdZdZdZdZy)BufferedReaderTestrcP|jdg}|j|}|j||j|d|j|d|jd|j	|jt|j|d|jt|j|d|jt|j|d|jdg}|j||jd|j	y)Nrrrr)rkrr@rrorrrs   rtest_constructorz#BufferedReaderTest.test_constructorGsx(
u
u$/
u"-.*enneK*enneM*enneLx(
u.r cj|jj|j}~|jj|j}|jttfd|j
d|j
|j|j|jddyNuninitialized|has no attributerr )	r__new__rOrrror@rkrrs  rtest_uninitializedz%BufferedReaderTest.test_uninitializedUs((
N;?$zz1	.	t~~'(A,r cdD]E}|jd}|j|}|jd|j|G|j	t
jdy)N)NrcrTrUr!)rkrrrorr)r>argrrs    r	test_readzBufferedReaderTest.test_read_s]	:CNN#9:EGGENEZC9	:
	
*ejj"5r c.|jd}|j|}|jd|jd|jd|j	d|j|j
d|jd|j	d|jd|j	d|j|j
d|jd	|j	d|j|j
d
|jd|j	d|j|j
d|jd|j	d|j|j
d
y)NrTar\br rrrrryrrrdrkrrrorBr<rs   r
test_read1zBufferedReaderTest.test_read1gs.56uzz!}-u{{1~.q)ekk!n-u{{3/0q)u{{3/0q)S!12q)ekk#./q)r c|jd}|j|}|jd|jd|jd|j	|jd|j	|jd|j	d|j|j
d|jd	|j	|j|j
d
y)NrTr3r\sbcrrrrr rdr5rs   rtest_read1_arbitraryz'BufferedReaderTest.test_read1_arbitraryws56uzz!}-
.u{{}-R1q)ekkm,q)r cl|jd}|j|}td}|j|j	|d|j|d|j|j	|d|j|d|j|j	|d|j|d|j|j	|d|j|d|j|j	|d|j|d|jd	}|j|}|j|j	|d|j|d|j|j	|d|j|d
y)NrTryrcdrr\sgfr)rNscb)rkrrrra)r>rrr(s    r
test_readintoz BufferedReaderTest.test_readintosa56aL*A.E"*A.E"*A.E"*A.E"*A.E"~.*A.E"*A.E"r cd}|jd}|j||}td}|j|j	dd|j|j
d|j|j
|d|j|d|j|j
d|j|j
|d|j|ddd	|j|j
d|j|j
|d|j|d
|j|j
dtd|z}|j|j	dd|j|j
d|j|j
|d|j|ddd
|j|j
dy)Nr)rdefghsjklrryrrr\rrr=r>rsfghjklrd)rkrrrpeekr<r)r>rrrr(s     rtest_readinto1z!BufferedReaderTest.test_readinto1s>?;7aLA/q)+Q/E"q)+Q/2A%q)+Q/E"q)am$A/q)+Q/2A	*q)r c	d}d}|j|f}|j||}tjdd}|j|}|j	|t|t
|jd}|j|t||j|d||d||j||ddt||dzyN<saaaaaaaaaaaaaaaaaaaaaaaaaarrs xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr)
rkrr)rarrrr
assertLessrr>rrrrr(r`bms        rtest_readinto_arrayz&BufferedReaderTest.test_readinto_arraysw';7
KKY'

NN11c!f%]


$3r7#BQbq*ABRV!56r c	d}d}|j|f}|j||}tjdd}|j|}|j	|t|t
|jd}|j|t||j|d||d||j||ddt||dzyrB)
rkrr)rrrrrrDrrEs        rtest_readinto1_arrayz'BufferedReaderTest.test_readinto1_arraysw';7
KKY'

OOA1c!f%]


$3r7#BQbq*ABRV!56r cfd}j|jgdj|jdddgj|jdgdy)NcHjd}j|S)Nrarr)rkr)rr>s rrz0BufferedReaderTest.test_readlines.<locals>.bufios NN#<=E775>!r rLrrarrrwrs` rtest_readlinesz!BufferedReaderTest.test_readlinessf	"	
**,.GH**1-&/AB**402KLr c	Pd}t|}dgd|dggdgd|ggdgdgdgg}|D]{\}}}|j|}|j||	}d}	|D].}
|j|j	|
||	|	|
z|	|
z
}	0|j|j
|}y)
N	abcdefghir)rr\rdr)rrrrd)r\ryrdry)rdrdr\r)rrrrror)r>rdlenrNrbuf_read_sizesraw_read_sizesrrrnbytess           rtest_bufferingz!BufferedReaderTest.test_bufferings4y>T1;0:T80>;0
8=	A3G^^OOD)EGGEwG7EC(
  F!3T#c&j5IJv


U//@	Ar cl|jd}|j|}|jd|jd|jd|jd|jd|j|jd|j	d|j|j|jd|j|jd}|jd	|j
|j|j
y)
N)rrNrNNNabcdrer\sfgr )r3NNr3)rkrrror?rrVrs   rtest_read_non_blockingz)BufferedReaderTest.test_read_non_blockingsMN%**Q-0uzz!}-

-ejjm,%**,'ejjl+12u}}/%--/*r c|jd}|j|}|jd|jdy)NrTrUi(#rkrrrors   rtest_read_past_eofz%BufferedReaderTest.test_read_past_eofs756UZZ%56r c|jd}|j|}|jd|jyrSr\rs   r
test_read_allz BufferedReaderTest.test_read_all	s456UZZ\2r cpuc*
	d}ttd|z}tj|t	t|}|j
tjd5}|j|ddd|j
tj|jd5}|j|d
gg
fd}tdDcgc]}tj|	}}tj|5t!j"d
ddd|j%dzdj'}tdD]8}t	t|g}	|j)|j+|	|:	dddtj,tjy#1swYLxYwcc}w#1swYxYw#1swYKxYw#tj,tjwxYw)
NrrrrQc	tddgD](}j|}|syj|*y#t$r}j|d}~wwxYw)Nr\)rrorC	Exception)r`rererrorsresultss   rr2z*BufferedReaderTest.test_threads.<locals>.f s_
!&2w.A %

1
A#$ %#NN1-.%

a(s$<<	AAArr{Gz?(the following exceptions were caught: %rr )r9rrandomshufflerrr/rrrE	read_moderrrr

start_threadsrrrrrrr)
r>Nlrr2rrthreadsrcrrhris
          @@@rtest_threadszBufferedReaderTest.test_threadss$	/AU3Z 1$ANN1il#A9++T2
a

9++T^^qI
4SQ@ERyI!9++15II%33G<%JJt$%  >GIHHW%s4Ain-A$$QWWQZ34-
44
Y--.9

$J%%#
4
44
Y--.sgA"G-'G94G--+G!G5G!G"A4G!G-G
G-G!G	G!!G*&G--%Hc|j|jd}|j|j|j|j|j|j
d|j
d|j|j|j
d|j|j|jy)Nrrr\)rrrrrYrVrors  rrz"BufferedReaderTest.test_unseekable8s--i89$33UZZ@$33UZZC

1
$33UZZC$33UZZ@r c|jd}|j|}|jt|jd|jt|j
d|_y)NrTrcyrBr&r&r rrz7BufferedReaderTest.test_misbehaved_io.<locals>.<lambda>Grr )rvrrrrVrYrrs   rtest_misbehaved_ioz%BufferedReaderTest.test_misbehaved_io@sS$$%;<'5::q1'5::.#r c	Fd}d|dz
||dz|dzfD]}|jd|zg}|j||}|j|j|d|z|j|jddj||j|jd|dz
zdg}|j||}|j|j|d|z|j|jddj||jy)Nr'ryr\rrzfailed for {}: {} != 0)rkrrror=r)r>rr`rrs     rtest_no_extraneous_readz*BufferedReaderTest.test_no_extraneous_readIsWq['7Q;!D
	ZANND1H:.EGGE7+EUZZ]D1H5U44a5<<Q@W@WX
ZNNDAEND#9:EGGE7+EUZZ]D1H5U44a5<<Q@W@WX
Z
	Zr c|j|jd}|jd|j|j	d5|jt|jddd|j	d5|jt|jdddd|j	d5|jt|jddd|j	d5|jt|jtddd|j	d5|jt|jtddd|j	d5|jt|jddd|j	d	5|jt|jddd|j	d
5|jt|jddddy#1swYxYw#1swYxYw#1swYZxYw#1swY$xYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)N12r\r?rBrorarrrcrVr)r#r+rorrFrrr?rBrarrrrcrVrDs  rtest_read_on_closedz&BufferedReaderTest.test_read_on_closed]sU 34	q			
\\&
!	2j!&&1	2
\\'
"	6j!''15	6
\\&
!	2j!&&1	2
\\*
%	Cj!**ikB	C
\\+
&	Dj!++y{C	D
\\'
"	3j!''2	3
\\*
%	6j!**5	6
\\&
!	5j!&&!4	5	5	2	2	6	6	2	2	C	C	D	D	3	3	6	6	5	5s`!H'
"H4!I*I*I!I'!I3<"I?'H14H>III$'I03I<?Jc |jd}|j|}|j|j|j	|j
|j|j	|j
|jdy)Nrr)rrrrIrrrcrs   rtest_truncate_on_read_onlyz-BufferedReaderTest.test_truncate_on_read_onlyssh')*$33U^^D$33U^^QGr N)r#r$r%ror)r.r1r6r8r;r@rGrIrNrVrZr]r_r
requires_working_threadingrrequires_resourcerurryr{r~rr&r rr$r$DsI/-6* 	*#**.7*7*MA(
+731002Wu%%/&3%/NA#Z(5,Hr r$cjeZdZejZeddddZdZdZ	dZ
dZd	Zd
Z
y)CBufferedReaderTestTLsanitizer defaults to crashing instead of returning NULL for malloc failure.memoryaddressreasonctj|tjdkDr]|j	}|j|}|j
tttf|j|tjyyNr)r$r)rKrrkrrrMemoryErrorrr@rs   rr)z$CBufferedReaderTest.test_constructor~d	++D1;;#NN$EGGENE}k:Fs{{
4$r c|jdg}|j|}|jt|j|d|jt|j
|jt|j|d|jt|j
|jt|j|d|jt|j
y)Nrrrr(r)rkrrrr@rors   rtest_initializationz'CBufferedReaderTest.test_initializationsx(*enneK*ejj1*enneM*ejj1*enneL*ejj1r c|jd}|j|}|jt|jdy)NrTr)rvrrrrors   rtest_misbehaved_io_readz+CBufferedReaderTest.test_misbehaved_io_reads8$$%;<	
'5::r2r c|jtjtjt	j
dtf5|jtjd}|j|}||_	tj|}~tjddd|j|y#1swY!xYw)Nrr)rrrrrrrrrr2rrrrrr>rr2rs    rrz+CBufferedReaderTest.test_garbage_collections	
	(()*:*:;

+
+R,A
B	!KK	 0 0%8EAACQB 
	!	
"$#	!	!s

A#C

Cc|jtd5|j|jddddddy#1swYyxYw)Nr#r&rOrrr+rHs rtest_args_errorz#CBufferedReaderTest.test_args_error@

#
#I/?
@	6GGDLLND$5	6	6	6#AAc4|j|jd}d|_|j|}|jt5}|jddd|j
jjy#1swY/xYw)Nr}cyrr&r^s rrz=CBufferedReaderTest.test_bad_readinto_value.<locals>.<lambda>rr )	rr+rarrr
rr	__cause__r>rrrs    rtest_bad_readinto_valuez+CBufferedReaderTest.test_bad_readinto_valuestU+,'


w
'	2NN	",,001		sBBc>|j|jd}d|_|j|}|jt5}|jddd|j
jjty#1swY4xYw)Nr}cyrr&rs rrz<CBufferedReaderTest.test_bad_readinto_type.<locals>.<lambda>rr )
rr+rarrr
rrrrrs    rtest_bad_readinto_typez*CBufferedReaderTest.test_bad_readinto_typesvU+,(


w
'	2NN	bll44i@		sBBN)r#r$r%rr#rrr)rrrrrrr&r rrr{sO			BdD;GH4H423$6
2Ar rc$eZdZejZy)PyBufferedReaderTestN)r#r$r%rr#rr&r rrr
	
		Br rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZej0ej4ddZdZdZdZej0dZy)BufferedWriterTestrc|j}|j|}|j||j|d|j|d|jd|j	d|j|j
t|j|d|j
t|j|d|j
t|j|d|j||jd|j	d	|j|jd
j|jdy)Nr&rr'rrrr(rghir sabcghi)
rkrr@rrErrrrr;rs   rr)z#BufferedWriterTest.test_constructors 
u
u$/
u"-EKK/0

*enneK*enneM*enneL
uEKK/0

%"4"45yAr cj|jj|j}~|jj|j}|jttfd|j
d|j
|j|j|jddy)Nr,r r)	rr-rOrrrEr@rkrrs  rr.z%BufferedWriterTest.test_uninitializeds((
N;?${{C	1	t~~'(S)1-r c|j}|j|}|jd|j|j|j|j
|jdgy)Nshowdy!)rkrrErr;rrrs   rtest_detach_flushz$BufferedWriterTest.test_detach_flushs\nnggcl		)))*

))I;7r cX|j}|j|d}|jd|j|jtd}|j|d|dd|j
|jdj|jdy)NrQrdef***r abcdef)	rkrrErr;rrrr)r>writerrrs    r
test_writezBufferedWriterTest.test_writes!"
F,,-6"
Fq	

&"5"56	Br c.|j}|j|d}d}tdt|dD]}|j	|||dzdj|j}|j|j|dd|y)NrQsabcdefghijklmnoprrr i)	rkrrrrErr;rrM)r>rrcontentsr`flusheds      rtest_write_overflowz&BufferedWriterTest.test_write_overflows!"&q#h-+	)AKK1Q3(	)((6../	
**8CR=97Cr cttddz}d}|j}|j|d}d}|}|t	|krdtt
|t	||z
}|j|j||||z|||||z
}|t	|krd|j|j|dj|jy)Nrcrbrrc3TKtdD]}tdD]}|yw)Nr\)rr)rArs  r	gen_sizesz2BufferedWriterTest.check_writes.<locals>.gen_sizess1a
rAJ
s&(r )rrrkrrrarorrErrr;)	r>intermediate_funcrr`rrrsizesrAs	         rcheck_writeszBufferedWriterTest.check_writesss$t+
!#	#h-tE{CMA$56DU[[!AdF);<dCe$
IA	#h-
	
388F,?,?#@Ar c(|jdy)NcyrBr&rs rrz0BufferedWriterTest.test_writes.<locals>.<lambda>rr rrHs rtest_writeszBufferedWriterTest.test_writess,-r c(|jdy)Nc"|jSrBrrs rrz<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>s
r rrHs rtest_writes_and_flushesz*BufferedWriterTest.test_writes_and_flushess56r cTd}|j|d}|j|y)Nc|j}|j|dzd|j|dz
d|j|dyr[)rYrVrrs  r_seekabsz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabss?**,CJJsQw"JJsQw"JJsAr c|jdd}|jdd|jdd|j|dy)Nrr\r)rVrs  r_seekrelz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrels<**Q"CJJr1JJr1JJsAr r)r>rrs   rtest_writes_and_seeksz(BufferedWriterTest.test_writes_and_seekss,	
	
(#	
	
(#r c(|jdy)Nc@|j|jSrB)rcrYrs rrz>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>'suzz|(Dr rrHs rtest_writes_and_truncatesz,BufferedWriterTest.test_writes_and_truncates&sDEr c|j}|j|d}|j|jdd|j|jdd|j	d|j|jdd|j	d	|jd	|jd
|jd|j|jd|j|jd
d|j}|j|jd|y#|j$r}|j}Yd}~d}~wwxYw)NrQrXrdsefghirksjklmn0sopqrwxyz0123456789z'BlockingIOError should have been raisedr'sabcdefghijklmnopqrwxyzs	ABCDEFGHIrs	01234567A)rrrrErrJrcharacters_writtenrrrM)r>rrrgwrittenrs      rtest_write_non_blockingz*BufferedWriterTest.test_write_non_blocking)s1'')QW-q1X.2TX.2	T	AKK-.
II?@"%*%	'	
\2A6OO\2A6##	+**G	+s)EE5E00E5c6|j}|j|d}|j|jdd|j|j	d|jdd|j|jdd|jdd|j|j
d|j|jdd|j|j|j
d	y)
NrdrrrsXYrysXYcdefs123456sXYcdef123456)r+rrrErYrVrzrr>rrs   rtest_write_and_rewindz(BufferedWriterTest.test_write_and_rewindDsllnQY/3q)

1aU+Q/

1a3Y/3

9r c|j}|j|d}|jd|j|j	d|j
dyNrQrr)rkrrErrr;r>rrs   r
test_flushzBufferedWriterTest.test_flushQsN!"
F

!4!4Q!78r cgd}|j}|j|d}|j||j|j	dj|jdyN)rr:rrQr r)rkrrrrrr;r>rrrrs    rtest_writelinesz"BufferedWriterTest.test_writelinesXsY!!"


&"5"56	Br ctgd}|j}|j|d}|j||j	|jdj
|jdyr)rrkrrrrrr;rs    rtest_writelines_userlistz+BufferedWriterTest.test_writelines_userlist`s_*+!"


&"5"56	Br c|j}|j|d}|jt|jgd|jt|jd|jt|jdy)NrQrabc)rkrrrrrs   rtest_writelines_errorz(BufferedWriterTest.test_writelines_errorhsf!")U%5%5yA)U%5%5t<)U%5%5u=r c|j}|j|d}|jd~tj|jd|jdyr)rkrrErrrr;rs   rrz"BufferedWriterTest.test_destructorosT!"
F!4!4Q!78r cX|jtjtj|j	tj|j
d5}|j
|d}|jd|j|jdd|j|jdddd|j	tjdd5}|j|jddddy#1swYUxYw#1swYyxYw)	NrrrQrrrrr)rrrrr/
write_moderrErrcrYro)r>rrr2s    r
test_truncatez BufferedWriterTest.test_truncatews	(()*:*:;
YYy''AY
F	.#GGCOEKK	"U^^A.2UZZ\1-		.
YYy''Y
;	/qQVVXv.	/	/	.	.
	/	/sA%D*!D D D)c,|jtjtj|j	tjd5}|jddzdddgd}|D]}|j	tjd|5}|jd|dzz|j
d|j|j|j|dzdddy#1swYxYw#1swYxYw)	Nri')rrzr+brr\ry)
rrrrr/rErorcrrY)r>r2buffer_sizesrs    rtest_truncate_after_writez,BufferedWriterTest.test_truncate_after_writes	
	(()*:*:;
YYy''
.	%!
GGGeO$	%)'	<K9++UkJ
<a;?34q	

  ;?;

<
<	<		%	%

<
<sC>AD
>D
D	r`ct
	d}ttd|z}tddg}d}t|t	|kr6t|}j
||||z||z
}|t	|kr6~|jtj|jd5}|j|dg

fd}td	Dcgc]}tj|
}	}tj|	5t!j"dddd|j%
d
zj'ddd|jtjd
5}|j)}
dddtdD]-}|j+
j-t|g|/	tj.tjycc}w#1swYxYw#1swYxYw#1swYxYw#tj.tjwxYw)Nrbrcr\rerrrQc			j}j|##t$rYywxYw#t$r}j	|d}~wwxYwrB)popleftr]rErfrC)rrgrrhqueues  rr2z*BufferedWriterTest.test_threads.<locals>.fsa	"'$)MMO"KKN#$.' &'%

a(s,6'6	3636	AAArrjrkrlr)rrrrrrorCr/rrrrrrr
rprrrrrorrr)r>rqrrr`rArr2rrsrrrrhrs            @@@rruzBufferedWriterTest.test_threadss+	/AU3Z(1,H1b'NEAGEc(m#E{Xa$/0T	c(m#9++T__J
cQ
@ERyI!9++15II%33G<%JJt$%  >GI
'
(9++T2
aFFH
3Z
9  s!4a8
9
Y--.J%%

(



Y--.smA5H;-H()G:G).G:G.-G:(H0HAH)G:.G7	3G::H?HHH%H7c|j}|j|d}|jt|jd|jt|j
|jt|jdd|_y)NrrrcyrBr&r&r rrz7BufferedWriterTest.test_misbehaved_io.<locals>.<lambda>rr )rvrrrrVrYrErrs   rryz%BufferedWriterTest.test_misbehaved_iosi$$&q!'5::q1'5::.'5;;	:#r c|jt5|j|jdddddy#1swYyxYwNrQrrrrrkrHs rtest_max_buffer_size_removalz/BufferedWriterTest.test_max_buffer_size_removals<


y
)	-GGDNN$a,	-	-	-s"AA
c|j}d}||_|j|}|jd|jt|j
|j
|jy)NctrBrs)r(s r	bad_writez?BufferedWriterTest.test_write_error_on_close.<locals>.bad_writes	)Or spam)rkrErrrrrr)r>rrr(s    rtest_write_error_on_closez,BufferedWriterTest.test_write_error_on_closesWnn		GGCL	'177+!r ct|j}|j|d}tj|j}|j|jj|jt|jd|j|j|jy)NrQrjr)rrrrrrrwaitrrrErrr)r>rrts    rtest_slow_close_from_threadz.BufferedWriterTest.test_slow_close_from_threads~##%q!EKK0		
*ekk7;%	r N) r#r$r%rr)r.rrrrrrrrrrrrrrrrrr
rrrruryrrrr&r rrrsJB .8
C	DB(.7$F76:9CC>9	/<$1002Wu%,/&3,/\#-"1002	3	r rcXeZdZejZeddddZdZdZ	dZ
y)	CBufferedWriterTestTrrctj|tjdkDr]|j	}|j|}|j
tttf|j|tjyyr)rr)rKrrkrrrrrr@rs   rr)z$CBufferedWriterTest.test_constructorrr c|j}|j|}|jt|j|d|jt|j
d|jt|j|d|jt|j
d|jt|j|d|jt|j
dy)Nrrrr(r)rkrrrr@rErs   rrz'CBufferedWriterTest.test_initializations *enneK*ekk6:*enneM*ekk6:*enneL*ekk6:r c~|jtjtjt	j
dtf5|jtjd}|j|}|jd||_
tj|}~tjddd|j||j!tjd5}|j#|j%ddddy#1swYjxYw#1swYyxYw)Nrrs123xxxr)rrrrrrrrrrErrrrrrr/rrors    rrz+CBufferedWriterTest.test_garbage_collections	
	(()*:*:;

+
+R,A
B	!KK	 0 0%8EA
GGIACQB 	!	
"$#
YYy''
.	2!QVVXy1	2	2	!	!	2	2s
A4D'=!D3'D03D<c|jtd5|j|jddddddy#1swYyxYw)Nr'r&rrHs rrz#CBufferedWriterTest.test_args_errorrrN)r#r$r%rr'rrr)rrrr&r rrrs?			BdD;GH4H4;2"6r rc$eZdZejZy)PyBufferedWriterTestN)r#r$r%rr'rr&r rrrrr rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZy)BufferedRWPairTestc|j|j|j}|j|jyrB)rrkrrr>pairs  rr)z#BufferedRWPairTest.test_constructors2wwt~~')9:%r c|jj|j}~|jj|j}|jttfd|j
d|jttfd|jd|j|j|j|j|jdd|j|j
ddyr+)
rr-rOrrrorEr@rkrrs  rr.z%BufferedRWPairTest.test_uninitialized#swwtww'wwtww'
N;?#yy!	-	

N;?#zz3	0	


dnn&(891s+C!,r c|j|j|j}|j|j|jyrB)rrkrrrrs  rrzBufferedRWPairTest.test_detach1s:wwt~~')9:$33T[[Ar c|jt5|j|j|jdddddy#1swYyxYwrrrHs r(test_constructor_max_buffer_size_removalz;BufferedRWPairTest.test_constructor_max_buffer_size_removal5sE


y
)	?GGDNN$dnn&62>	?	?	?s1AAcGddt}|jt|j||jy)NceZdZdZy)JBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablecyrr&rHs rrPzSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readable;r Nr#r$r%rPr&r rNotReadabler:
r rrkrrr)r>rs  r"test_constructor_with_not_readablez5BufferedRWPairTest.test_constructor_with_not_readable9s1	)		
'477KM4>>;KLr cGddt}|jt|j|j|y)NceZdZdZy)LBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablecyrr&rHs rrIzUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableBrr N)r#r$r%rIr&r rNotWriteablerArr rr)r>rs  r#test_constructor_with_not_writeablez6BufferedRWPairTest.test_constructor_with_not_writeable@s1	9		
'477DNN,<lnMr c|j|jd|j}|j|j	dd|j|j	dd|j|j	d|j|jd|j}|j|j	ddy)Nrrrr\rr)rr+rkrrors  rr1zBufferedRWPairTest.test_readGswwt||I.0@A1v.1t,e,wwt||F+T^^-=>4&1r cfd}j|jgdj|jgdj|jdddgy)NcbjjdjS)Ns	abc
def
h)rr+rkrHsrrz3BufferedRWPairTest.test_readlines.<locals>.<lambda>Qs"twwt||N;T^^=MNr )rarbrrrarbrMrs` rrNz!BufferedRWPairTest.test_readlinesPsbN))+-GH))+-GH))!,x.BCr c|j|jd|j}|j|j	dd|j|j	dy)Nrrrr)rr+rkrrBrs  rr6zBufferedRWPairTest.test_read1VsRwwt||I.0@AA/v.r c	LdD]}|j|5|j|jd|j}t	d}|jt
|||d|jt|ddddy#1swYxYw)NrDrsrsabcde)rFrr+rkrrrEr)r>rGrrs    rr;z BufferedRWPairTest.test_readinto^s/	8Ff%
8wwt||I68HI +  !6v!6t!<a@  th7
8
8	8
8
8sA8BB#	cD|j}|j|j|}|jd|jt	d}|j|d|dd|j|j|jddgy)Nrrr)rkrrErrrr;)r>rrrs    rrzBufferedRWPairTest.test_writegs{NNwwt~~'+

6

6"

6q	

&&)9:r c|j|jd|j}|j|j	djd|j
|jddy)Nrrr)rr+rkrr?rMrrors  r	test_peekzBufferedRWPairTest.test_peekssYwwt||I.0@A		!//781v.r c|j|j|j}|j|jyrB)rrkrrPrs  r
test_readablez BufferedRWPairTest.test_readabley2wwt~~')9:

(r c|j|j|j}|j|jyrB)rrkrrIrs  rtest_writeablez!BufferedRWPairTest.test_writeable}r+r c|j|j|j}|j|jyrB)rrkrrRrs  r
test_seekablez BufferedRWPairTest.test_seekables6wwt~~')9:)r c|j|j|j}|j|j|j	|j|jyrB)rrkrrrrrs  rtest_close_and_closedz(BufferedRWPairTest.test_close_and_closedsKwwt~~')9:%

$r cd}|j}||_|j}|j||}|jt5}|jddd|jdt
j|j|j|j|j|j|jd|_y#1swYxYw)NctyrBreader_non_existingr&r rreader_closezIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer r5cyrBr&r&r rrzEBufferedRWPairTest.test_reader_close_error_on_close.<locals>.<lambda>rr )rkrrrr
rrrrrr)r>r6rhrrrs      r test_reader_close_error_on_closez3BufferedRWPairTest.test_reader_close_error_on_closes	 !#!wwvv&


y
)	SJJL	

+S-?@$'

&$		sC**C3cd}|j}|j}||_|j||}|jt5}|jddd|jdt
j|j|j|j|j|j|jd|_d}tj5tj5d}tjdddtjdddy#1swYxYw#1swY2xYw#1swYyxYw)NctyrBwriter_non_existingr&r rwriter_closezIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closer7r r=cyrBr&r&r rrzEBufferedRWPairTest.test_writer_close_error_on_close.<locals>.<lambda>rr )rkrrrr
rrrrrrrrr)r>r>rhrrrs      r test_writer_close_error_on_closez3BufferedRWPairTest.test_writer_close_error_on_closes&	 !!#wwvv&


y
)	SJJL	

+S-?@%

&'$
/
/
1	!335
%""$
%
 	!	!		
%
%	!	!s0E?E(E+E(EE%	!E((E1cd}d}|j}||_|j}||_|j||}|jt5}|jddd|jdt
j|j|jjt|jdt
|jj|j|j|j|j|j|jd|_d|_y#1swYxYw)NctyrBr4r&r rr6zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closer7r ctyrBr<r&r rr>zPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closer7r r5r=cyrBr&r&r rrzLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>rr cyrBr&r&r rrzLBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.<lambda>rr )rkrrrr
rrrrrrr)r>r6r>rhrrrs       r'test_reader_writer_close_error_on_closez:BufferedRWPairTest.test_reader_writer_close_error_on_closes	 	 !#!#wwvv&


y
)	SJJL	

+S-?@cmm77C

+S1J1J-KL%''$#		sEEc
Gddt}|j|d|d}|j|j|j|d|d}|j	|j|j|d|d}|j	|j|j|d|d}|j	|jy)NceZdZdZdZy)8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttyc<tj|||_yrB)rkr@_isatty)r>isattys  rr@zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__s""4(%r c|jSrB)rKrHs rrLz?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattys||#r N)r#r$r%r@rLr&r rSelectableIsAttyrIs
&
$r rNFT)rkrrrLr)r>rNrs   rtest_isattyzBufferedRWPairTest.test_isattys	$y	$ww'.0@0GH'ww'-/?/FG
&ww'.0@0FG
&ww'-/?/EF
&r c|j|j|j}tj|}d}d}yrB)rrkrr)r>brwrs   rtest_weakref_clearingz(BufferedRWPairTest.test_weakref_clearings8ggdnn&(89kk#r N)r#r$r%r)r.rrrr r1rNr6r;rr(r*r-r/r1r9r@rFrOrRr&r rr	r	so&-B?MN2D/8
;/))*%$"!4$.'*r r	c$eZdZejZy)CBufferedRWPairTestN)r#r$r%rr.rr&r rrTrTs
			Br rTc$eZdZejZy)PyBufferedRWPairTestN)r#r$r%rr.rr&r rrVrVrr rVceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZy)BufferedRandomTestrb+zwb+cXtj|tj|yrB)r$r)rrHs rr)z#BufferedRandomTest.test_constructors++D1++D1r cXtj|tj|yrB)r$r.rrHs rr.z%BufferedRandomTest.test_uninitialized--d3--d3r c|jd}|j|d}|jd|jd|j	d|j	d|j|j|jd|j|jd|jd	y)
N)asdfghjkrQasrysdddseeer_sdddeeer)rkrrrorErr;r>rrAs   rtest_read_and_writez&BufferedRandomTest.test_read_and_write	snn/0
WWS!_
+

))*"''),C$4$4Q$78r c|jd}|j|}|jd|jd|jd|j	|jdd|jd|jd|j
d|jdd|jd|j|jd	|j	|jd
d|jd|j	|jdd|jd
|j	|jd|jd|j|jd|j|jt|j
dy)Ns	asdfghjklr`ryrr^rds123fs	asdf123flrrr\rcsflr)r+rrrorYrVrErrzrrras   rtest_seek_and_tellz%BufferedRandomTest.test_seek_and_tell	sHll<(
WWS\
+BGGI&
1
"''!*-

1
rwwy1BGGI&
ABGGI&
1
BGGI&,

s||~6)RWWc2r cZ|jd}|j|}|jd||d|jd|jd||d|jd|j	|j|jd|j	|jd|||j
dd|jd	|j|j
dd|jd	||d
y)NrPrryr}rrrrsXYZr)r+rrrErYrrV)r>	read_funcrrs    rcheck_flush_and_readz'BufferedRandomTest.check_flush_and_read"	sll<(	% 34
E	% 34EJJL)

EJJL)5!12A		&



1a5!!45r c(|jdy)Nc |j|SrB)ro)rrs  rrz8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>5	szuzz47Hr rirHs rtest_flush_and_readz&BufferedRandomTest.test_flush_and_read4	s!!"HIr c.dd}|j|y)Ncdt|dk\r|nd}|j|}t|d|S)Nr')rrarrr`r(s   r	_readintoz=BufferedRandomTest.test_flush_and_readinto.<locals>._readinto8	s2qAv!40Aq!A2A<r rrl)r>rrs  rtest_flush_and_readintoz*BufferedRandomTest.test_flush_and_readinto7	s	 	
!!),r c.dd}|j|y)Ncr|j|}|dk7r|d|}|jt|d|SNrr\)r?rVrrqs   r_peekz5BufferedRandomTest.test_flush_and_peek.<locals>._peek?	s:

1
ABwbqEJJs1vq!Hr rsrlr>rxs  rtest_flush_and_peekz&BufferedRandomTest.test_flush_and_peek>	s		
!!%(r cp|jd}|j|}|jd|j|jd|j|j	dd|jd|j
|jd|jy)NrP123s45rs	12345fghi)r+rrErrVrrzrors   rtest_flush_and_writez'BufferedRandomTest.test_flush_and_writeI	sll<(
F


E



1as||~6uzz|4r cXtj|tj|yrB)r$rurrHs rruzBufferedRandomTest.test_threadsU	s''-''-r cTd}|j|d}|j|y)Nc&|jdyr)r?rs rrxz6BufferedRandomTest.test_writes_and_peek.<locals>._peekZ	s
JJqMr c|j}|jdd|jd|j|dy)Nrr\r)rYrVr?rs  rrxz6BufferedRandomTest.test_writes_and_peek.<locals>._peek]	s4**,CJJr1JJqMJJsAr rrys  rtest_writes_and_peekz'BufferedRandomTest.test_writes_and_peekY	s*	% 	
	
% r c,d}|j|y)NcJ|jdd|jdyrw)rVrors r_readz7BufferedRandomTest.test_writes_and_reads.<locals>._reade	sJJr1JJqMr rr>rs  rtest_writes_and_readsz(BufferedRandomTest.test_writes_and_readsd	s		
% r c,d}|j|y)NcJ|jdd|jdyrw)rVrBrs r_read1z9BufferedRandomTest.test_writes_and_read1s.<locals>._read1k	sJJr1KKNr r)r>rs  rtest_writes_and_read1sz)BufferedRandomTest.test_writes_and_read1sj	s		
&!r c,d}|j|y)Nc\|jdd|jtdyrw)rVrarrs rrz;BufferedRandomTest.test_writes_and_readintos.<locals>._readq	s JJr1NN9Q<(r rrs  rtest_writes_and_readintosz,BufferedRandomTest.test_writes_and_readintosp	s	)	
% r cdD]}|jd}|j|d}|j|jdd|j|j	d|jd|z|j|j	|dz|j
|j|j	|dz|j}|j|dd|zzdd|z
zzy)N)r\rrrdr\ABr)r+rrrorYrErrz)r>overwrite_sizerrrs     rtest_write_after_readaheadz-BufferedRandomTest.test_write_after_readaheadv	s%	LN,,y)CGGCOEUZZ]D1UZZ\1-KK~-.UZZ\>A+=>
KKMUZZ\>A+=>AQtn,,tq>7I/JJ
L	Lr c	fd}d}tdt|D]}t|t|D]z}|j|}|j|d}|||||j	t|}d||<d||<|j
|j|d||fz|y)Nc|j||j||z
|jd|j||jdy)N)rVrorE)rpos1pos2s   rmutatez:BufferedRandomTest.test_write_rewind_write.<locals>.mutate	sF
JJtJJtd{#KK 
JJtKK r srrryr\zfailed result for i=%d, j=%d)rrr+rrrrrz)r>rr(rjrrexpecteds        rtest_write_rewind_writez*BufferedRandomTest.test_write_rewind_write	s		!
$q#a&!
	JA1c!f%	
Jll1oS)ua#
$Q<  !?1a&!HJ	
J
	Jr cN|jd}|j|d}|j|jdd|j|j	d|j|jdd|j|j	dy)NrrrysAAsBBrd)r+rrrorcrErs   r!test_truncate_after_read_or_writez4BufferedRandomTest.test_truncate_after_read_or_write	sll9%S!A.)1-U+Q/)1-r cXtj|tj|yrB)r$ryrrHs rryz%BufferedRandomTest.test_misbehaved_io	r\r cH|jd5}|j|d5}|jd|j|j	dd|jd|j|jdd|jdt
d}|j||j|d	|jd
|j|jdd|j|j|jddddddd|jd
5}|j|d5}|j|j	dd|jd|j|j	dd|j|j|jdddddddy#1swYxYw#1swYxYw#1swY*xYw#1swYyxYw)Nsabcdefghr1r\r42rrCf4rs1b2d3f4hrr3rsa2c)r+rrErrorBrrar?rrz)r>rr2r^s    rtest_interleaved_read_writez.BufferedRandomTest.test_interleaved_read_write	s
\\+
&
	>#c"
>a
  D1
  T2
l

3  d+
  D1	  =
>
	>\\&
!	9Sc"
9a  D1
  D1	  8
9	9	9
>
>
	>
	> 
9
9	9	9sHHDG4+HHBH#H4G=	9HH	H	HH!c"|jd5}|j|5}|jd|j|j	d|jd|j|j	d|jd|j|j	d|j|j|j
dddddddy#1swYxYw#1swYyxYw)	Ns
ab
cdef
g
rsb
rrbrC
s
1b
2def
3
)r+rrErr
rrz)r>rr2s   rtest_interleaved_readline_writez2BufferedRandomTest.test_interleaved_readline_write	s
\\*
+		Cs
C
  v6
  x8
  u5	  1AB
C		C		C
C
C		C		Cs#DCC9(D9D	>DDN)r#r$r%rorr)r.rbrfrirmrtrzr}rurrrrrrrryrrrrr&r rrXrXsIJ24	93.6$J-	)
5.	!!"!L(J4.492
CO"&r rXcReZdZejZeddddZdZdZ	y)CBufferedRandomTestTrrctj|tjdkDr]|j	}|j|}|j
tttf|j|tjyyr)rXr)rKrrkrrrrrr@rs   rr)z$CBufferedRandomTest.test_constructor	rr cXtj|tj|yrB)rrrrHs rrz+CBufferedRandomTest.test_garbage_collection	s33D933D9r c|jtd5|j|jddddddy#1swYyxYw)Nr*r&rrHs rrz#CBufferedRandomTest.test_args_error	rrN)
r#r$r%rr*rrr)rrr&r rrr	s:			BdD;GH4H4:6r rc$eZdZejZy)PyBufferedRandomTestN)r#r$r%rr*rr&r rrr	rr rcBeZdZdZddZdZdZdZdZddZ	d	Z
dZy
)
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.
    cdtjj|||jyrB)codecsIncrementalDecoderr@reset)r>rhs  rr@z#StatefulIncrementalDecoder.__init__
s!!!**48

r cdt|zS)Nz<SID %x>)idrHs r__repr__z#StatefulIncrementalDecoder.__repr__
sBtH$$r c>d|_d|_t|_yr)rorrrHs rrz StatefulIncrementalDecoder.reset
skr cx|jdz|jdz}}t|j|dz|zfS)Nr\r)rrrr)r>rrs   rgetstatez#StatefulIncrementalDecoder.getstate#
s7vvz466A:1T[[!1S519,,r cv|\}}t||_t|d\}}|dz|dzc|_|_y)Nrr\)rrdivmodrr)r>staterrrrs      rsetstatez#StatefulIncrementalDecoder.setstate'
s=
'b#1QAr Fcd}|D]}|jdk(rK|tdk(r!|js-||jz
}A|jj	|]|jj	|t|j|jk(s||jz
}|r|jr||jz
}|S)Nrr.)rordrprocess_wordrCr)r>inputfinaloutputr(s     rdecodez!StatefulIncrementalDecoder.decode-
s
	2Avv{C={{$"3"3"55KK&&q)""1%t{{#tvv-d//11F
	2T[[d''))F
r cd}|jdtdk(r,tdt|jddxsd|_n|jdtdk(r,tdt|jddxsd|_ne|jj
d}t||j
kr|d|j
zz
}|j
r|d|j
}|d	z
}t|_|S)
Nrrrcr\rr5-r)	rrraintrrrrr)r>rs  rrz'StatefulIncrementalDecoder.process_word>
s;;q>SX%SQR!5A67DF
[[^s3x
'SQR!5A67DF[[''0F6{TVV##dff*$vvcMFk
r N)strictrv)r#r$r%rdr@rrrrrrcodecEnabledr&r rrr
s1"%"
-&" Lr rc	tjrE|dk(r?tjd}tjd|j
ddddtSyy)Ntest_decoderr,)r&encoderincrementalencoderstreamreaderstreamwriterincrementaldecoder)rrrlookup	CodecInfor)r&latin1s  rlookupTestDecoderrS
sR!..4>3Iy)

d#D9	;	;4J.r ceZdZdZgdZdZy)StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    ))rXFza.b.c.d.)oiabcdTabcd.)soi...abcd...Tr)si.o6.x.xyz.toolongtofit.Fzx-----.xyz---.toolon.)s
i.i2.o6xyzTzxy----.z-----.)si.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 |jD]2\}}}t}|j|j|||4t}|j|jdd|j|jdddy)Nrrr r\r)
test_casesrrr)r>reofrrs     rrz+StatefulIncrementalDecoderTest.test_decoder}
s}"&//	;E3*,AQXXeS16:	;

'(),b1#q)73r N)r#r$r%rdrrr&r rrr]
sJ6	4r rc\eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jej j"ddZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%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/Z5e6jne8jrd0Z:d1Z;d2Z<d3Z=d4Z>d5Z?d6Z@d7ZAd8ZBd9ZCd:ZDd;ZEd<ZFd=ZGd>ZHd?ZId@ZJdAZKdBZLdCZMdDZNdEZOdFZPdGZQdHZRdIZSdJZTyK)LTextIOWrapperTestcd|_djd|_tjtj
t
jt|jtjty)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r5)testdatar
normalizedrrrrregisterrr
unregisterrHs rrzTextIOWrapperTest.setUp
sQ:
6==gF))*)*))+<=r cJtjtjyrBrrHs rrzTextIOWrapperTest.tearDown
rr cp|jd}|j|d}|j|d}|j|dd|j	|j
d|j	|jd|j|dd	
|j	|j
d|j	|jd	|j	d|j|jt|j|dd|jt|j|dd
y)Né

rbrr-r,
r8FT)r.line_bufferingé
rMr)r+r#r7r@rr.rr
rrrr>r+r(rs    rr)z"TextIOWrapperTest.test_constructor
sLL)4(q73	

1y&
9Y/))51	

1wt
<W-))401::<0)QZZWbQ*ajj!gwWr c|jj|j}~|jj|j}|jtt||jttfd|jd|j|jd|j|jddy)Nr,rrr-r)r7r-rrfrrOrrror@rkrr>rs  rr.z$TextIOWrapperTest.test_uninitialized
s&&t'9'9:
&&t'9'9:)T1-
N;? vvq	*	


4>>#g
6B'r c|j}|j|}|jtd5|j	|ddddy#1swYyxYw)Nzis not a text encodinghexr-)r+r'rOLookupErrorr7)r>r+r(s   r*test_non_text_encoding_codecs_are_rejectedz<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejected
sX
LLN"

#
#K1I
J	2q51	2	2	2sAAc|j}|j|}|j|d}|j|j	||j|d}|jd|j
|j|j	|j|jd|jt|jt||j|jd|j|jd|j
|j|j
|jy)Nr5r-howdyshowdyr)r+r'r7rrrErrzrrrrr.rhr
write_throughrs    rrzTextIOWrapperTest.test_detach
sLLN"q73

ahhj!$q73	&	
x0*ahh/	
QW-8,))*)r c|jdjd}|j|}|j|d}|jj}|jt
|d|zd|_|jt
|d|zd|_|jt
|d|zd	|_|jt
|d
|z|jjt
|y)Nhellorr-z'<(%s\.)?TextIOWrapper encoding='utf-8'>rz4<(%s\.)?TextIOWrapper name='dummy' encoding='utf-8'>r+z=<(%s\.)?TextIOWrapper name='dummy' mode='r' encoding='utf-8'>rz><(%s\.)?TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r+rr#r7r$rrr&moderr)r>rr(rmodnames     rrzTextIOWrapperTest.test_repr
sll7>>'23$q73$$//aCgM	OaPSZZ	\aY\cc	eaZ]dd	f	
Qr c|j}|j|d}tj|d|5	t	|dddy#t
$rYwxYw#1swYyxYw)Nrr-r&)r+r7rrrrr>rrs   rrz%TextIOWrapperTest.test_recursive_repr
snllnsW5


sFA
.	
Q		 

		s(A A	AA AA  A)c|j}|j|d}|j|ddd}|jd|j	|jd|jd|j	|jd	|jd
|j	|jdy)Nrbr
Tr.r9rXr zY
ZsXY
ZzA
BsXY
ZA
B)r+r'r7rErrzrs    rtest_line_bufferingz%TextIOWrapperTest.test_line_buffering
sLLN4(q7DQUV	s+	x0	|4r c|j}|j|d}|j|ddd}|jd|j	|jd|j
d	|j	|jd
|jd|j	|jd|jd
|j	|jd|j
d	|j	|jd|jd|j	|jd|j
|j
d	|j	|jd|j
d	|j
|j
d	|j	|jdy)NrbrrFrzAB
Cr T)rsAB
CzDEF
Gs	AB
CDEF
GHs
AB
CDEF
GHIJ)r+r'r7rErrzreconfigurerrs    rtest_reconfigure_line_bufferingz1TextIOWrapperTest.test_reconfigure_line_buffering
sqLLN4(q7DQVW	s+	

T
*x0	~6	~6	

U
+7	
7	


	

T
*))51	

T
*	

	

T
*))40r zutf-8 mode is enabledcttj}	dD]&}|tjvstj|=(tj}|j}t
j5t
jdt|j|}ddd|jj|tjjtjj|y#1swYcxYw#tjjtjj|wxYw)N)LC_ALLLANGLC_CTYPErS)rrenvironlocalegetencodingr+rTrUrVEncodingWarningr7rr.clearupdate)r>old_environkeycurrent_locale_encodingr(rs      rtest_default_encodingz'TextIOWrapperTest.test_default_encodings2::&	+6
("**$

3
('-&8&8&:#A((*
*%%h@&&q)
*
QZZ)@AJJJJk*

*
*

JJJJk*s)DAD>,D*$DDD?Ec|j}|j|d}|j|jdt	j
5t	jdt|j|}ddd|j|jtj|jy#1swYDxYw)Nrr-rS)r+r7rr.rTrUrVrassertIsNotNonerrr>r(rs   r
test_encodingzTextIOWrapperTest.test_encoding#sLLNq73W-

$
$
&	&!!(O<""1%A	&	
QZZ(

ajj!		&	&s,CCc*|jd}|j|d}|jt|j|jd}|j|dd}|jt|j|jd}|j|dd}|j|j	d|jd}|j|dd}|j|j	d	y)
Nsabc

r5r-rr.rhrSzabc

replaceuabc
�
)r+r7rUnicodeErrorrorrs   rtest_encoding_errors_readingz.TextIOWrapperTest.test_encoding_errors_reading.sLL(q73,/LL(q78D,/LL(q78D9-LL(q79E?3r c|j}|j|d}|jt|jd|j}|j|dd}|jt|jd|j}|j|ddd}|j	d	|j|j
|jd
|j}|j|ddd}|j	d	|j|j
|jdy)
Nr5r-ÿrrrSr)r.rhr9u	abcÿdef
sabcdef
rsabc?def
)r+r7rrrErrrzrs   rtest_encoding_errors_writingz.TextIOWrapperTest.test_encoding_errors_writing@sLLNq73,8LLNq78D,8LLNq78%)

+			{3LLNq79%)

+			|4r c
gd}dgdgd|gdgdgdddggd	gd
gg}d}|D]4}tdj|j|}dD]}td
dD]}|D]\}}	|j	|j||}
|j
|
||}|rXg}	|jd}
|
dk(rnI|jt|
d|j|
|jzUt|}t||	D]\}}|j|||jt|t|	7y)N)unix
	windows
zos9
last
nonl)r$zwindows
zos9
r&r'rr)r$r%z	os9
last
r'rzunix
windows
z
os9
last
nonl
)z
unix
windows
z
os9
z	last
nonl)rr,utf-16	utf-16-le	utf-16-beutf-32	utf-32-le	utf-32-be)FTr\rr9r.ry)rrrrr#r+r7rorrrCr
r9zip)r>input_linesrN	encodingsr.rdo_readsrr9	exp_linesrtextio	got_linesc2got_lineexp_lines                r
test_newlineszTextIOWrapperTest.test_newlinesXsLHJ+FH+->@BBD

	"	IH-44X>?D)
I$Q|IG.3I* $ 3 3DLL4F P!%!3!3E7;C"4"E#(*I"&%+[[^#%8$) $ 0 0R! < ) 0 0foo6G1G H#')-VI25i2KA.Hh ,,Xx@A((YYH#II
I	Ir cd}|jddjdd}d|jdjdfd|jdjdfd	gd
fdgdfd
gdffD]\}}|j|}|j	|d|}|j|j
||jd|j|jdj|y)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
r
r5T)keependsrr)zAAA
zBBB
z
CCC
DDD
EEE
FFF
GGGr)zAAA
BBB
CCC
DDD
EEE
r>r?r()z
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGGr8r)
rr
splitlinesr+r7rrwrVror)r>rrr9rr^txts       rtest_newlines_inputz%TextIOWrapperTest.test_newlines_inputs?%%gu5==eUK

:$$W-88$8GH
)44d4CD
PQ
JK
QR"	<GX,,x(C$$S7G$LCS]]_h7HHQKSXXZ):;	<r cddddd}d|tjfgt|jz}|D]\}}|j	}|j|d|}|j
d|j
d|j
d	|j|j|jd
|j|j|y)NsAAA
BBB
CCC
X
Y
ZsAAA
BBB
CCC
X
Y

ZsAAA
BBB
CCC
X
Y

Z)rrr(rr5r8zAAA
BzBB
CCC
zX
Y
ZF)rlinesepsortedrr+r7rErrrrz)r>testdictrNr9rr^rAs       rtest_newlines_outputz&TextIOWrapperTest.test_newlines_outputs+--7	,-.8H1II!&	7GX,,.C$$S7G$LCIIhIIk"IIk"IIKSZZ/S\\^X6	7r cg|jGfdd}|}|j|d}|jd~tj|jdgy)NceZdZfdZy)4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOcfj|jj|yrB)rCrzr)r>rrrs rrz:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closes!)

4 r Nr)rrrsr	MyBytesIOrJs
!r rLr5r-rr)r+r7rErrr)r>rLr(rrrrs    @@rrz!TextIOWrapperTest.test_destructorsg||	!	!
Kq73	
&1%r cgGfdd|j}|j}||d}~tj|j	gdy)Nc:eZdZfdZfdZfdZxZS)<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOcjjd	t|}|y#t$rYywxYwrrrs  rrzDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__rrcDjdt|	yrxrrs rrzBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closerr cDjdt|	yrrrs rrzBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flushrr rrs@rMyTextIOrOrr rSr5r-r)r7r+rrr)r>rSr(rrs    @rrz*TextIOWrapperTest.test_override_destructorsR	 t))	 
LLNQ)
+r c|j}tj5}|jt5|j|djdddts|j|jn6|j*|j|jjtdddy#1swYjxYw#1swYyxYw)Nrr-)
rrrrrr7rrrrrrrrs   rrz/TextIOWrapperTest.test_error_through_destructors##%

/
/
1	BR"">2
B""57";AA
B+!!"--0*  !7!7A	B	B
B
B	B	Bs#CCA CC	CCcjdD]}dD]}|jtjd|}||_|j	|jdd|j
|jtjd|}||_|j	|jd|j	|jd|j}|j	|jdd|j	|jdd|jd|j	|jd	d
|j	|jdd|j	|jdd
|j	|jd
|j	|j||j	|jdd|j	|jdd	||j	|jdd|j	|j|||j	|jd|jdr|j|||j
y)N)r\ryrrdrrr' !?@A)r5r,rw+r-rrr+rryrr\rtrdefutf)r/rrr1rrErrYrorVrMmulti_line_test)r>	chunksizeencr2cookies     r
test_basic_iozTextIOWrapperTest.test_basic_iosL	I2
IIi..sIC )
  3	IIi..sIC )
  1-  51  A.  u5q	  D1  C0  B/  2.  62  A.  1v6  3  8  51>>%(((C0	3
	r c	|jd|jd}g}dD]z}g}t|D]"}|j||t	|z$dj|dz}|j|j
|f|j|||jdg}		|j
}
|j}|sn|	j|
|f7|j|	|y)Nru	sÿ࿿￿)rr\ryrrdrrWrXrY>rZr[r\rbrr)
rVrcrrCrrrYrEr
r)r>r2rcsamplewlinesrAcharsrlinerlinesrs           rraz!TextIOWrapperTest.multi_line_tests	q		

$L	DE4[
6VAFO45
6775>D(DMM1668T*+
GGDM
		
q	&&(C::<DMM3+&	
(r cB|jtjdd}|j}|j	d|j}|j	d|j}|jd|j
|j||j
|jd|j
|j||j
|jd|j
|j||jd|D]4}|j
|d|jt|j6|j
|j||jy)Nr]rr-uÿ
r)r/rrrYrErVrr
rrr)r>r2p0p1p2rls      rtest_tellingzTextIOWrapperTest.test_tellings-IIi&&wI?
VVX	
VVX	
VVX	q	2&x02&x02&	q		/DT8,gqvv.	/	
2&		r ct}|dz
}d|z}t|jd}|jt	|t	|d}t|jd}||z}|jtjd5}|j|dzddd|jtjdd5}|j|}	|j|	t|d|j|j||j|j|dddy#1swYxYw#1swYyxYw)	Nryrr袈
rr+r-r5)
r3rrrrr/rrrErorrYr
)
r>
chunk_sizeprefix_sizeu_prefixprefixu_suffixsuffixrlr2rs
          rtest_seekingzTextIOWrapperTest.test_seekings((*
 1n$xw/0XF4xw/0
YYy''
.	!
GGDFO	
YYy''wY
?	51{#AQFG 45QVVX{3QZZ\84		5	5			5	5sE
A.E
EEchd}|jtjd5}|j|ddd|jtjdd5}|jd|_|j|j
dddy#1swYhxYw#1swYyxYw)Ns࿿
rr+rr-ry)r/rrrEr1r
rY)r>rr2s   rtest_seeking_tooz"TextIOWrapperTest.test_seeking_too0s 
YYy''
.	!
GGDM	
YYy''wY
?	1
MMAM
JJL
FFH							sB4B(B%(B1c,ddfd	}dt_	tjD]\}}}||tjD]-\}}}t	|dzz
}d|z}|dz}|||z|/	dt_y#dt_wxYw)Nrc	jtjd}|j||j	jtjd}|_|j
}|j	t|t|dzD]}ddt||z
fD]}jtjd}j|j
||d||j}j|j
|||||z|j|j|j
||d|j	y)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.rrr-r\rN)r/rrrErr1rorrrrYrV)	rmin_posr2decodedrrrd
CHUNK_SIZEr>s	       rtest_seek_and_tell_with_datazJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_data@s4		)**D1A
GGDM
GGI		)**^	DA&AMffhG
GGI7CL1$45
QGq 01A		)"2"2^	LA$$QVVAY<VVXF$$QVVAY!a%0@AFF6N$$QVVXwqr{;GGI
r r\ry.r)rrrrr)r>rrroffsetrxrrs`      @rrfz$TextIOWrapperTest.test_seek_and_tell;s
	,34"/	8=HH
4q!,U3
4 >HH
Fq!#c%j!m3f (,Ve^WE
F78&3a&3sA!B
BcP|jtjdd}|jd|j	|jtjdd}|j|j
d|j}|j|j
d|j}|j||j|j
d|j|j||j	y)Nreuc_jpr-u
AB
うえ
r+zAB
uうえ
)	r/rrrErrr
rYrV)r>r2rorps    rtest_multibyte_seek_and_tellz.TextIOWrapperTest.test_multibyte_seek_and_telljsIIi&&hI?	$%		IIi&&hI?v.
VVX'78
VVX	r
'782&		r c|jtjdd}|jd|j	}|jd|j||jd|j
|jtjdd}|j|jd|j
y)	Nreuc_jis_2004r-uæ̀æùr+uæ̀̀)	r/rrrErYrVrrr
)r>r2ros   rtest_seek_with_encoder_statez.TextIOWrapperTest.test_seek_with_encoder_stateysIIi&&nIE	
VVX		r
			IIi&&nIE';<		r cd}d}|D]}|j}|j||}|j||j||jd|j	|j|dz|jd|j	|j|dz|j	|j
|dzj|y)N
1234567890)r)r*r+r,r-r.r-rry)r+r7rErVrrorzr)r>rrNr.r^r2s      rtest_encoded_writesz%TextIOWrapperTest.test_encoded_writess
	JH,,.C""3":A
GGDM
GGDM
FF1IQVVXtax0
FF1IQVVXtax0S\\^dQh->->x-HI
	Jr cGdd|j}|j|d}|jt|jy)NceZdZdZy)5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecyrr&rHs rrPz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readablerr Nrr&r r
UnReadablerrr rrr-)r+r7rrro)r>rrAs   rtest_unreadablez!TextIOWrapperTest.test_unreadables?		   @'388,r c|j|jdd}d}	|jd}|sn||z
}|j|dy)NsAA
BBrr-rr\zAA
BBr7r+rorr>rAreadsrts    rtest_read_one_by_onez&TextIOWrapperTest.test_read_one_by_ones[  k!:W MAQJE	
	
)r c\|j|jdd}|j|jgd|j	d|j|jdgd|j	d|j|jdddgy)	NsAA
BB
CCrr-)AA
BB
CCrrrr)r7r+rrwrVr>rAs  rrNz TextIOWrapperTest.test_readliness  m!<w O*@At,.DEq)FF+;<r c|j|jdd}d}	|jd}|sn||z
}|j|dy)NsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brr-rrzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Brrs    rtest_read_by_chunkz$TextIOWrapperTest.test_read_by_chunks\  .C!Dw W
AQJE	
	

.r cgd}|j}|j|d}|j||j|j	|jdyN)rcdefrr-r)r+r7rrrrzr>rrr^rAs    rrz!TextIOWrapperTest.test_writelinessRlln  w 7q		3r ctgd}|j}|j|d}|j||j	|j|j
dyr)rr+r7rrrrzrs    rrz*TextIOWrapperTest.test_writelines_userlistsX'(lln  w 7q		3r c|j|jd}|jt|jgd|jt|jd|jt|jdy)Nrr-rr)r7r+rrrrs  rrz'TextIOWrapperTest.test_writelines_errors_  ' B)S^^Y?)S^^T:)S^^V<r c|j|j|jd}d}	|jd}|sn||z
}|j	||j
y)Nr5r-rr\)r7r+rrorrrs    rtest_issue1395_1z"TextIOWrapperTest.test_issue1395_1se  dmm!<w OAQJE	
	
0r c|j|j|jd}d|_d}	|j	d}|sn||z
}|j||jy)Nr5r-rdrr7r+rr1rorrrs    rtest_issue1395_2z"TextIOWrapperTest.test_issue1395_2sj  dmm!<w OAQJE	
	
0r c^|j|j|jd}d|_|j	d}||j	dz
}||jz
}||jz
}||jz
}|j
||jyNr5r-rd)r7r+rr1ror
rrr>rArs   rtest_issue1395_3z"TextIOWrapperTest.test_issue1395_3s  dmm!<w O
!


0r c|j|j|jd}d|_|j	d}||j	z
}|j||jyrrrs   rtest_issue1395_4z"TextIOWrapperTest.test_issue1395_4s\  dmm!<w O
0r c2|j|j|jd}d|_|j	d}|j}|j
d|j
||j|j	ddy)Nr5r-rdrzBBB
)r7r+rr1rorYrVr)r>rArrs    rtest_issue1395_5z"TextIOWrapperTest.test_issue1395_5
sq  dmm!<w Ohhj
!g.r c|j|j}|j|d}|j|j	|j	yNr5r-)r+rr7rrR)r>rrAs   rtest_issue2282z TextIOWrapperTest.test_issue2282

sFdmm,  ' :*CLLN;r ctj}dD]}|j|d|5}|jd|j	}ddd|j|d5}|j|j
dj|ddd|j|d|5}|jdddd|j|d5}|j|j
dj|dddy#1swYxYw#1swYxYw#1swYoxYw#1swY6xYw)	N	utf-8-sigr)r,rr-aaarrxxxaaaxxx)rrr/rErYrrorr>filenamecharsetr2rs     rtest_append_bomz!TextIOWrapperTest.test_append_bom
s+##8
	EG8S7;
qffh
8T*
Ba  5<<+@A
B8S7;
q
8T*
Ea  8??7+CD
E
E
	E


B
B


E
Es/"D'0D'3D30D?D$	'D0	3D<	?E		cNtj}dD]}|j|d|5}|jd|j	}ddd|j|d|5}|j|jd|jd|jdddd|j|d	5}|j
|jd
j|dddy#1swYxYw#1swYbxYw#1swYxYw)Nrrr-rr^zzzrbbbrbbbzzz)	rrr/rErYrVrrorrs     r
test_seek_bomzTextIOWrapperTest.test_seek_bom
s##8
	EG8S7;
qffh
8TG<
sq		

8T*
Ea  8??7+CD
E
E
	E





E
Es$"D(AD0DD	D	D$	c tj}dD]}|j|d|5}|jdddd|j|d|5}|j	d|j	d|j
|jdddd|j|d5}|j
|jd	j|dddy#1swYxYw#1swYbxYw#1swYxYw)
Nrrr-rrrrrr)	rrr/rErVr
rror)r>rrr2s    rtest_seek_append_bomz&TextIOWrapperTest.test_seek_append_bom.
s##8	EG8S7;
q
8S7;
qq	q$--(
8T*
Ea  8??7+CD
E
E	E




E
Es#C,?C810D,C5	8D	D
	cR|jtjdd5}|j|jdddd|jtjddd5}|j|jddddy#1swYRxYw#1swYyxYw)Nrrr-rrr)r/rrrrhrs  rtest_errors_propertyz&TextIOWrapperTest.test_errors_property;
s
YYy''wY
?	11QXXx0	1
YYy''wyY
Q	2UVQXXy1	2	2	1	1	2	2sB+BBB&ctj|jtjddd5fd}tdDcgc]}tj||f}}tj|j5tjddddddd|jtjd	5j}tdD]&}|j|jd
|zd(	dddycc}w#1swYxYw#1swYxYw#1swYyxYw)Nrrr\r1cRd|z}jj|y)NThread%03d
)rrE)r`texteventr2s  rrunz1TextIOWrapperTest.test_threads_write.<locals>.runG
s!%)


r rrrkr-r)rrr/rrrrr
rprrrrorr)r>rrrscontentr`rr2s      @@rtest_threads_writez$TextIOWrapperTest.test_threads_writeA
s+!
YYy''w!Y
L	!PQ

!&b	+!''s!>+G+!//C
!

4 
!	!YYy'''Y
:	GaffhG2Y
G  ~/A!BAF
G	G	G	+
!
!	!	!	G	GsBD6D%-"D6D*%D6AE%D6*D3	/D66D?Ec|j|j|jdgfd}|_|j	t
j|jj|jjj|j|jd|jdd_y)Nr5r-cbjjjgddtrB)rrr)rrAsrrz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushY
s&SZZ%6%67F1I)Or rr\cyrBr&r&r rrz=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>c
rr )r7r+rrrrrrrrr)r>rrrAs  @@rrz+TextIOWrapperTest.test_flush_error_on_closeT
s  dmm!<w O		'399-

#

))*## 	r cR|j|j}d}d}||_|j|d}||_|jt5}|jddd|jjjd|j|jjt|j|jjjd|j|jd|_d|_y#1swYxYw)	Nctdrrsr&r rrz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushg
rr ctdrrsr&r rrz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closei
rr r5r-rrcyrBr&r&r rrz=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>v
rr cyrBr&r&r rrz=TextIOWrapperTest.test_close_error_on_close.<locals>.<lambda>w
rr )r+rrr7rrrrrrrrrrr>rrrrArs      rrz+TextIOWrapperTest.test_close_error_on_closee
sdmm,	#	#   ' :	


w
'	3IIK	++Z8cmm77A2277D$$ 			sDD&cN|j|j}d}d}||_|j|d}||_|jt5}|jddd|jdtj|j|jjt|jdt|jj|j|jd|_d|_y#1swYxYw)	NctrBrr&r rrzLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flush|
rr ctrBrr&r rrzLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_close~
rr r5r-rrcyrBr&r&r rrzKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>
rr cyrBr&r&r rrzKTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.<lambda>
rr )r+rrr7rrr
rrrrrrrrs      rrz9TextIOWrapperTest.test_nonnormalized_close_error_on_closey
sdmm,	%	%   ' :	


y
)	SIIK	

*C

,>?cmm77C

*C

0I0I,JK$$ 			sDD$c|j|j|jd}|j|j|j|j	t
|jyr)r7r+rrrrrrs  rrz"TextIOWrapperTest.test_multi_close
sS  dmm!<w O						*cii0r c|j|j|jd}|j|j|j
|j|j|jdy)Nrr-r)r7rrrrrYrVrs  rrz!TextIOWrapperTest.test_unseekable
s]  !6!6t}}!EPW X$33SXX>$33SXXqAr c|j|j|jd}|j|j}|jt5||_dddy#1swYyxYwr)r7r+rrrr)r>rAr^s   rrz*TextIOWrapperTest.test_readonly_attributes
s`  dmm!<w Oll4==)


~
.	CJ			sA..A7c|jgd}|j|dd}|j|jdd|j|j	d|jt|dd	gy)
Nrrsghi
jkl
opq
r5rr8rdabcdzefghi
zjkl
zopq
)rkr7rror
r9r>rrAs   r
test_rawiozTextIOWrapperTest.test_rawio
sqnnAB  w E!f-3cWg$67r c|jgd}|j|ddd}|jd|jd|jd|jd	j	|j
d
y)Nrr5rT)r.r9r1z23
45r s123
45)rkr7rErrr;rs   rtest_rawio_write_throughz*TextIOWrapperTest.test_rawio_write_through
spnnAB  w/3!5		#		'		##"2"23Z@r cggcGfdd|j}|j}d}||t|dz}|j|dd}|j	d}|j||j
|j|j|jdg|j|d	z|j|j|j|d
zy)Nc.eZdZfdZfdZxZS)BTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWritercDjdt||i|SrGr)r>rrr{flush_calleds   rrzHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flush
%##D)w}d5f55r cDjdt||i|SrG)rCrzrE)r>rrr{write_calleds   rrEzHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write
rr )r#r$r%rrEr)r{rrs@rr'r
s
6
6
6r r'r3ryr5T)r.rr rre)
r'r+rr7rrErrrrz)	r>r'rrrr5rrrs	       @@rtest_bufio_write_throughz*TextIOWrapperTest.test_bufio_write_through
s&("l	6T00	6uc$ik2##EG26$8{{7#T	
&%)3/TBY%)4"95r c|jg}|j|dd}|jd|jd|j	|j
d|j	dj
|jd|jd	|j	dj
|jd
|jd|j	|j
d|jd|j|j	dj
|jd
|j|jd|j	|j
d|jd|j|jd|j	|j
dy)Nr5rr8rT)rr r23r|F45r?)	rkr7rErrrrr;rrs   rtest_reconfigure_write_throughz0TextIOWrapperTest.test_reconfigure_write_through
sVnnR sWdC		

D
)$/#"2"23T:	
#"2"23V<	

E
*%0	
		#"2"23X>	

	

D
)%0	

D
)	

	

D
)$/r c|j|jdd}|jt|jd|j|jdd}|jt|j
|j|jdd}|jt|jy)Nrrr-r\)r7rErrror
rs  rtest_read_nonbytesz$TextIOWrapperTest.test_read_nonbytes
s
t}}S1GD)QVVQ/t}}S1GD)QZZ0t}}S1GD)QVV,r ctjd}tj|dd5|j	|jdd}ddd|j
tjdy#1swY+xYw)Nrot13_is_text_encodingTfoor-r)	rrrrr7r+rrrE)r>rrs   rtest_illegal_encoderz&TextIOWrapperTest.test_illegal_encoder
sr

g&


u&94
@	K""4<<#7'"JA	K)QWWe4	K	Ks#A::Bcfd}jt|jd}jt|j}jt|jfd}|d}jt|jd|d}jt|jd|d}jt|jdy)Nctjd}d|_	jj	ddd}d|_|S#d|_wxYw)NquopriTsaaaaaarr/F)rrrr7r+)rrr>s  r_make_illegal_wrapperzETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrappers_]]8,F'+F$
1&&t||I'>/3h'H,1(H,1(s#A	Ar\cGfddfd}tjd}tj|d|5cdddS#1swYyxYw)NceZdZfdZy)^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecodercSrBr&)r>getstate_ret_vals rrzgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstates	++r N)r#r$r%r)rsr
BadDecoderr	s,r rcSrBr&)rrs r_get_bad_decoderzdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoders!|#r rr)rrrr)rrrrrs`  @r_make_very_illegal_wrapperzJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrappersQ
,
,
$]]8,F""6+?#35
/,.
/
/
/sAArMr&)r\ry)rrror
)r>rrrs`  @rtest_illegal_decoderz&TextIOWrapperTest.test_illegal_decoder
s	
"#)QVVQ/!#)QZZ0!#)QVV,
		/
'r*)QVVR0&r*)QVVR0&v.)QVVR0r cl|jj}dj||}td|S)Naif 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)rr#rr)r>rrcodes    r_check_create_at_shutdownz+TextIOWrapperTest._check_create_at_shutdown&s<  U62	
 d++r c|j\}}}|r+|j|j|jy|j	d|jjy)Nok)rrshutdown_errorrrstripr>rcoutrs    r(test_create_at_shutdown_without_encodingz:TextIOWrapperTest.test_create_at_shutdown_without_encoding;sT557C
MM$--szz|<T3::<#5#5#78r c|jdd\}}}|j||jd|jj	y)Nrrrr)rrrrrrs    r%test_create_at_shutdown_with_encodingz7TextIOWrapperTest.test_create_at_shutdown_with_encodingDsP55w=E6GCszz|1134r ctd}|j|d}t|jj	}|j|j
d|jdy)NsJust some random string
rr)MemviewBytesIOr7_to_memoryviewrzrrror)r>r+r	bytes_vals    rtest_read_byteslikez%TextIOWrapperTest.test_read_byteslikeJs]78q'*
$AJJL199;	i&6&6w&?@r cGddt}tdD]}	|j|dd|_|j|d}y#t$rYJwxYw)NceZdZdZdZdZy),TextIOWrapperTest.test_issue22849.<locals>.FcyrGr&rHs rrPz5TextIOWrapperTest.test_issue22849.<locals>.F.readableWtr cyrGr&rHs rrIz5TextIOWrapperTest.test_issue22849.<locals>.F.writableXr)r cyrGr&rHs rrRz5TextIOWrapperTest.test_issue22849.<locals>.F.seekableYr)r N)r#r$r%rPrIrRr&r rFr'Vs+++r r,rrr-cyr8r&rs rrz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>arr )objectrr7rfrY)r>r,rrs    rtest_issue22849z!TextIOWrapperTest.test_issue22849Usq	,	,
r	A
""13"9	qsW5	

sA	A&%A&ch|j|jd}|jdy)Ntestrr-)r7r+r)r>wrappers  rtest_reconfigure_localez)TextIOWrapperTest.test_reconfigure_localeds,$$T\\'%:;X.r cdjddjdz}|j|}|j|dd}|j|j	d|j|j5|jdddd|j|j5|jd	dddy#1swY@xYw#1swYyxYw)
Nabcé
rdéf
utf8rr8rr-r9)rr+r7rr
rrr)r>rrrAs    rtest_reconfigure_encoding_readz0TextIOWrapperTest.test_reconfigure_encoding_readhs!!(+j.?.?.GGll4   x F5


t88
9	.OOWO-	.


t88
9	*OODO)	*	*	.	.	*	*sC:C"C"C+c|j}|j|dd}|jd|jd|jd|j	|j|j
dy)	Nr5rr8zfoo
rr-rsfoo
é
)r+r7rErrrrzrs   r test_reconfigure_write_fromasciiz2TextIOWrapperTest.test_reconfigure_write_fromasciitsllln  w E		'-		(		);<r cd|j}|j|dd}|jd|jd|j	|jd|jd|j
|j	|jd	|j}|j|d
d}|jd|jd|jd|j
|j	|jd
y)Nrrr8r6rr-sabc
r7s
abc
déf
r5abc
rs	abc
déf
)r+r7rErrrzrrs   rtest_reconfigure_writez(TextIOWrapperTest.test_reconfigure_writeslln  x F		+)6		*		)ABlln  w E		'-		*		)=>r c2|j}d|_d|_|j|dd}|j	d|jd|j	d|j
|j|jd	y)
Ncyrr&r&r rrzGTextIOWrapperTest.test_reconfigure_write_non_seekable.<locals>.<lambda>rr r5rr8r>rr-r7sabc
déf
)	r+rRrVr7rErrrrzrs   r#test_reconfigure_write_non_seekablez5TextIOWrapperTest.test_reconfigure_write_non_seekableszlln$  w E		'-		*			
*JKr cd|j|jddd}|jd|j|jd|j|j
d|j
d|jd|j|jd|j|j
d|jd	|j|jd|j|j
d|j
d
|jdd|j|j
d
|jd|j|jd|j|jjdy)Nr5rrr-LF
rr9rS)rhCRLF
rr8rrzLF
CRLF
s	LF
CRLF
)r7r+rrr.rhrErVrorrzrs  rtest_reconfigure_defaultsz+TextIOWrapperTest.test_reconfigure_defaultss<  )TJ&w/Y/		&'w/Y/x(w/X.		($7X.\2..0/Br c|jd}|j|dd}|jd|j|j	d|jd}|j|dd}|jd|j|j	d|jd}|j|dd	}|jd|j|j	d
|jd}|j|dd}|jd	|j|j	d|jd
}|j|dd	}|jd|j|j	d|j|jdd	}|jd|jd|jd|jd|jd|jd|jd	|jd|jd|jddtjzdz}|j|jjjd|y)NsCR
EOFr5rr9zCR
rzCR
s	CR
LF
EOFr(zCR
LF
s	LF
CR
EOFzLF
CR
sCR
CRLF
EOFrz	CR
CRLF
zlinesep
rDrErDzLF
LF
CR
CRLF
)r+r7rrr
rErrDrrzr)r>rrArs    rtest_reconfigure_newlinez*TextIOWrapperTest.test_reconfigure_newlinesMll:&  gt <%0ll:&  gt <#0ll>*  gt <%4ll>*  gt <%4ll-.  gt <'8  $ G%		+#		&%		&%		&'		(rzz),BB..077@(Kr cR|j|jdd}|jd|j|j|j|jdd}|jd|j	d|jy)Nr2r5r-r\r)r7r+rorYrErs  rtest_issue25862z!TextIOWrapperTest.test_issue25862szt||G4wG	q			t||G4wG	q			r N)Ur#r$r%rrr)r.rrrrrrrwrxrKr
	utf8_moderrrr"r:rBrGrrrrerarrr{r}rfrrrrrrNrrrrrrrrrrrrrrr
no_tracingr
rrrrrrrrrrrrrrrrrrr$r0r4r:r<r?rBrFrHrJr&r rrr
s>+X	(2*((	516X__SYY((*AB+C+(	"4$50(IT< 7$&,.B:),(5"	-8^
J(-*=	/44=
1
1	11/<
E
EE2
0002G3G"!"!(!*1B
	8A6@0.-5&1P,*95	A
6/
*
=?*LC."LH	r rc,eZdZdZfdZfdZxZS)r!zOA BytesIO object whose read method returns memoryviews
       rather than bytesc4tt|	|SrB)r"rzrBr>len_r{s  rrBzMemviewBytesIO.read1segmD122r c4tt|	|SrB)r"rzrorOs  rrozMemviewBytesIO.readsegl4011r )r#r$r%rdrBrorrs@rr!r!s322r r!ctjd}t|t||jzz
}|j|d|t	|S)z6Convert bytes-object *buf* to a non-trivial memoryviewrN)r)ritemsize	frombytesr)r^arridxs   rr"r"sI++c
C

c(SX,
,CMM#ds)c?r c2eZdZeZdZdZdZdZdZdZ	y)CTextIOWrapperTest$LookupError: unknown encoding: asciicx|jd}|j|d}|j|d}|jt|j
|dd|jt|j|jj|j}|jtt|y)Nrrbrr-rr8)
r+r#r7rrr@ror-rfrrs    rrz&CTextIOWrapperTest.test_initializationsLL)4(q73*ajj!gwW*aff-&&t'9'9:)T1-r cHtjdtf5|jtj
d}|j
|}|j|d}|jd||_	tj|}~tjddd|j||jtj
d5}|j!|j#ddddy#1swYjxYw#1swYyxYw)Nrrr5r-456defrs456def)rrrrrrr'r7rErrrrrrr/rro)r>rr(rrr2s      rrz*CTextIOWrapperTest.test_garbage_collection
s
+
+R,A
B	!KK	 0 0$7E##E*A""1w"7A
GGHACQB 	!	
"$#
YYy''
.	2!QVVXy1	2	2	!	!	2	2sBD"!DDD!cltdD]}|j|j|j}|j|d}|j|j|j}|j|d}||_||_tjy)Nrbr5r-)rr.rkr7buddyrr)r>rb1t1b2t2s      r!test_rwpair_cleared_before_textioz4CTextIOWrapperTest.test_rwpair_cleared_before_textiost	A$$T^^%5t~~7GHB##B#9B$$T^^%5t~~7GHB##B#9BBHBH		r c|j|jd}|jt5|`dddy#1swYyxYwr)r7r+rrr1rs  r test_del__CHUNK_SIZE_SystemErrorz3CTextIOWrapperTest.test_del__CHUNK_SIZE_SystemError)sEt||~@


~
.	
			sAAcJdGfdd|j}|}|j|d}|j|jd|jd|j	g|j
|j
t5|jdd	zzddd|j	d
g|j
|jd|jdz|j	d
dd
zg|j
y#1swYnxYw)Nrc"eZdZfdZxZS)<CTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIOcJt|kDrtt|
|SrB)rrrzrE)r>rr{rus  rrEzBCTextIOWrapperTest.test_internal_buffer_size.<locals>.MockIO.write4s$t9z)&&w}T**r )r#r$r%rEr)r{rus@rMockIOrh3s

+
+r rjr5r-rr_rr\rghirr)rkr7r1rErr;rr)r>rjr^rrus    @rtest_internal_buffer_sizez,CTextIOWrapperTest.test_internal_buffer_size.s
	+T^^	+hsW5]]
		S--.


|
,	(
GGCA&'	(	
)c&6&67		J)VT*_=s?O?OP
	(	(sDD"N)
r#r$r%rrrrrcrerlr&r rrXrXs&	B;N.2"
Qr rXceZdZeZdZy)PyTextIOWrapperTestrYN)r#r$r%rrrr&r rrnrnJs	
B;Nr rnc*eZdZdZdZdZdZdZy)IncrementalNewlineDecoderTestc fd}|dd|dd|dd|dd|dd|dd|dd|ddjtjdd	
j|dd|d
d|ddd	
|d
dd	
|d
d|dd|dd|d
d|d
d|dd|dd|dd|dd|dd|ddy)Ncj}jj|fi||j|jj|fi||yrB)rrrr)r(rrrdecoderr>s    r
_check_decodezPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodeSs_$$&E^W^^A88!<U#^W^^A88!<r s袈u袈rr T)rrrr<r3z
a

z

s
as袈
rts袈
)rUnicodeDecodeErrorrr)r>rsrts`` rcheck_newline_decoding_utf8z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8Qs	=	ox0gr"gr"gx(gr"gr"gx(gr",gnncN

eT"eR c4t,eT.eR dE"i(eR eT"fe$):6ox0eT"'2eT"r cg|"tj|fd}ndfd}|jjd|d|jjd|d|jjd|d|jjd|d|jjd	|d|jd
j	djd}!jj
|}|jj|d|jjdy)Ncj|D],}jjt|g.yrB)rrCrr)rr(rsencoderr_s  r_decode_bytewisezNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewises6 *>AMM'..s"<=>r cT|D]"}jj|$yrB)rCr)rrtrsr_s  rr~zNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewises'5AMM'.."345r zabc

rz
abc)rrzabc
r)r(rrrzabc

abcabc
abcabc)rgetincrementalencoderrnewlinesrrrr)r>rsr.r~rr}r_s `   @@rcheck_newline_decodingz4IncrementalNewlineDecoderTest.check_newline_decoding{s@<f228<>G
>
G
5	
))40#))40!))>:!))>:))+?@!*AB

MMONN5)E.6))40r cZd}|D]E}|xrtj|}|j|d}|j||Gtjd}|j|d}|j	||jt|jdy)N)	Nrr,r)r*r+r,r-r.T	translaterrM)rgetincrementaldecoderrrrzrrr)r>r2rcrss    rtest_newline_decoderz2IncrementalNewlineDecoderTest.test_newline_decoders
		6CA?f::3?AG44W4MG''5	68&..w7900D0I((1)W%5%5r:r c|fd}jdd}||jdd}||y)Nc2j|jdj|jddj|jdj|jddj|jdy)Nuഀu਀)rrr)decr>s r_checkz@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checksqS\\40SZZ18<S\\40SZZ18<S\\40r FrT)r)r>rrs`  rtest_newline_bytesz0IncrementalNewlineDecoderTest.test_newline_bytessB	1,,TU,Cs,,TT,Bsr c(dD]?}tjd}|j||}|j|Atjd}|j|d}|j	|jddy)N)r!rr\ryrrrrxz

)rrrrzrr)r>rrss   rtest_translatez,IncrementalNewlineDecoderTest.test_translates'	6I;f227;=G44WiHG,,W5	68&..w7900A0F	2H=r N)r#r$r%rzrrrrr&r rrprpOs(#T1B;">r rpc0eZdZejdZy)CIncrementalNewlineDecoderTestcR|jj|j}|jt|jd|jt|j
|jt|jd|jt|jy)Nbar)rr)rr-rrrrrr)r>
uninitializeds  rr.z1CIncrementalNewlineDecoderTest.test_uninitializeds}66>>**,
*m&:&:FC*m&<&<=*m&<&<kJ*m&9&9:r N)r#r$r%rr"r.r&r rrrs;;r rceZdZy)PyIncrementalNewlineDecoderTestNr"r&r rrrrgr rcJeZdZdZdZdZdZeje	jdejee
dddZd	Zd
ZdZdZd
ZdZdZdZdZejee
dddZdZeje	jddZeje	jddZejee
ddejee
dddZdZdZdZdZ dZ!dZ"y) 
MiscIOTestcJtjtjyrBrrHs rrzMiscIOTest.tearDownrr ct|jjD]}t|j|d}|j|||dvr1d|j	vs|dk(r!|jt
|t|i|jdr{|jt
||jy)N)r/	open_codeerrorrSEEK_)
r__all__rErlowerrrrfrMrm)r>r&rs   rtest___all__zMiscIOTest.test___all__sGGOO	>D$''4.C  d+,,DJJL(D4J,J
3	 :DA__W-
3 <=	>r c|jtjdd}|j|jd|j|jtjdd}|j|jd|j|jjd|j|jjjd|j|jdd	}|j|jd|j|jjd|j|j|j|j|jj|j|j|jy)
Nrrrr]rr-rYFr)
r/rrrrrrrrNr&)r>r2gs   rtest_attributeszMiscIOTest.test_attributess-IIi&&I:&		IIi&&wI?D1E2**E2IIahhj$I6T*T*QXXZ0QXXZ0				r cdD]e}|jt5}|jtj|ddd|jdt
jgy#1swY1xYw)N)UrUzr+Uzinvalid mode)rrr/rrrrr)r>rrs   rtest_removed_u_modezMiscIOTest.test_removed_u_modesa&	=D"":.
2"		)**D1
2MM.#bll*;<	=
2
2s!A,,A5	rrrc6tj\}}|jtj||j	|dd}|j|jt
jdk7r |j|jyy)Nrrr-r)	rrrrr/rKrLrrR)r>r+rr2s    rtest_open_pipe_with_appendz%MiscIOTest.test_open_pipe_with_appendspwwy1!$IIawI/ <<7"QZZ\*#r cddiddidddddddddddidd	iddddddd	dddd
iddid
ddd
dddddfD]}d|dvrd
|d<|jtjfi|}|j|j	t
|j|j	t
|j|j	t
|j|j	t
|jt|dr!|j	t
|jd|j	t
|jt|drA|j	t
|jd|j	t
|jt|dr |j	t
|jt|dr*|j	t
|jt!dt|dr*|j	t
|j"t!d|j	t
|j$|j	t
|j&|j	t
|j&d|j	t
|j(d|j	t
|j*|j	t
|j,|j	t
|j.d|dvrdnd|j	t
|j0g|j	t
t2|y)Nrrrr\rrryrr+rr]rr(rr.r?rBr&rVrarr r)r/rrrrrrrNrL__iter__rr?rorBrVrarrr
rwrVrYrcrErro)r>rr2s   rtest_io_after_closezMiscIOTest.test_io_after_close
s
1-1-A.
1-1-A.A.A.Q/.	3F"&.(%,z"		)**5f5A
GGIj!''2j!((3j!((3j!**5q&!!!*affa8j!&&1q'"!!*aggt<!!*agg6q)$!!*aii8q*%!!*ajj)D/Jq+&!!*akk9T?Kj!**5j!++6j!++q9j!&&!4j!&&1j!**5j!''%(F6N%:c
Dj!,,;j$2].	3r cGddt}|d}|jd|}||_||_t	j
|}~~t
j|j||y)NceZdZy)*MiscIOTest.test_blockingioerror.<locals>.CNr"r&r rCr@sr rrr\)	rrr(rtrrrrr)r>rrtr(rs     rtest_blockingioerrorzMiscIOTest.test_blockingioerror>sg		
bE  A&
[[^
q"$#r cT|j|jtj|j|jtj|j|j
tj|j|jtjyrB)rrmrABCMetarIr3rHrHs r	test_abcszMiscIOTest.test_abcsKsddkk3;;7dnnckk:d113;;?doos{{;r c|jtjdd5}|j||j|j||j
|j
||j|j
||jddd|jtjd5}|j||j|j
||j
|j||j|j
||jddd|jtjdd5}|j||j|j
||j
|j
||j|j||jdddy#1swY?xYw#1swYxYw#1swYyxYwNrrrrrr-)	r/rrrrmrIassertNotIsInstancer3rH)r>	abcmoduler2s   r_check_abc_inheritancez!MiscIOTest._check_abc_inheritanceRs
YYy''Y
;	>q!!!Y%5%56!!!Y%8%89$$Q	(@(@A$$Q	(<(<=		>
YYy''
.	>!!!!Y%5%56$$Q	(;(;<!!!Y%=%=>$$Q	(<(<=		>
YYy''wY
?	;1!!!Y%5%56$$Q	(;(;<$$Q	(@(@A!!!Y%9%9:		;	;	>	>
	>	>
	;	;s&A1G<A1GA1G*GG'*G3c&|j|yrB)rrHs rtest_abc_inheritancezMiscIOTest.test_abc_inheritancecs##D)r c.|jtyrB)rrrHs rtest_abc_inheritance_officialz(MiscIOTest.test_abc_inheritance_officialgs	
##B'r ct|i|}t|}|jt5}d}t	j
ddd|j
|tjjdy#1swY<xYwr8)
r/rassertWarnsrrrrrwarningr)r>rrr2r+rs      r_check_warn_on_deallocz!MiscIOTest._check_warn_on_dealloclsr$!&!G


o
.	!"A 	!	


aRZZ__Q/01	!	!sA>>Bc|jtjdd|jtjd|jtjddyr)rrrrHs rtest_warn_on_dealloczMiscIOTest.test_warn_on_dealloctsN##I$4$4da#H##I$4$4d;##I$4$4cG#Lr cPgfd}|j|tj\}}||fz
|j|g|i|tj\}}||fz
t	j
|5t
|g|ddi|dddy#1swYyxYw)NcD]}	tj|y#t$r(}|jtjk7rYd}~Hd}~wwxYwrB)rrrr(r))rrgfdss  rcleanup_fdsz9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fds{sL
HHRL
ww%++-.s 	AAArF)rrrrrr3r/)r>rrrr+rrs      @r_check_warn_on_dealloc_fdz$MiscIOTest._check_warn_on_dealloc_fdys		
$wwy1q!t###A777wwy1q!t

6
6t
<	43T353F3	4	4	4sBB%cr|jdd|jd|jddy)Nrrrr+rr-)rrHs rtest_warn_on_dealloc_fdz"MiscIOTest.test_warn_on_dealloc_fds6&&tq&9&&t,&&sW&=r cd}ddiddidddddiddiddddd	idd
id
ddf	D]}d|dvrd|d
<ttjdzD]}}|j||5|jt
jfi|5}|jt|5tj||dddddddddy#1swYxYw#1swY"xYw#1swYxYw)Nz
cannot picklerrrrrr+rr]rr(rr.r\)protocolr)
rpickleHIGHEST_PROTOCOLrFr/rrrOrdumps)r>rrrr2s     r
test_picklingzMiscIOTest.test_picklings
A.
A.Q/
	6F&.(%,z"!&"9"9A"=>
6\\8F\C6"9#3#3>v>6!!33IsC6"LLH56666
6	6 666666s<$"C)C	C4C	<C)CC	C&
"C))C2c&|jdy)Ni@_test_nonblock_pipe_writerHs rtest_nonblock_pipe_write_bigbufz*MiscIOTest.test_nonblock_pipe_write_bigbufs	
&&w/r c&|jdy)Nr&rrHs r!test_nonblock_pipe_write_smallbufz,MiscIOTest.test_nonblock_pipe_write_smallbufs	
&&t,r set_blockingz(os.set_blocking() required for this testcg}g}tj\}}tj|dtj|d|j|dd|}|j|dd|}|5|5dD]B}	d}		t	|	dzd	zg|z}
|j|
|j
|
|	d
z
}	=		|j	|t|jdz
}dddddddj!|dj!|}}|j|||j#|j$|j#|j$y#|j$r}|j|jdtj|j|jd|j|dd|j|d<|j|jd
}
|j
|
|j|
Yd}~d}~wwxYw#|j$r}|j|jdtj|j|jd|j|j|jd|j|jYd}~nd}~wwxYw #1swYxYw#1swYxYw)NFrT)rrrr)rpIirar\ryrsBLOCKEDr )rrrr/rrCrErrrr(EAGAINrroriterrrr)r>rsentreceivedr+rrfwfrqrrrgs            rrz$MiscIOTest._test_nonblock_pipe_writeswwy1
5!
5!YYqtTWY
E
YYqtTWY
E
	,	,#
%%A#QVb[M2Q6C(
Q	
%$/HHJ
RWWd++H;	,	,>$();hx(		"		"1++%$$QVVAY=$$QVVAY0D0DE#Bx(=)=)=>DHOOBGGI.$CHHSMKK$$%++/$$QVVAY=$$QVVAY0D0DE$$Q%9%91=OOBGGI..	/	'	,	,	,	,s{4K-7K >AE&>K H1K +K-&H.	5B.H)	#K )H.	.K 1KBKK KK  K*	%K--K7c|jtjdd5	ddd|jt|jtjddy#1swY<xYw)Nrrr-r)r/rrrFileExistsErrorrHs rtest_create_failzMiscIOTest.test_create_failsV
YYy''wY
?		/499i6F6FV]^		sA  A)c:|jtjd5}|jdddd|jtjd5}|j	d|jdddy#1swYSxYw#1swYyxYw)Nxbrrrrs  rtest_create_writeszMiscIOTest.test_create_writess
YYy''
.	!
GGG	
YYy''
.	0!Waffh/	0	0			0	0rch|jt|jtjddy)Nzrwax+rr-rrHs rtest_open_allargszMiscIOTest.test_open_allargss&*dii1A1A7U\]r c|jj}t}d}tjd|d|d|d|d|d|d|d	|d
}tddd
|}|j
|jd|y)NzBoom, 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)
        -Xdevrr)rr#r0textwrapdedentr	rr)r>modrr7rprocs      rtest_check_encoding_errorsz%MiscIOTest.test_check_encoding_errorssgg+$\WK8\7+6 l#018{;./6[9	9# #
H%T5$="d+r c	|jj}t}tjd|d|d|d}tddd|}|jj}|jt|d|j|d	jd
|j|djdy)
Nz(            import sys
            from zN import open, TextIOWrapper
            import pathlib

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

            pathlib.Path(z ).read_text()  # line 8
        rwarn_default_encodingrryrs<string>:5: EncodingWarning: r\s<string>:8: EncodingWarning: )rr#r0rrrrr@rrrrM)r>rrrrrTs      rtest_check_encoding_warningz&MiscIOTest.test_check_encoding_warning(sgg$ l##&		 	
 &=tTJ88&&(X*QK""#CD	FQK""#CD	Fr cd}tddd|}|jd|jjtddd|}|jd|jjy)Nz(import io; print(io.text_encoding(None))rzutf8=0rslocalezutf8=1sutf-8)rrrr)r>rrs   rtest_text_encodingzMiscIOTest.test_text_encoding?s_:hd;DHHNN$45hd;488>>#34r N)#r#r$r%rrrrrwrxrryrzrrrrrrrrrrrrrrrrrrrrrrrr&r rrrs+	>$=X__FXV,.BC	+D	+/3b$<;"*(
2M
4&XV,.BC>D>6,X__F00X__F--X^4CEXV,.BC0#DE0#d_0^+,ZF.	5r rceZdZeZdZdZejejddZ
ejejddZy)CMiscIOTestcGdd|jj}|}td}|jt|j
|y)NceZdZddZy)<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReadercddzS)Nri@Br&rns  rrozACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readQse|#r Nrsrpr&r r	BadReaderrPs
$r rry)rr3rrrra)r>rrr(s    rtest_readinto_buffer_overflowz)CMiscIOTest.test_readinto_buffer_overflowNs@	$..	$aL*enna8r c>djt}td|\}}|jj	}|j
dk7r,djt}|j
||y|j|jdy)Naif 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()
            rrzFatal Python error: _enter_buffered_busy: could not acquire lock for <(_io\.)?BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!)	
format_maplocalsr
rrrrrr)r>stream_namerrrrpatterns       r&check_daemon_threads_shutdown_deadlockz2CMiscIOTest.check_daemon_threads_shutdown_deadlockWs0
68$1	
2&dD1Qggnn66Q;)*4FH)=	


S'*SYYt_-r walltimec&|jdy)NstdoutrrHs r,test_daemon_threads_shutdown_stdout_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlock	
33H=r c&|jdy)NstderrrrHs r,test_daemon_threads_shutdown_stderr_deadlockz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockr
r N)r#r$r%rrrr
rrrr	r
r&r rrrKs|	B9'.R1002Wz*>+3>1002Wz*>+3>r rceZdZeZy)PyMiscIOTestN)r#r$r%rrr&r rrrs	
Br rntz%POSIX signals required for this test.c:eZdZdZdZdZdZeeje
edddZeeje
edddZ
eeje
eddd	Zej d
ZedZedZd
Zeej*ddZeej*ddZdZeej*ddZeej*ddZy)SignalsTestcjtjtj|j|_yrB)signalSIGALRMalarm_interruptoldalrmrHs rrzSignalsTest.setUps}}V^^T5I5IJr c`tjtj|jyrB)rrrrHs rrzSignalsTest.tearDowns

fnndll3r cddzyr[r&)r>sigframes   rrzSignalsTest.alarm_interrupts		!r c
tjg
fd}tj|}d|_tj\
}d|d<|tjt|zdzz}	|jj|fi|}ttdrwtjtjtjg|j!tjtj"tjgn|j!tj$d	|j't(|j*|tj$d|j-j/tj0
d|j3|dd|dd	gtj4|tj4
	|j5y
#tj$d|j-wxYw#t6$r(}	|	j8t8j:k7rYd
}	~	y
d
}	~	wwxYw#tj4|tj4
	j5w#t6$r(}	|	j8t8j:k7rYd
}	~	wd
}	~	wwxYwxYw)zCheck that a partial write, when it gets interrupted, properly
        invokes the signal handler, and bubbles up the exception raised
        in the latter.cTtjd}j|yr)rrorC)rr+read_resultss rrz2SignalsTest.check_interrupted_write.<locals>._reads 1
A"r rjTFrr\pthread_sigmaskrryN)rrrrdaemonrr
PIPE_MAX_SIZErrr/rrr	SIG_BLOCKrrSIG_UNBLOCKr4rrrErrCrorrrr(r))r>itemr
fdopen_kwargsrrr
large_datawiorgr+rs          @@rcheck_interrupted_writez#SignalsTest.check_interrupted_writes6		#
E*wwy1#(
i W22c$i?!CD
$	$'',,q2M2Cv01&&v'7'7&..9IJ	&&v'9'9FNN;KL	
LLO
!!"3SYY
KQ
1
.\E!AJa
+CDHHQKHHQK
		Q
77ekk)*

HHQKHHQK
		
77ekk)*
sh;C	I$!H&A$I$5H0'H--I$0	I!9II!$+KJ! K!	K*K
K
KKrrc.|jddddy)Nrcrrrr(rHs r!test_interrupted_write_unbufferedz-SignalsTest.test_interrupted_write_unbuffereds	
$$UE$Jr c,|jdddyNrcrrr*rHs rtest_interrupted_write_bufferedz+SignalsTest.test_interrupted_write_buffereds	
$$UE$=r c.|jddddy)Nxyrcrr5rr.r*rHs rtest_interrupted_write_textz'SignalsTest.test_interrupted_write_texts	
$$T5sW$Mr cz		fd}tjtj|tj\}}|jj
|fi|		tjd|jttf5}	tdD]#}	j	j%tj|tdzT#1swYnxYwj}t!|tr3|j#t%|j'dt%|tjd	j)tj(|y#tjd	j)tj(|wxYw)Nc2jddzyr[)rE)rrr's ron_alarmz3SignalsTest.check_reentrant_write.<locals>.on_alarmsIIdO
aCr r\rzreentrant callr)rrrrrr/r4rrrrrErrorrrGrrrMr)
r>rr%r6r+rrrrr's
 `       @rcheck_reentrant_writez!SignalsTest.check_reentrant_writes<		

fnnh/wwy1dggll1.
.	LLO""$5|#DE
0"3Z$		$		$GGAs4y3/
0
0,,C#|,C 3 34D Es3xPLLOIIKHHQK
LLOIIKHHQKs "0E>AC((C1-AE>><F:c*|jddyr-r7rHs rtest_reentrant_write_bufferedz)SignalsTest.test_reentrant_write_buffereds""5t"4r c,|jdddy)Nr1rr5r2r9rHs rtest_reentrant_write_textz%SignalsTest.test_reentrant_write_texts""4cG"Dr ctj\}d|d<fd}tjtj|	|jj
|fi|}tjdtjd|j||jddtjd|jtjtj|y	#tjdjtjtj|wxYw)
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.Frc2tjdy)Nr)rrE)rrrs  r
alarm_handlerz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handler!sHHQr rr\rfoobarrN)rrrrrr/rEr4rror)r>rr%r+r?riors      @rcheck_interrupted_read_retryz(SignalsTest.check_interrupted_read_retryswwy1#(
i 	 

fnnm4
	$'',,q2M2CHHQLLO

VCHHQK0(;LLOIIKHHQKHHQK
LLOIIKHHQKHHQKsA/DAErc,|jddy)Nc$|jdS)Nr)rr.s rrzBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>6sAHHX4Fr rr.rBrHs r$test_interrupted_read_retry_bufferedz0SignalsTest.test_interrupted_read_retry_buffered3s	
))*F/3	*	5r c.|jdddy)Nc|SrBr&r.s rrz>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda><sAr r+rr2rErHs r test_interrupted_read_retry_textz,SignalsTest.test_interrupted_read_retry_text9s	
))+/2X	*	Gr c
tjdtj}t	j
\
}d|d<gdd
fd}t
j|d_fd}fd	||z}tjtj|	|jj|fi|}tjd
|j|}	|j||	|j!dj#|j%|j|t'dDtjddt	j(|t	j(
	|j)y#t*$r(}
|
j,t,j.k7rYd}
~
yd}
~
wwxYw#tjddt	j(|t	j(
	j)w#t*$r(}
|
j,t,j.k7rYd}
~
wd}
~
wwxYwxYw)
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.selectFrNc	s`jgggddvrBtjd}j|jgggddvrBs_yy#t$r}|Yd}~yd}~wwxYw)Ng?rr&)rKrrorC
BaseException)rrrr+rrKwrite_finisheds  rrz8SignalsTest.check_interrupted_write_retry.<locals>._readQs
(v}}aS"b#>qAAGGAt,$++A.v}}aS"b#>qAA)!

sAA&!A&&	A;/A66A;rjTcxtjtjtjdyr)rrr4)rralarm2s  ralarm1z9SignalsTest.check_interrupted_write_retry.<locals>.alarm1\s MM&..&1LLOr c&jyrB)r)rrrs  rrPz9SignalsTest.check_interrupted_write_retry.<locals>.alarm2_s
GGIr r\c32K|]}t|ywrB)r).0rs  r	<genexpr>z<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>ts#AqCF#Asr)rrrr!rrrrr rrrr/r4rErrrrsumrrr(r))r>r$r%rqrrrQr&r'rrgrPrr+rrKrrNs           @@@@@@@rcheck_interrupted_write_retryz)SignalsTest.check_interrupted_write_retry?s,,X6
!!wwy1#(
i 
		
E*		AX


fnnf-	$'',,q2M2CLLOii
+GQ(IIK!N
FFHe$Q#AL#A ABLLO!NHHQKHHQK
		
77ekk)*

LLO!NHHQKHHQK
		
77ekk)*
sP)B*GF&&	G/GGAI"H.-I".	I7II"II"c*|jddy)Nrrr.rWrHs r%test_interrupted_write_retry_bufferedz1SignalsTest.test_interrupted_write_retry_buffereds	
**4d*;r c,|jdddy)Nrrrr2rYrHs r!test_interrupted_write_retry_textz-SignalsTest.test_interrupted_write_retry_texts	
**3S8*Lr N)r#r$r%rrrr(requires_alarmrwrzrrr+r/r3rrLr7r:r<rBrrFrIrWrZr\r&r rrrsK4KZXV,.BCKDKXV,.BC>D>XV,.BCNDN
655EE0Wz*5+5Wz*G+GBHWz*<+<Wz*M+Mr rceZdZeZy)CSignalsTestN)r#r$r%rr&r rr_r_s	Br r_ceZdZeZdZdZy)
PySignalsTestN)r#r$r%rrr:r<r&r rraras	
B%)! $r ractttttt
ttttttttttt t"t$t&t(f}t*t,t.t0t2t4t6t8f}t:j<dgz}|Dcic]}|t?t:|}}|Dcic]}|t?t@|}}tC|jEfd|D|jEfd|D|D]}|jFjIdr&|jKD]\}}	tM|||	D|jFjIds`|jKD]\}}	tM|||	|jO}
|D]"}|
jQ|jS|$|
Scc}wcc}w)Nrc3ZK|]"}|jd|jzf$yw)rNr#rTrglobss  rrUzload_tests.<locals>.<genexpr>s(HQAJJcAJJ&6 78H(+c3ZK|]"}|jd|jzf$yw)PyNrdres  rrUzload_tests.<locals>.<genexpr>s(JqQZZtajj'8!9:Jrgrri)*r|rrrrrrrTrVrrrrrrXrnrrr_rarrkrvrrrrr6rrrrErglobalsrr#rMrsetattr
suiteClassaddTestloadTestsFromTestCase)loaderrNrmocksall_membersr&c_io_nspy_io_nsrOrsuiterfs           @r
load_testsrus
h
 "6
 "6
 "6
 "6
+
+-L
!4
,
=,

E^
!#35I

E** ;<<K4?@Dtgb$''@G@7BCtwtT**CHCIENNH%HHOOJEJJ)==##C($]]_
)	cdC(
)
]]
%
%d
+%^^-
)	cdC(
))
E:


f22489:L!ACs/G'
G,__main__){rdrr)r(rrrrmrrKrrrrwrTrcollectionsrr	itertoolsrrrOrtest.support.script_helperrr	r
test.supportrrr
rrtest.support.os_helperrrr_pyiorrr	StructurerImportErrorPy_DEBUGr
dev_moderr3rzrr]r6rIrfrirkrrrtrvrrrrrrrrrr+rrrrrrrrTestCaserr|r"rrrrrr$rrrrrr	rTrVrXrrrrrrrr!r"rXrnrprrrrrrxr&rr_rarur#mainr&r r<module>rs#*
	



'"CC&")(*+
	


f&&
#++Asyy/A/A
%$$FG<
66p	0",,		14>>	$	BLL		)T^^	i"				Y	nbll		~t~~	Y	nbll		~t~~	 	*bjj		:t||	883("**35)4<<5..`)0",,)+14>>+A$X

A$H$f$(	VG8$$VGVGp	v		hh''hhjjZ55,tH**,?tHn	@A,j@AF-d**,?dP	-6,j-6`-N**N`,-f&+-?f&R6,j62-I!:!:I\;)4X%6%6)4V^))^B#2RZZ2KQ*KQ\<+<
s>H$5$5s>j;%B;	&C	s5""s5l=>*=>@:D"IJ{M(##{MK{M|;%K%#JzHMMOQT333sS??T
T