
    /hha                        S SK r S SKrS SKrS SKJr  S SKJr  S SKrS SKrS SK	r	S SK
Jr  S SKJrJr  S SKJr  S SKJr  S SKJr   " S	 S
5      r " S S\R,                  5      r " S S\R,                  5      r " S S\R,                  5      r " S S\5      r " S S\R6                  5      r " S S\5      r " S S\5      r " S S\R6                  5      r " S S\5      r  " S S\R,                  5      r! " S S \R,                  5      r" " S! S"\R,                  5      r# " S# S$\R,                  5      r$ " S% S&5      r%\RL                  " \'" \S'5      S(5       " S) S*\R,                  5      5       r( " S+ S,\R,                  5      r) " S- S.\R,                  5      r* " S/ S0\R,                  5      r+\,S1:X  a  \RZ                  " 5         gg)2    N)StringIO)TemporaryFile)support)import_helpercheck_disallow_instantiation)permutations)dedent)OrderedDictc                       \ rS rSrS rSrg)BadIterable   c                     [         eNOSErrorselfs    6/opt/python-3.13.8/usr/lib/python3.13/test/test_csv.py__iter__BadIterable.__iter__   s         N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    r   r   c                      \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S*r,g+),Test_Csv   z
Test the underlying C csv parser in ways that are not appropriate
from the high level interface. Further tests of this nature are done
in TestDialectRegistry.
c                    U" U5        U R                  [        U5        U R                  [        US 5        U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        R                  XS5        U R                  [        XS S9  U R                  [        XS	S9  U R                  [        XS	S9  U R                  [        XS	S9  U R                  [        XS S
9  U R                  [        XS	S
9  U R                  [        XS S9  U R                  [        X[        R                  SS9  U R                  [        X[        R                  S S9  U R                  [        X[        R
                  SS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U R                  [        XSS9  U" USS9  U" USS9  U" USS9  U" USSS9  U" USSS9  U" USSS9  U" USSS9  U R                  [        XSSS9  U R                  [        XSSS9  U" USS9  U" USS9  U" USS9  U R                  [        XSSS9  U R                  [        XSSS9  U R                  [        XSSS9  U" USS9  U" USS9  U" USS9  U" USS
9  U R                  [        XSSS9  U R                  [        XSSS9  U R                  [        XSSS9  g )Nr   )bad_attr 	delimiter
escapechar	quotecharz^^foo   lineterminatorquoting)r/   r)   
 	Tr%   skipinitialspace)r'   r5   )r)   r5   ^)r%   r'   )r%   r)   )r'   r)      )r%   r-   )r'   r-   )r)   r-   )assertRaises	TypeErrorcsvError	QUOTE_ALL
QUOTE_NONE
ValueError)r   ctorargs      r   _test_arg_validTest_Csv._test_arg_valid   s   S	)T*)T40)T;)T"=)T2>)T"=)T$?)T4@)T$?#))T6)T$?)T!<)T1=)T!<)TtD)TqA)T=)T"%--2 	 	?)T"%--4 	 	A)T"%..B 	 	@*d4@*dDA*d4@*d4@*dDA*d4@SC SS!SC SD48STD9SD48SC$7*d%(4 	 	A*d$'$ 	 	@SC SS!SC *d33O*d3#N*dC3OSF#SV$SF#S(*d$*6 	 	C*d%+F 	 	D*d$*6 	 	Cr   c                     U R                  [        R                  / 5        U R                  [        [        R                  [        5       5        g r   )rA   r:   readerr8   r   r   r   s    r   test_reader_arg_validTest_Csv.test_reader_arg_validY   s.    SZZ,'3::{}=r   c                     U R                  [        R                  [        5       5         " S S5      nU R	                  [
        [        R                  U" 5       5        g )Nc                   $    \ rS rSr\S 5       rSrg)1Test_Csv.test_writer_arg_valid.<locals>.BadWriter_   c                     [         er   r   r   s    r   write7Test_Csv.test_writer_arg_valid.<locals>.BadWriter.write`   s    r   r   N)r   r   r   r   propertyrL   r   r   r   r   	BadWriterrI   _   s     r   rO   )rA   r:   writerr   r8   r   )r   rO   s     r   test_writer_arg_validTest_Csv.test_writer_arg_valid]   s<    SZZ4	 	 	'3::y{;r   c                    U" U6 nU R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R
                  S 5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  [        R                  5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  [        [        UR                  S5        U R                  [        [         UR                  SS5        U R                  [        [        UR                  S5        U R                  [        [         UR                  SS 5        g )	N,T
"Fr%   :r/   )assertEqualdialectr%   assertIsdoublequoter'   r-   r)   r/   r:   QUOTE_MINIMALr5   strictr8   AttributeErrordelattrsetattr)r   r?   argsobjs       r   _test_default_attrsTest_Csv._test_default_attrse   sB   Dk..4ckk--t4//633V<..4,,c.?.?@ckk22E:ckk((%0.'3;;L.'3;;SQ.'3;;	J.'3;;#T	+r   c                 D    U R                  [        R                  / 5        g r   )rc   r:   rD   r   s    r   test_reader_attrsTest_Csv.test_reader_attrsw         R0r   c                 T    U R                  [        R                  [        5       5        g r   )rc   r:   rP   r   r   s    r   test_writer_attrsTest_Csv.test_writer_attrsz         XZ8r   c                    [        SSSSS[        R                  SSS9nU" U0 UD6nU R                  UR                  R
                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  [        R                  5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        g )NrW   F\r1   *T)r%   r[   r'   r-   r)   r/   r5   r]   )dictr:   r=   rX   rY   r%   rZ   r[   r'   r-   r)   r/   r5   r]   )r   r?   ra   kwargsrb   s        r   _test_kw_attrsTest_Csv._test_kw_attrs}   s   4%)S!nnt!# D#F#..4ckk--u5//633T:..4,,cnn=ckk22D9ckk(($/r   c                 D    U R                  [        R                  / 5        g r   )rr   r:   rD   r   s    r   test_reader_kw_attrsTest_Csv.test_reader_kw_attrs   s    CJJ+r   c                 T    U R                  [        R                  [        5       5        g r   )rr   r:   rP   r   r   s    r   test_writer_kw_attrsTest_Csv.test_writer_kw_attrs   s    CJJ
3r   c                     " S S5      nX#4-   nU" U6 nU R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R
                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  [        R                  5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        g )	Nc                   H    \ rS rSrSrSrSrSrSr\	R                  rSrSrSrg	)
-Test_Csv._test_dialect_attrs.<locals>.dialect   -Fr6   $#Tr   N)r   r   r   r   r%   r[   r'   r-   r)   r:   r<   r/   r5   r]   r   r   r   r   rY   r|      s/    IKJNIMMG!Fr   rY   r~   Fr6   r   r   T)rX   rY   r%   rZ   r[   r'   r-   r)   r/   r:   r<   r5   r]   )r   r?   ra   rY   rb   s        r   _test_dialect_attrsTest_Csv._test_dialect_attrs   s    	 	 j Dk..4ckk--u5//533S9..4,,cmm<ckk22D9ckk((%0r   c                 D    U R                  [        R                  / 5        g r   )r   r:   rD   r   s    r   test_reader_dialect_attrs"Test_Csv.test_reader_dialect_attrs   rh   r   c                 T    U R                  [        R                  [        5       5        g r   )r   r:   rP   r   r   s    r   test_writer_dialect_attrs"Test_Csv.test_writer_dialect_attrs   rl   r   c                 ,   [        SSSS9 n[        R                  " U40 UD6nUR                  U5        UR	                  S5        U R                  UR                  5       X%R                  R                  -   5        S S S 5        g ! , (       d  f       g = fNw+utf-8r#   encodingnewliner   )	r   r:   rP   writerowseekrX   readrY   r-   )r   fieldsexpectrq   fileobjrP   s         r   _write_testTest_Csv._write_test   sm    4'2>'ZZ262FOOF#LLOW\\^#nn&C&CCE	 ?>>s   A0B
Bc                 V   [        SSSS9 n[        R                  " U40 UD6nU R                  U5         UR	                  U5        S S S 5        UR                  S5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       g = fr   )r   r:   rP   r8   r   r   rX   r   )r   excr   rq   r   rP   s         r   _write_error_testTest_Csv._write_error_test   s{    4'2>'ZZ262F""3'' (LLOW\\^R0 ?>'' ?>s"   )BB	9B	
B	B
B(c                    U R                  [        R                  S 5        U R                  [        [	        5       5         " S S5      nU R                  [        U" 5       5         " S S5      nU R                  [        U" 5       /5        g )Nc                        \ rS rSrS rS rSrg).Test_Csv.test_write_arg_valid.<locals>.BadList   c                     g)N
   r   r   s    r   __len__6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__   s    r   c                     US:  a  [         eg )N   r   )r   is     r   __getitem__:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__   s    q5!M r   r   N)r   r   r   r   r   r   r   r   r   r   BadListr      s    "r   r   c                       \ rS rSrS rSrg).Test_Csv.test_write_arg_valid.<locals>.BadItem   c                     [         er   r   r   s    r   __str__6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__       r   r   N)r   r   r   r   r   r   r   r   r   BadItemr          r   r   )r   r:   r;   r   r   )r   r   r   s      r   test_write_arg_validTest_Csv.test_write_arg_valid   sf    syy$/w6	" 	" 	w	2	 	 	w4r   c                 B    SS-  nU R                  X/U< SU< 35        g )NXP  rT   )r   )r   	bigstrings     r   test_write_bigfieldTest_Csv.test_write_bigfield   s(    %K	).#Y10 	1r   c                    U R                  / SQS5        U R                  [        R                  / SQ[        R                  S9  U R                  / SQS[        R
                  S9  U R                  / SQS[        R                  S9  U R                  / SQS[        R                  S9  U R                  SS/S[        R                  S9  U R                  / S	QS
[        R                  S9  U R                  / S	QS[        R                  S9  g )Nar+   zp,q	a,1,"p,q"r.   z"a",1,"p,q"z"a","1","p,q"a
br+   z	"a
b","1")r   r#   Nr+   z	"a","",,1z"a","",,"1")
r   r   r:   r;   r=   r\   QUOTE_NONNUMERICr<   QUOTE_STRINGSQUOTE_NOTNULLr   s    r   test_write_quotingTest_Csv.test_write_quoting   s    4syy-), 	 	9#&#4#4 	 	6#&#7#7 	 	9#&== 	 	2&\#&== 	 	2+#&#4#4 	 	6-#&#4#4 	 	6r   c                 ~   U R                  / SQSSS9  U R                  [        R                  / SQS SS9  U R                  / SQSSSS9  U R                  S	/S
S[        R                  S9  U R                  S	/SS[        R                  SS9  U R                  S	/SS[        R
                  S9  U R                  / SQSS[        R
                  S9  U R                  SS/SS[        R
                  S9  U R                  SS/SS[        R                  S9  U R                  SS/SS[        R                  S9  U R                  SS/SS[        R                  S9  U R                  SS/SS[        R
                  S9  U R                  SS/SS[        R                  S9  U R                  / SQSS[        R                  S9  g )Nr   r   rn   r&   )r   r+   zp,"q"F)r'   r[   za,1,"p,\"q\""rV   """")r'   r/   z\")r'   r/   r[   za,1,p\,qr   z\\,az"\\","a"z\ z\\ ,az\,z\\\,,az,\z",\\",a)zC\67zX"zC\\,6,7,"X""")r   r   r:   r;   r\   r=   r<   r   s    r   test_write_escapeTest_Csv.test_write_escape   s   $( 	 	*syy/*.E 	 	C*;$( 	 	?#$(C4E4E 	 	G#$(C4E4E', 	 	. 	#$(CNN 	 	D$(CNN 	 	D$h$(#.. 	 	B$h$(#2C2C 	 	E$l$(#-- 	 	A%y$(#2C2C 	 	E%{$(#.. 	 	B%{$(#2C2C 	 	E02C$(#2C2C 	 	Er   c                    S H  nU R                  US9   [        5        n[        R                  " X!S9nUR	                  SS/5        UR	                  SS/5        UR	                  SS/5        U R                  UR                  5       S	U S
U SU 35        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)N)rU   r0   r1   z!@# r,   r   br+   r   r1   r0   a,bz1,2z"","
")subTestr   r:   rP   r   rX   getvalue)r   r-   siorP   s       r   test_write_lineterminator"Test_Csv.test_write_lineterminator  s    =N^<Z3 ZZKFOOS#J/OOQF+OOT4L1$$S\\^'*>*:'*>*:'00@&BC   =< >Z =<s#   B=A7B,B=,
B:6B==
C	c                    U R                  [        / SQ5      S5        U R                  [        / SQ5      S5        U R                  [        / 5      S5        U R                  [        S /5      S5        U R                  [        R                  [        S /5      [        R
                  S9  U R                  [        S S /5      S5        g )	Nr   r   )r   r+   Nza,1,r#   ""r.   rT   )r   iterr   r:   r;   r=   r   s    r   test_write_iterableTest_Csv.test_write_iterable  s    o.<n-v6b2&tft,syy$v,OtTl+S1r   c                     " S S5      n[         R                  " U" 5       5      nU R                  [        UR                  S//5        [        SSSS9 n[         R                  " U5      nU R                  [        UR                  S 5        UR	                  SS/S	S
//5        UR                  S5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)+Test_Csv.test_writerows.<locals>.BrokenFilei  c                     [         er   r   )r   bufs     r   rL   1Test_Csv.test_writerows.<locals>.BrokenFile.write  r   r   r   N)r   r   r   r   rL   r   r   r   r   
BrokenFiler     r   r   r   r   r   r   r#   r   r   cdr   z
a,b
c,d
)
r:   rP   r8   r   	writerowsr   r9   r   rX   r   )r   r   rP   r   s       r   test_writerowsTest_Csv.test_writerows  s    	 	 JL)'6#3#3seW=4'2>'ZZ(Fi)9)94@sCj3*56LLOW\\^-=> ?>>s   B C
C+c                    [        SSSS9 n[        R                  " U5      nUR                  SS /S S//5        UR	                  S5        U R                  UR                  5       S5        S S S 5        [        SSSS9 n[        R                  " U5      nUR                  S /S//5        UR	                  S5        U R                  UR                  5       S	5        S S S 5        [        SSSS9 n[        R                  " U5      nUR                  S/S //5        UR	                  S5        U R                  UR                  5       S
5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r#   r   r   r   r   za,
,d
z""
a
za
""
)r   r:   rP   r   r   rX   r   r   r   rP   s      r   test_writerows_with_none!Test_Csv.test_writerows_with_none(  s1   4'2>'ZZ(FsDkD#;78LLOW\\^^<	 ? 4'2>'ZZ(Ftfse_-LLOW\\^];	 ? 4'2>'ZZ(FsedV_-LLOW\\^];	 ?> ?> ?> ?>s&   AE>AE%.AE6
E"%
E36
Fc                    U R                  SS5        U R                  S/S5        U R                  [        R                  S/[        R                  S9  U R                  S/S[        R
                  S9  U R                  S/S[        R                  S9  U R                  S /S5        U R                  [        R                  S /[        R                  S9  U R                  [        R                  S /[        R
                  S9  U R                  [        R                  S /[        R                  S9  U R                  SS/S5        U R                  S S /S5        g )Nr   r#   r   r.   rT   )r   r   r:   r;   r=   r   r   r   s    r   test_write_empty_fields Test_Csv.test_write_empty_fields<  s   R "t$syy2$G"tS->->?"tS->->?$&syy4&#..Isyy4&#:K:KLsyy4&#:K:KL"b3'$s+r   c           	      b   U R                  S/SSSS9  U R                  S/SSSS9  U R                  S /SSSS9  U R                  S /SSSS9  U R                  SS/SSSS9  U R                  SS/SSSS9  U R                  S S /SSSS9  U R                  S S /SSSS9  U R                  SS/SSS[        R                  S9  U R                  [        R                  SS/SS[        R                  S9  [        R
                  [        R                  4 H-  nU R                  SS/SSSUS9  U R                  SS/SSSUS9  M/     [        R                  [        R
                  [        R                  4 H;  nU R                  S S /SSSUS9  U R                  [        R                  S S /SSUS9  M=     g )	Nr#   r   r2   Fr4   Tz"" "")r%   r5   r/   )r   r:   r=   r   r;   r   r   )r   r/   s     r   'test_write_empty_fields_space_delimiter0Test_Csv.test_write_empty_fields_space_delimiterI  s   "tsUK"tsTJ$uM$tL"b3#N"b7cDQ$scER$w#PTU"b3#!$ 	 	1syy2r(),t'*~~ 	 	7 ((#*;*;;Gb"Xw#PU%,  .b"Xw#PT%,  . < ~~s'8'8#:K:KKGdD\3#PU%,  .""399tTl-04+2 # 4 Lr   c                    [        SSSS9 n[        R                  " U5      nU R                  [        UR
                  S 5        U R                  [        UR
                  [        5       5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   )r   r:   rP   r8   r9   r   r   r   r   s      r   test_writerows_errorsTest_Csv.test_writerows_errorsf  s\    4'2>'ZZ(Fi)9)94@gv'7'7G ?>>   A!A66
Bc                 j    [         R                  " U40 UD6n[        U5      nU R                  XR5        g r   )r:   rD   listrX   )r   inputr   rq   rD   results         r   
_read_testTest_Csv._read_testl  s,    E,V,f(r   c                 *   U R                  / / 5        U R                  S// /5        U R                  [        R                  U R                   S/S SS9  U R                  S/S//SS9  U R                  [        R                  U R                   S/S 5        g )	Nr#   z"ab"cr+   r]   abcr   )r[   s   abcr   r8   r:   r;   r   s    r   test_read_oddinputsTest_Csv.test_read_oddinputsq  s    Brd##))T__")TA 	 	7	UG9A>#))T__!(D	*r   c                    U R                  SS/SS/SS//5        U R                  SS/SS/SS//5        U R                  S	S
/SS/SS//5        U R                  SS/SS/SS//5        SnU R                  [        R                  U5         [	        [        R
                  " S/5      5        S S S 5        U R                  [        R                  U5         [	        [        R
                  " S/5      5        S S S 5        U R                  [        R                  U5         [	        [        R
                  " S/5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Ni= f! , (       d  f       g = f)Nr   zc,dr   r   r   r   za,b
zc,d
za,b
zc,d
za,bzc,dzwith newline=''za,bc,dza,b
c,dza,b
c,d)r   assertRaisesRegexr:   r;   nextrD   )r   errmsgs     r   test_read_eolTest_Csv.test_read_eol{  s$   #cSI(>?'*c#YS	,BCI.#cSI0FG'*c#YS	,BC"##CIIv6ZL)* 7##CIIv6ZL)* 7##CIIv6\N+, 76	 766666s$   !E!E!E)
E
E&)
E7c           	         U R                  S/SS//5        U R                  S/S//5        U R                  S/S//SS9  U R                  [        R                  U R                   S// SS	9  U R                  [        R                  U R                   S// SS	9  U R                  [        R                  U R                   S// SSS
9  g )Nza,"r   r#   z"ar6   r0   r&   Tr   )r'   r]   r   r   s    r   test_read_eofTest_Csv.test_read_eof  s    3)-#(xC8#))T__ugr$O#))T__tfbN#))T__%D 	 	Br   c                     U R                  S/S//5        U R                  S// SQ/5        U R                  S// SQ/5        U R                  S// SQ/SS9  U R                  S	// SQ/5        g )
Nr   a, b,c)r   z br   za,b ,c)r   zb r   za,b\ ,crn   r&   za," b",cr   r   s    r   test_read_nulTest_Csv.test_read_nul  sj    $)&7%89&7%89(9':tL(9':;r   c                     U R                  S// SQ/5        U R                  S// SQ/SS9  U R                  S// SQ/SS9  g )Nza,b,cr   r   r   za;b;c;r$   za b cr   r
  r   s    r   test_read_delimiterTest_Csv.test_read_delimiter  sC    	O#45	O#4Do%6$Gr   c                    U R                  S// SQ/SS9  U R                  S/SS//SS9  U R                  S/SS//SS9  U R                  S	/SS//SS9  U R                  S
/SS//SS9  U R                  S/SS//SS9  U R                  S// SQ/SS9  U R                  S// SQ/SS9  U R                  S// SQ/S S9  U R                  S// SQ/5        g )Nza,\b,cr  rn   r&   za,b\,cr   zb,cza,"b\,c"za,"b,\c"z	a,"b,c\""zb,c"za,"b,c"\zb,c\za,^b,cr6   r	  r   )r   z\br   r
  r   s    r   test_read_escapeTest_Csv.test_read_escape  s    o%64HsEl^Ee~$Ge~$G#vDIg'7DI
_$5#Fo%64H&7%8TJ&7%89r   c                 H   U R                  S// SQ/5        U R                  S// SQ/S SS9  U R                  S// SQ/[        R                  SS9  U R                  S// SQ/[        R                  S	9  U R                  S// S
Q/[        R                  S	9  U R                  S// SQ/[        R
                  S	9  U R                  S// SQ/5        U R                  S// SQ/[        R                  S	9  U R                  S// SQ/[        R                  S	9  U R                  S// SQ/[        R
                  S	9  U R                  S/SS//5        U R                  [        U R                   S// /[        R                  S	9  U R                  [        U R                   S// /[        R
                  S	9  U R                  S// SQ/SS9  U R                  S// SQ/SS9  U R                  S// SQ/[        R                  SS9  U R                  S// SQ/[        R
                  SS9  g )Nz	1,",3,",5)1z,3,5)r  rV   3rV   r  rn   )r)   r'   r/   r'   z,3,"5",7.3, 9)r#      r  333333@	   r.   )Nr  r  z7.3z 9)Nr  r  r  r  z,,"",)r#   r#   r#   r#   )NNr#   Nz"a
b", 7r   z 7zabc,3z	1,@,3,@,5@r(   z	1, ,3, ,5r   z1\.5,\.5,.5)      ?      ?r  z1\.5,\.5,"\.5")r  r  z.5)r   r:   r=   r   r   r   r8   r>   r   s    r   test_read_quotingTest_Csv.test_read_quoting  sE   (9':;(A'B"&4 	 	9(A'B #4 	 	A 	),@+A # 4 4 	 	6),I+J # 1 1 	 	3),B+C # 1 1 	 	3 		$4#56	$4#5 # 4 4 	 	6	$:#; # 1 1 	 	3	$:#; # 1 1 	 	3 	'78*doo")bT"%"6"6 	 	8 	*doo")bT"%"3"3 	 	5 	(9':cJ*;)<M)O+< # 4 4 	 	G,-0@/A # 1 1d 	 	Dr   c                     U R                  S// SQ/SS9  U R                  S// SQ/SS9  U R                  S// SQ/S[        R                  S9  U R                  S// SQ/S[        R                  S9  g )	Nzno space, space,  spaces,	tab)zno spacespacespacesz	tabTr5   z , , r#   r#   r#   )NNN)r5   r/   )r   r:   r   r   r   s    r   test_read_skipinitialspace#Test_Csv.test_read_skipinitialspace  s    9:AB)- 	 	/ 		%)- 	 	/ 		+,)-s7H7H 	 	J 		+,)-s7H7H 	 	Jr   c                 z    U R                  / SQ/ SQ/ SQ/ SQ/ /SSS9  U R                  / SQSS	/SS
/S
// /SSS9  g )N)za   bz  a  z  r#   )r   r#   r#   r   )r#   r#   r   r#   r#   r&  r2   Fr4   r   r   r#   Tr
  r   s    r   test_read_space_delimiter"Test_Csv.test_read_space_delimiter  sZ    4+-BLRTU"% 	 	? 	4sc2Yb9"% 	 	>r   c                    [         R                  " 5       n SnSU-  nU< SU< 3nU R                  U/X3//5        [         R                  " U5        U R                  U/X3//5        U R                  [         R                  " 5       U5        [         R                  " US-
  5        U R	                  [         R
                  U R                  U// 5        U R	                  [        [         R                  S 5        U R	                  [        [         R                  SS 5        [         R                  " U5        g ! [         R                  " U5        f = f)Nr   r   rT   r+   )r:   field_size_limitr   rX   r8   r;   r9   )r   limitsizer   biglines        r   test_read_bigfieldTest_Csv.test_read_bigfield  s    $$&	(Dd
I!*I6GOOWI(>'?@  &OOWI(>'?@S113T:  a(cii7)RHi)=)=tDi)=)=q$G  'C  's   DD4 4Ec                    [         R                  " / SQ5      nU R                  UR                  S5        [	        U5        U R                  UR                  S5        [	        U5        U R                  UR                  S5        [	        U5        U R                  UR                  S5        U R                  [        [        U5        U R                  UR                  S5        g )N)zline,1zline,2zline,3r   r+   r   r  )r:   rD   rX   line_numr  r8   StopIteration)r   rs     r   test_read_linenumTest_Csv.test_read_linenum  s    JJ56Q'QQ'QQ'QQ'-q1Q'r   c           	         / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nS H  nU R                  US9   [        S	S
SS9 n[        R                  " X2S9nUR	                  U5        UR                  S5        [        [        R                  " U5      5       H  u  pVU R                  XaU   5        M     S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nz
azb
czd
zezfgzhz
izj
kzl
z
mzn
ozp
zqzrsztz

uzv

wzx

rU   r0   r1   r,   r   r   r#   r   r   )	r   r   r:   rP   r   r   	enumeraterD   rX   r   rowsr-   r   rP   r   rows          r   test_roundtrip_quoteed_newlines(Test_Csv.test_roundtrip_quoteed_newlines  s    ""((((
 1N^<"4'2F' ZZOF$$T*LLO"+CJJw,?"@((1g6 #A	 G =< 1FF =<s#   CA3B=(C=
CC
C	c                    / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/nS H  nU R                  US9   [        S	S
SS9 n[        R                  " X2[        R                  SS9nUR                  U5        UR                  S5        [        [        R                  " U[        R                  SS95       H  u  pVU R                  XaU   5        M     S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr:  r;  r<  r=  r>  r?  r@  r,   r   r   r#   r   rn   )r-   r/   r'   r   r  )
r   r   r:   rP   r=   r   r   rA  rD   rX   rB  s          r   (test_roundtrip_escaped_unquoted_newlines1Test_Csv.test_roundtrip_escaped_unquoted_newlines  s    ""((((
 1N^<"4'2F' ZZ034QF$$T*LLO"+CJJw?B~~BF-H #I ((1g6#I G =< 1FF =<s#   C,BCC,
C)%C,,
C;	r   N)-r   r   r   r   __doc__rA   rE   rQ   rc   rf   rj   rr   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r'  r*  r1  r7  rE  rH  r   r   r   r   r   r      s    
9Cv><+$190 ,41,19E1516"E>C2?<(,4:H)
*-B<H

:"DHJ>(&
(7$7r   r   c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestDialectRegistryi+  c                    U R                  [        [        R                  S 5        U R                  [        [        R                  5        U R                  [        R
                  [        R                  S 5        U R                  [        R
                  [        R                  S5        U R                  [        [        R                  5        U R                  [        R
                  [        R                  S 5        U R                  [        R
                  [        R                  S5        U R                  [        [        R                  S 5        U R                  [        [        R                  S S 5        U R                  [        [        R                  SSS5        U R                  [        [        R                  SS S9  U R                  [        [        R                  SS S9  U R                  [        [        R                  / 5        g )Nnonesuchr   )badargumentr.   )r8   r9   r:   list_dialectsget_dialectr;   unregister_dialectregister_dialectr   s    r   test_registry_badargs)TestDialectRegistry.test_registry_badargs,  sZ   )S%6%6=)S__5#))S__d;#))S__jA)S%;%;<#))S%;%;TB#))S%;%;ZH)S%9%94@)S%9%94F)S%9%9:q!L)S%9%9:&* 	 	,)S%9%9:"& 	 	()S%9%92>r   c                     " S S[         R                  5      nSn[         R                  " 5       U/-   nUR                  5         [         R                  " X!5        U R                  [         R                  U5        U R                  [         R                  " U5      R                  S5        [        [         R                  " 5       5      nU R                  X45        g )Nc                       \ rS rSrSrSrg)5TestDialectRegistry.test_registry.<locals>.myexceltsvi>  r3   r   Nr   r   r   r   r%   r   r   r   r   
myexceltsvrX  >      Ir   rZ  r3   )r:   excelrP  sortrS  
addCleanuprR  rX   rQ  r%   sorted)r   rZ  nameexpected_dialectsgot_dialectss        r   test_registry!TestDialectRegistry.test_registry=  s    	 	--/4&8 T...5.88$?c//12*9r   c           	      :   Sn[         R                  " USS9  U R                  [         R                  U5        U R	                  [         R
                  " U5      R                  S5        U R	                  / SQ/[        [         R                  " S/U5      5      5        g )Nfedcbar  r$   )r   YZzX;Y;Z)	r:   rS  r^  rR  rX   rQ  r%   r   rD   )r   r`  s     r   test_register_kwargs(TestDialectRegistry.test_register_kwargsI  so    TS1..5.88#>/*DWIt1L,MNr   c                 b    " S S[         R                  5      nSn[         R                  " X!SSSSS[         R                  S	9  U R	                  [         R
                  U5        [         R                  " U5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  [         R                  5        g )
Nc                   @    \ rS rSrSrSrSrSrSr\	R                  rSrg)	DTestDialectRegistry.test_register_kwargs_override.<locals>.mydialectiQ  r3   rV   TFrU   r   N)r   r   r   r   r%   r)   r[   r5   r-   r:   r\   r/   r   r   r   r   	mydialectrm  Q  s'    IIK$#N''Gr   rn  test_dialectr  'FTr0   )r%   r)   r[   r5   r-   r/   )r:   DialectrS  r<   r^  rR  rQ  rX   r%   r)   r[   r5   r-   r/   )r   rn  r`  rY   s       r   test_register_kwargs_override1TestDialectRegistry.test_register_kwargs_overrideP  s    	( 	( T'*'*)..2,0%(]]	4 	..5 //$'**C0**C0,,e41148//6#--8r   c                 v     " S S[         R                  5      nU R                  [         R                  U5        g )Nc                       \ rS rSrSrSrg)?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvim  r3   r   NrY  r   r   r   rZ  rv  m  r[  r   rZ  )r:   rq  r8   r;   )r   rZ  s     r   test_incomplete_dialect+TestDialectRegistry.test_incomplete_dialectl  s&    	 	#))Z0r   c                 h    " S S[         R                  5      n[        SSS9 nUR                  S5        UR	                  S5        [         R
                  " X!" 5       S9nU R                  [        U5      / S	Q5        U R                  [        U5      S
S/5        S S S 5        g ! , (       d  f       g = f)Nc                   4    \ rS rSrSr\R                  rSrSr	g)5TestDialectRegistry.test_space_dialect.<locals>.spaceir  r2   rn   r   N)
r   r   r   r   r%   r:   r=   r/   r'   r   r   r   r   r#  r{  r  s    InnGJr   r#  r   r   r   zabc   def
c1ccccc1 benzene
r   rY   )r   r#   r#   defc1ccccc1benzene)r:   r\  r   rL   r   rD   rX   r  )r   r#  r   rD   s       r   test_space_dialect&TestDialectRegistry.test_space_dialectq  s    	CII 	
 4'2gMM9:LLOZZ9FT&\+ABT&\J	+BC 322s   A6B##
B1c                 
   [        SSSS9 n[        R                  " U/UQ70 UD6nUR                  / SQ5        UR	                  S5        U R                  UR                  5       U5        S S S 5        g ! , (       d  f       g = f)Nr   r#   r   r   r   r+   r   r  r   )r   r:   rP   r   r   rX   r   )r   expected	writeargskwwriteargsr   rP   s         r   compare_dialect_123'TestDialectRegistry.compare_dialect_123~  sa    4g>'ZZC)C{CFOOG$LLOW\\^X6 ?>>s   AA44
Bc                     " S S[         R                  5      n " S S[         R                  5      n " S S[         R                  5      n " S S[         R                  5      n " S	 S
5      n[         R                  " SU5         U R                  S5        U R                  SS S9  U R                  SUS9  U R                  SU5        U R                  SU" 5       S9  U R                  SSS9  U R                  SUSS9  U R                  SUS9  [         R                  " S5        g ! [         R                  " S5        f = f)Nc                       \ rS rSrSrSrg)5TestDialectRegistry.test_dialect_apply.<locals>.testAi  r3   r   NrY  r   r   r   testAr    r[  r   r  c                       \ rS rSrSrSrg)5TestDialectRegistry.test_dialect_apply.<locals>.testBi  rW   r   NrY  r   r   r   testBr        Ir   r  c                       \ rS rSrSrSrg)5TestDialectRegistry.test_dialect_apply.<locals>.testCi  |r   NrY  r   r   r   testCr    r  r   r  c                       \ rS rSrSrSrg)7TestDialectRegistry.test_dialect_apply.<locals>.testUnii  u   Λr   NrY  r   r   r   testUnir    s     Ir   r  c                       \ rS rSrSrg);TestDialectRegistry.test_dialect_apply.<locals>.unspecifiedi  r   Nr   r   r   r   r   r   r   r   unspecifiedr    s    r   r  z1,2,3
r}  z1	2	3
z1:2:3
z1|2|3
z1;2;3
r  )rY   r%   u	   1Λ2Λ3
)r:   r\  rS  r  rR  )r   r  r  r  r  r  s         r   test_dialect_apply&TestDialectRegistry.test_dialect_apply  s!   	CII 		CII 		CII 		!cii 	!	 	 	We,	,$$[1$$[$$?$$[+$F$$]E:$$[%'$B$$['$B$$[%/2 % 4$$%:-4 % 6 ""7+C""7+s   B	D' 'D?c                     [         R                  " 5        H>  n[         R                  " U5      nU R                  [        [
        R
                  U5        M@     g r   )r:   rP  rQ  r8   r9   copy)r   r`  rY   s      r   	test_copyTestDialectRegistry.test_copy  s9    %%'Dood+GiG< (r   c                     [         R                  " 5        Ha  n[         R                  " U5      n[        [        R
                  S-   5       H(  nU R                  [        [        R                  X#5        M*     Mc     g )Nr+   )	r:   rP  rQ  rangepickleHIGHEST_PROTOCOLr8   r9   dumps)r   r`  rY   protos       r   test_pickleTestDialectRegistry.test_pickle  sS    %%'Dood+Gv66:;!!)V\\7J < (r   r   N)r   r   r   r   rT  rc  ri  rr  rw  r  r  r  r  r  r   r   r   r   rL  rL  +  s7    ?"
:O981
D7,<=
Kr   rL  c                        \ rS rSrS rS rSrg)TestCsvBasei  c                    [        SSSS9 nUR                  U5        UR                  S5        [        R                  " X0R
                  S9n[        U5      nU R                  XR5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   r   r}  )r   rL   r   r:   rD   rY   r   rX   )r   r   expected_resultr   rD   r   s         r   readerAssertEqualTestCsvBase.readerAssertEqual  s\    4'2>'MM% LLOZZ<<@F&\FV5 ?>>s   AA22
B c                    [        SSSS9 n[        R                  " X0R                  S9nUR	                  U5        UR                  S5        U R                  UR                  5       U5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   r}  r   )r   r:   rP   rY   r   r   rX   r   )r   r   r  r   rP   s        r   writerAssertEqualTestCsvBase.writerAssertEqual  s]    4'2>'ZZ<<@FU#LLOW\\^_=	 ?>>r   r   N)r   r   r   r   r  r  r   r   r   r   r  r    s    6>r   r  c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestDialectExceli  r\  c                 ,    U R                  SS//5        g )Nr   r  r   s    r   test_singleTestDialectExcel.test_single      uwi0r   c                 .    U R                  S/ SQ/5        g )Nz	1,2,3,4,5)r  2r  4r  r  r   s    r   test_simpleTestDialectExcel.test_simple  s    {-B,CDr   c                 (    U R                  S/ 5        g Nr#   r  r   s    r   test_blanklineTestDialectExcel.test_blankline      r2&r   c                 .    U R                  SSS//5        g )NrT   r#   r  r   s    r   test_empty_fields"TestDialectExcel.test_empty_fields  s    sb"XJ/r   c                 ,    U R                  SS//5        g )Nr   r#   r  r   s    r   test_singlequoted"TestDialectExcel.test_singlequoted  s    trdV,r   c                 .    U R                  SSS//5        g )Nz"",r#   r  r   s    r   test_singlequoted_left_empty-TestDialectExcel.test_singlequoted_left_empty      u2wi0r   c                 .    U R                  SSS//5        g )Nz,""r#   r  r   s    r   test_singlequoted_right_empty.TestDialectExcel.test_singlequoted_right_empty  r  r   c                 ,    U R                  SS//5        g )Nr   rV   r  r   s    r   test_single_quoted_quote)TestDialectExcel.test_single_quoted_quote  s    vw/r   c                 ,    U R                  SS//5        g )Nz""""""r   r  r   s    r   test_quoted_quotes#TestDialectExcel.test_quoted_quotes  s    x4&2r   c                 ,    U R                  SS//5        g )Nza""br  r   s    r   test_inline_quote"TestDialectExcel.test_inline_quote      vz2r   c                 ,    U R                  SS//5        g )Nza"b"cr  r   s    r   test_inline_quotes#TestDialectExcel.test_inline_quotes  s    w'4r   c                 ,    U R                  SS//5        g )Nz"a"babr  r   s    r   test_quotes_and_more%TestDialectExcel.test_quotes_and_more  s     	vx0r   c                 ,    U R                  SS//5        g )Nza"br  r   s    r   test_lone_quote TestDialectExcel.test_lone_quote  r  r   c                 ,    U R                  SS//5        g )Nz"a" "b"za "b"r  r   s    r   test_quote_and_quote%TestDialectExcel.test_quote_and_quote  s     	yG9+6r   c                 ,    U R                  SS//5        g )Nz "a"r  r   s    r   test_space_and_quote%TestDialectExcel.test_space_and_quote  r  r   c                 .    U R                  S/ SQ/5        g )Nz#1,2,3,"I think, therefore I am",5,6)r  r  r  zI think, therefore I amr  r   r  r   s    r   test_quotedTestDialectExcel.test_quoted  s    D!+  ,	-r   c                 .    U R                  S/ SQ/5        g )NzJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw")r  r  r  z"I see," said the blind manz"as he picked up his hammer and sawr  r   s    r   test_quoted_quote"TestDialectExcel.test_quoted_quote  s     k!G  H	Ir   c                 8    SnU R                  U/ SQ/ SQ/5        g )NzR1,2,3,"""I see,""
said the blind man","as he picked up his
hammer and saw"
9,8,7,6)r  r  r  z"I see,"
said the blind manz"as he picked up his
hammer and saw)98r   r   r  )r   r   s     r   test_quoted_nlTestDialectExcel.test_quoted_nl   s+    
 	u!J !2 3	4r   c                 .    U R                  S/ SQ/5        g )Nz	12,12,1",)12r  z1"r#   r  r   s    r   test_dubious_quote#TestDialectExcel.test_dubious_quote  s    {-C,DEr   c                 (    U R                  / S5        g r  r  r   s    r   	test_nullTestDialectExcel.test_null  r  r   c                 ,    U R                  S//S5        g )Nr   zabc
r  r   s    r   test_single_writer#TestDialectExcel.test_single_writer  s    y)4r   c                 .    U R                  / SQ/S5        g )N)r+   r   r   r     z1,2,abc,3,4
r  r   s    r   test_simple_writer#TestDialectExcel.test_simple_writer  s     346GHr   c                 .    U R                  / SQ/S5        g )N)r+   r   za"bc"r  r  z1,2,"a""bc""",3,4
r  r   s    r   test_quotesTestDialectExcel.test_quotes       568OPr   c                 ,    U R                  S//S5        g Nabc,defz"abc,def"
r  r   s    r   test_quote_fieldsep$TestDialectExcel.test_quote_fieldsep      }o>r   c                 .    U R                  / SQ/S5        g )N)r+   r   za
bcr  r  z1,2,"a
bc",3,4
r  r   s    r   test_newlinesTestDialectExcel.test_newlines  s     568MNr   r   N)r   r   r   r   rY   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  r    s    G1E'0-1103351
17
3-I
4F'5IQ?Or   r  c                   0    \ rS rSr\R
                  rSrSrg)EscapedExceli!  rn   r   N)	r   r   r   r   r:   r=   r/   r'   r   r   r   r   r  r  !  s    nnGJr   r  c                   .    \ rS rSr\" 5       rS rS rSrg)TestEscapedExceli%  c                 ,    U R                  S//S5        g )Nr  
abc\,def
r  r   s    r   test_escape_fieldsep%TestEscapedExcel.test_escape_fieldsep(  r  r   c                 ,    U R                  SS//5        g )Nr  r  r  r   s    r   test_read_escape_fieldsep*TestEscapedExcel.test_read_escape_fieldsep+  s    )>r   r   N)	r   r   r   r   r  rY   r  r  r   r   r   r   r  r  %  s    nG??r   r  c                   $    \ rS rSrSrS rS rSrg)TestDialectUnixi.  unixc                 .    U R                  / SQ/S5        g )N)r+   abc defr   "1","abc def","abc"
r  r   s    r   r  "TestDialectUnix.test_simple_writer1  r
  r   c                 .    U R                  S/ SQ/5        g )Nr$  )r  r#  r   r  r   s    r   test_simple_reader"TestDialectUnix.test_simple_reader4  s    69P8QRr   r   N)r   r   r   r   rY   r  r'  r   r   r   r   r   r   .  s    GQSr   r   c                   0    \ rS rSr\R
                  rSrSrg)QuotedEscapedExceli7  rn   r   N)	r   r   r   r   r:   r   r/   r'   r   r   r   r   r*  r*  7  s    ""GJr   r*  c                   .    \ rS rSr\" 5       rS rS rSrg)TestQuotedEscapedExceli;  c                 ,    U R                  S//S5        g r  r  r   s    r   test_write_escape_fieldsep1TestQuotedEscapedExcel.test_write_escape_fieldsep>  r  r   c                 ,    U R                  SS//5        g )Nz"abc\,def"
r  r  r   s    r   r  0TestQuotedEscapedExcel.test_read_escape_fieldsepA  s    0I;-@r   r   N)	r   r   r   r   r*  rY   r.  r  r   r   r   r   r,  r,  ;  s     "G?Ar   r,  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestDictFieldsiD  c                     [        SSSS9 n[        R                  " U/ SQS9nUR                  5       nU R	                  US5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   f1f2f3
fieldnamesr   )r   r:   
DictWriterwriteheaderrX   )r   r   rP   writeheader_return_values       r   test_writeheader_return_value,TestDictFields.test_writeheader_return_valueG  sM    4'2>'^^G:LMF'-'9'9';$5r: ?>>s   :A
Ac                    [        SSSS9 n[        R                  " U/ SQS9nUR                  5         UR	                  S5        U R                  UR                  5       S5        UR                  S	S
S.5        UR	                  S5        UR                  5         U R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr   r   r#   r   r5  r9  r   
f1,f2,f3
r   r   )r6  r8  z	10,,abc
)	r   r:   r;  r<  r   rX   readliner   r   r   s      r   test_write_simple_dict%TestDictFields.test_write_simple_dictM  s    4'2>'^^G:LMF LLOW--/@OO2U34LLOW\\^]; ?>>s   B.C
Cc                    [        5       n[        R                  " U/ SQS9nUR                  5         U R	                  UR                  5       S5        UR                  SSSS.SSS	S./5        U R	                  UR                  5       S
5        g )Nr5  r9  rA  r+   r   fr      xyzzf1,f2,f3
1,abc,f
2,5,xyz
)r   r:   r;  r<  rX   r   r   r   s      r   test_write_multiple_dict_rows,TestDictFields.test_write_multiple_dict_rowsX  s    *4FG))+^<%s;!"!59; 	<))+=	?r   c                 b    [        5       nU R                  [        [        R                  U5        g r   )r   r8   r9   r:   r;  r   r   s     r   test_write_no_fields#TestDictFields.test_write_no_fieldsb  s    *)S^^W=r   c                    [        SSSS9 n[        R                  " U/ SQS9nU R                  [        5       nUR                  SSS	S
.5        S S S 5        [        WR                  5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        S S S 5        g ! , (       d  f       Nt= f! , (       d  f       g = f)Nr   r   r#   r   r5  r9  r   spamr   )f4r7  r+   r:  z'f4'z'f2'r  )
r   r:   r;  r8   r>   r   str	exceptionassertInassertNotIn)r   r   rP   cxrS  s        r   #test_write_fields_not_in_fieldnames2TestDictFields.test_write_fields_not_in_fieldnamesf  s    4'2>'^^G:LMF"":."rE BC /BLL)IMM,	2MM&),VY/MM#y) ?> /. ?>s#   -CB=A%C=
C	C
Cc                 f    [        5       nU R                  [        [        R                  USS/SS9  g )Nr6  r7  raisedextrasaction)r   r8   r>   r:   r;  rL  s     r   &test_typo_in_extrasaction_raises_error5TestDictFields.test_typo_in_extrasaction_raises_errorr  s/    **cnngd|'/ 	 	1r   c                 B   [        5       n[        R                  " USS/SS9nSSSSS	.nU R                  [        [        R                  R
                  X#5        [        R                  " USS/S
S9nU R                  [        [        R                  R
                  X#5        g )Nr6  r7  raiser[  r   r+   r   r  f0r6  r7  r8  RAISE)r   r:   r;  r8   r>   r   r   r   rP   dictrows       r   )test_write_field_not_in_field_names_raise8TestDictFields.test_write_field_not_in_field_names_raisew  s}    *$GL!1A6*cnn&=&=vO $GL*cnn&=&=vOr   c                 B   [        5       n[        R                  " USS/SS9nSSSSS	.n[        R                  R                  X#5        U R	                  UR                  5       S
5        [        R                  " USS/SS9n[        R                  R                  X#5        g )Nr6  r7  ignorer[  r   r+   r   r  ra  z1,2
IGNORE)r   r:   r;  r   rX   r   rd  s       r   *test_write_field_not_in_field_names_ignore9TestDictFields.test_write_field_not_in_field_names_ignore  s    *$HM!1A60))+Y7 $HM0r   c                     / SQn[        5       n[        R                  " U[        U5      5      nU R	                  UR
                  U5        g Nr  )r   r:   
DictReaderr   rX   r:  r   r:  rF  rD   s       r   (test_dict_reader_fieldnames_accepts_iter7TestDictFields.test_dict_reader_fieldnames_accepts_iter  9    $
J4
#34**J7r   c                     / SQn[        5       n[        R                  " X!5      nU R                  UR                  U5        g rn  )r   r:   ro  rX   r:  rp  s       r   (test_dict_reader_fieldnames_accepts_list7TestDictFields.test_dict_reader_fieldnames_accepts_list  2    $
J.**J7r   c                     / SQn[        5       n[        R                  " U[        U5      5      nU R	                  UR
                  U5        g rn  )r   r:   r;  r   rX   r:  r   r:  rF  rP   s       r   (test_dict_writer_fieldnames_rejects_iter7TestDictFields.test_dict_writer_fieldnames_rejects_iter  rs  r   c                     / SQn[        5       n[        R                  " X!5      nU R                  UR                  U5        g rn  )r   r:   r;  rX   r:  ry  s       r   (test_dict_writer_fieldnames_accepts_list7TestDictFields.test_dict_writer_fieldnames_accepts_list  rw  r   c                 B    [        5       n[        R                  " US S9ng )Nr9  )r   r:   ro  )r   rF  rD   s      r   'test_dict_reader_fieldnames_is_optional6TestDictFields.test_dict_reader_fieldnames_is_optional  s    Jd3r   c                     [        SSS9 nUR                  S5        UR                  S5        [        R                  " U/ SQS9nU R                  [        U5      SS	S
S.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r|  z	1,2,abc
r   r5  r9  r  r  r   r   rL   r   r:   ro  rX   r  r   r   rD   s      r   test_read_dict_fields$TestDictFields.test_read_dict_fields  s`    4'2gMM-(LLO^^G/ACFT&\#S+NO 322s   AA--
A;c                 6   [        SSS9 nUR                  S5        UR                  S5        [        R                  " U5      nU R                  [        U5      SSSS	.5        U R                  UR                  / S	Q5        S S S 5        g ! , (       d  f       g = f)
Nr   r   r|  f1,f2,f3
1,2,abc
r   r  r  r   r5  )r   rL   r   r:   ro  rX   r  r:  r  s      r   test_read_dict_no_fieldnames+TestDictFields.test_read_dict_no_fieldnames  sr    4'2gMM34LLO^^G,FT&\#S+NOV..0BC 322s   A6B


Bc           	      n   [        SSS9 nUR                  S5        UR                  S5        [        R                  " U[        [        R                  " U5      5      S9nU R                  UR                  / SQ5        U R                  [        U5      SS	S
S.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r|  r  r   r9  r5  r  r  r   )	r   rL   r   r:   ro  r  rD   rX   r:  r  s      r   #test_read_dict_fieldnames_from_file2TestDictFields.test_read_dict_fieldnames_from_file  s    4'2gMM34LLO^^G/3CJJw4G/HJFV..0BCT&\#S+NO 322s   BB&&
B4c           	      v   SS K n[        SSS9 nUR                  S5        UR                  S5        [        R
                  " U5      n[        U5      nUR                  U/U5       H7  nU R                  UR                  / SQ5        U R                  USSS	S.5        M9     S S S 5        g ! , (       d  f       g = f)
Nr   r   r   r|  r  r5  r  r  r   )
	itertoolsr   rL   r   r:   ro  r  chainrX   r:  )r   r  r   rD   firstrD  s         r   test_read_dict_fieldnames_chain.TestDictFields.test_read_dict_fieldnames_chain  s    4'2gMM34LLO^^G,FLE w7  !2!24FG  S5&IJ 8 322s   BB**
B8c                     [        SSS9 nUR                  S5        UR                  S5        [        R                  " USS/S9nU R                  [        U5      S	S
/ SQS.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r|  1,2,abc,4,5,6
r   r6  r7  r9  r  r  r   r  r  r   )r6  r7  Nr  r  s      r   test_read_longTestDictFields.test_read_long  sk    4'2gMM-.LLO^^G04d|=FT&\#S3I,K L 322s   AA//
A=c                    [        SSS9 nUR                  S5        UR                  S5        [        R                  " USS/SS	9nU R                  [        U5      S
S/ SQS.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r|  r  r   r6  r7  _rest)r:  restkeyr  r  r  r6  r7  r  r  r  s      r   test_read_long_with_rest'TestDictFields.test_read_long_with_rest  sn    4'2gMM-.LLO^^G04d|WNFT&\#S6L,N O 322s   AA00
A>c                 8   [        SSS9 nUR                  S5        UR                  S5        [        R                  " USS9nU R                  UR                  SS	/5        U R                  [        U5      S
S/ SQS.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r|  zf1,f2
1,2,abc,4,5,6
r   r  r  r6  r7  r  r  r  r  )r   rL   r   r:   ro  rX   r:  r  r  s      r   &test_read_long_with_rest_no_fieldnames5TestDictFields.test_read_long_with_rest_no_fieldnames  s~    4'2gMM67LLO^^GW=FV..t=T&\#S6L,N O 322s   A7B
Bc                 `   [        SSS9 nUR                  S5        UR                  S5        [        R                  " USR                  5       SS9nU R                  [        U5      S	S
SSSSS.5        U R                  [        U5      S	S
SSSSS.5        S S S 5        g ! , (       d  f       g = f)Nr   r   r|  z1,2,abc,4,5,6
1,2,abc
r   1 2 3 4 5 6DEFAULT)r:  restvalr  r  r   r  r  r   r  r  r  r  r  r   )r   rL   r   r:   ro  splitrX   r  r  s      r   test_read_shortTestDictFields.test_read_short  s    4'2gMM89LLO^^G/</B/B/D,57F T&\3U25Cc,K LT&\3U2;)2;,= > 322s   BB
B-c           	          / SQn[         R                  " USR                  5       S9nU R                  [	        U5      SSSSSS	.5        g )
N)z2147483648,43.0e12,17,abc,def
z147483648,43.0e2,17,abc,def
z47483648,43.0,170,abc,def
zi1 float i2 s1 s2r9  
2147483648z43.0e1217r   r~  )i1floati2s1s2r:   ro  r  rX   r  )r   samplerD   s      r   test_read_multiTestDictFields.test_read_multi  sO     +>+D+D+FHfl2;/3/4/4	(6 	7r   c           
          [         R                  " / SQSR                  5       S9nU R                  [	        U5      SSSSSS	S
.5        U R                  [	        U5      SSSSSS	S
.5        g )N)r  rU   r  r  r9  r  r  r   r  r  r   r  r  r   rD   s     r   test_read_with_blanks$TestDictFields.test_read_with_blanks  st     !6+8+>+>+@B 	fSs.1#(G 	HfSs.1#(G 	Hr   c           
          [         R                  " S/SR                  5       SS9nU R                  [	        U5      SSSSS	S
S.5        g )Nz1;2;abc;4;5;6
r  r  )r:  r%   r  r  r   r  r  r   r  r  r  s     r   test_read_semi_sep!TestDictFields.test_read_semi_sep  sO    !4 5+8+>+>+@*-/ 	fSs.1#(G 	Hr   r   N)r   r   r   r   r>  rC  rI  rM  rW  r]  rf  rk  rq  ru  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r3  r3  D  s    ;	<?>
*1
P	188884PDP	KLOO>7HHr   r3  c                   ,    \ rS rSrS rS rS rS rSrg)TestArrayWritesi  c           	         SS K n[        S5       Vs/ s H  nSU-
  PM
     nnUR                  SU5      n[        SSSS9 n[        R                  " USS	9nUR                  U5        S
R                  U Vs/ s H  n[        U5      PM     sn5      S-   nUR                  S5        U R                  UR                  5       U5        S S S 5        g s  snf s  snf ! , (       d  f       g = f)Nr      r   r   r   r#   r   r\  r}  rT   rU   arrayr  r   r:   rP   r   joinrR  r   rX   r   r   r  r   contentsr   r   rP   r  s           r   test_int_writeTestArrayWrites.test_int_write  s    $)"I.IqRTI.KKX&4'2>'ZZ9FOOAxx 3AQ 34V;HLLOW\\^X6 ?> / !4 ?>s#   C 6C6C
;CC
C'c           	         SS K n[        S5       Vs/ s H  nSU-
  S-  PM     nnUR                  SU5      n[        SSSS9 n[        R                  " US	S
9nUR                  U5        SR                  U Vs/ s H  n[        U5      PM     sn5      S-   nUR                  S5        U R                  UR                  5       U5        S S S 5        g s  snf s  snf ! , (       d  f       g = f)Nr   r  皙?r   r   r   r#   r   r\  r}  rT   rU   r  r  s           r   test_double_write!TestArrayWrites.test_double_write"      (-b	2	1RT3J	2KKX&4'2>'ZZ9FOOAxx 3AQ 34V;HLLOW\\^X6 ?> 3
 !4 ?>#   C6C9C
;CC
C*c           	         SS K n[        S5       Vs/ s H  nSU-
  S-  PM     nnUR                  SU5      n[        SSSS9 n[        R                  " US	S
9nUR                  U5        SR                  U Vs/ s H  n[        U5      PM     sn5      S-   nUR                  S5        U R                  UR                  5       U5        S S S 5        g s  snf s  snf ! , (       d  f       g = f)Nr   r  r  rF  r   r   r#   r   r\  r}  rT   rU   r  r  s           r   test_float_write TestArrayWrites.test_float_write-  r  r  c                 l   SS K nSS KnUR                  SUR                  5      n[        SSSS9 n[        R
                  " USS9nUR                  U5        S	R                  U5      S
-   nUR                  S5        U R                  UR                  5       U5        S S S 5        g ! , (       d  f       g = f)Nr   wr   r   r#   r   r\  r}  rT   rU   )r  stringascii_lettersr   r:   rP   r   r  r   rX   r   )r   r  r  r   r   rP   r  s          r   test_char_writeTestArrayWrites.test_char_write8  s    KKV1124'2>'ZZ9FOOAxx{6)HLLOW\\^X6 ?>>s   A,B%%
B3r   N)	r   r   r   r   r  r  r  r  r   r   r   r   r  r    s    
7	7	7	7r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestDialectValidityiC  c                 ^    " S S[         R                  5      nU" 5       nU R                  UR                  [         R                  5        S Ul        U R                  [         R                  U5        SUl        U R                  [         R                  5       nU" 5         S S S 5        U R                  [        WR                  5      S5        SUl	        [         R                  Ul        SUl        U" 5       nU R                  UR                  [         R                  5        U R                  UR                  S5        U R                  UR                  5        SUl        U R                  [         R                  5       nU" 5         S S S 5        U R                  [        UR                  5      S5        S	Ul        U R                  [         R                  5       nU" 5         S S S 5        U R                  [        UR                  5      S5        S
Ul        U R                  [         R                  5       nU" 5         S S S 5        U R                  [        UR                  5      S5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nh= f)Nc                   @    \ rS rSrSrSrSrSrSr\	R                  rSrg)	3TestDialectValidity.test_quoting.<locals>.mydialectiE  r  rn   FTrU   r   Nr   r   r   r   r%   r'   r[   r5   r-   r:   r=   r/   r   r   r   r   rn  r  E  %    IJK##NnnGr   rn  *   zbad "quoting" valueTrV   r#   z("quotechar" must be a 1-character stringz''r  z+"quotechar" must be string or None, not int)r:   rq  rX   r/   r=   r8   r;   rR  rS  r[   r<   r)   
assertTruer   rn  r   cms       r   test_quoting TestDialectValidity.test_quotingD  s   	% 	% KCNN3 	#))Y/	syy)RK *R\\*.	0 !%	MM	!	KCMM2c*& 	syy)RK *R\\*C	E #	syy)RK *R\\*C	E  	syy)RK *R\\*F	H9 *) *) *) *)s0   I*>I<J4J*
I9<
J

J
J,c                     " S S[         R                  5      nU" 5       nU R                  UR                  S5        SUl        U R	                  [         R
                  5       nU" 5         S S S 5        U R                  [        WR                  5      S5        SUl        U R	                  [         R
                  5       nU" 5         S S S 5        U R                  [        UR                  5      S5        SUl        U R	                  [         R
                  5       nU" 5         S S S 5        U R                  [        UR                  5      S5        S	Ul        U R	                  [         R
                  5       nU" 5         S S S 5        U R                  [        UR                  5      S
5        S Ul        U R	                  [         R
                  5       nU" 5         S S S 5        U R                  [        UR                  5      S5        g ! , (       d  f       GN= f! , (       d  f       GNX= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N{= f)Nc                   @    \ rS rSrSrSrSrSrSr\	R                  rSrg)	5TestDialectValidity.test_delimiter.<locals>.mydialectis  r  rn   FTrU   r   Nr  r   r   r   rn  r  s  r  r   rn  r  :::z("delimiter" must be a 1-character stringr#      ,z%"delimiter" must be string, not bytesr  z#"delimiter" must be string, not intz("delimiter" must be string, not NoneType)r:   rq  rX   r%   r8   r;   rR  rS  r  s       r   test_delimiter"TestDialectValidity.test_delimiterr  s   	% 	% Kc*#	syy)RK *R\\*C	E !	syy)RK *R\\*C	E #	syy)RK *R\\*@	B  	syy)RK *R\\*>	@ #	syy)RK *R\\*C	E5 *) *) *) *) *)s<   #H>HH)4H;I
H
H&)
H8;
I	
Ic                     " S S[         R                  5      nU" 5       nU R                  UR                  S5        SUl        U R	                  [         R
                  S5         U" 5         S S S 5        SUl        U R	                  [         R
                  S5         U" 5         S S S 5        SUl        U R	                  [         R
                  S5         U" 5         S S S 5        S	Ul        U R	                  [         R
                  S
5         U" 5         S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nh= f! , (       d  f       g = f)Nc                   @    \ rS rSrSrSrSrSrSr\	R                  rSrg)	6TestDialectValidity.test_escapechar.<locals>.mydialecti  r  rn   FTrU   r   Nr  r   r   r   rn  r    r  r   rn  rn   r#   z)"escapechar" must be a 1-character stringz**   *z."escapechar" must be string or None, not bytesr  z,"escapechar" must be string or None, not int)r:   rq  rX   r'   r   r;   )r   rn  r   s      r   test_escapechar#TestDialectValidity.test_escapechar  s    	% 	% Kt,!	##CII/Z[K \  $	##CII/Z[K \  $	##CII/_`K a  !	##CII/]^K _^ \[ \[ a` _^s0   $DD+D<	E
D(+
D9<
E

Ec                     " S S[         R                  5      nU" 5       nU R                  UR                  S5        SUl        U" 5       nU R                  UR                  S5        SUl        U R	                  [         R
                  5       nU" 5         S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nc                   @    \ rS rSrSrSrSrSrSr\	R                  rSrg)	:TestDialectValidity.test_lineterminator.<locals>.mydialecti  r  rn   FTrU   r   Nr  r   r   r   rn  r    r  r   rn  rU   r  r  z!"lineterminator" must be a string)r:   rq  rX   r-   r8   r;   rR  rS  r  s       r   test_lineterminator'TestDialectValidity.test_lineterminator  s    	% 	% K))62#(	 K))51#$	 syy)RK *R\\*<	> *)s   C
Cc           
         S nS H  nU R                  US9   U R                  [        R                  XS5        U R                  [        R                  XS5        U R                  [        R                  XS5        U R                  [        R                  XS5        U R                  [        XS5        U R                  [        XS	5        US
:w  a  U R                  [        XSSS9  S S S 5        M     g ! , (       d  f       M  = f)Nc                      " S S[         R                  5      n[        X0U5        UR                  5        H  u  p[        X0U5        M     U" 5       ng )Nc                   8    \ rS rSrSr\R                  rSrSr	Sr
g)QTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialecti  rT   rV   rU   r   N)r   r   r   r   r%   r:   r<   r/   r)   r-   r   r   r   r   rn  r    s    	--	!'r   rn  )r:   rq  r`   items)
field_namevaluerq   rn  r   s        r   create_invalid>TestDialectValidity.test_invalid_chars.<locals>.create_invalid  sB    (CKK (
 I51%+\\^!
	u5 &4Ar   )r%   r'   r)   )r  r#   r      xrG  r0   r1   r%   r2   Tr%  )r   r8   r:   r;   r>   )r   r  r  s      r   test_invalid_chars&TestDialectValidity.test_invalid_chars  s    		 CJ4!!#))^L!!#))^O!!#))^N!!#))^K!!*n$O!!*n$O,%%j.c7; & = 54 C44s   CC44
D	r   N)
r   r   r   r   r  r  r  r  r  r   r   r   r   r  r  C  s    ,H\'ER6>*=r   r  c                       \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSr\" S5      r\" S5      r\" S5      r\" S5      rSrS rS rS rS rS rS rS rS rSrg)TestSnifferi  zHarry's, Arlington Heights, IL, 2/1/03, Kimi Hayes
Shark City, Glendale Heights, IL, 12/28/02, Prezence
Tommy's Place, Blue Island, IL, 12/28/02, Blue Sunday/White Crow
Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back
a  'Harry''s':'Arlington Heights':'IL':'2/1/03':'Kimi Hayes'
'Shark City':'Glendale Heights':'IL':'12/28/02':'Prezence'
'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow'
'Stonecutters ''Seafood'' and Chop House':'Lemont':'IL':'12/19/02':'Week Back'
z+"venue","city","state","date","performers"
z05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03
05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03
05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03
zT2147483648;43.0e12;17;abc;def
147483648;43.0e2;17;abc;def
47483648;43.0;170;abc;def
zaaa	bbb
AAA	
BBB	
za|b|c
d|e|f
z'a'|'b'|'c'
'd'|e|f
z+"venue"+"city"+"state"+"date"+"performers"
zHarry's+ Arlington Heights+ IL+ 2/1/03+ Kimi Hayes
Shark City+ Glendale Heights+ IL+ 12/28/02+ Prezence
Tommy's Place+ Blue Island+ IL+ 12/28/02+ Blue Sunday/White Crow
Stonecutters Seafood and Chop House+ Lemont+ IL+ 12/19/02+ Week Back
a  'Harry''s'+ Arlington Heights'+ 'IL'+ '2/1/03'+ 'Kimi Hayes'
'Shark City'+ Glendale Heights'+' IL'+ '12/28/02'+ 'Prezence'
'Tommy''s Place'+ Blue Island'+ 'IL'+ '12/28/02'+ 'Blue Sunday/White Crow'
'Stonecutters ''Seafood'' and Chop House'+ 'Lemont'+ 'IL'+ '12/19/02'+ 'Week Back'
z|
                        abc,def
                        ghijkl,mno
                        ghi,jkl
                        z~
                        abc,def
                        ghijkl,mnop
                        ghi,jkl
                         z"time","forces"
                        1,1.5
                        0.5,5+0j
                        0,0
                        1+1j,6
                        z|"time","forces"
                        0,0
                        1,2
                        a,b
                        zabc def
ghijkl mno
ghi jkl
c                     [         R                  " 5       nU R                  UR                  U R                  5      5        U R                  UR                  U R                  5      5        g r   )r:   Snifferr  
has_headersample12assertFalsesample13r   sniffers     r   test_issue43625TestSniffer.test_issue436255  sE    ++-**4==9:++DMM:;r   c                     [         R                  " 5       nU R                  UR                  U R                  5      5        U R                  UR                  U R
                  5      5        g)zDMore to document existing (unexpected?) behavior than anything else.N)r:   r  r	  r  sample10sample11r  s     r   test_has_header_strings#TestSniffer.test_has_header_strings:  sG    ++-++DMM:;++DMM:;r   c                     [         R                  " 5       nU R                  UR                  U R                  5      S5        U R                  UR                  U R
                  U R                  -   5      S5        g NFT)r:   r  rZ   r  sample1header1r  s     r   test_has_headerTestSniffer.test_has_header@  P    ++-g((6>g(()DEtLr   c                     [         R                  " 5       nU R                  UR                  U R                  5      S5        U R                  UR                  U R
                  U R                  -   5      S5        g r  )r:   r  rZ   r  sample8header2r  s     r   'test_has_header_regex_special_delimiter3TestSniffer.test_has_header_regex_special_delimiterE  r  r   c                    [         R                  " 5       nS H  nU R                  U5         UR                  US5      nU R	                  UR
                  S5        U R	                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        S S S 5        M     g ! , (       d  f       M  = f)N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r  rp  F)
r:   r  r   sniffrX   r%   r)   rZ   r[   r5   )r   r  headerrY   s       r   test_guess_quote_and_delimiter*TestSniffer.test_guess_quote_and_delimiterJ  s    ++-FFf%!--5  !2!2C8  !2!2C8g1159g66> &% G%%s   BB<<
C	c                    [         R                  " 5       nUR                  U R                  5      nU R	                  UR
                  S5        U R	                  UR                  S5        U R                  UR                  S5        UR                  U R                  5      nU R	                  UR
                  S5        U R	                  UR                  S5        U R                  UR                  S5        g )NrT   rV   TrW   rp  F)
r:   r  r!  r  rX   r%   r)   rZ   r5   sample2r   r  rY   s      r   
test_sniffTestSniffer.test_sniffT  s    ++----**C0**C0g..5---**C0**C0g..6r   c                    [         R                  " 5       nUR                  U R                  5      nU R	                  UR
                  U R                  5        UR                  U R                  SS9nU R                  UR
                  S5        UR                  U R                  SS9nU R                  UR
                  S5        UR                  U R                  5      nU R                  UR
                  S5        UR                  U R                  5      nU R                  UR
                  S5        UR                  U R                  5      nU R                  UR
                  S5        UR                  U R                  5      nU R                  UR
                  S5        U R                  UR                  S	5        UR                  U R                  5      nU R                  UR
                  S
5        UR                  U R                  5      nU R                  UR
                  S
5        U R                  UR                  S	5        UR                  U R                  5      nU R                  UR
                  S5        g )Nz?,)
delimiters?z/,/r  r3   r  rp  +r   )r:   r  r!  sample3rT  r%   rX   sample4sample5sample6sample7r)   r  sample9sample14r'  s      r   test_delimitersTestSniffer.test_delimiters`  s   ++---- 	g''6--->**C0--->**C0---**C0---**D1---**C0---**C0**C0---**C0---**C0**C0--.**D1r   c                 J   [         R                  " 5       nUR                  U R                  5      nU R	                  UR
                  5        UR                  U R                  5      nU R	                  UR
                  5        UR                  U R                  5      nU R                  UR
                  5        UR                  U R                  5      nU R	                  UR
                  5        UR                  U R                  5      nU R                  UR
                  5        g r   )r:   r  r!  r  r	  r[   r  r&  r  r  r4  r'  s      r   test_doublequoteTestSniffer.test_doublequote|  s    ++----,,----,,----++,---,,----++,r   r   N)r   r   r   r   r  r&  r  r/  r0  r1  r2  r3  r  r  r4  r	   r  r  r  r
  r5  r  r  r  r  r#  r(  r6  r9  r   r   r   r   r  r    s    GGGGG /G"G*GGGG   H   H   H   HH<
<M
M
?
728-r   r  c                       \ rS rSrS r\rSrg)NULi  c                     g r   r   )sra   s     r   rL   	NUL.write  s    r   r   N)r   r   r   r   rL   
writelinesr   r   r   r   r<  r<    s    Jr   r<  gettotalrefcountzrequires sys.gettotalrefcount()c                   ,    \ rS rSrS rS rS rS rSrg)	TestLeaksi  c                    Sn[         R                  " 5       n[        S5       H  n[        R                  " 5         U R                  [        R                  / 5        [         R                  " 5       n[        R                  " S/5        [        R                  " S/5        [        R                  " S/5        XB-
  nUnM     U R                  US5        g )Nr   r  a,b,c
r  
sysrA  r  gccollectrX   garbager:   rD   
assertLess)r   deltalastrcr   rcs        r   test_create_readTestLeaks.test_create_read  s    %%'rAJJLRZZ,%%'BJJ}%JJ}%JJ}%IEF  	q!r   c                    Sn[         R                  " 5       n[        5       n[        S5       H  n[        R
                  " 5         U R                  [        R                  / 5        [         R                  " 5       n[        R                  " U5        [        R                  " U5        [        R                  " U5        XR-
  nUnM     U R                  US5        g )Nr   r  r  )rG  rA  r<  r  rH  rI  rX   rJ  r:   rP   rK  )r   rL  rM  r>  r   rN  s         r   test_create_writeTestLeaks.test_create_write  s    %%'ErAJJLRZZ,%%'BJJqMJJqMJJqMIEF  	q!r   c                 d   SnS/S-  n[         R                  " 5       n[        S5       Hr  n[        R                  " 5         U R                  [        R                  / 5        [         R                  " 5       n[        R                  " U5      nU H  nM     XS-
  nUnMt     U R                  US5        g )Nr   rE  rG  r  rF  )r   rL  rC  rM  r   rN  rdrrD  s           r   	test_readTestLeaks.test_read  s    }Q%%'rAJJLRZZ,%%'B**T"C IEF  	q!r   c                    Sn/ SQ/S-  n[        5       n[        R                  " 5       n[        S5       H  n[        R
                  " 5         U R                  [        R                  / 5        [        R                  " 5       n[        R                  " U5      nU H  nUR                  U5        M     Xd-
  nUnM     U R                  US5        g )Nr   r  rG  r  )r<  rG  rA  r  rH  rI  rX   rJ  r:   rP   r   rK  )	r   rL  rC  r>  rM  r   rN  rP   rD  s	            r   
test_writeTestLeaks.test_write  s    y{E%%'rAJJLRZZ,%%'BZZ]F$ IEF  	q!r   r   N)	r   r   r   r   rO  rR  rV  rY  r   r   r   r   rC  rC    s    "" " "r   rC  c                   (    \ rS rSr/ SQrS rS rSrg)TestUnicodei  )u   Martin von Löwisu   Marc André LemburgzGuido van Rossumu   François Pinardc                 B   [        SSSS9 nUR                  SR                  U R                  5      S-   5        UR	                  S5        [
        R                  " U5      nU R                  [        U5      U R                  /5        S S S 5        g ! , (       d  f       g = fNr   r#   r   r  rT   rU   r   )	r   rL   r  namesr   r:   rD   rX   r   r  s      r   test_unicode_readTestUnicode.test_unicode_read  sm    4g>'MM#((4::.78LLOZZ(FT&\DJJ<8	 ?>>s   A;B
Bc                 N   [        SSSS9 n[        R                  " U5      nUR                  U R                  5        SR                  U R                  5      S-   nUR                  S5        U R                  UR                  5       U5        S S S 5        g ! , (       d  f       g = fr^  )	r   r:   rP   r   r_  r  r   rX   r   )r   r   rP   r  s       r   test_unicode_writeTestUnicode.test_unicode_write  sr    4g>'ZZ(FOODJJ'xx

+F2HLLOW\\^X6 ?>>s   BB
B$r   N)r   r   r   r   r_  r`  rc  r   r   r   r   r\  r\    s    !E
97r   r\  c                        \ rS rSrS rS rSrg)KeyOrderingTesti  c                    [        5       n[        S5       H  n[        SSSS9 n[        R                  " X25      nUR                  5         UR                  S5        [        R                  " U5      n[        UR                  5      nU R                  X&5        UR                  U5        S S S 5        M     U R                  [        U5      SS5        g ! , (       d  f       M  = f)	Nabcder   r#   r   r  r   x   z@Key ordering: some key permutations not collected (expected 120))setr   r   r:   r;  r<  r   ro  tupler:  rX   addlen)r   	resultsetkeys
fileobjectdwdrkts          r   ,test_ordering_for_the_dict_reader_and_writer<KeyOrderingTest.test_ordering_for_the_dict_reader_and_writer  s    E	 )DtR'Bj^^J5 "^^J/2==)  *b! CB * 	Y.pq CBs   BC
C!	c                    [        S5      R                  5       nU R                  [        [        R
                  " U5      5      [        SS/5      [        SSS SS/4/5      [        SS	/5      [        S
S/5      /5        U R                  [        [        R
                  " USS95      [        SS/5      [        SSSSS/4/5      [        SS	/5      [        S
S/5      /5        US	 U R                  [        [        R
                  " USS/S95      [        SS/5      [        SSS SS/4/5      [        SS/5      [        SS/5      /5        g )Nz            FirstName,LastName
            Eric,Idle
            Graham,Chapman,Over1,Over2

            Under1
            John,Cleese
        )	FirstNameEric)LastNameIdle)rw  Graham)ry  ChapmanOver1Over2)rw  Under1)ry  N)rw  John)ry  Cleese	OtherInfor  r   fnamelnamer9  )r  rx  )r  rz  )r  r{  )r  r|  )r  r  )r  N)r  r  )r  r  )r	   
splitlinesrX   r   r:   ro  r
   )r   datas     r   test_ordered_dict_reader(KeyOrderingTest.test_ordered_dict_reader  s      Z\ 	 	cnnT23/1EFG13J'7!346 713EFG/1GHI		 	cnnT;GH/1EFG13J&'(:;= >13EFG/1GHI		 GcnnTw>PQR+->?@-/C'7!346 7-?@+-@AB		r   r   N)r   r   r   r   rt  r  r   r   r   r   rf  rf    s    r!r   rf  c                   D    \ rS rSrS rS r\R                  S 5       rSr	g)MiscTestCasei  c                 <    [         R                  " U [        S5        g )N)r:   _csv)r   check__all__r:   r   s    r   test__all__MiscTestCase.test__all__  s    T38r   c                 6     " S S[         R                  5      ng )Nc                       \ rS rSrSrg)+MiscTestCase.test_subclassable.<locals>.Fooi"  r   Nr  r   r   r   Foor  "  s    cr   r  )r:   r;   )r   r  s     r   test_subclassableMiscTestCase.test_subclassable   s    !#))!r   c                     [         R                  " S5      nUR                  UR                  4 H&  nU R	                  US9   [        X5        S S S 5        M(     g ! , (       d  f       M:  = f)Nr  )tp)r   import_moduleReaderWriterr   r   )r   r  r  s      r   test_disallow_instantiation(MiscTestCase.test_disallow_instantiation$  sN    **62++t{{*B$,T6 %$ +$$s   A
A)	r   N)
r   r   r   r   r  r  r   cpython_onlyr  r   r   r   r   r  r    s&    9" 7 7r   r  __main__).r  rG  unittestior   tempfiler   r:   rH  r  testr   test.supportr   r   r  r   textwrapr	   collectionsr
   r   TestCaser   rL  r  r  r\  r  r  r   r*  r,  r3  r  r  r  r<  
skipUnlesshasattrrC  r\  rf  r  r   mainr   r   r   <module>r     s    
   " 
 	   D "  # 
P7x   P7fCK(++ CKJ>(## > _O{ _OB399 ?{ ?Sk S A[ AOHX&& OHb,7h'' ,7\^=(++ ^=Bc-(## c-J 
 
WS"4568?"!! ?"8?"B7(## 7.1h'' 1h78$$ 7 zMMO r   