a
    ze"                     @   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 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.d/ d/ejZ(e)d0kre*  dS )1    N)StringIO)TemporaryFile)support)permutations)dedent)OrderedDictc                   @   s   e Zd Zdd ZdS )BadIterablec                 C   s   t d S NOSErrorself r   #/usr/lib/python3.9/test/test_csv.py__iter__   s    zBadIterable.__iter__N)__name__
__module____qualname__r   r   r   r   r   r      s   r   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'd( Zd)d* Zd+d, Zejd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCS )D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_valid/   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   s   t d S r	   r
   r   r   r   r   write6   s    z7Test_Csv.test_writer_arg_valid.<locals>.BadWriter.writeN)r   r   r   propertyr(   r   r   r   r   	BadWriter5   s   r*   )r%   r    writerr   r   r   )r   r*   r   r   r   test_writer_arg_valid3   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   s   |  tjg  d S r	   )r>   r    r&   r   r   r   r   test_reader_attrsM   s    zTest_Csv.test_reader_attrsc                 C   s   |  tjt  d S r	   )r>   r    r+   r   r   r   r   r   test_writer_attrsP   s    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 )Nr0   F\*T)r   r4   r5   r   r   r   r7   r8   )dictr    
QUOTE_NONEr1   r2   r   r3   r4   r5   r   r   r   r7   r8   )r   r#   r<   kwargsr=   r   r   r   _test_kw_attrsS   s    zTest_Csv._test_kw_attrsc                 C   s   |  tjg  d S r	   )rG   r    r&   r   r   r   r   test_reader_kw_attrsc   s    zTest_Csv.test_reader_kw_attrsc                 C   s   |  tjt  d S r	   )rG   r    r+   r   r   r   r   r   test_writer_kw_attrsf   s    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   r4   r5   r   r   r    r"   r   r7   r8   r   r   r   r   r2   k   s   r2   rJ   FrK   rL   rM   T)r1   r2   r   r3   r4   r5   r   r   r   r    r"   r7   r8   )r   r#   r<   r2   r=   r   r   r   _test_dialect_attrsi   s    	
zTest_Csv._test_dialect_attrsc                 C   s   |  tjg  d S r	   )rN   r    r&   r   r   r   r   test_reader_dialect_attrs   s    z"Test_Csv.test_reader_dialect_attrsc                 C   s   |  tjt  d S r	   )rN   r    r+   r   r   r   r   r   test_writer_dialect_attrs   s    z"Test_Csv.test_writer_dialect_attrsc                 K   sn   t dddN}tj|fi |}|| |d | | ||jj  W d    n1 s`0    Y  d S Nw+r   newliner   )	r   r    r+   writerowseekr1   readr2   r   )r   fieldsexpectrF   fileobjr+   r   r   r   _write_test   s    



zTest_Csv._write_testc              	   K   s   t dddp}tj|fi |}| | || W d    n1 sJ0    Y  |d | | d W d    n1 s0    Y  d S rQ   )r   r    r+   r   rU   rV   r1   rW   )r   excrX   rF   rZ   r+   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                   @   s   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__   s    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   r`   rc   r   r   r   r   BadList   s   rd   c                   @   s   e Zd Zdd ZdS )z.Test_Csv.test_write_arg_valid.<locals>.BadItemc                 S   s   t d S r	   r
   r   r   r   r   __str__   s    z6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__N)r   r   r   re   r   r   r   r   BadItem   s   rf   )r]   r    r!   r[   rE   r   r   )r   rd   rf   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)r[   )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")r[   r]   r    r!   rE   r6   QUOTE_NONNUMERICr"   r   r   r   r   test_write_quoting   s     zTest_Csv.test_write_quotingc                 C   s   | 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 d S )Nrm   ro   rA   r5   )rn   r   zp,"q"F)r5   r4   za,1,"p,\"q\""r/   """")r5   r   z\")r5   r   r4   za,1,p\,q)r[   r]   r    r!   r6   rE   r   r   r   r   test_write_escape   s,    


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 )	Nrm   ro   )rn   r   Nza,1,r   r^   r   r-   )r[   iterr]   r    r!   rE   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Z}t |}| t|jd  |ddgdd	gg |d
 | |	 d W d    n1 s0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z+Test_Csv.test_writerows.<locals>.BrokenFilec                 S   s   t d S r	   r
   )r   bufr   r   r   r(      s    z1Test_Csv.test_writerows.<locals>.BrokenFile.writeN)r   r   r   r(   r   r   r   r   
BrokenFile   s   ry   rn   rR   r   rS   bcdr   z
a,b
c,d
)
r    r+   r   r   	writerowsr   r   rV   r1   rW   )r   ry   r+   rZ   r   r   r   test_writerows   s    

zTest_Csv.test_writerowsc                 C   s0  t dddJ}t|}|dd gd dgg |d | | d W d    n1 s\0    Y  t dddF}t|}|d gdgg |d | | d W d    n1 s0    Y  t dddF}t|}|dgd gg |d | | d	 W d    n1 s"0    Y  d S )
NrR   r   rS   rn   r|   r   za,
,d
z""
a
za
""
)r   r    r+   r}   rV   r1   rW   r   rZ   r+   r   r   r   test_writerows_with_none   s    

.

.

z!Test_Csv.test_writerows_with_nonec                 C   s\   t ddd<}t|}| t|jd  | t|jt  W d    n1 sN0    Y  d S )NrR   r   rS   )r   r    r+   r   r   r}   r   r   r   r   r   r   test_writerows_errors   s    
zTest_Csv.test_writerows_errorsc                 C   st   dd l }|d}tdddB}t|}||gg |d | | d W d    n1 sf0    Y  d S )Nr   rn   rR   r   rS   za
)		_testcapiZunicode_legacy_stringr   r    r+   r}   rV   r1   rW   )r   r   r{   rZ   r+   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&   listr1   )r   inputrY   rF   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   r8   zab cabcr   )r4   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,brn   rz   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,"rn   r   z"arK   
rs   Tr   )r5   r8   r   r   r   r   r   test_read_eof#  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)rn   rz   r{   rA   rs   za,b\,crn   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   r/   3r/   r   rA   )r   r5   r   r5   z,3,"5",7.3, 9)r      r   g333333@	   r   z"a
b", 7rp   z 7zabc,3)r   r    rE   rq   r   
ValueErrorr   r   r   r   test_read_quoting4  s    
zTest_Csv.test_read_quotingc              	   C   s   t  }zd}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 | nt | 0 d S )Nri   rh   rj   r   )r    Zfield_size_limitr   r1   r   r!   r   )r   limitsizerk   Zbigliner   r   r   test_read_bigfieldB  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   ra   r   )r    r&   r1   Zline_numnextr   StopIteration)r   rr   r   r   test_read_linenumU  s    zTest_Csv.test_read_linenumc                 C   s   t dddf}t|}ddgddgg}|| |d tt|D ]\}}| |||  qJW d    n1 sx0    Y  d S )	NrR   r   rS   rp   rz   r{   x
dr   )r   r    r+   r}   rV   	enumerater&   r1   r   rZ   r+   rowsrb   rowr   r   r   test_roundtrip_quoteed_newlinesa  s    


z(Test_Csv.test_roundtrip_quoteed_newlinesc                 C   s   t dddv}tj|tjdd}ddgdd	gg}|| |d
 ttj|tjddD ]\}}| |||  qZW d    n1 s0    Y  d S )NrR   r   rS   rA   r   rp   rz   r{   r   r   )	r   r    r+   rE   r}   rV   r   r&   r1   r   r   r   r   (test_roundtrip_escaped_unquoted_newlinesj  s    

z1Test_Csv.test_roundtrip_escaped_unquoted_newlinesN)&r   r   r   r%   r'   r,   r>   r?   r@   rG   rH   rI   rN   rO   rP   r[   r]   rg   rl   rr   ru   rw   r~   r   r   r   Zcpython_onlyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sD   

			r   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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_badargst  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                   @   s   e Zd ZdZdS )z5TestDialectRegistry.test_registry.<locals>.myexceltsv	Nr   r   r   r   r   r   r   r   
myexceltsv  s   r   r   )r    excelr   sortr   
addCleanupr   r1   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   )rh   YZzX;Y;Z)	r    r   r   r   r1   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}| t j| d S )Nc                   @   s   e Zd ZdZdS )z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr   Nr   r   r   r   r   r     s   r   )r    Dialectr   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 t j|| d}| t|ddg | t|d	d
g W d    n1 s|0    Y  d S )Nc                   @   s   e Zd ZdZejZdZdS )z5TestDialectRegistry.test_space_dialect.<locals>.space rA   N)r   r   r   r   r    rE   r   r5   r   r   r   r   space  s   r   rR   zabc def
c1ccccc1 benzene
r   r2   r   defZc1ccccc1Zbenzene)r    r   r   r(   rV   r&   r1   r   )r   r   rZ   r&   r   r   r   test_space_dialect  s    


z&TestDialectRegistry.test_space_dialectc                 O   sr   t ddddP}tj|g|R i |}|g d |d | | | W d    n1 sd0    Y  d S )NrR   r   utf-8rT   encodingr   ra   r   r   )r   r    r+   rU   rV   r1   rW   )r   expectedZ	writeargsZkwwriteargsrZ   r+   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 nt d 0 d S )Nc                   @   s   e Zd ZdZdS )z5TestDialectRegistry.test_dialect_apply.<locals>.testAr   Nr   r   r   r   r   testA  s   r   c                   @   s   e Zd ZdZdS )z5TestDialectRegistry.test_dialect_apply.<locals>.testBr0   Nr   r   r   r   r   testB  s   r   c                   @   s   e Zd ZdZdS )z5TestDialectRegistry.test_dialect_apply.<locals>.testC|Nr   r   r   r   r   testC  s   r   c                   @   s   e Zd ZdZdS )z7TestDialectRegistry.test_dialect_apply.<locals>.testUniu   ΛNr   r   r   r   r   testUni  s   r   c                   @   s   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   )r2   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   r2   r   r   r   	test_copy  s    
zTestDialectRegistry.test_copyc                 C   sB   t  D ]4}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   r2   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   s  s   	r   c                   @   s   e Zd Zdd Zdd ZdS )TestCsvBasec                 C   sh   t dddH}|| |d tj|| jd}t|}| || W d    n1 sZ0    Y  d S )NrR   r   rS   r   r   )r   r(   rV   r    r&   r2   r   r1   )r   r   expected_resultrZ   r&   rX   r   r   r   readerAssertEqual  s    

zTestCsvBase.readerAssertEqualc                 C   sd   t dddD}tj|| jd}|| |d | | | W d    n1 sV0    Y  d S )NrR   r   rS   r   r   )r   r    r+   r2   r}   rV   r1   rW   )r   r   r   rZ   r+   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   s   |  ddgg d S )Nr   r   r   r   r   r   test_single  s    zTestDialectExcel.test_singlec                 C   s   |  dg dg d S )Nz	1,2,3,4,5)r   2r   4r   r   r   r   r   r   test_simple  s    zTestDialectExcel.test_simplec                 C   s   |  dg  d S Nr   r   r   r   r   r   test_blankline  s    zTestDialectExcel.test_blanklinec                 C   s   |  dddgg d S )Nr-   r   r   r   r   r   r   test_empty_fields   s    z"TestDialectExcel.test_empty_fieldsc                 C   s   |  ddgg d S )Nr^   r   r   r   r   r   r   test_singlequoted  s    z"TestDialectExcel.test_singlequotedc                 C   s   |  dddgg d S )Nz"",r   r   r   r   r   r   test_singlequoted_left_empty  s    z-TestDialectExcel.test_singlequoted_left_emptyc                 C   s   |  dddgg d S )Nz,""r   r   r   r   r   r   test_singlequoted_right_empty	  s    z.TestDialectExcel.test_singlequoted_right_emptyc                 C   s   |  ddgg d S )Nrt   r/   r   r   r   r   r   test_single_quoted_quote  s    z)TestDialectExcel.test_single_quoted_quotec                 C   s   |  ddgg d S )Nz""""""r^   r   r   r   r   r   test_quoted_quotes  s    z#TestDialectExcel.test_quoted_quotesc                 C   s   |  ddgg d S )Nza""br   r   r   r   r   test_inline_quote  s    z"TestDialectExcel.test_inline_quotec                 C   s   |  ddgg d S )Nza"b"cr   r   r   r   r   test_inline_quotes  s    z#TestDialectExcel.test_inline_quotesc                 C   s   |  ddgg d S )Nz"a"babr   r   r   r   r   test_quotes_and_more  s    z%TestDialectExcel.test_quotes_and_morec                 C   s   |  ddgg d S )Nza"br   r   r   r   r   test_lone_quote  s    z TestDialectExcel.test_lone_quotec                 C   s   |  ddgg d S )Nz"a" "b"za "b"r   r   r   r   r   test_quote_and_quote   s    z%TestDialectExcel.test_quote_and_quotec                 C   s   |  ddgg d S )Nz "a"r   r   r   r   r   test_space_and_quote%  s    z%TestDialectExcel.test_space_and_quotec                 C   s   |  dg dg d S )Nz#1,2,3,"I think, therefore I am",5,6)r   r   r   zI think, therefore I amr   6r   r   r   r   r   test_quoted(  s    zTestDialectExcel.test_quotedc                 C   s   |  dg dg d S )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.  s    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87r   r   )r   r   r   r   r   test_quoted_nl4  s    zTestDialectExcel.test_quoted_nlc                 C   s   |  dg dg d S )Nz	12,12,1",)12r   z1"r   r   r   r   r   r   test_dubious_quote@  s    z#TestDialectExcel.test_dubious_quotec                 C   s   |  g d d S r   r   r   r   r   r   	test_nullC  s    zTestDialectExcel.test_nullc                 C   s   |  dggd d S )Nr   zabc
r   r   r   r   r   test_single_writerF  s    z#TestDialectExcel.test_single_writerc                 C   s   |  g dgd d S )N)r   ra   r   r      z1,2,abc,3,4
r   r   r   r   r   test_simple_writerI  s    z#TestDialectExcel.test_simple_writerc                 C   s   |  g dgd d S )N)r   ra   za"bc"r   r   z1,2,"a""bc""",3,4
r   r   r   r   r   test_quotesL  s    zTestDialectExcel.test_quotesc                 C   s   |  dggd d S Nabc,defz"abc,def"
r   r   r   r   r   test_quote_fieldsepO  s    z$TestDialectExcel.test_quote_fieldsepc                 C   s   |  g dgd d S )N)r   ra   za
bcr   r   z1,2,"a
bc",3,4
r   r   r   r   r   test_newlinesR  s    zTestDialectExcel.test_newlinesN)r   r   r   r2   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     s4   r   c                   @   s   e Zd ZejZdZdS )EscapedExcelrA   N)r   r   r   r    rE   r   r5   r   r   r   r   r  U  s   r  c                   @   s"   e Zd Ze Zdd Zdd ZdS )TestEscapedExcelc                 C   s   |  dggd d S )Nr  
abc\,def
r   r   r   r   r   test_escape_fieldsep\  s    z%TestEscapedExcel.test_escape_fieldsepc                 C   s   |  ddgg d S )Nr  r  r   r   r   r   r   test_read_escape_fieldsep_  s    z*TestEscapedExcel.test_read_escape_fieldsepN)r   r   r   r  r2   r  r	  r   r   r   r   r  Y  s   r  c                   @   s    e Zd ZdZdd Zdd ZdS )TestDialectUnixZunixc                 C   s   |  g dgd d S )N)r   abc defr   "1","abc def","abc"
r   r   r   r   r   r   e  s    z"TestDialectUnix.test_simple_writerc                 C   s   |  dg dg d S )Nr  )r   r  r   r   r   r   r   r   test_simple_readerh  s    z"TestDialectUnix.test_simple_readerN)r   r   r   r2   r   r  r   r   r   r   r
  b  s   r
  c                   @   s   e Zd ZejZdZdS )QuotedEscapedExcelrA   N)r   r   r   r    rq   r   r5   r   r   r   r   r  k  s   r  c                   @   s"   e Zd Ze Zdd Zdd ZdS )TestQuotedEscapedExcelc                 C   s   |  dggd d S r  r   r   r   r   r   test_write_escape_fieldsepr  s    z1TestQuotedEscapedExcel.test_write_escape_fieldsepc                 C   s   |  ddgg d S )Nz"abc\,def"
r  r   r   r   r   r   r	  u  s    z0TestQuotedEscapedExcel.test_read_escape_fieldsepN)r   r   r   r  r2   r  r	  r   r   r   r   r  o  s   r  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   sV   t ddd6}tj|g dd}| }| |d W d    n1 sH0    Y  d S )NrR   r   rS   f1f2f3
fieldnamesr_   )r   r    
DictWriterwriteheaderr1   )r   rZ   r+   Zwriteheader_return_valuer   r   r   test_writeheader_return_value{  s    z,TestDictFields.test_writeheader_return_valuec                 C   s   t dddv}tj|g dd}|  |d | | d |dd	d
 |d |  | | d W d    n1 s0    Y  d S )NrR   r   rS   r  r  r   
f1,f2,f3
r_   r   )r  r  z	10,,abc
)	r   r    r  r  rV   r1   readlinerU   rW   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 )Nr  r  r  r   r   fra      Zxyzzf1,f2,f3
1,abc,f
2,5,xyz
)r   r    r  r  r1   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   rZ   r   r   r   test_write_no_fields  s    z#TestDictFields.test_write_no_fieldsc              	   C   s   t ddd}tj|g dd}| t"}|dddd	 W d    n1 sR0    Y  t|j}| d
| | d| | 	d| | d| W d    n1 s0    Y  d S )NrR   r   rS   r  r  r_   Zspamr   )Zf4r  r   r  z'f4'z'f2'r   )
r   r    r  r   r   rU   str	exceptionassertInZassertNotIn)r   rZ   r+   Zcxr%  r   r   r   #test_write_fields_not_in_fieldnames  s    0
z2TestDictFields.test_write_fields_not_in_fieldnamesc                 C   s$   t  }| jttj|ddgdd d S )Nr  r  ZraisedZextrasaction)r   r   r   r    r  r"  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 )
Nr  r  raiser(  r   r   ra   r   Zf0r  r  r  )r   r    r  r   r   rU   r   rZ   r+   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 )Nr  r  ignorer(  r   r   ra   r   r+  z1,2
)r   r    r  rU   r1   r   r,  r   r   r   *test_write_field_not_in_field_names_ignore  s
    z9TestDictFields.test_write_field_not_in_field_names_ignorec                 C   sj   t dN}|d |d tj|g dd}| t|dddd W d    n1 s\0    Y  d S )	NrR   z	1,2,abc
r   r  r  r   r   r   r   r(   rV   r    
DictReaderr1   r   r   rZ   r&   r   r   r   test_read_dict_fields  s    


z$TestDictFields.test_read_dict_fieldsc                 C   st   t dX}|d |d t|}| t|dddd | |jg d W d    n1 sf0    Y  d S )NrR   f1,f2,f3
1,2,abc
r   r   r   r   r  )r   r(   rV   r    r1  r1   r   r  r2  r   r   r   test_read_dict_no_fieldnames  s    



z+TestDictFields.test_read_dict_no_fieldnamesc                 C   s   t df}|d |d tj|tt|d}| |jg d | t|dddd W d    n1 st0    Y  d S )	NrR   r4  r   r  r  r   r   r   )	r   r(   rV   r    r1  r   r&   r1   r  r2  r   r   r   #test_read_dict_fieldnames_from_file  s    


z2TestDictFields.test_read_dict_fieldnames_from_filec              	   C   s   dd l }tdp}|d |d t|}t|}||g|D ]*}| |j	g d | |dddd qFW d    n1 s0    Y  d S )Nr   rR   r4  r  r   r   r   )
	itertoolsr   r(   rV   r    r1  r   chainr1   r  )r   r7  rZ   r&   firstr   r   r   r   test_read_dict_fieldnames_chain  s    



z.TestDictFields.test_read_dict_fieldnames_chainc                 C   sn   t dR}|d |d tj|ddgd}| t|ddg d	d
 W d    n1 s`0    Y  d S )NrR   1,2,abc,4,5,6
r   r  r  r  r   r   r   r   r   r   )r  r  Nr0  r2  r   r   r   test_read_long  s    


zTestDictFields.test_read_longc                 C   sp   t dT}|d |d tj|ddgdd}| t|dd	g d
d W d    n1 sb0    Y  d S )NrR   r;  r   r  r  _rest)r  restkeyr   r   r<  r  r  r>  r0  r2  r   r   r   test_read_long_with_rest  s    


z'TestDictFields.test_read_long_with_restc                 C   s|   t d`}|d |d tj|dd}| |jddg | t|dd	g d
d W d    n1 sn0    Y  d S )NrR   zf1,f2
1,2,abc,4,5,6
r   r>  r?  r  r  r   r   r<  r@  )r   r(   rV   r    r1  r1   r  r   r2  r   r   r   &test_read_long_with_rest_no_fieldnames  s    


z5TestDictFields.test_read_long_with_rest_no_fieldnamesc                 C   s   t dt}|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    n1 s0    Y  d S )NrR   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(   rV   r    r1  splitr1   r   r2  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    r1  rF  r1   r   )r   sampler&   r   r   r   test_read_multi  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)r;  r.   r;  rD  r  r   r   r   r   r   r   rE  rK  r   r&   r   r   r   test_read_with_blanks  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
rD  r   )r  r   r   r   r   r   r   r   rE  rK  rN  r   r   r   test_read_semi_sep  s    z!TestDictFields.test_read_semi_sepN)r   r   r   r  r  r!  r#  r'  r)  r-  r/  r3  r5  r6  r:  r=  rA  rC  rG  rM  rO  rP  r   r   r   r   r  x  s&   

					r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestArrayWritesc                 C   s   dd l }dd tdD }| d|}tdddZ}tj|d	d
}|| ddd |D d }|d | |	 | W d    n1 s0    Y  d S )Nr   c                 S   s   g | ]}d | qS )   r   .0rb   r   r   r   
<listcomp>(      z2TestArrayWrites.test_int_write.<locals>.<listcomp>rR  rb   rR   r   rS   r   r   r-   c                 S   s   g | ]}t |qS r   r$  rS  r   r   r   rU  .  rV  r.   
arrayr   r   r    r+   rU   joinrV   r1   rW   r   rY  contentsrn   rZ   r+   r   r   r   r   test_int_write&  s    

zTestArrayWrites.test_int_writec                 C   s   dd l }dd tdD }| d|}tdddZ}tj|d	d
}|| ddd |D d }|d | |	 | W d    n1 s0    Y  d S )Nr   c                 S   s   g | ]}d | d qS rR  g?r   rS  r   r   r   rU  4  rV  z5TestArrayWrites.test_double_write.<locals>.<listcomp>rR  r|   rR   r   rS   r   r   r-   c                 S   s   g | ]}t |qS r   rW  rS  r   r   r   rU  9  rV  r.   rX  r[  r   r   r   test_double_write2  s    

z!TestArrayWrites.test_double_writec                 C   s   dd l }dd tdD }| d|}tdddZ}tj|d	d
}|| ddd |D d }|d | |	 | W d    n1 s0    Y  d S )Nr   c                 S   s   g | ]}d | d qS r^  r   rS  r   r   r   rU  ?  rV  z4TestArrayWrites.test_float_write.<locals>.<listcomp>rR  r  rR   r   rS   r   r   r-   c                 S   s   g | ]}t |qS r   rW  rS  r   r   r   rU  D  rV  r.   rX  r[  r   r   r   test_float_write=  s    

z TestArrayWrites.test_float_writec                 C   s   dd l }dd l}| d|j}tdddP}tj|dd}|| d|d	 }|d | 	|
 | W d    n1 s0    Y  d S )
Nr   urR   r   rS   r   r   r-   r.   )rY  stringascii_lettersr   r    r+   rU   rZ  rV   r1   rW   )r   rY  rb  rn   rZ   r+   r   r   r   r   test_char_writeH  s    

zTestArrayWrites.test_char_writeN)r   r   r   r]  r_  r`  rd  r   r   r   r   rQ  %  s   rQ  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 s0    Y  | t|jd d|_	| t j}|  W d    n1 s0    Y  | t|jd d S )	Nc                   @   s&   e Zd ZdZdZdZdZdZej	Z
dS )z3TestDialectValidity.test_quoting.<locals>.mydialectr   rA   FTr.   Nr   r   r   r   r5   r4   r7   r   r    rE   r   r   r   r   r   	mydialectU  s   rg  Tr/   z''z("quotechar" must be a 1-character stringr   z+"quotechar" must be string or None, not int)r    r   r1   r   rE   r   r!   r4   r"   r   
assertTruer$  r%  r   rg  r|   cmr   r   r   test_quotingT  s0    $$z TestDialectValidity.test_quotingc                 C   s  G dd dt j}| }| |jd d|_| t j}|  W d    n1 sT0    Y  | t|jd d|_| t j}|  W d    n1 s0    Y  | t|jd d|_| t j}|  W d    n1 s0    Y  | t|jd d	|_| t j}|  W d    n1 s40    Y  | t|jd
 d |_| t j}|  W d    n1 s0    Y  | t|jd d S )Nc                   @   s&   e Zd ZdZdZdZdZdZej	Z
dS )z5TestDialectValidity.test_delimiter.<locals>.mydialectr   rA   FTr.   Nrf  r   r   r   r   rg  w  s   rg  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   r1   r   r   r!   r$  r%  ri  r   r   r   test_delimiterv  sB    $$$&&z"TestDialectValidity.test_delimiterc                 C   s   G dd dt j}| }| |jd d|_| t jd |  W d    n1 sV0    Y  d|_| t jd |  W d    n1 s0    Y  d|_| t jd	 |  W d    n1 s0    Y  d S )
Nc                   @   s&   e Zd ZdZdZdZdZdZej	Z
dS )z6TestDialectValidity.test_escapechar.<locals>.mydialectr   rA   FTr.   Nrf  r   r   r   r   rg    s   rg  rA   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   r1   r5   ZassertRaisesRegexr!   )r   rg  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 sn0    Y  | t|jd d S )Nc                   @   s&   e Zd ZdZdZdZdZdZej	Z
dS )z:TestDialectValidity.test_lineterminator.<locals>.mydialectr   rA   FTr.   Nrf  r   r   r   r   rg    s   rg  r.   rl  r   z!"lineterminator" must be a string)r    r   r1   r   r   r!   r$  r%  ri  r   r   r   test_lineterminator  s    $z'TestDialectValidity.test_lineterminatorc              	   C   s   dd }dD ]x}| j |dX | tj||d | tj||d | tj||d | tj||d W d    q1 sz0    Y  qd S )	Nc                 S   s(   G dd dt j}t|| | | }d S )Nc                   @   s   e Zd ZdS )zQTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialectNr   r   r   r   r   rg    s   rg  )r    r   r;   )
field_namevaluerg  r|   r   r   r   create_invalid  s    z>TestDialectValidity.test_invalid_chars.<locals>.create_invalid)r   r5   r   )rr  r   r      xr  )subTestr   r    r!   )r   rt  rr  r   r   r   test_invalid_chars  s    z&TestDialectValidity.test_invalid_charsN)r   r   r   rk  rn  rp  rq  rw  r   r   r   r   re  S  s
   ")re  c                   @   sh   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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'
c                 C   s:   t  }| || jd | || j| j d d S NFT)r    Snifferr3   
has_headersample1header1r   snifferr   r   r   test_has_header  s    zTestSniffer.test_has_headerc                 C   s:   t  }| || jd | || j| j d d S ry  )r    rz  r3   r{  sample8header2r~  r   r   r   'test_has_header_regex_special_delimiter  s    z3TestSniffer.test_has_header_regex_special_delimiterc              	   C   s   t  }dD ]r}| |T ||d}| |jd | |jd | |jd | |j	d W d    q1 st0    Y  qd S )N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r   'F)
r    rz  rv  sniffr1   r   r   r3   r4   r7   )r   r  headerr2   r   r   r   test_guess_quote_and_delimiter  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 )Nr-   r/   Tr0   r  F)
r    rz  r  r|  r1   r   r   r3   r7   sample2r   r  r2   r   r   r   
test_sniff   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    rz  r  sample3r&  r   r1   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    rz  r  r}  ZassertFalser4   r  r  rh  r  r  r  r   r   r   test_doublequoteF  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   rx    s"   
rx  c                   @   s   e Zd Zdd ZeZdS )NULc                 G   s   d S r	   r   )sr<   r   r   r   r(   T  s    z	NUL.writeN)r   r   r   r(   
writelinesr   r   r   r   r  S  s   r  gettotalrefcountzrequires sys.gettotalrefcount()c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestLeaksc                 C   sx   d}t  }tdD ]R}t  | tjg  t  }tdg tdg tdg || }|}q| 	|d d S )Nr   rR  a,b,c
r   
sysr  r   gccollectr1   garbager    r&   
assertLess)r   deltalastrcrb   rcr   r   r   test_create_read[  s    zTestLeaks.test_create_readc                 C   sx   d}t  }t }tdD ]L}t  | tjg  t  }t	| t	| t	| || }|}q| 
|d d S )Nr   rR  r   )r  r  r  r   r  r  r1   r  r    r+   r  )r   r  r  r  rb   r  r   r   r   test_create_writej  s    


zTestLeaks.test_create_writec                 C   sr   d}dgd }t  }tdD ]B}t  | tjg  t  }t|}|D ]}qN|| }|}q| 	|d d S )Nr   r  r  rR  r  )r   r  r   r  rb   r  Zrdrr   r   r   r   	test_readz  s    

zTestLeaks.test_readc           	      C   s   d}g dgd }t  }t }tdD ]L}t  | tjg  t }t	|}|D ]}|
| qX|| }|}q(| |d d S )Nr   r   r  rR  )r  r  r  r   r  r  r1   r  r    r+   rU   r  )	r   r  r   r  r  rb   r  r+   r   r   r   r   
test_write  s    
zTestLeaks.test_writeN)r   r   r   r  r  r  r  r   r   r   r   r  X  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   sp   t ddddN}|d| jd  |d t|}| t|| jg W d    n1 sb0    Y  d S NrR   r   r   r   r-   r.   r   )	r   r(   rZ  namesrV   r    r&   r1   r   r2  r   r   r   test_unicode_read  s
    

zTestUnicode.test_unicode_readc                 C   sr   t ddddP}t|}|| j d| jd }|d | | | W d    n1 sd0    Y  d S r  )	r   r    r+   rU   r  rZ  rV   r1   rW   )r   rZ   r+   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                   @   s   e Zd Zdd Zdd ZdS )KeyOrderingTestc              	   C   s   t  }tdD ]z}tddddX}t||}|  |d t|}t|j	}| 
|| || W d    q1 s~0    Y  q| 
t|dd d S )	NZabcderR   r   r   r   r   x   z@Key ordering: some key permutations not collected (expected 120))setr   r   r    r  r  rV   r1  tupler  r1   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	OtherInforB  r   fnamelnamer  )r  r  )r  r  )r  r  )r  r  )r  r  )r  N)r  r  )r  r  )r   
splitlinesr1   r   r    r1  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                   @   s   e Zd Zdd ZdS )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__N)r   r   r   r  r   r   r   r   r    s   r  __main__)+r   r  Zunittestior   tempfiler   r    r  r   testr   r7  r   textwrapr   collectionsr   r   ZTestCaser   r   r   r   r   r  r  r
  r  r  r  rQ  re  rx  r  Z
skipUnlesshasattrr  r  r  r  r   mainr   r   r   r   <module>   sN     ^qa			 .. yA4
