
    ;e                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ  G d	 d
          Z G d dej                  Z G d dej                  Z G d dej                  Z G d de          Z G d dej                  Z G d de          Z G d de          Z G d dej                  Z  G d de          Z! G d dej                  Z" G d d ej                  Z# G d! d"ej                  Z$ G d# d$ej                  Z% G d% d&          Z& ej'         e(ed'          d(           G d) d*ej                              Z) G d+ d,ej                  Z* G d- d.ej                  Z+ G d/ d0ej                  Z,e-d1k    r ej.                     dS dS )2    N)StringIO)TemporaryFile)support)warnings_helperimport_helpercheck_disallow_instantiation)permutations)dedent)OrderedDictc                       e Zd Zd ZdS )BadIterablec                     t           NOSErrorselfs    $/usr/lib/python3.11/test/test_csv.py__iter__zBadIterable.__iter__   s        N)__name__
__module____qualname__r    r   r   r   r      s#            r   r   c                   R   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej        ej         ej        e           d                                     Z!d Z"d Z#d Z$d Z%d Z&d  Z'd! Z(d" Z)d# Z*d$ Z+d% Z,d& Z-d' Z.d(S ))Test_Csvz
    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                    |                      t          |           |                      t          |d            |                      t          ||d           |                      t          ||d           |                      t          ||d           |                      t          j        ||d           |                      t          ||d            |                      t          ||d           |                      t          ||d           |                      t          ||d            |                      t          ||d           |                      t          ||d 	           |                      t          ||t          j        d
           |                      t          ||t          j        d            |                      t          ||t          j        d
           d S )Nr   bad_attr	delimiterXXfoo   	quotecharlineterminatorquoting )r*   r&   )assertRaises	TypeErrorcsvError	QUOTE_ALL
QUOTE_NONE)r   ctorargs      r   _test_arg_validzTest_Csv._test_arg_valid   s   )T***)T4000)T31===)T3A>>>)T3DAAA#)T3666)T3$???)T3!<<<)T3!<<<)T3tDDD)T3qAAA)T3===)T3"%-2 	 	? 	? 	?)T3"%-4 	 	A 	A 	A)T3"%.B 	 	@ 	@ 	@ 	@ 	@r   c                     |                      t          j        g            |                     t          t          j        t                                 d S r   )r4   r.   readerr,   r   r   r   s    r   test_reader_arg_validzTest_Csv.test_reader_arg_valid2   s>    SZ,,,'3:{}}=====r   c                     |                      t          j        t                                  G d d          }|                     t
          t          j         |                       d S )Nc                   $    e Zd Zed             ZdS )1Test_Csv.test_writer_arg_valid.<locals>.BadWriterc                     t           r   r   r   s    r   writez7Test_Csv.test_writer_arg_valid.<locals>.BadWriter.write9   s    r   N)r   r   r   propertyr<   r   r   r   	BadWriterr:   8   s-          X  r   r>   )r4   r.   writerr   r,   r   )r   r>   s     r   test_writer_arg_validzTest_Csv.test_writer_arg_valid6   sn    SZ444	 	 	 	 	 	 	 	 	'3:yy{{;;;;;r   c                 `    || }|                      |j        j        d           |                     |j        j        d           |                      |j        j        d            |                      |j        j        d           |                      |j        j        d           |                      |j        j        t          j
                   |                     |j        j        d           |                     |j        j        d           |                     t          t          |j        d           |                     t          t           |j        dd           |                     t          t          |j        d           |                     t          t           |j        dd            d S )	N,T
"Fr!   :r*   )assertEqualdialectr!   assertIsdoublequote
escapecharr(   r&   r*   r.   QUOTE_MINIMALskipinitialspacestrictr,   AttributeErrordelattrsetattr)r   r2   argsobjs       r   _test_default_attrszTest_Csv._test_default_attrs>   sg   dDk.444ck-t444/6663V<<<.444,c.?@@@ck2E:::ck(%000.'3;LLL.'3;SQQQ.'3;	JJJ.'3;#T	+ 	+ 	+ 	+ 	+r   c                 F    |                      t          j        g            d S r   )rS   r.   r6   r   s    r   test_reader_attrszTest_Csv.test_reader_attrsP          R00000r   c                 ^    |                      t          j        t                                 d S r   )rS   r.   r?   r   r   s    r   test_writer_attrszTest_Csv.test_writer_attrsS   $      XZZ88888r   c           
      l   t          dddddt          j        dd          } ||i |}|                     |j        j        d           |                     |j        j        d           |                     |j        j        d           |                     |j        j	        d           |                     |j        j
        d           |                     |j        j        t          j                   |                     |j        j        d           |                     |j        j        d           d S )NrE   F\*T)r!   rI   rJ   r(   r&   r*   rL   rM   )dictr.   r1   rF   rG   r!   rH   rI   rJ   r(   r&   r*   rL   rM   )r   r2   rQ   kwargsrR   s        r   _test_kw_attrszTest_Csv._test_kw_attrsV   s   4%)S!nt!# # # dD#F##.444ck-u555/6663T:::.444,cn===ck2D999ck($/////r   c                 F    |                      t          j        g            d S r   )r`   r.   r6   r   s    r   test_reader_kw_attrszTest_Csv.test_reader_kw_attrsf   s     CJ+++++r   c                 ^    |                      t          j        t                                 d S r   )r`   r.   r?   r   r   s    r   test_writer_kw_attrszTest_Csv.test_writer_kw_attrsi   s$    CJ

33333r   c                 J    G d d          }||fz   } || }|                      |j        j        d           |                     |j        j        d           |                      |j        j        d           |                      |j        j        d           |                      |j        j        d           |                      |j        j        t          j
                   |                     |j        j        d           |                     |j        j        d           d S )	Nc                   8    e Zd ZdZdZdZdZdZej	        Z
dZdZdS )-Test_Csv._test_dialect_attrs.<locals>.dialect-F^$#TN)r   r   r   r!   rI   rJ   r(   r&   r.   r0   r*   rL   rM   r   r   r   rG   rg   n   s9        IKJNIMG!FFFr   rG   rh   Fri   rj   rk   T)rF   rG   r!   rH   rI   rJ   r(   r&   r*   r.   r0   rL   rM   )r   r2   rQ   rG   rR   s        r   _test_dialect_attrszTest_Csv._test_dialect_attrsl   s   	 	 	 	 	 	 	 	 wj dDk.444ck-u555/5553S999.444,cm<<<ck2D999ck(%00000r   c                 F    |                      t          j        g            d S r   )rl   r.   r6   r   s    r   test_reader_dialect_attrsz"Test_Csv.test_reader_dialect_attrs   rV   r   c                 ^    |                      t          j        t                                 d S r   )rl   r.   r?   r   r   s    r   test_writer_dialect_attrsz"Test_Csv.test_writer_dialect_attrs   rY   r   c                 >   t          ddd          5 }t          j        |fi |}|                    |           |                    d           |                     |                                ||j        j        z              d d d            d S # 1 swxY w Y   d S Nw+utf-8r+   encodingnewliner   )	r   r.   r?   writerowseekrF   readrG   r(   )r   fieldsexpectr_   fileobjr?   s         r   _write_testzTest_Csv._write_test   s    4'2>>> 	E'Z22622FOOF###LLOOOW\\^^#fn&CCE E E		E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   A2BBBc                 ~   t          ddd          5 }t          j        |fi |}|                     |          5  |                    |           d d d            n# 1 swxY w Y   |                    d           |                     |                                d           d d d            d S # 1 swxY w Y   d S rr   )r   r.   r?   r,   rx   ry   rF   rz   )r   excr{   r_   r}   r?   s         r   _write_error_testzTest_Csv._write_error_test   s7   4'2>>> 	1'Z22622F""3'' ( ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( (LLOOOW\\^^R000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s5   (B2AB2A!	!B2$A!	%A B22B69B6c                 
   |                      t          j        d            |                     dd           |                     d gd           |                      t          j        d gt          j                   |                      t
          t                                  G d d          }|                      t
           |                        G d d          }|                      t
           |            g           d S )	Nr   r+   ""r)   c                       e Zd Zd Zd ZdS ).Test_Csv.test_write_arg_valid.<locals>.BadListc                     dS )N
   r   r   s    r   __len__z6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__   s    rr   c                      |dk    rt           d S )N   r   )r   is     r   __getitem__z:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__   s    q55!M 5r   N)r   r   r   r   r   r   r   r   BadListr      s2          " " " " "r   r   c                       e Zd Zd ZdS ).Test_Csv.test_write_arg_valid.<locals>.BadItemc                     t           r   r   r   s    r   __str__z6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__       r   N)r   r   r   r   r   r   r   BadItemr      #            r   r   )r   r.   r/   r~   r1   r   r   )r   r   r   s      r   test_write_arg_validzTest_Csv.test_write_arg_valid   s   sy$///R   $&&&sy4&CNKKKw666	" 	" 	" 	" 	" 	" 	" 	" 	w		222	 	 	 	 	 	 	 	 	w44444r   c                 J    ddz  }|                      ||g|d|           d S )NXP  rB   )r~   )r   	bigstrings     r   test_write_bigfieldzTest_Csv.test_write_bigfield   sD    %K	)I.#))YY10 	1 	1 	1 	1 	1r   c                    |                      g dd           |                     t          j        g dt          j                   |                      g ddt          j                   |                      g ddt          j                   |                      g ddt          j                   |                      ddgdt          j                   d S )	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   r.   r/   r1   rK   QUOTE_NONNUMERICr0   r   s    r   test_write_quotingzTest_Csv.test_write_quoting   s    444sy---), 	 	9 	9 	9#&#4 	 	6 	6 	6#&#7 	 	9 	9 	9#&= 	 	2 	2 	2&\#&= 	 	2 	2 	2 	2 	2r   c                    |                      g ddd           |                     t          j        g dd d           |                      g dddd           |                      d	gd
dt          j                   |                      d	gddt          j        d           |                      d	gddt          j                   |                      g dddt          j                   |                      ddgddt          j                   |                      ddgddt          j                   |                      ddgddt          j                   |                      ddgddt          j                   |                      ddgddt          j                   |                      ddgddt          j                   |                      g dddt          j                   d S )Nr   r   r[   rJ   )r   r$   zp,"q"F)rJ   rI   za,1,"p,\"q\""rD   """")rJ   r*   z\")rJ   r*   rI   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/   rK   r1   r0   r   s    r   test_write_escapezTest_Csv.test_write_escape   s   $( 	 	* 	* 	*sy///*.E 	 	C 	C 	C*;$( 	 	? 	? 	?#$(C4E 	 	G 	G 	G#$(C4E', 	 	. 	. 	. 	#$(CN 	 	D 	D 	D$(CN 	 	D 	D 	D$h$(#. 	 	B 	B 	B$h$(#2C 	 	E 	E 	E$l$(#- 	 	A 	A 	A%y$(#2C 	 	E 	E 	E%{$(#. 	 	B 	B 	B%{$(#2C 	 	E 	E 	E0002C$(#2C 	 	E 	E 	E 	E 	Er   c           
         dD ]}|                      |          5  t                      5 }t          j        ||          }|                    ddg           |                    ddg           |                     |                                d| d|            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )	N)rC   
r\   z!@# r'   r   br$   r   a,bz1,2)subTestr   r.   r?   rx   rF   getvalue)r   r(   sior?   s       r   test_write_lineterminatorz"Test_Csv.test_write_lineterminator   sa   = 	= 	=N^<< = =ZZ =3 ZNKKKFOOS#J///OOQF+++$$S\\^^&<> &< &<+9&< &<= = =	= = = = = = = = = = = = = = == = = = = = = = = = = = = = =	= 	=s5   C A3B)C )B--C 0B-1C  C	C	c                    |                      t          g d          d           |                      t          g d          d           |                      t          g           d           |                      t          d g          d           |                     t          j        t          d g          t          j                   |                      t          d d g          d           d S )	Nr   r   )r   r$   Nza,1,r+   r   r)   rB   )r~   iterr   r.   r/   r1   r   s    r   test_write_iterablezTest_Csv.test_write_iterable   s    ooo..<<<nnn--v666b2&&&tft,,,sy$v,,OOOtTl++S11111r   c                     G d d          }t          j         |                      }|                     t          |j        dgg           t          ddd          5 }t          j        |          }|                     t          |j        d            |                    ddgd	d
gg           |                    d           |                     |	                                d           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )+Test_Csv.test_writerows.<locals>.BrokenFilec                     t           r   r   )r   bufs     r   r<   z1Test_Csv.test_writerows.<locals>.BrokenFile.write   r   r   N)r   r   r   r<   r   r   r   
BrokenFiler      r   r   r   r   rs   rt   r+   ru   r   cdr   z
a,b
c,d
)
r.   r?   r,   r   	writerowsr   r-   ry   rF   rz   )r   r   r?   r}   s       r   test_writerowszTest_Csv.test_writerows   sO   	 	 	 	 	 	 	 	 JJLL))'6#3seW===4'2>>> 	?'Z((Fi)94@@@sCj3*5666LLOOOW\\^^-=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   BC::C>C>c                    t          ddd          5 }t          j        |          }|                    dd gd dgg           |                    d           |                     |                                d           d d d            n# 1 swxY w Y   t          ddd          5 }t          j        |          }|                    d gdgg           |                    d           |                     |                                d	           d d d            n# 1 swxY w Y   t          ddd          5 }t          j        |          }|                    dgd gg           |                    d           |                     |                                d
           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   r   r   r   za,
,d
z""
a
za
""
)r   r.   r?   r   ry   rF   rz   r   r}   r?   s      r   test_writerows_with_nonez!Test_Csv.test_writerows_with_none   sW   4'2>>> 	='Z((FsDkD#;7888LLOOOW\\^^^<<<		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 4'2>>> 	<'Z((Ftfse_---LLOOOW\\^^];;;		< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 4'2>>> 	<'Z((FsedV_---LLOOOW\\^^];;;		< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s8   A-BBB)A+D  D$'D$=A+F55F9<F9c                     t          ddd          5 }t          j        |          }|                     t          |j        d            |                     t          |j        t                                 d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   )r   r.   r?   r,   r-   r   r   r   r   s      r   test_writerows_errorszTest_Csv.test_writerows_errors  s    4'2>>> 	H'Z((Fi)94@@@gv'7GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   A#BB
B)categoryc                 ^   dd l }|                    d          }t          ddd          5 }t          j        |          }|                    |gg           |                    d           |                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr   r   rs   rt   r+   ru   za
)		_testcapiunicode_legacy_stringr   r.   r?   r   ry   rF   rz   )r   r   r   r}   r?   s        r   test_writerows_legacy_stringsz&Test_Csv.test_writerows_legacy_strings  s     	++C004'2>>> 	6'Z((FqcU###LLOOOW\\^^W555		6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   A)B""B&)B&c                 t    t          j        |fi |}t          |          }|                     ||           d S r   )r.   r6   listrF   )r   inputr|   r_   r6   results         r   
_read_testzTest_Csv._read_test$  s@    E,,V,,f(((((r   c                 <   |                      g g            |                      dgg g           |                     t          j        | j         dgd d           |                      dgdggd           |                     t          j        | j         dgd            d S )	Nr+   z"ab"cr$   rM   abcr   )rI   s   abcr   r,   r.   r/   r   s    r   test_read_oddinputszTest_Csv.test_read_oddinputs)  s    Brd####)T_")TA 	 	7 	7 	7	UG9A>>>#)T_!(D	* 	* 	* 	* 	*r   c                    |                      dgddgg           |                      dgddgg           |                      dgddgg           |                      dgddgg           |                     t          j        | j         dgg            |                     t          j        | j         dgg            |                     t          j        | j         d	gg            d S )
Nr   r   r   za,b
za,b
za,bza,bc,dza,b
c,dza,b
c,dr   r   s    r   test_read_eolzTest_Csv.test_read_eol3  s    3s)---	SI;///s3i[111	SI;///#)T_zlBGGG#)T_zlBGGG#)T_|nbIIIIIr   c                    |                      dgddgg           |                      dgdgg           |                      dgdggd           |                     t          j        | j         dgg d	           |                     t          j        | j         dgg d	           |                     t          j        | j         dgg dd
           d S )Nza,"r   r+   z"ari   r   r   Tr   )rJ   rM   r   r   s    r   test_read_eofzTest_Csv.test_read_eof<  s    3)---#(((xC888#)T_ugr$OOO#)T_tfbNNN#)T_%D 	 	B 	B 	B 	B 	Br   c                    |                      dgdgg           |                      dgg dg           |                      dgg dg           |                      dgg dgd           |                      d	gg dg           d S )
Nr   a, b,c)r   z br   za,b ,c)r   zb r   za,b\ ,cr[   r   za," b",cr   r   s    r   test_read_nulzTest_Csv.test_read_nulE  s    $)))&7&7&7%8999&7&7&7%8999(9(9(9':tLLL(9(9(9':;;;;;r   c                     |                      dgg dg           |                      dgg dgd           |                      dgg dgd           d S )Nza,b,cr   r   r   za;b;c;r    za b cr   r   r   s    r   test_read_delimiterzTest_Csv.test_read_delimiterL  sg    	OOO#4555	OOO#4DDDooo%6$GGGGGr   c                 2   |                      dgg dgd           |                      dgddggd           |                      dgddggd           |                      d	gddggd           |                      d
gddggd           |                      dgddggd           |                      dgg dgd           |                      dgg dgd           |                      dgg dgd            |                      dgg dg           d S )Nza,\b,cr   r[   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,cri   r   r   )r   z\br   r   r   s    r   test_read_escapezTest_Csv.test_read_escapeQ  sP   ooo%64HHHsEl^EEEe~$GGGe~$GGG#vDIIIg'7DIII
___$5#FFFooo%64HHH&7&7&7%8TJJJ&7&7&7%899999r   c                    |                      dgg dg           |                      dgg dgd d           |                      dgg dgt          j        d           |                      dgg dgt          j        	           |                      d
gddgg           |                     t
          | j         dgg gt          j        	           |                      dgg dgd           |                      dgg dgd           d S )Nz	1,",3,",5)1z,3,5)r   rD   3rD   r   r[   )r&   rJ   r*   rJ   z,3,"5",7.3, 9)r+      r   g333333@	   r)   z"a
b", 7r   z 7zabc,3z	1,@,3,@,5@r%   z	1, ,3, ,5r   )r   r.   r1   r   r,   
ValueErrorr   s    r   test_read_quotingzTest_Csv.test_read_quoting]  sZ   (9(9(9':;;;(A(A(A'B"&4 	 	9 	9 	9(A(A(A'B #4 	 	A 	A 	A 	),@,@,@+A # 4 	 	6 	6 	6'7888*do")bT"%"6 	 	8 	8 	8 	(9(9(9':cJJJ*;*;*;)<MMMMMr   c                 >    |                      dgg dgd           d S )Nzno space, space,  spaces,	tab)zno spacespacespacesz	tabT)rL   r   r   s    r   test_read_skipinitialspacez#Test_Csv.test_read_skipinitialspacem  s<    9:AAAB)- 	 	/ 	/ 	/ 	/ 	/r   c                    t          j                    }	 d}d|z  }|d|}|                     |g||gg           t          j        |           |                     |g||gg           |                     t          j                    |           t          j        |dz
             |                     t           j        | j        |gg            |                     t          t           j        d            |                     t          t           j        dd            t          j        |           d S # t          j        |           w xY w)Nr   r   rB   r$   )r.   field_size_limitr   rF   r,   r/   r-   )r   limitsizer   biglines        r   test_read_bigfieldzTest_Csv.test_read_bigfieldr  s<    $&&	(Dd
I!*II6GOOWII(>'?@@@ &&&OOWII(>'?@@@S133T::: a(((ci7)RHHHi)=tDDDi)=q$GGG '''''C ''''s   D	D4 4E
c                    t          j        g d          }|                     |j        d           t	          |           |                     |j        d           t	          |           |                     |j        d           t	          |           |                     |j        d           |                     t          t          |           |                     |j        d           d S )N)zline,1zline,2zline,3r   r$   r   r   )r.   r6   rF   line_numnextr,   StopIteration)r   rs     r   test_read_linenumzTest_Csv.test_read_linenum  s    J55566Q'''QQ'''QQ'''QQ'''-q111Q'''''r   c                 p   t          ddd          5 }t          j        |          }ddgddgg}|                    |           |                    d	           t          t          j        |                    D ]!\  }}|                     |||                    "	 d d d            d S # 1 swxY w Y   d S )
Nrs   rt   r+   ru   r   r   r   x
dr   )r   r.   r?   r   ry   	enumerater6   rF   r   r}   r?   rowsr   rows         r   test_roundtrip_quoteed_newlinesz(Test_Csv.test_roundtrip_quoteed_newlines  s   4'2>>> 	/'Z((FCL#h0DT"""LLOOO#CJw$7$788 / /3  d1g..../	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   B
B++B/2B/c                    t          ddd          5 }t          j        |t          j        d          }ddgd	d
gg}|                    |           |                    d           t          t          j        |t          j        d                    D ]!\  }}|                     |||                    "	 d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   r[   r   r   r   r   r   r   )	r   r.   r?   r1   r   ry   r   r6   rF   r   s         r   (test_roundtrip_escaped_unquoted_newlinesz1Test_Csv.test_roundtrip_escaped_unquoted_newlines  s   4'2>>> 	.'Z$OOOFCL#h0DT"""LLOOO#CJws~Y]$^$^$^__ . .3  T!W----.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   B$CC	C	N)/r   r   r   __doc__r4   r7   r@   rS   rU   rX   r`   rb   rd   rl   rn   rp   r~   r   r   r   r   r   r   r   r   r   r   r   cpython_onlyrequires_legacy_unicode_capir   ignore_warningsDeprecationWarningr   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r      s        
@ @ @(> > >< < <+ + +$1 1 19 9 90 0 0 , , ,4 4 41 1 1,1 1 19 9 9E E E1 1 15 5 5&1 1 12 2 2E E E>	= 	= 	=2 2 2? ? ?< < <&H H H )$_$.@AAA6 6 BA *) 6) ) )
* * *J J JB B B< < <H H H

: 
: 
:N N N / / /
( ( (&
( 
( 
(/ / /. . . . .r   r   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestDialectRegistryc                    |                      t          t          j        d            |                      t          t          j                   |                      t          j        t          j        d            |                      t          j        t          j        d           |                      t          t          j                   |                      t          j        t          j        d            |                      t          j        t          j        d           |                      t          t          j        d            |                      t          t          j        d d            |                      t          t          j        ddd           |                      t          t          j        dd            |                      t          t          j        dd            |                      t          t          j        g            d S )Nnonesuchr   )badargumentr)   )r,   r-   r.   list_dialectsget_dialectr/   unregister_dialectregister_dialectr   s    r   test_registry_badargsz)TestDialectRegistry.test_registry_badargs  s   )S%6===)S_555#)S_d;;;#)S_jAAA)S%;<<<#)S%;TBBB#)S%;ZHHH)S%94@@@)S%94FFF)S%9:q!LLL)S%9:&* 	 	, 	, 	,)S%9:"& 	 	( 	( 	()S%92>>>>>r   c                     G d dt           j                  }d}t          j                    |gz   }|                                 t          j        ||           |                     t           j        |           |                     t          j        |          j	        d           t          t          j                              }|                     ||           d S )Nc                       e Zd ZdZdS )5TestDialectRegistry.test_registry.<locals>.myexceltsv	Nr   r   r   r!   r   r   r   
myexceltsvr            IIIr   r  r  )r.   excelr  sortr  
addCleanupr  rF   r  r!   sorted)r   r  nameexpected_dialectsgot_dialectss        r   test_registryz!TestDialectRegistry.test_registry  s    	 	 	 	 	 	 	 	-//4&8   T:....555..8$???c/1122*L99999r   c           	      D   d}t          j        |d           |                     t           j        |           |                     t          j        |          j        d           |                     g dgt          t          j        dg|                               d S )Nfedcbar   r    )r   YZzX;Y;Z)	r.   r  r  r  rF   r  r!   r   r6   )r   r  s     r   test_register_kwargsz(TestDialectRegistry.test_register_kwargs  s    TS1111.555..8#>>>///*DWIt1L1L,M,MNNNNNr   c           
      F    G d dt           j                  }d}t          j        ||dddddt           j        	           |                     t           j        |           t          j        |          }|                     |j        d           |                     |j	        d           |                     |j
        d           |                     |j        d           |                     |j        d           |                     |j        t           j                   d S )
Nc                   0    e Zd ZdZdZdZdZdZej	        Z
dS )DTestDialectRegistry.test_register_kwargs_override.<locals>.mydialectr  rD   TFrC   N)r   r   r   r!   r&   rI   rL   r(   r.   rK   r*   r   r   r   	mydialectr(    s0        IIK$#N'GGGr   r)  test_dialectr   'FTr   )r!   r&   rI   rL   r(   r*   )r.   Dialectr  r0   r  r  r  rF   r!   r&   rI   rL   r(   r*   )r   r)  r  rG   s       r   test_register_kwargs_overridez1TestDialectRegistry.test_register_kwargs_override  s.   	( 	( 	( 	( 	( 	( 	( 	( T9'*'*)..2,0%(]	4 	4 	4 	4 	.555 /$''*C000*C000,e44414888/666#-88888r   c                 v     G d dt           j                  }|                     t           j        |           d S )Nc                       e Zd ZdZdS )?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr  Nr  r   r   r   r  r0    r  r   r  )r.   r,  r,   r/   )r   r  s     r   test_incomplete_dialectz+TestDialectRegistry.test_incomplete_dialect  sL    	 	 	 	 	 	 	 	#)Z00000r   c                     G d dt           j                  }t          dd          5 }|                    d           |                    d           t          j        | |                      }|                     t          |          d	d
g           |                     t          |          ddg           d d d            d S # 1 swxY w Y   d S )Nc                   $    e Zd ZdZej        ZdZdS )5TestDialectRegistry.test_space_dialect.<locals>.space r[   N)r   r   r   r!   r.   r1   r*   rJ   r   r   r   r   r4    s        InGJJJr   r   rs   rt   rv   zabc def
c1ccccc1 benzene
r   rG   r   defc1ccccc1benzene)r.   r  r   r<   ry   r6   rF   r   )r   r   r}   r6   s       r   test_space_dialectz&TestDialectRegistry.test_space_dialect  s4   	 	 	 	 	CI 	 	 	
 4'222 	DgMM7888LLOOOZ999FT&\\E5>:::T&\\J	+BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   BC

CCc                 .   t          ddd          5 }t          j        |g|R i |}|                    g d           |                    d           |                     |                                |           d d d            d S # 1 swxY w Y   d S )Nrs   r+   rt   rw   rv   r$   r   r   r   )r   r.   r?   rx   ry   rF   rz   )r   expected	writeargskwwriteargsr}   r?   s         r   compare_dialect_123z'TestDialectRegistry.compare_dialect_123  s    4g>>> 	7'ZC)CCC{CCFOOGGG$$$LLOOOW\\^^X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   A*B

BBc                     G d dt           j                  } G d dt           j                  } G d dt           j                  } G d dt           j                  } G d	 d
          }t          j        d|           	 |                     d           |                     dd            |                     d|           |                     d|           |                     d |                       |                     dd           |                     d|d           |                     d|           t          j        d           d S # t          j        d           w xY w)Nc                       e Zd ZdZdS )5TestDialectRegistry.test_dialect_apply.<locals>.testAr  Nr  r   r   r   testArE     r  r   rF  c                       e Zd ZdZdS )5TestDialectRegistry.test_dialect_apply.<locals>.testBrE   Nr  r   r   r   testBrH            IIIr   rI  c                       e Zd ZdZdS )5TestDialectRegistry.test_dialect_apply.<locals>.testC|Nr  r   r   r   testCrL    rJ  r   rN  c                       e Zd ZdZdS )7TestDialectRegistry.test_dialect_apply.<locals>.testUniu   ΛNr  r   r   r   testUnirP    s         IIIr   rQ  c                       e Zd ZdS );TestDialectRegistry.test_dialect_apply.<locals>.unspecifiedNr   r   r   r   r   r   unspecifiedrS  	  s        Dr   rU  z1,2,3
r7  z1	2	3
z1:2:3
z1|2|3
z1;2;3
r   )rG   r!   u	   1Λ2Λ3
)r.   r  r  rB  r  )r   rF  rI  rN  rQ  rU  s         r   test_dialect_applyz&TestDialectRegistry.test_dialect_apply  s   	 	 	 	 	CI 	 	 		 	 	 	 	CI 	 	 		 	 	 	 	CI 	 	 		! 	! 	! 	! 	!ci 	! 	! 	!	 	 	 	 	 	 	 	 	We,,,	,$$[111$$[$$???$$[+$FFF$$]E:::$$[%%''$BBB$$['$BBB$$[%/2 % 4 4 4$$%:-4 % 6 6 6 "7+++++C"7++++s   B>E E.c                 F   |                      t          t          j        g d           |                      t          t          j        g d            |                      t          t          j        g d           |                      t          t          j        g d           d S )Nr   r   r    r)   d   )r,   r-   r.   r6   r   s    r   test_bad_dialectz$TestDialectRegistry.test_bad_dialect  s    )SZBBB)SZFFF)SZrBBB)SZsCCCCCr   c                     t          j                    D ]<}t          j        |          }|                     t          t
          j        |           =d S r   )r.   r  r  r,   r-   copy)r   r  rG   s      r   	test_copyzTestDialectRegistry.test_copy%  sP    %'' 	= 	=Dod++GiG<<<<	= 	=r   c                     t          j                    D ]\}t          j        |          }t          t          j        dz             D ])}|                     t          t          j        ||           *]d S )Nr$   )	r.   r  r  rangepickleHIGHEST_PROTOCOLr,   r-   dumps)r   r  rG   protos       r   test_picklezTestDialectRegistry.test_pickle*  s}    %'' 	K 	KDod++Gv6:;; K K!!)V\7EJJJJK	K 	Kr   N)r   r   r   r  r   r%  r-  r1  r;  rB  rV  rZ  r]  rd  r   r   r   r	  r	    s        ? ? ?"
: 
: 
:O O O9 9 981 1 1
D D D7 7 7, , ,<D D D= = =
K K K K Kr   r	  c                       e Zd Zd Zd ZdS )TestCsvBasec                 0   t          ddd          5 }|                    |           |                    d           t          j        || j                  }t          |          }|                     ||           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   r   r7  )r   r<   ry   r.   r6   rG   r   rF   )r   r   expected_resultr}   r6   r{   s         r   readerAssertEqualzTestCsvBase.readerAssertEqual1  s    4'2>>> 	6'MM%   LLOOOZ4<@@@F&\\FV_555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   A+BBBc                 6   t          ddd          5 }t          j        || j                  }|                    |           |                    d           |                     |                                |           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   r7  r   )r   r.   r?   rG   r   ry   rF   rz   )r   r   rh  r}   r?   s        r   writerAssertEqualzTestCsvBase.writerAssertEqual9  s    4'2>>> 	>'Z4<@@@FU###LLOOOW\\^^_===		> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   A.BBBN)r   r   r   ri  rk  r   r   r   rf  rf  0  s2        6 6 6> > > > >r   rf  c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDialectExcelr  c                 6    |                      ddgg           d S )Nr   ri  r   s    r   test_singlezTestDialectExcel.test_singleC  "    uwi00000r   c                 8    |                      dg dg           d S )Nz	1,2,3,4,5)r   2r   4r   ro  r   s    r   test_simplezTestDialectExcel.test_simpleF  s(    {-B-B-B,CDDDDDr   c                 2    |                      dg            d S Nr+   ro  r   s    r   test_blanklinezTestDialectExcel.test_blanklineI      r2&&&&&r   c                 8    |                      dddgg           d S )NrB   r+   ro  r   s    r   test_empty_fieldsz"TestDialectExcel.test_empty_fieldsL  s$    sb"XJ/////r   c                 6    |                      ddgg           d S )Nr   r+   ro  r   s    r   test_singlequotedz"TestDialectExcel.test_singlequotedO  s"    trdV,,,,,r   c                 8    |                      dddgg           d S )Nz"",r+   ro  r   s    r   test_singlequoted_left_emptyz-TestDialectExcel.test_singlequoted_left_emptyR  $    u2wi00000r   c                 8    |                      dddgg           d S )Nz,""r+   ro  r   s    r   test_singlequoted_right_emptyz.TestDialectExcel.test_singlequoted_right_emptyU  r  r   c                 6    |                      ddgg           d S )Nr   rD   ro  r   s    r   test_single_quoted_quotez)TestDialectExcel.test_single_quoted_quoteX  s"    vw/////r   c                 6    |                      ddgg           d S )Nz""""""r   ro  r   s    r   test_quoted_quotesz#TestDialectExcel.test_quoted_quotes[  s"    x4&22222r   c                 6    |                      ddgg           d S )Nza""bro  r   s    r   test_inline_quotez"TestDialectExcel.test_inline_quote^  "    vz22222r   c                 6    |                      ddgg           d S )Nza"b"cro  r   s    r   test_inline_quotesz#TestDialectExcel.test_inline_quotesa  s"    w'44444r   c                 6    |                      ddgg           d S )Nz"a"babro  r   s    r   test_quotes_and_morez%TestDialectExcel.test_quotes_and_mored  s$     	vx00000r   c                 6    |                      ddgg           d S )Nza"bro  r   s    r   test_lone_quotez TestDialectExcel.test_lone_quotei  rq  r   c                 6    |                      ddgg           d S )Nz"a" "b"za "b"ro  r   s    r   test_quote_and_quotez%TestDialectExcel.test_quote_and_quotel  s$     	yG9+66666r   c                 6    |                      ddgg           d S )Nz "a"ro  r   s    r   test_space_and_quotez%TestDialectExcel.test_space_and_quoteq  r  r   c                 8    |                      dg dg           d S )Nz#1,2,3,"I think, therefore I am",5,6)r   rs  r   zI think, therefore I amr   r   ro  r   s    r   test_quotedzTestDialectExcel.test_quotedt  s;    D!+ !+ !+  ,	- 	- 	- 	- 	-r   c                 8    |                      dg dg           d S )NzJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw")r   rs  r   z"I see," said the blind manz"as he picked up his hammer and sawro  r   s    r   test_quoted_quotez"TestDialectExcel.test_quoted_quotez  sD    k!G !G !G  H	I 	I 	I 	I 	Ir   c                 B    d}|                      |g dg dg           d S )NzR1,2,3,"""I see,""
said the blind man","as he picked up his
hammer and saw"
9,8,7,6)r   rs  r   z"I see,"
said the blind manz"as he picked up his
hammer and saw)98r   r   ro  )r   r   s     r   test_quoted_nlzTestDialectExcel.test_quoted_nl  sQ    
 	u!J !J !J !2 1 1 3	4 	4 	4 	4 	4r   c                 8    |                      dg dg           d S )Nz	12,12,1",)12r  z1"r+   ro  r   s    r   test_dubious_quotez#TestDialectExcel.test_dubious_quote  s(    {-C-C-C,DEEEEEr   c                 2    |                      g d           d S rw  rk  r   s    r   	test_nullzTestDialectExcel.test_null  ry  r   c                 6    |                      dggd           d S )Nr   zabc
r  r   s    r   test_single_writerz#TestDialectExcel.test_single_writer  s"    y)44444r   c                 8    |                      g dgd           d S )N)r$   r   r   r      z1,2,abc,3,4
r  r   s    r   test_simple_writerz#TestDialectExcel.test_simple_writer  s)     3 3 346GHHHHHr   c                 8    |                      g dgd           d S )N)r$   r   za"bc"r   r  z1,2,"a""bc""",3,4
r  r   s    r   test_quoteszTestDialectExcel.test_quotes  )     5 5 568OPPPPPr   c                 6    |                      dggd           d S Nabc,defz"abc,def"
r  r   s    r   test_quote_fieldsepz$TestDialectExcel.test_quote_fieldsep  "    }o>>>>>r   c                 8    |                      g dgd           d S )N)r$   r   za
bcr   r  z1,2,"a
bc",3,4
r  r   s    r   test_newlineszTestDialectExcel.test_newlines  s)     5 5 568MNNNNNr   N)r   r   r   rG   rp  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   rm  rm  @  s       G1 1 1E E E' ' '0 0 0- - -1 1 11 1 10 0 03 3 33 3 35 5 51 1 1
1 1 17 7 7
3 3 3- - -I I I
4 
4 
4F F F' ' '5 5 5I I IQ Q Q? ? ?O O O O Or   rm  c                        e Zd Zej        ZdZdS )EscapedExcelr[   N)r   r   r   r.   r1   r*   rJ   r   r   r   r  r    s        nGJJJr   r  c                   .    e Zd Z e            Zd Zd ZdS )TestEscapedExcelc                 6    |                      dggd           d S )Nr  
abc\,def
r  r   s    r   test_escape_fieldsepz%TestEscapedExcel.test_escape_fieldsep  r  r   c                 6    |                      ddgg           d S )Nr  r  ro  r   s    r   test_read_escape_fieldsepz*TestEscapedExcel.test_read_escape_fieldsep  s"    )>>>>>r   N)r   r   r   r  rG   r  r  r   r   r   r  r    s=        lnnG? ? ?? ? ? ? ?r   r  c                       e Zd ZdZd Zd ZdS )TestDialectUnixunixc                 8    |                      g dgd           d S )N)r$   abc defr   "1","abc def","abc"
r  r   s    r   r  z"TestDialectUnix.test_simple_writer  r  r   c                 8    |                      dg dg           d S )Nr  )r   r  r   ro  r   s    r   test_simple_readerz"TestDialectUnix.test_simple_reader  s)    69P9P9P8QRRRRRr   N)r   r   r   rG   r  r  r   r   r   r  r    s?        GQ Q QS S S S Sr   r  c                        e Zd Zej        ZdZdS )QuotedEscapedExcelr[   N)r   r   r   r.   r   r*   rJ   r   r   r   r  r    s        "GJJJr   r  c                   .    e Zd Z e            Zd Zd ZdS )TestQuotedEscapedExcelc                 6    |                      dggd           d S r  r  r   s    r   test_write_escape_fieldsepz1TestQuotedEscapedExcel.test_write_escape_fieldsep  r  r   c                 6    |                      ddgg           d S )Nz"abc\,def"
r  ro  r   s    r   r  z0TestQuotedEscapedExcel.test_read_escape_fieldsep  s#    0I;-@@@@@r   N)r   r   r   r  rG   r  r  r   r   r   r  r    sE          ""G? ? ?A A A A Ar   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDictFieldsc                     t          ddd          5 }t          j        |g d          }|                                }|                     |d           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   f1f2f3
fieldnamesr   )r   r.   
DictWriterwriteheaderrF   )r   r}   r?   writeheader_return_values       r   test_writeheader_return_valuez,TestDictFields.test_writeheader_return_value  s    4'2>>> 	;'^G:L:L:LMMMF'-'9'9';';$5r:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AA##A'*A'c                     t          ddd          5 }t          j        |g d          }|                                 |                    d           |                     |                                d           |                    d	d
d           |                    d           |                                 |                     |                                d           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   r  r  r   
f1,f2,f3
r   r   )r  r  z	10,,abc
)	r   r.   r  r  ry   rF   readlinerx   rz   r   s      r   test_write_simple_dictz%TestDictFields.test_write_simple_dict  s/   4'2>>> 	<'^G:L:L:LMMMF   LLOOOW--//@@@OO2U33444LLOOOW\\^^];;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   CC33C7:C7c                 X   t                      }t          j        |g d          }|                                 |                     |                                d           |                    ddddddd	dg           |                     |                                d
           d S )Nr  r  r  r$   r   fr      xyzzf1,f2,f3
1,abc,f
2,5,xyz
)r   r.   r  r  rF   r   r   r   s      r   test_write_multiple_dict_rowsz,TestDictFields.test_write_multiple_dict_rows  s    **4F4F4FGGG))++^<<<%s;;!"!599; 	< 	< 	<))++=	? 	? 	? 	? 	?r   c                 n    t                      }|                     t          t          j        |           d S r   )r   r,   r-   r.   r  r   r}   s     r   test_write_no_fieldsz#TestDictFields.test_write_no_fields  s+    **)S^W=====r   c                    t          ddd          5 }t          j        |g d          }|                     t                    5 }|                    ddd	d
           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           |                     d|           | 	                    d|           |                     d|           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r+   ru   r  r  r   spamr   )f4r  r$   r  z'f4'z'f2'r   )
r   r.   r  r,   r   rx   str	exceptionassertInassertNotIn)r   r}   r?   cxr  s        r   #test_write_fields_not_in_fieldnamesz2TestDictFields.test_write_fields_not_in_fieldnames  s   4'2>>> 		*'^G:L:L:LMMMF"":.. D"rE B BCCCD D D D D D D D D D D D D D DBL))IMM,	222MM&),,,VY///MM#y)))		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		* 		*s6   3C0A, C0,A0	0C03A0	4A/C00C47C4c                 x    t                      }|                     t          t          j        |ddgd           d S )Nr  r  raisedextrasaction)r   r,   r   r.   r  r  s     r   &test_typo_in_extrasaction_raises_errorz5TestDictFields.test_typo_in_extrasaction_raises_error  sC    ***cngd|'/ 	 	1 	1 	1 	1 	1r   c                     t                      }t          j        |ddgd          }ddddd	}|                     t          t          j        j        ||           d S )
Nr  r  raiser  r   r$   r   r   f0r  r  r  )r   r.   r  r,   r   rx   r   r}   r?   dictrows       r   )test_write_field_not_in_field_names_raisez8TestDictFields.test_write_field_not_in_field_names_raise  s[    **$GLLL!1A66*cn&=vwOOOOOr   c                     t                      }t          j        |ddgd          }ddddd	}t          j                            ||           |                     |                                d
           d S )Nr  r  ignorer  r   r$   r   r   r  z1,2
)r   r.   r  rx   rF   r   r  s       r   *test_write_field_not_in_field_names_ignorez9TestDictFields.test_write_field_not_in_field_names_ignore  sv    **$HMMM!1A66000))++Y77777r   c                 ,   t          dd          5 }|                    d           |                    d           t          j        |g d          }|                     t          |          dd	d
d           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r6  z	1,2,abc
r   r  r  r   rs  r   r   r<   ry   r.   
DictReaderrF   r   r   r}   r6   s      r   test_read_dict_fieldsz$TestDictFields.test_read_dict_fields  s    4'222 	PgMM-(((LLOOO^G/A/A/AC C CFT&\\#S+N+NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   A*B		BBc                 ^   t          dd          5 }|                    d           |                    d           t          j        |          }|                     t          |          dddd	           |                     |j        g d	           d d d            d S # 1 swxY w Y   d S )
Nrs   rt   r6  f1,f2,f3
1,2,abc
r   r   rs  r   r  )r   r<   ry   r.   r  rF   r   r  r  s      r   test_read_dict_no_fieldnamesz+TestDictFields.test_read_dict_no_fieldnames  s    4'222 	DgMM3444LLOOO^G,,FT&\\#S+N+NOOOV.0B0B0BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   BB""B&)B&c           	         t          dd          5 }|                    d           |                    d           t          j        |t          t          j        |                              }|                     |j        g d           |                     t          |          dd	d
d           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r6  r  r   r  r  r   rs  r   )	r   r<   ry   r.   r  r   r6   rF   r  r  s      r   #test_read_dict_fieldnames_from_filez2TestDictFields.test_read_dict_fieldnames_from_file  s!   4'222 	PgMM3444LLOOO^G/3CJw4G4G/H/HJ J JFV.0B0B0BCCCT&\\#S+N+NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   B$CC
Cc           	         dd l }t          dd          5 }|                    d           |                    d           t	          j        |          }t          |          }|                    |g|          D ]9}|                     |j	        g d           |                     |ddd	d           :	 d d d            d S # 1 swxY w Y   d S )
Nr   rs   rt   r6  r  r  r   rs  r   )
	itertoolsr   r<   ry   r.   r  r   chainrF   r  )r   r  r}   r6   firstr   s         r   test_read_dict_fieldnames_chainz.TestDictFields.test_read_dict_fieldnames_chain  s;   4'222 	KgMM3444LLOOO^G,,FLLE w77 K K  !24F4F4FGGG  S5&I&IJJJJK	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   BCC
Cc                 0   t          dd          5 }|                    d           |                    d           t          j        |ddg          }|                     t          |          d	d
g dd           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r6  1,2,abc,4,5,6
r   r  r  r  r   rs  r   rt  r   r   )r  r  Nr  r  s      r   test_read_longzTestDictFields.test_read_long*  s   4'222 	LgMM-...LLOOO^G04d|= = =FT&\\#S3I3I3I,K ,K L L L	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   A,BBBc                 2   t          dd          5 }|                    d           |                    d           t          j        |ddgd	          }|                     t          |          d
dg dd           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r6  r  r   r  r  _rest)r  restkeyr   rs  r  r  r  r  r  r  s      r   test_read_long_with_restz'TestDictFields.test_read_long_with_rest3  s   4'222 	OgMM-...LLOOO^G04d|WN N NFT&\\#S6L6L6L,N ,N O O O	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os   A-BBBc                 f   t          dd          5 }|                    d           |                    d           t          j        |d          }|                     |j        dd	g           |                     t          |          d
dg dd           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r6  zf1,f2
1,2,abc,4,5,6
r   r  r  r  r  r   rs  r  r  )r   r<   ry   r.   r  rF   r  r   r  s      r   &test_read_long_with_rest_no_fieldnamesz5TestDictFields.test_read_long_with_rest_no_fieldnames<  s   4'222 	OgMM6777LLOOO^GW===FV.t===T&\\#S6L6L6L,N ,N O O O	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os   BB&&B*-B*c                    t          dd          5 }|                    d           |                    d           t          j        |d                                d          }|                     t          |          d	d
ddddd           |                     t          |          d	d
ddddd           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r6  z1,2,abc,4,5,6
1,2,abc
r   1 2 3 4 5 6DEFAULT)r  restvalr   rs  r   rt  r   r   r   rs  r   rt  r   r   )r   r<   ry   r.   r  splitrF   r   r  s      r   test_read_shortzTestDictFields.test_read_shortE  s8   4'222 
	>gMM8999LLOOO^G/</B/B/D/D,57 7 7F T&\\3U25Cc,K ,K L L LT&\\3U2;)2;,= ,= > > >
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	> 
	>s   B(CCCc           	          g d}t          j        |d                                          }|                     t	          |          dddddd	           d S )
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 s2r  
2147483648z43.0e1217r   r8  )i1floati2s1s2r.   r  r  rF   r   )r   sampler6   s      r   test_read_multizTestDictFields.test_read_multiR  s       +>+D+D+F+FH H Hfl2;/3/4/4	(6 (6 	7 	7 	7 	7 	7r   c           
         t          j        g dd                                          }|                     t	          |          dddddd	d
           |                     t	          |          dddddd	d
           d S )N)r  rC   r  r  r  r   rs  r   rt  r   r   r  r%  r   r6   s     r   test_read_with_blanksz$TestDictFields.test_read_with_blanksa  s     !6 !6 !6+8+>+>+@+@B B B 	fSs.1#(G (G 	H 	H 	HfSs.1#(G (G 	H 	H 	H 	H 	Hr   c           
          t          j        dgd                                d          }|                     t	          |          ddddd	d
d           d S )Nz1;2;abc;4;5;6
r  r   )r  r!   r   rs  r   rt  r   r   r  r%  r)  s     r   test_read_semi_sepz!TestDictFields.test_read_semi_sepj  sz    !4 5+8+>+>+@+@*-/ / / 	fSs.1#(G (G 	H 	H 	H 	H 	Hr   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r'  r*  r,  r   r   r   r  r    sQ       ; ; ;	< 	< 	<? ? ?> > >
* 
* 
*1 1 1
P P P8 8 8P P PD D DP P P	K 	K 	KL L LO O OO O O> > >7 7 7H H HH H H H Hr   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestArrayWritesc                    dd l }d t          d          D             }|                     d|          }t          ddd          5 }t          j        |d	
          }|                    |           d                    d |D                       dz   }|                    d           |                     |	                                |           d d d            d S # 1 swxY w Y   d S )Nr   c                     g | ]}d |z
  S )   r   .0r   s     r   
<listcomp>z2TestArrayWrites.test_int_write.<locals>.<listcomp>t  s    ...qRT...r   r1  r   rs   rt   r+   ru   r  r7  rB   c                 ,    g | ]}t          |          S r   r  r2  s     r   r4  z2TestArrayWrites.test_int_write.<locals>.<listcomp>z       3 3 3AQ 3 3 3r   rC   
arrayr_  r   r.   r?   rx   joinry   rF   rz   r   r9  contentsr   r}   r?   r?  s          r   test_int_writezTestArrayWrites.test_int_writer  s%   ..E"II...KKX&&4'2>>> 	7'Z999FOOAxx 3 3 3 3 344V;HLLOOOW\\^^X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7   BCC"%C"c                    dd l }d t          d          D             }|                     d|          }t          ddd          5 }t          j        |d	
          }|                    |           d                    d |D                       dz   }|                    d           |                     |	                                |           d d d            d S # 1 swxY w Y   d S )Nr   c                     g | ]
}d |z
  dz  S r1  g?r   r2  s     r   r4  z5TestArrayWrites.test_double_write.<locals>.<listcomp>       2221RT3J222r   r1  r   rs   rt   r+   ru   r  r7  rB   c                 ,    g | ]}t          |          S r   r6  r2  s     r   r4  z5TestArrayWrites.test_double_write.<locals>.<listcomp>  r7  r   rC   r8  r;  s          r   test_double_writez!TestArrayWrites.test_double_write~  %   22b		222KKX&&4'2>>> 	7'Z999FOOAxx 3 3 3 3 344V;HLLOOOW\\^^X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7r>  c                    dd l }d t          d          D             }|                     d|          }t          ddd          5 }t          j        |d	
          }|                    |           d                    d |D                       dz   }|                    d           |                     |	                                |           d d d            d S # 1 swxY w Y   d S )Nr   c                     g | ]
}d |z
  dz  S rA  r   r2  s     r   r4  z4TestArrayWrites.test_float_write.<locals>.<listcomp>  rB  r   r1  r  rs   rt   r+   ru   r  r7  rB   c                 ,    g | ]}t          |          S r   r6  r2  s     r   r4  z4TestArrayWrites.test_float_write.<locals>.<listcomp>  r7  r   rC   r8  r;  s          r   test_float_writez TestArrayWrites.test_float_write  rE  r>  c                    dd l }dd l}|                     d|j                  }t          ddd          5 }t	          j        |d          }|                    |           d	                    |          d
z   }|                    d           | 	                    |
                                |           d d d            d S # 1 swxY w Y   d S )Nr   urs   rt   r+   ru   r  r7  rB   rC   )r9  stringascii_lettersr   r.   r?   rx   r:  ry   rF   rz   )r   r9  rL  r   r}   r?   r?  s          r   test_char_writezTestArrayWrites.test_char_write  s   KKV1224'2>>> 	7'Z999FOOAxx{{6)HLLOOOW\\^^X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   BCCCN)r   r   r   r=  rD  rI  rN  r   r   r   r.  r.  q  sP        
7 
7 
7	7 	7 	7	7 	7 	7	7 	7 	7 	7 	7r   r.  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestDialectValidityc                     G d dt           j                  } |            }|                     |j        t           j                   d |_        |                     t           j        |           d|_        t           j        |_        d|_	         |            }|                     |j        t           j                   |                     |j	        d           | 
                    |j                   d|_	        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d|_	        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d|_	        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d	           d S )
Nc                   0    e Zd ZdZdZdZdZdZej	        Z
dS )3TestDialectValidity.test_quoting.<locals>.mydialectr   r[   FTrC   Nr   r   r   r!   rJ   rI   rL   r(   r.   r1   r*   r   r   r   r)  rS    /        IJK##NnGGGr   r)  TrD   r+   z("quotechar" must be a 1-character stringz''r  z+"quotechar" must be string or None, not int)r.   r,  rF   r*   r1   r,   r/   rI   r0   r&   
assertTruer  r  r   r)  r   cms       r   test_quotingz TestDialectValidity.test_quoting  s   	% 	% 	% 	% 	% 	% 	% 	% IKKCN333 	#)Y/// $	M	!	IKKCM222c***&&& 	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**C	E 	E 	E #	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**C	E 	E 	E  	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**F	H 	H 	H 	H 	Hs6   D//D36D3FF#&F#8HHHc                     G d dt           j                  } |            }|                     |j        d           d|_        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d|_        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d|_        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d	|_        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d
           d |_        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                   0    e Zd ZdZdZdZdZdZej	        Z
dS )5TestDialectValidity.test_delimiter.<locals>.mydialectr   r[   FTrC   NrT  r   r   r   r)  r\    rU  r   r)  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.   r,  rF   r!   r,   r/   r  r  rW  s       r   test_delimiterz"TestDialectValidity.test_delimiter  s   	% 	% 	% 	% 	% 	% 	% 	% IKKc***#	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**C	E 	E 	E !	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**C	E 	E 	E #	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**@	B 	B 	B  	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**>	@ 	@ 	@ #	sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**C	E 	E 	E 	E 	EsZ   $A;;A?A?C++C/2C/EE"E4GGG$H;;H?H?c                     G d dt           j                  } |            }|                     |j        d           d|_        |                     t           j        d          5   |             d d d            n# 1 swxY w Y   d|_        |                     t           j        d          5   |             d d d            n# 1 swxY w Y   d|_        |                     t           j        d          5   |             d d d            n# 1 swxY w Y   d	|_        |                     t           j        d
          5   |             d d d            d S # 1 swxY w Y   d S )Nc                   0    e Zd ZdZdZdZdZdZej	        Z
dS )6TestDialectValidity.test_escapechar.<locals>.mydialectr   r[   FTrC   NrT  r   r   r   r)  rb    rU  r   r)  r[   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.   r,  rF   rJ   assertRaisesRegexr/   )r   r)  r   s      r   test_escapecharz#TestDialectValidity.test_escapechar  sl   	% 	% 	% 	% 	% 	% 	% 	% IKKt,,,!	##CI/Z[[ 	 	IKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  $	##CI/Z[[ 	 	IKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  $	##CI/_`` 	 	IKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  !	##CI/]^^ 	 	IKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   %A<<B B .CC	C	7DDD EEEc                     G d dt           j                  } |            }|                     |j        d           d|_         |            }|                     |j        d           d|_        |                     t           j                  5 } |             d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                   0    e Zd ZdZdZdZdZdZej	        Z
dS ):TestDialectValidity.test_lineterminator.<locals>.mydialectr   r[   FTrC   NrT  r   r   r   r)  rh    rU  r   r)  rC   r]  r  z!"lineterminator" must be a string)r.   r,  rF   r(   r,   r/   r  r  rW  s       r   test_lineterminatorz'TestDialectValidity.test_lineterminator  s,   	% 	% 	% 	% 	% 	% 	% 	% IKK)6222#(	 IKK)5111#$	 sy)) 	RIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**<	> 	> 	> 	> 	>s   B''B+.B+c                    d }dD ]}|                      |          5  |                     t          j        ||d           |                     t          j        ||d           |                     t          j        ||d           |                     t          j        ||d           d d d            n# 1 swxY w Y   d S )Nc                 l     G d dt           j                  }t          || |            |            }d S )Nc                       e Zd ZdS )QTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialectNrT  r   r   r   r)  rm  #  s        r   r)  )r.   r,  rP   )
field_namevaluer)  r   s       r   create_invalidz>TestDialectValidity.test_invalid_chars.<locals>.create_invalid"  sO        CK   Iz5111	AAAr   )r!   rJ   r&   )rn  r+   r      xr  )r   r,   r.   r/   )r   rp  rn  s      r   test_invalid_charsz&TestDialectValidity.test_invalid_chars!  s   	 	 	 C 	L 	LJ44 L L!!#)^ZLLL!!#)^ZOOO!!#)^ZNNN!!#)^ZKKK	L L L L L L L L L L L L L L L	L 	Ls   B	B33B7	:B7	N)r   r   r   rY  r_  re  ri  rr  r   r   r   rP  rP    sl        &H &H &HP'E 'E 'ER  6> > >*L L L L Lr   rP  c                       e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ ed          Z ed          Z ed          Z ed          ZdZd Zd Zd Zd Zd Zd Zd Zd ZdS )TestSnifferzHarry'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                     t          j                    }|                     |                    | j                             |                     |                    | j                             d S r   )r.   SnifferrV  
has_headersample12assertFalsesample13r   sniffers     r   test_issue43625zTestSniffer.test_issue43625  sY    +--**4=99:::++DM::;;;;;r   c                     t          j                    }|                     |                    | j                             |                     |                    | j                             dS )zDMore to document existing (unexpected?) behavior than anything else.N)r.   rv  ry  rw  sample10sample11r{  s     r   test_has_header_stringsz#TestSniffer.test_has_header_strings  s[    +--++DM::;;;++DM::;;;;;r   c                     t          j                    }|                     |                    | j                  d           |                     |                    | j        | j        z             d           d S NFT)r.   rv  rH   rw  sample1header1r{  s     r   test_has_headerzTestSniffer.test_has_header  b    +--g((66>>>g(()DEEtLLLLLr   c                     t          j                    }|                     |                    | j                  d           |                     |                    | j        | j        z             d           d S r  )r.   rv  rH   rw  sample8header2r{  s     r   'test_has_header_regex_special_delimiterz3TestSniffer.test_has_header_regex_special_delimiter  r  r   c                    t          j                    }dD ]}|                     |          5  |                    |d          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           d d d            n# 1 swxY w Y   d S )N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r   r+  F)
r.   rv  r   sniffrF   r!   r&   rH   rI   rL   )r   r|  headerrG   s       r   test_guess_quote_and_delimiterz*TestSniffer.test_guess_quote_and_delimiter  s   +--F 	? 	?Ff%% ? ?!--55  !2C888  !2C888g15999g6>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	?s   BB<<C 	C 	c                    t          j                    }|                    | j                  }|                     |j        d           |                     |j        d           |                     |j        d           |                    | j	                  }|                     |j        d           |                     |j        d           |                     |j        d           d S )NrB   rD   TrE   r+  F)
r.   rv  r  r  rF   r!   r&   rH   rL   sample2r   r|  rG   s      r   
test_sniffzTestSniffer.test_sniff  s    +------*C000*C000g.555----*C000*C000g.66666r   c                    t          j                    }|                    | j                  }|                     |j        | j                   |                    | j        d          }|                     |j        d           |                    | j        d          }|                     |j        d           |                    | j                  }|                     |j        d           |                    | j                  }|                     |j        d           |                    | j	                  }|                     |j        d           |                    | j
                  }|                     |j        d           |                     |j        d	           |                    | j                  }|                     |j        d
           |                    | j                  }|                     |j        d
           |                     |j        d	           |                    | j                  }|                     |j        d           d S )Nz?,)
delimiters?z/,/r   r  rM  r+  +r   )r.   rv  r  sample3r  r!   rF   sample4sample5sample6sample7r&   r  sample9sample14r  s      r   test_delimiterszTestSniffer.test_delimiters  s   +------ 	g'666--->>*C000--->>*C000----*C000----*D111----*C000----*C000*C000----*C000----*C000*C000--..*D11111r   c                 4   t          j                    }|                    | j                  }|                     |j                   |                    | j                  }|                     |j                   |                    | j                  }|                     |j                   |                    | j	                  }|                     |j                   |                    | j
                  }|                     |j                   d S r   )r.   rv  r  r  ry  rI   r  r  rV  r  r  r  s      r   test_doublequotezTestSniffer.test_doublequote  s    +------,-------,-------+,,,----,-------+,,,,,r   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r
   r  r  rx  rz  r  r}  r  r  r  r  r  r  r  r   r   r   rt  rt  0  sB       GGGGG /G"G*GGGG v   H v   H v   H v   HH< < <
< < <M M M
M M M
? ? ?
7 
7 
72 2 28- - - - -r   rt  c                       e Zd Zd ZeZdS )NULc                     d S r   r   )srQ   s     r   r<   z	NUL.write  s    r   N)r   r   r   r<   
writelinesr   r   r   r  r    s"          JJJr   r  gettotalrefcountzrequires sys.gettotalrefcount()c                   &    e Zd Zd Zd Zd Zd ZdS )	TestLeaksc                    d}t          j                    }t          d          D ]}t          j                     |                     t          j        g            t          j                    }t          j        dg           t          j        dg           t          j        dg           ||z
  }|}| 	                    |d           d S )Nr   r1  a,b,c
r   
sysr  r_  gccollectrF   garbager.   r6   
assertLess)r   deltalastrcr   rcs        r   test_create_readzTestLeaks.test_create_read  s    %''r 	 	AJLLLRZ,,,%''BJ}%%%J}%%%J}%%%vIEFFq!!!!!r   c                    d}t          j                    }t                      }t          d          D ]}t	          j                     |                     t          j        g            t          j                    }t          j	        |           t          j	        |           t          j	        |           ||z
  }|}| 
                    |d           d S )Nr   r1  r   )r  r  r  r_  r  r  rF   r  r.   r?   r  )r   r  r  r  r   r  s         r   test_create_writezTestLeaks.test_create_write  s    %''EEr 	 	AJLLLRZ,,,%''BJqMMMJqMMMJqMMMvIEFFq!!!!!r   c                 X   d}dgdz  }t          j                    }t          d          D ]h}t          j                     |                     t          j        g            t          j                    }t          j        |          }|D ]}||z
  }|}i| 	                    |d           d S )Nr   r  r  r1  r  )r   r  r   r  r   r  rdrr   s           r   	test_readzTestLeaks.test_read  s    }Q%''r 	 	AJLLLRZ,,,%''B*T""C  vIEFFq!!!!!r   c                    d}g dgdz  }t                      }t          j                    }t          d          D ]}}t	          j                     |                     t          j        g            t          j                    }t          j	        |          }|D ]}|
                    |           ||z
  }|}~|                     |d           d S )Nr   r>  r  r1  )r  r  r  r_  r  r  rF   r  r.   r?   rx   r  )	r   r  r   r  r  r   r  r?   r   s	            r   
test_writezTestLeaks.test_write  s    y{EE%''r 	 	AJLLLRZ,,,%''BZ]]F % %$$$$vIEFFq!!!!!r   N)r   r   r   r  r  r  r  r   r   r   r  r    sP        " " "" " " " " " " " " " "r   r  c                   "    e Zd Zg dZd Zd ZdS )TestUnicode)u   Martin von Löwisu   Marc André LemburgzGuido van Rossumu   François Pinardc                 `   t          ddd          5 }|                    d                    | j                  dz              |                    d           t          j        |          }|                     t          |          | j        g           d d d            d S # 1 swxY w Y   d S Nrs   r+   rt   r=  rB   rC   r   )	r   r<   r:  namesry   r.   r6   rF   r   r  s      r   test_unicode_readzTestUnicode.test_unicode_read$  s    4g>>> 	9'MM#((4:..7888LLOOOZ((FT&\\DJ<888		9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   BB##B'*B'c                 l   t          ddd          5 }t          j        |          }|                    | j                   d                    | j                  dz   }|                    d           |                     |                                |           d d d            d S # 1 swxY w Y   d S r  )	r   r.   r?   rx   r  r:  ry   rF   rz   )r   r}   r?   r?  s       r   test_unicode_writezTestUnicode.test_unicode_write,  s    4g>>> 	7'Z((FOODJ'''xx
++F2HLLOOOW\\^^X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   B	B))B-0B-N)r   r   r   r  r  r  r   r   r   r  r    sC        ! ! !E
9 9 97 7 7 7 7r   r  c                       e Zd Zd Zd ZdS )KeyOrderingTestc                    t                      }t          d          D ]}t          ddd          5 }t          j        ||          }|                                 |                    d           t          j        |          }t          |j	                  }| 
                    ||           |                    |           d d d            n# 1 swxY w Y   | 
                    t          |          dd           d S )	Nabcders   r+   rt   r=  r   x   z@Key ordering: some key permutations not collected (expected 120))setr	   r   r.   r  r  ry   r  tupler  rF   addlen)r   	resultsetkeys
fileobjectdwdrkts          r   ,test_ordering_for_the_dict_reader_and_writerz<KeyOrderingTest.test_ordering_for_the_dict_reader_and_writer6  s*   EE	 )) 	" 	"DtR'BBB "j^J55   """^J//2=))  r***b!!!" " " " " " " " " " " " " " " 	Y.pqqqqqs   BCC	C	c                 6   t          d                                          }|                     t          t	          j        |                    t          ddg          t          ddd ddgfg          t          dd	g          t          d
dg          g           |                     t          t	          j        |d                    t          ddg          t          dddddgfg          t          dd	g          t          d
dg          g           |d= |                     t          t	          j        |ddg                    t          ddg          t          ddd ddgfg          t          ddg          t          ddg          g           d S )Nz            FirstName,LastName
            Eric,Idle
            Graham,Chapman,Over1,Over2

            Under1
            John,Cleese
        )	FirstNameEric)LastNameIdle)r  Graham)r  ChapmanOver1Over2)r  Under1)r  N)r  John)r  Cleese	OtherInfor  r   fnamelnamer  )r  r  )r  r  )r  r  )r  r  )r  r  )r  N)r  r  )r  r  )r
   
splitlinesrF   r   r.   r  r   )r   datas     r   test_ordered_dict_readerz(KeyOrderingTest.test_ordered_dict_readerD  s       Z\\ 	 	cnT2233/1EFGG13J'7!346 7 713EFGG/1GHII		 	 	 	cnT;GGGHH/1EFGG13J&'(:;= > >13EFGG/1GHII		 	 	 GcnTw>PQQQRR+->?@@-/C'7!346 7 7-?@@+-@ABB		 	 	 	 	r   N)r   r   r   r  r  r   r   r   r  r  4  s5        r r r! ! ! ! !r   r  c                   :    e Zd Zd Zd Zej        d             ZdS )MiscTestCasec                 H    ddh}t          j        | t          d|           d S )Nr  __version__)r.   _csv)extra)r   check__all__r.   )r   r  s     r   test__all__zMiscTestCase.test__all__i  s,    M*T3uEEEEEEr   c                 6     G d dt           j                  }d S )Nc                       e Zd ZdS )+MiscTestCase.test_subclassable.<locals>.FooNrT  r   r   r   Foor  o  s          r   r  )r.   r/   )r   r  s     r   test_subclassablezMiscTestCase.test_subclassablem  s$    !!!!!#)!!!!!r   c                     t          j        d          }|j        |j        fD ]@}|                     |          5  t          | |           d d d            n# 1 swxY w Y   Ad S )Nr  )tp)r   import_moduleReaderWriterr   r   )r   r  r  s      r   test_disallow_instantiationz(MiscTestCase.test_disallow_instantiationq  s    *622+t{* 	7 	7B$$ 7 7,T26667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s   AA	A	N)r   r   r   r  r  r   r  r  r   r   r   r  r  h  sT        F F F" " " 7 7 7 7 7r   r  __main__)/r\  r  unittestior   tempfiler   r.   r  r`  testr   test.supportr   r   r   r  r	   textwrapr
   collectionsr   r   TestCaser   r	  rf  rm  r  r  r  r  r  r  r  r.  rP  rt  r  
skipUnlesshasattrr  r  r  r  r   mainr   r   r   <module>r     s    



        " " " " " " 



 				        U U U U U U U U U U " " " " " "       # # # # # #       
I. I. I. I. I.x  I. I. I.VKK KK KK KK KK(+ KK KK KKZ> > > > >(# > > > _O _O _O _O _O{ _O _O _OB    39   ? ? ? ? ?{ ? ? ?S S S S Sk S S S       A A A A A[ A A AkH kH kH kH kHX& kH kH kHZ,7 ,7 ,7 ,7 ,7h' ,7 ,7 ,7\NL NL NL NL NL(+ NL NL NLbc- c- c- c- c-(# c- c- c-J       
 WWS"45568 8?" ?" ?" ?" ?"! ?" ?"8 8?"B7 7 7 7 7(# 7 7 7.1 1 1 1 1h' 1 1 1h7 7 7 7 78$ 7 7 7  zHMOOOOO r   