o
    GXh                     @   s  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 d dlmZ d dlmZ d dlmZ G d	d
 d
ZG dd dejZG dd dejZG dd dejZG dd deZG dd dejZG dd deZG dd deZG dd dejZG dd deZG dd dejZ G dd  d ejZ!G d!d" d"ejZ"G d#d$ d$ejZ#G d%d& d&Z$e%e&ed'd(G d)d* d*ejZ'G d+d, d,ejZ(G d-d. d.ejZ)G d/d0 d0ejZ*e+d1kre,  dS dS )2    N)StringIO)TemporaryFile)support)warnings_helper)permutations)dedent)OrderedDictc                   @      e Zd Zdd ZdS )BadIterablec                 C      t NOSErrorself r   7/opt/python-3.10.19/usr/lib/python3.10/test/test_csv.py__iter__      zBadIterable.__iter__N)__name__
__module____qualname__r   r   r   r   r   r
          r
   c                   @   s6  e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zejejejed-d.d/ Zd0d1 Z d2d3 Z!d4d5 Z"d6d7 Z#d8d9 Z$d:d; Z%d<d= Z&d>d? Z'd@dA Z(dBdC Z)dDdE Z*dFS )GTest_Csvc                 C   s   |  t| |  t|d  | j t||dd | j t||dd | j t||dd |  tj||d | j t||d d | j t||dd | j t||dd | j t||d d | j t||dd | j t||d d	 | j t||tjd
d | j t||tjd d d S )Nr   Zbad_attr	delimiterZXXZfoo   )	quotechar)lineterminatorquoting )r!   r   )assertRaises	TypeErrorcsvError	QUOTE_ALL)r   ctorargr   r   r   _test_arg_valid   s$   


zTest_Csv._test_arg_validc                 C   s$   |  tjg  | ttjt  d S r   )r*   r%   readerr#   r   r
   r   r   r   r   test_reader_arg_valid0   s   zTest_Csv.test_reader_arg_validc                 C   s4   |  tjt  G dd d}| ttj|  d S )Nc                   @   s   e Zd Zedd ZdS )z1Test_Csv.test_writer_arg_valid.<locals>.BadWriterc                 S   r   r   r   r   r   r   r   write7   s   z7Test_Csv.test_writer_arg_valid.<locals>.BadWriter.writeN)r   r   r   propertyr-   r   r   r   r   	BadWriter6   s    r/   )r*   r%   writerr   r#   r   )r   r/   r   r   r   test_writer_arg_valid4   s   zTest_Csv.test_writer_arg_validc                 G   s   || }|  |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   r(   argsobjr   r   r   _test_default_attrs<   s   zTest_Csv._test_default_attrsc                 C      |  tjg  d S r   )rC   r%   r+   r   r   r   r   test_reader_attrsN      zTest_Csv.test_reader_attrsc                 C      |  tjt  d S r   )rC   r%   r0   r   r   r   r   r   test_writer_attrsQ      zTest_Csv.test_writer_attrsc              
   G   s   t dddddtjd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 )Nr5   F\*T)r   r9   r:   r   r   r!   r<   r=   )dictr%   
QUOTE_NONEr6   r7   r   r8   r9   r:   r   r   r!   r<   r=   )r   r(   rA   kwargsrB   r   r   r   _test_kw_attrsT   s   zTest_Csv._test_kw_attrsc                 C   rD   r   )rP   r%   r+   r   r   r   r   test_reader_kw_attrsd   rF   zTest_Csv.test_reader_kw_attrsc                 C   rG   r   )rP   r%   r0   r   r   r   r   r   test_writer_kw_attrsg   rI   zTest_Csv.test_writer_kw_attrsc                 G   s   G dd d}||f }|| }|  |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                   @   s.   e Zd ZdZdZdZdZdZej	Z
dZdZdS )z-Test_Csv._test_dialect_attrs.<locals>.dialect-F^$#TN)r   r   r   r   r9   r:   r   r   r%   r'   r!   r<   r=   r   r   r   r   r7   l   s    r7   rS   FrT   rU   rV   T)r6   r7   r   r8   r9   r:   r   r   r!   r%   r'   r<   r=   )r   r(   rA   r7   rB   r   r   r   _test_dialect_attrsj   s   
	zTest_Csv._test_dialect_attrsc                 C   rD   r   )rW   r%   r+   r   r   r   r   test_reader_dialect_attrs   rF   z"Test_Csv.test_reader_dialect_attrsc                 C   rG   r   )rW   r%   r0   r   r   r   r   r   test_writer_dialect_attrs   rI   z"Test_Csv.test_writer_dialect_attrsc                 K   sr   t dddd(}tj|fi |}|| |d | | ||jj  W d    d S 1 s2w   Y  d S Nw+utf-8r"   encodingnewliner   )	r   r%   r0   writerowseekr6   readr7   r   )r   fieldsexpectrO   fileobjr0   r   r   r   _write_test   s   



"zTest_Csv._write_testc              	   K   s   t dddd9}tj|fi |}| | || W d    n1 s&w   Y  |d | | d W d    d S 1 sCw   Y  d S rZ   )r   r%   r0   r#   r`   ra   r6   rb   )r   excrc   rO   re   r0   r   r   r   _write_error_test   s   
"zTest_Csv._write_error_testc                 C   s   |  tjd  | dd | d gd | j tjd gtjd |  tt  G dd d}|  t|  G dd d}|  t| g d S )	Nr   r"   ""r    c                   @      e Zd Zdd Zdd ZdS )z.Test_Csv.test_write_arg_valid.<locals>.BadListc                 S   s   dS )N
   r   r   r   r   r   __len__   r   z6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__c                 S   s   |dkrt d S )N   r   )r   ir   r   r   __getitem__   s   z:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__N)r   r   r   rl   ro   r   r   r   r   BadList   s    rp   c                   @   r	   )z.Test_Csv.test_write_arg_valid.<locals>.BadItemc                 S   r   r   r   r   r   r   r   __str__   r   z6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__N)r   r   r   rq   r   r   r   r   BadItem   r   rr   )rh   r%   r&   rf   rN   r   r
   )r   rp   rr   r   r   r   test_write_arg_valid   s   zTest_Csv.test_write_arg_validc                 C   s$   dd }|  ||gd||f  d S )NXP  %s,%s)rf   )r   	bigstringr   r   r   test_write_bigfield   s   
zTest_Csv.test_write_bigfieldc                 C   s   |  g dd | jtjg dtjd | j g ddtjd | j g ddtjd | j g ddtjd | j ddgdtjd 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")rf   rh   r%   r&   rN   r;   QUOTE_NONNUMERICr'   r   r   r   r   test_write_quoting   s    
zTest_Csv.test_write_quotingc                 C   sJ  | j g dddd | jtjg dd dd | j g ddddd | j d	gd
dtjd | j d	gddtjdd | j d	gddtjd | j g dddtjd | j ddgddtjd | j ddgddtjd | j ddgddtjd | j ddgddtjd | j ddgddtjd | j ddgddtjd | j g dddtjd d S )Nry   r{   rJ   r:   )rz   r   zp,"q"F)r:   r9   za,1,"p,\"q\""r4   """")r:   r!   z\")r:   r!   r9   za,1,p\,qrz   z\\,az"\\","a"z\ z\\ ,az\,z\\\,,az,\z",\\",a)zC\67zX"zC\\,6,7,"X""")rf   rh   r%   r&   r;   rN   r'   r   r   r   r   test_write_escape   sV   



zTest_Csv.test_write_escapec                 C   s|   |  tg dd |  tg dd |  tg d |  td gd | jtjtd gtjd |  td d gd d S )	Nry   r{   )rz   r   Nza,1,r"   ri   r    r2   )rf   iterrh   r%   r&   rN   r   r   r   r   test_write_iterable   s   zTest_Csv.test_write_iterablec                 C   s   G dd d}t | }| t|jdgg tdddd.}t |}| t|jd  |ddgd	d
gg |d | |	 d W d    d S 1 sOw   Y  d S )Nc                   @   r	   )z+Test_Csv.test_writerows.<locals>.BrokenFilec                 S   r   r   r   )r   bufr   r   r   r-      r   z1Test_Csv.test_writerows.<locals>.BrokenFile.writeN)r   r   r   r-   r   r   r   r   
BrokenFile   r   r   rz   r[   r\   r"   r]   bcdr   z
a,b
c,d
)
r%   r0   r#   r   	writerowsr   r$   ra   r6   rb   )r   r   r0   re   r   r   r   test_writerows   s   

"zTest_Csv.test_writerowsc                 C   s6  t dddd%}t|}|dd gd dgg |d | | d W d    n1 s/w   Y  t dddd#}t|}|d gdgg |d | | d	 W d    n1 saw   Y  t dddd$}t|}|dgd gg |d | | d
 W d    d S 1 sw   Y  d S )Nr[   r\   r"   r]   rz   r   r   za,
,d
z""
a
za
""
)r   r%   r0   r   ra   r6   rb   r   re   r0   r   r   r   test_writerows_with_none   s$   





"z!Test_Csv.test_writerows_with_nonec                 C   s`   t dddd}t|}| t|jd  | t|jt  W d    d S 1 s)w   Y  d S )Nr[   r\   r"   r]   )r   r%   r0   r#   r$   r   r   r
   r   r   r   r   test_writerows_errors  s
   
"zTest_Csv.test_writerows_errors)categoryc                 C   sx   dd l }|d}tdddd"}t|}||gg |d | | d W d    d S 1 s5w   Y  d S )Nr   rz   r[   r\   r"   r]   za
)		_testcapiZunicode_legacy_stringr   r%   r0   r   ra   r6   rb   )r   r   r   re   r0   r   r   r   test_writerows_legacy_strings  s   


"z&Test_Csv.test_writerows_legacy_stringsc                 K   s*   t j|fi |}t|}| || d S r   )r%   r+   listr6   )r   inputrd   rO   r+   resultr   r   r   
_read_test  s   zTest_Csv._read_testc                 C   s   |  g g  |  dgg g | jtj| j dgd dd | jtj| j dgd dd | j dgdggdd | tj| j d	gd  d S )
Nr"   z"ab"cr   r=   zab cabcr   )r9   s   ab cr   r#   r%   r&   r   r   r   r   test_read_oddinputs  s   zTest_Csv.test_read_oddinputsc                 C   s   |  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 )
Nza,brz   r   za,b
za,b
za,bza,bc,dza,b
c,dza,b
c,dr   r   r   r   r   test_read_eol*  s   zTest_Csv.test_read_eolc                 C   s   |  dgddgg |  dgdgg | j dgdggdd | jtj| j dgg dd	 | jtj| j dgg dd	 | jtj| j dgg ddd
 d S )Nza,"rz   r"   z"arT   
r   Tr   )r:   r=   r   r   r   r   r   test_read_eof3  s   

zTest_Csv.test_read_eofc                 C   s   | j dgg dgdd | j dgddggdd | j dgddggdd | j d	gddggdd | j d
gddggdd | j dgddggdd d S )Nza,\b,c)rz   r   r   rJ   r   za,b\,crz   zb,cza,"b\,c"za,"b,\c"z	a,"b,c\""zb,c"za,"b,c"\zb,c\r   r   r   r   r   test_read_escape<  s   zTest_Csv.test_read_escapec                 C   s   |  dgg dg | j dgg dgd dd | j dgg dgtjdd | j dgg dgtjd	 |  d
gddgg | jt| j dgg gtjd	 d S )Nz	1,",3,",5)1z,3,5)r   r4   3r4   r   rJ   )r   r:   r!   r:   z,3,"5",7.3, 9)r"      r   g333333@	   r    z"a
b", 7r|   z 7zabc,3)r   r%   rN   r}   r#   
ValueErrorr   r   r   r   test_read_quotingD  s   

zTest_Csv.test_read_quotingc                 C   s   | j dgg dgdd d S )Nzno space, space,  spaces,	tab)zno spacespacespacesz	tabT)r<   r   r   r   r   r   test_read_skipinitialspaceR  s   
z#Test_Csv.test_read_skipinitialspacec              	   C   s   t  }zXd}d| }d||f }| |g||gg t | | |g||gg | t  | t |d  | t j| j|gg  | tt jd  | tt jdd  W t | d S t | w )Nru   rt   rv   r   )r%   Zfield_size_limitr   r6   r#   r&   r$   )r   limitsizerw   Zbigliner   r   r   test_read_bigfieldW  s   
zTest_Csv.test_read_bigfieldc                 C   s~   t 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   rm   r   )r%   r+   r6   Zline_numnextr#   StopIteration)r   rr   r   r   test_read_linenumj  s   zTest_Csv.test_read_linenumc                 C   s   t dddd4}t|}ddgddgg}|| |d	 tt|D ]\}}| |||  q&W d    d S 1 s>w   Y  d S )
Nr[   r\   r"   r]   r|   r   r   x
dr   )r   r%   r0   r   ra   	enumerater+   r6   r   re   r0   rowsrn   rowr   r   r   test_roundtrip_quoteed_newlinesv  s   


"z(Test_Csv.test_roundtrip_quoteed_newlinesc                 C   s   t dddd<}tj|tjdd}ddgd	d
gg}|| |d ttj|tjddD ]\}}| |||  q.W d    d S 1 sFw   Y  d S )Nr[   r\   r"   r]   rJ   r   r|   r   r   r   r   )	r   r%   r0   rN   r   ra   r   r+   r6   r   r   r   r   (test_roundtrip_escaped_unquoted_newlines  s   

"z1Test_Csv.test_roundtrip_escaped_unquoted_newlinesN)+r   r   r   r*   r,   r1   rC   rE   rH   rP   rQ   rR   rW   rX   rY   rf   rh   rs   rx   r~   r   r   r   r   r   r   Zcpython_onlyZrequires_legacy_unicode_capir   Zignore_warningsDeprecationWarningr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sN    
				r   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestDialectRegistryc                 C   s   |  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 | j ttjdd d | j ttjdd d |  ttjg  d S )NZnonesuchr   )Zbadargumentr    )r#   r$   r%   list_dialectsget_dialectr&   unregister_dialectregister_dialectr   r   r   r   test_registry_badargs  s"   z)TestDialectRegistry.test_registry_badargsc                 C   sv   G dd dt j}d}t  |g }|  t || | t j| | t |j	d t
t  }| || d S )Nc                   @      e Zd ZdZdS )z5TestDialectRegistry.test_registry.<locals>.myexceltsv	Nr   r   r   r   r   r   r   r   
myexceltsv      r   r   )r%   excelr   sortr   
addCleanupr   r6   r   r   sorted)r   r   nameZexpected_dialectsZgot_dialectsr   r   r   test_registry  s   z!TestDialectRegistry.test_registryc                 C   sX   d}t j|dd | t j| | t |jd | g dgtt dg| d S )NZfedcba;r   )rt   YZzX;Y;Z)	r%   r   r   r   r6   r   r   r   r+   )r   r   r   r   r   test_register_kwargs  s
   $z(TestDialectRegistry.test_register_kwargsc              
   C   s   G dd dt j}d}t j||dddddt jd	 | t j| t |}| |jd | |j	d | |j
d | |jd | |jd | |jt j d S )
Nc                   @   &   e Zd ZdZdZdZdZdZej	Z
dS )zDTestDialectRegistry.test_register_kwargs_override.<locals>.mydialectr   r4   TFr3   N)r   r   r   r   r   r9   r<   r   r%   r;   r!   r   r   r   r   	mydialect      
r   Ztest_dialectr   'FTr   )r   r   r9   r<   r   r!   )r%   Dialectr   r'   r   r   r   r6   r   r   r9   r<   r   r!   )r   r   r   r7   r   r   r   test_register_kwargs_override  s$   
z1TestDialectRegistry.test_register_kwargs_overridec                 C   s$   G dd dt j}| t j| d S )Nc                   @   r   )z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr   Nr   r   r   r   r   r     r   r   )r%   r   r#   r&   )r   r   r   r   r   test_incomplete_dialect  s   z+TestDialectRegistry.test_incomplete_dialectc                 C   s   G dd dt j}tddd/}|d |d t j|| d}| t|d	d
g | t|ddg W d    d S 1 sAw   Y  d S )Nc                   @   s   e Zd ZdZejZdZdS )z5TestDialectRegistry.test_space_dialect.<locals>.space rJ   N)r   r   r   r   r%   rN   r!   r:   r   r   r   r   r     s    r   r[   r\   r^   zabc def
c1ccccc1 benzene
r   r7   r   defZc1ccccc1Zbenzene)r%   r   r   r-   ra   r+   r6   r   )r   r   re   r+   r   r   r   test_space_dialect  s   

"z&TestDialectRegistry.test_space_dialectc                 O   st   t dddd)}tj|g|R i |}|g d |d | | | W d    d S 1 s3w   Y  d S )Nr[   r"   r\   r_   r^   r   rm   r   r   )r   r%   r0   r`   ra   r6   rb   )r   expectedZ	writeargsZkwwriteargsre   r0   r   r   r   compare_dialect_123  s   
"z'TestDialectRegistry.compare_dialect_123c              	   C   s   G dd dt j}G dd dt j}G dd dt j}G dd dt j}G d	d
 d
}t d| z?| d | jdd d | jd|d | d| | jd| d | jddd | jd|dd | jd|d W t d d S t d w )Nc                   @   r   )z5TestDialectRegistry.test_dialect_apply.<locals>.testAr   Nr   r   r   r   r   testA  r   r   c                   @   r   )z5TestDialectRegistry.test_dialect_apply.<locals>.testBr5   Nr   r   r   r   r   testB  r   r   c                   @   r   )z5TestDialectRegistry.test_dialect_apply.<locals>.testC|Nr   r   r   r   r   testC  r   r   c                   @   r   )z7TestDialectRegistry.test_dialect_apply.<locals>.testUniu   ΛNr   r   r   r   r   testUni  r   r   c                   @      e Zd ZdS )z;TestDialectRegistry.test_dialect_apply.<locals>.unspecifiedNr   r   r   r   r   r   r   unspecified  s    r   z1,2,3
r   z1	2	3
z1:2:3
z1|2|3
z1;2;3
r   )r7   r   u	   1Λ2Λ3
)r%   r   r   r   r   )r   r   r   r   r   r   r   r   r   test_dialect_apply  s(   
z&TestDialectRegistry.test_dialect_applyc                 C   sT   | j ttjg dd | j ttjg d d | j ttjg dd | j ttjg dd d S )Nr   r   r   r    d   )r#   r$   r%   r+   r   r   r   r   test_bad_dialect  s   z$TestDialectRegistry.test_bad_dialectc                 C   s,   t  D ]}t |}| ttj| qd S r   )r%   r   r   r#   r$   copy)r   r   r7   r   r   r   	test_copy
  s   
zTestDialectRegistry.test_copyc                 C   sB   t  D ]}t |}ttjd D ]}| ttj|| qqd S )Nr   )	r%   r   r   rangepickleHIGHEST_PROTOCOLr#   r$   dumps)r   r   r7   protor   r   r   test_pickle  s   
zTestDialectRegistry.test_pickleN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    	r   c                   @   rj   )TestCsvBasec                 C   sl   t dddd%}|| |d tj|| jd}t|}| || W d    d S 1 s/w   Y  d S )Nr[   r\   r"   r]   r   r   )r   r-   ra   r%   r+   r7   r   r6   )r   r   expected_resultre   r+   rc   r   r   r   readerAssertEqual  s   

"zTestCsvBase.readerAssertEqualc                 C   sh   t dddd#}tj|| jd}|| |d | | | W d    d S 1 s-w   Y  d S )Nr[   r\   r"   r]   r   r   )r   r%   r0   r7   r   ra   r6   rb   )r   r   r   re   r0   r   r   r   writerAssertEqual  s   

"zTestCsvBase.writerAssertEqualN)r   r   r   r   r   r   r   r   r   r     s    r   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4S )5TestDialectExcelr   c                 C      |  ddgg d S )Nr   r   r   r   r   r   test_single(  rI   zTestDialectExcel.test_singlec                 C      |  dg dg d S )Nz	1,2,3,4,5)r   2r   4r   r   r   r   r   r   test_simple+     zTestDialectExcel.test_simplec                 C   s   |  dg  d S Nr"   r   r   r   r   r   test_blankline.     zTestDialectExcel.test_blanklinec                 C      |  dddgg d S )Nr2   r"   r   r   r   r   r   test_empty_fields1  r   z"TestDialectExcel.test_empty_fieldsc                 C      |  ddgg d S )Nri   r"   r   r   r   r   r   test_singlequoted4  rI   z"TestDialectExcel.test_singlequotedc                 C   r  )Nz"",r"   r   r   r   r   r   test_singlequoted_left_empty7  r   z-TestDialectExcel.test_singlequoted_left_emptyc                 C   r  )Nz,""r"   r   r   r   r   r   test_singlequoted_right_empty:  r   z.TestDialectExcel.test_singlequoted_right_emptyc                 C   r  )Nr   r4   r   r   r   r   r   test_single_quoted_quote=  rI   z)TestDialectExcel.test_single_quoted_quotec                 C   r  )Nz""""""ri   r   r   r   r   r   test_quoted_quotes@  rI   z#TestDialectExcel.test_quoted_quotesc                 C   r   )Nza""br   r   r   r   r   test_inline_quoteC  rI   z"TestDialectExcel.test_inline_quotec                 C   r   )Nza"b"cr   r   r   r   r   test_inline_quotesF  rI   z#TestDialectExcel.test_inline_quotesc                 C   r  )Nz"a"babr   r   r   r   r   test_quotes_and_moreI     z%TestDialectExcel.test_quotes_and_morec                 C   r   )Nza"br   r   r   r   r   test_lone_quoteN  rI   z TestDialectExcel.test_lone_quotec                 C   r  )Nz"a" "b"za "b"r   r   r   r   r   test_quote_and_quoteQ  r  z%TestDialectExcel.test_quote_and_quotec                 C   r   )Nz "a"r   r   r   r   r   test_space_and_quoteV  rI   z%TestDialectExcel.test_space_and_quotec                 C   r   )Nz#1,2,3,"I think, therefore I am",5,6)r   r   r   zI think, therefore I amr   r   r   r   r   r   r   test_quotedY     zTestDialectExcel.test_quotedc                 C   r   )NzJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw")r   r   r   z"I see," said the blind manz"as he picked up his hammer and sawr   r   r   r   r   test_quoted_quote_  r  z"TestDialectExcel.test_quoted_quotec                 C   s    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   r   r   z"I see,"
said the blind manz"as he picked up his
hammer and saw)98r   r   r   )r   r   r   r   r   test_quoted_nle  s   zTestDialectExcel.test_quoted_nlc                 C   r   )Nz	12,12,1",)12r  z1"r"   r   r   r   r   r   test_dubious_quoteq  r   z#TestDialectExcel.test_dubious_quotec                 C   s   |  g d d S r   r   r   r   r   r   	test_nullt  r  zTestDialectExcel.test_nullc                 C      |  dggd d S )Nr   zabc
r  r   r   r   r   test_single_writerw  rI   z#TestDialectExcel.test_single_writerc                 C      |  g dgd d S )N)r   rm   r   r      z1,2,abc,3,4
r  r   r   r   r   test_simple_writerz  r   z#TestDialectExcel.test_simple_writerc                 C   r  )N)r   rm   za"bc"r   r   z1,2,"a""bc""",3,4
r  r   r   r   r   test_quotes}  r   zTestDialectExcel.test_quotesc                 C   r  Nabc,defz"abc,def"
r  r   r   r   r   test_quote_fieldsep  rI   z$TestDialectExcel.test_quote_fieldsepc                 C   r  )N)r   rm   za
bcr   r   z1,2,"a
bc",3,4
r  r   r   r   r   test_newlines  r   zTestDialectExcel.test_newlinesN)r   r   r   r7   r   r   r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r!  r"  r%  r&  r   r   r   r   r   %  s6    r   c                   @      e Zd ZejZdZdS )EscapedExcelrJ   N)r   r   r   r%   rN   r!   r:   r   r   r   r   r(        r(  c                   @   "   e Zd Ze Zdd Zdd ZdS )TestEscapedExcelc                 C   r  )Nr$  
abc\,def
r  r   r   r   r   test_escape_fieldsep  rI   z%TestEscapedExcel.test_escape_fieldsepc                 C   r  )Nr,  r$  r   r   r   r   r   test_read_escape_fieldsep  rI   z*TestEscapedExcel.test_read_escape_fieldsepN)r   r   r   r(  r7   r-  r.  r   r   r   r   r+        r+  c                   @   s    e Zd ZdZdd Zdd ZdS )TestDialectUnixZunixc                 C   r  )N)r   abc defr   "1","abc def","abc"
r  r   r   r   r   r!    r   z"TestDialectUnix.test_simple_writerc                 C   r   )Nr2  )r   r1  r   r   r   r   r   r   test_simple_reader  r   z"TestDialectUnix.test_simple_readerN)r   r   r   r7   r!  r3  r   r   r   r   r0    s    r0  c                   @   r'  )QuotedEscapedExcelrJ   N)r   r   r   r%   r}   r!   r:   r   r   r   r   r4    r)  r4  c                   @   r*  )TestQuotedEscapedExcelc                 C   r  r#  r  r   r   r   r   test_write_escape_fieldsep  rI   z1TestQuotedEscapedExcel.test_write_escape_fieldsepc                 C   r  )Nz"abc\,def"
r$  r   r   r   r   r   r.    rI   z0TestQuotedEscapedExcel.test_read_escape_fieldsepN)r   r   r   r4  r7   r6  r.  r   r   r   r   r5    r/  r5  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'S )(TestDictFieldsc                 C   sZ   t dddd}tj|g dd}| }| |d W d    d S 1 s&w   Y  d S )Nr[   r\   r"   r]   f1f2f3
fieldnamesrk   )r   r%   
DictWriterwriteheaderr6   )r   re   r0   Zwriteheader_return_valuer   r   r   test_writeheader_return_value  s
   "z,TestDictFields.test_writeheader_return_valuec                 C   s   t dddd<}tj|g dd}|  |d | | d |d	d
d |d |  | | d W d    d S 1 sFw   Y  d S )Nr[   r\   r"   r]   r8  r<  r   
f1,f2,f3
rk   r   )r9  r;  z	10,,abc
)	r   r%   r>  r?  ra   r6   readliner`   rb   r   r   r   r   test_write_simple_dict  s   

"z%TestDictFields.test_write_simple_dictc                 C   sb   t  }tj|g dd}|  | | d |ddddddd	dg | | d
 d S )Nr8  r<  rA  r   r   frm      Zxyzzf1,f2,f3
1,abc,f
2,5,xyz
)r   r%   r>  r?  r6   getvaluer   r   r   r   r   test_write_multiple_dict_rows  s   

z,TestDictFields.test_write_multiple_dict_rowsc                 C   s   t  }| ttj| d S r   )r   r#   r$   r%   r>  r   re   r   r   r   test_write_no_fields  s   z#TestDictFields.test_write_no_fieldsc              	   C   s   t ddddM}tj|g dd}| t}|ddd	d
 W d    n1 s*w   Y  t|j}| d| | d| | 	d| | d| W d    d S 1 sWw   Y  d S )Nr[   r\   r"   r]   r8  r<  rk   Zspamr   )Zf4r:  r   r=  z'f4'z'f2'r   )
r   r%   r>  r#   r   r`   str	exceptionassertInZassertNotIn)r   re   r0   ZcxrK  r   r   r   #test_write_fields_not_in_fieldnames  s   
"z2TestDictFields.test_write_fields_not_in_fieldnamesc                 C   s$   t  }| jttj|ddgdd d S )Nr9  r:  ZraisedZextrasaction)r   r#   r   r%   r>  rH  r   r   r   &test_typo_in_extrasaction_raises_error  s   
z5TestDictFields.test_typo_in_extrasaction_raises_errorc                 C   s@   t  }tj|ddgdd}ddddd	}| ttjj|| d S )
Nr9  r:  raiserN  r   r   rm   r   Zf0r9  r:  r;  )r   r%   r>  r#   r   r`   r   re   r0   Zdictrowr   r   r   )test_write_field_not_in_field_names_raise  s   z8TestDictFields.test_write_field_not_in_field_names_raisec                 C   sJ   t  }tj|ddgdd}ddddd	}tj|| | | d
 d S )Nr9  r:  ignorerN  r   r   rm   r   rQ  z1,2
)r   r%   r>  r`   r6   rF  rR  r   r   r   *test_write_field_not_in_field_names_ignore  s
   z9TestDictFields.test_write_field_not_in_field_names_ignorec                 C   sp   t ddd(}|d |d tj|g dd}| t|dd	d
d W d    d S 1 s1w   Y  d S )Nr[   r\   r   z	1,2,abc
r   r8  r<  r   r   r   r   r-   ra   r%   
DictReaderr6   r   r   re   r+   r   r   r   test_read_dict_fields  s   

"z$TestDictFields.test_read_dict_fieldsc                 C   sz   t ddd-}|d |d t|}| t|dddd	 | |jg d	 W d    d S 1 s6w   Y  d S )
Nr[   r\   r   f1,f2,f3
1,2,abc
r   r   r   r   r8  )r   r-   ra   r%   rW  r6   r   r=  rX  r   r   r   test_read_dict_no_fieldnames  s   


"z+TestDictFields.test_read_dict_no_fieldnamesc                 C   s   t ddd4}|d |d tj|tt|d}| |jg d | t|dd	d
d W d    d S 1 s=w   Y  d S )Nr[   r\   r   rZ  r   r<  r8  r   r   r   )	r   r-   ra   r%   rW  r   r+   r6   r=  rX  r   r   r   #test_read_dict_fieldnames_from_file  s   

"z2TestDictFields.test_read_dict_fieldnames_from_filec              	   C   s   dd l }tddd9}|d |d t|}t|}||g|D ]}| |j	g d | |ddd	d q%W d    d S 1 sFw   Y  d S )
Nr   r[   r\   r   rZ  r8  r   r   r   )
	itertoolsr   r-   ra   r%   rW  r   chainr6   r=  )r   r]  re   r+   firstr   r   r   r   test_read_dict_fieldnames_chain  s   


"z.TestDictFields.test_read_dict_fieldnames_chainc                 C   st   t ddd*}|d |d tj|ddgd}| t|d	d
g dd W d    d S 1 s3w   Y  d S )Nr[   r\   r   1,2,abc,4,5,6
r   r9  r:  r<  r   r   r   r   r   r   )r9  r:  NrV  rX  r   r   r   test_read_long  s   


"zTestDictFields.test_read_longc                 C   sv   t ddd+}|d |d tj|ddgdd	}| t|d
dg dd W d    d S 1 s4w   Y  d S )Nr[   r\   r   ra  r   r9  r:  _rest)r=  restkeyr   r   rb  r9  r:  rd  rV  rX  r   r   r   test_read_long_with_rest  s   


"z'TestDictFields.test_read_long_with_restc                 C   s   t ddd1}|d |d tj|dd}| |jdd	g | t|d
dg dd W d    d S 1 s:w   Y  d S )Nr[   r\   r   zf1,f2
1,2,abc,4,5,6
r   rd  re  r9  r:  r   r   rb  rf  )r   r-   ra   r%   rW  r6   r=  r   rX  r   r   r   &test_read_long_with_rest_no_fieldnames!  s   


"z5TestDictFields.test_read_long_with_rest_no_fieldnamesc                 C   s   t ddd;}|d |d tj|d dd}| t|d	d
ddddd | t|d	d
ddddd W d    d S 1 sDw   Y  d S )Nr[   r\   r   z1,2,abc,4,5,6
1,2,abc
r   1 2 3 4 5 6ZDEFAULT)r=  Zrestvalr   r   r   r   r   r   r   r   r   r   r   r   )r   r-   ra   r%   rW  splitr6   r   rX  r   r   r   test_read_short*  s   


"zTestDictFields.test_read_shortc              	   C   s:   g d}t j|d 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<  Z
2147483648z43.0e12Z17r   r   )Zi1floatZi2s1s2r%   rW  rl  r6   r   )r   sampler+   r   r   r   test_read_multi7  s   zTestDictFields.test_read_multic              
   C   sV   t jg dd d}| t|dddddd	d
 | t|dddddd	d
 d S )N)ra  r3   ra  rj  r<  r   r   r   r   r   r   rk  rq  r   r+   r   r   r   test_read_with_blanksF  s   
z$TestDictFields.test_read_with_blanksc              
   C   s8   t jdgd dd}| t|ddddd	d
d d S )Nz1;2;abc;4;5;6
rj  r   )r=  r   r   r   r   r   r   r   rk  rq  rt  r   r   r   test_read_semi_sepO  s   z!TestDictFields.test_read_semi_sepN)r   r   r   r@  rC  rG  rI  rM  rO  rS  rU  rY  r[  r\  r`  rc  rg  ri  rm  rs  ru  rv  r   r   r   r   r7    s(    

					r7  c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestArrayWritesc                 C      dd l }dd tdD }| d|}tdddd	.}tj|d
d}|| ddd |D d }|d | |	 | W d    d S 1 sKw   Y  d S )Nr   c                 S   s   g | ]}d | qS )   r   .0rn   r   r   r   
<listcomp>Y      z2TestArrayWrites.test_int_write.<locals>.<listcomp>rz  rn   r[   r\   r"   r]   r   r   r2   c                 S      g | ]}t |qS r   rJ  r{  r   r   r   r}  _  r~  r3   
arrayr   r   r%   r0   r`   joinra   r6   rb   r   r  contentsrz   re   r0   r   r   r   r   test_int_writeW  s   

"zTestArrayWrites.test_int_writec                 C   ry  )Nr   c                 S      g | ]}d | d qS rz  g?r   r{  r   r   r   r}  e      z5TestArrayWrites.test_double_write.<locals>.<listcomp>rz  r   r[   r\   r"   r]   r   r   r2   c                 S   r  r   r  r{  r   r   r   r}  j  r~  r3   r  r  r   r   r   test_double_writec     

"z!TestArrayWrites.test_double_writec                 C   ry  )Nr   c                 S   r  r  r   r{  r   r   r   r}  p  r  z4TestArrayWrites.test_float_write.<locals>.<listcomp>rz  rD  r[   r\   r"   r]   r   r   r2   c                 S   r  r   r  r{  r   r   r   r}  u  r~  r3   r  r  r   r   r   test_float_writen  r  z TestArrayWrites.test_float_writec                 C   s   dd l }dd l}| d|j}tdddd)}tj|dd}|| d	|d
 }|d | 	|
 | W d    d S 1 sBw   Y  d S )Nr   ur[   r\   r"   r]   r   r   r2   r3   )r  stringascii_lettersr   r%   r0   r`   r  ra   r6   rb   )r   r  r  rz   re   r0   r   r   r   r   test_char_writey  s   

"zTestArrayWrites.test_char_writeN)r   r   r   r  r  r  r  r   r   r   r   rx  V  s
    rx  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestDialectValidityc                 C   s  G dd dt j}| }| |jt j d |_| t j| d|_t j|_d|_	| }| |jt j | |j	d | 
|j d|_	| t j}|  W d    n1 sWw   Y  | t|jd d|_	| t j}|  W d    n1 s|w   Y  | t|jd d S )	Nc                   @   r   )z3TestDialectValidity.test_quoting.<locals>.mydialectr   rJ   FTr3   Nr   r   r   r   r:   r9   r<   r   r%   rN   r!   r   r   r   r   r     r   r   Tr4   z''z("quotechar" must be a 1-character stringr   z+"quotechar" must be string or None, not int)r%   r   r6   r!   rN   r#   r&   r9   r'   r   
assertTruerJ  rK  r   r   r   cmr   r   r   test_quoting  s4   z TestDialectValidity.test_quotingc                 C   s  G dd dt j}| }| |jd d|_| t j}|  W d    n1 s*w   Y  | t|jd d|_| t j}|  W d    n1 sOw   Y  | t|jd d|_| t j}|  W d    n1 stw   Y  | t|jd d	|_| t j}|  W d    n1 sw   Y  | t|jd
 d |_| t j}|  W d    n1 sw   Y  | t|jd d S )Nc                   @   r   )z5TestDialectValidity.test_delimiter.<locals>.mydialectr   rJ   FTr3   Nr  r   r   r   r   r     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   r6   r   r#   r&   rJ  rK  r  r   r   r   test_delimiter  sL   z"TestDialectValidity.test_delimiterc                 C   s   G dd dt j}| }| |jd d|_| t jd |  W d    n1 s+w   Y  d|_| t jd |  W d    n1 sHw   Y  d|_| t jd	 |  W d    d S 1 sfw   Y  d S )
Nc                   @   r   )z6TestDialectValidity.test_escapechar.<locals>.mydialectr   rJ   FTr3   Nr  r   r   r   r   r     r   r   rJ   z**z)"escapechar" must be a 1-character string   *z."escapechar" must be string or None, not bytesr   z,"escapechar" must be string or None, not int)r%   r   r6   r:   ZassertRaisesRegexr&   )r   r   r   r   r   r   test_escapechar  s   "z#TestDialectValidity.test_escapecharc                 C   s   G dd dt j}| }| |jd d|_| }| |jd d|_| t j}|  W d    n1 s7w   Y  | t|jd d S )Nc                   @   r   )z:TestDialectValidity.test_lineterminator.<locals>.mydialectr   rJ   FTr3   Nr  r   r   r   r   r     r   r   r3   r  r   z!"lineterminator" must be a string)r%   r   r6   r   r#   r&   rJ  rK  r  r   r   r   test_lineterminator  s   z'TestDialectValidity.test_lineterminatorc              	   C   s   dd }dD ]<}| j |d, | tj||d | tj||d | tj||d | tj||d W d    n1 s=w   Y  qd S )	Nc                 S   s(   G dd dt j}t|| | | }d S )Nc                   @   r   )zQTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialectNr   r   r   r   r   r     s    r   )r%   r   r@   )
field_namevaluer   r   r   r   r   create_invalid  s   
z>TestDialectValidity.test_invalid_chars.<locals>.create_invalid)r   r:   r   )r  r"   r      xrE  )subTestr#   r%   r&   )r   r  r  r   r   r   test_invalid_chars  s   z&TestDialectValidity.test_invalid_charsN)r   r   r   r  r  r  r  r  r   r   r   r   r    s    ")r  c                   @   s   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d Zdd Zdd Zdd Zdd Zdd Zdd Zd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
                        c                 C   s0   t  }| || j | || j d S r   )r%   Snifferr  
has_headersample12assertFalsesample13r   snifferr   r   r   test_issue43625V  s   zTestSniffer.test_issue43625c                 C   s2   	 t  }| || j | || j d S r   )r%   r  r  r  sample10sample11r  r   r   r   test_has_header_strings[  s   z#TestSniffer.test_has_header_stringsc                 C   :   t  }| || jd | || j| j d d S NFT)r%   r  r8   r  sample1header1r  r   r   r   test_has_headera     zTestSniffer.test_has_headerc                 C   r  r  )r%   r  r8   r  sample8header2r  r   r   r   'test_has_header_regex_special_delimiterf  r  z3TestSniffer.test_has_header_regex_special_delimiterc              	   C   s   t  }dD ]9}| |* ||d}| |jd | |jd | |jd | |j	d W d    n1 s:w   Y  qd S )N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r   r   F)
r%   r  r  sniffr6   r   r   r8   r9   r<   )r   r  headerr7   r   r   r   test_guess_quote_and_delimiterk  s   z*TestSniffer.test_guess_quote_and_delimiterc                 C   sx   t  }|| j}| |jd | |jd | |jd || j	}| |jd | |jd | |jd d S )Nr2   r4   Tr5   r   F)
r%   r  r  r  r6   r   r   r8   r<   sample2r   r  r7   r   r   r   
test_sniffu  s   zTestSniffer.test_sniffc                 C   s  t  }|| j}| |j| j |j| jdd}| |jd |j| jd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	 d S )Nz?,)Z
delimiters?z/,/r   r   r   r   +)r%   r  r  sample3rL  r   r6   sample4sample5sample6sample7r   r  sample9r  r   r   r   test_delimiters  s*   zTestSniffer.test_delimitersc                 C   s   t  }|| j}| |j || j}| |j || j}| |j || j	}| |j || j
}| |j d S r   )r%   r  r  r  r  r9   r  r  r  r  r  r  r   r   r   test_doublequote  s   zTestSniffer.test_doublequoteN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r    s0    
r  c                   @   s   e Zd Zdd ZeZdS )NULc                 G   s   d S r   r   )srA   r   r   r   r-     r   z	NUL.writeN)r   r   r   r-   
writelinesr   r   r   r   r    s    r  gettotalrefcountzrequires sys.gettotalrefcount()c                   @   rw  )
	TestLeaksc                 C   sx   d}t  }tdD ])}t  | tjg  t  }tdg tdg tdg || }|}q
| 	|d d S )Nr   rz  a,b,c
r   
sysr  r   gccollectr6   garbager%   r+   
assertLess)r   deltalastrcrn   rcr   r   r   test_create_read  s   zTestLeaks.test_create_readc                 C   sx   d}t  }t }tdD ]&}t  | tjg  t  }t	| t	| t	| || }|}q| 
|d d S )Nr   rz  r   )r  r  r  r   r  r  r6   r  r%   r0   r  )r   r  r  r  rn   r  r   r   r   test_create_write  s   


zTestLeaks.test_create_writec                 C   sr   d}dgd }t  }tdD ]!}t  | tjg  t  }t|}|D ]}q'|| }|}q| 	|d d S )Nr   r  rE  rz  r  )r   r  r   r  rn   r  Zrdrr   r   r   r   	test_read  s   

zTestLeaks.test_readc           	      C   s   d}g dgd }t  }t }tdD ]&}t  | tjg  t }t	|}|D ]}|
| q,|| }|}q| |d d S )Nr   r   rE  rz  )r  r  r  r   r  r  r6   r  r%   r0   r`   r  )	r   r  r   r  r  rn   r  r0   r   r   r   r   
test_write  s   
zTestLeaks.test_writeN)r   r   r   r  r  r  r  r   r   r   r   r    s
    r  c                   @   s$   e Zd Zg dZdd Zdd ZdS )TestUnicode)u   Martin von Löwisu   Marc André LemburgzGuido van Rossumu   François Pinardc                 C   sr   t dddd(}|d| jd  |d t|}| t|| jg W d    d S 1 s2w   Y  d S Nr[   r"   r\   r   r2   r3   r   )	r   r-   r  namesra   r%   r+   r6   r   rX  r   r   r   test_unicode_read  s   

"zTestUnicode.test_unicode_readc                 C   st   t dddd)}t|}|| j d| jd }|d | | | W d    d S 1 s3w   Y  d S r  )	r   r%   r0   r`   r  r  ra   r6   rb   )r   re   r0   r   r   r   r   test_unicode_write  s   

"zTestUnicode.test_unicode_writeN)r   r   r   r  r  r  r   r   r   r   r    s    r  c                   @   rj   )KeyOrderingTestc              	   C   s   t  }tdD ]=}tdddd,}t||}|  |d t|}t|j	}| 
|| || W d    n1 s?w   Y  q| 
t|dd d S )	NZabcder[   r"   r\   r   r   x   z@Key ordering: some key permutations not collected (expected 120))setr   r   r%   r>  r?  ra   rW  tupler=  r6   addlen)r   Z	resultsetkeysZ
fileobjectZdwZdrZktr   r   r   ,test_ordering_for_the_dict_reader_and_writer	  s   


	z<KeyOrderingTest.test_ordering_for_the_dict_reader_and_writerc              
   C   s   t d }| tt|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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d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  ChapmanZOver1ZOver2)r  Under1)r  N)r  John)r  CleeseZ	OtherInforh  r   fnamelnamer<  )r  r  )r  r  )r  r  )r  r  )r  r  )r  N)r  r  )r  r  )r   
splitlinesr6   r   r%   rW  r   )r   datar   r   r   test_ordered_dict_reader  s>   	











z(KeyOrderingTest.test_ordered_dict_readerN)r   r   r   r  r  r   r   r   r   r    s    r  c                   @   rj   )MiscTestCasec                 C   s   ddh}t j| td|d d S )N__doc____version__)r%   Z_csv)extra)r   Zcheck__all__r%   )r   r  r   r   r   test__all__<  s   zMiscTestCase.test__all__c                 C   s   G dd dt j}d S )Nc                   @   r   )z+MiscTestCase.test_subclassable.<locals>.FooNr   r   r   r   r   FooB  s    r  )r%   r&   )r   r  r   r   r   test_subclassable@  s   zMiscTestCase.test_subclassableN)r   r   r   r  r  r   r   r   r   r  ;  s    r  __main__)-r   r  Zunittestior   tempfiler   r%   r  r   testr   Ztest.supportr   r]  r   textwrapr   collectionsr   r
   ZTestCaser   r   r   r   r   r(  r+  r0  r4  r5  r7  rx  r  r  r  Z
skipUnlesshasattrr  r  r  r  r   mainr   r   r   r   <module>   sX     r a			 ..  A4	