HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_csv.cpython-37.pyc
B

��g=��@s�ddlZddlZddlZddlmZddlmZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZGdd	�d	ej�ZGd
d�dej�ZGdd
�d
ej�ZGdd�de�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�de�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGd d!�d!ej�Z Gd"d#�d#�Z!e�"e#ed$�d%�Gd&d'�d'ej��Z$Gd(d)�d)ej�Z%Gd*d+�d+ej�Z&Gd,d-�d-ej�Z'e(d.k�r�e�)�dS)/�N)�StringIO)�
TemporaryFile)�support)�permutations)�dedent)�OrderedDictc@seZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zejd,d-��Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"d<d=�Z#d>d?�Z$d@dA�Z%dBS)C�Test_Csvz�
    Test the underlying C csv parser in ways that are not appropriate
    from the high level interface. Further tests of this nature are done
    in TestDialectRegistry.
    cCs�|�t|�|�t|d�|jt||dd�|jt||dd�|jt||dd�|�tj||d�|jt||dd�|jt||dd�|jt||dd�|jt||dd�|jt||dd�|jt||dd	�|jt||tjd
d�|jt||tjdd�dS)Nr)�bad_attr)�	delimiterZXXZfoo�)�	quotechar)�lineterminator)�quoting�)rr)�assertRaises�	TypeError�csv�Error�	QUOTE_ALL)�self�ctor�arg�r�)/usr/local/lib/python3.7/test/test_csv.py�_test_arg_valids 

zTest_Csv._test_arg_validcCs|�tjg�dS)N)rr�reader)rrrr�test_reader_arg_valid)szTest_Csv.test_reader_arg_validcCs|�tjt��dS)N)rr�writerr)rrrr�test_writer_arg_valid,szTest_Csv.test_writer_arg_validcGs�||�}|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjtj	�|�|jj
d�|�|jjd�|�t
t|jd�|�t
t|jdd�|�t
t|jd�|�t
t|jdd�dS)	N�,Tz
�"Fr
�:r)�assertEqual�dialectr
�doublequote�
escapecharr
rrr�
QUOTE_MINIMAL�skipinitialspace�strictr�AttributeError�delattr�setattr)rr�args�objrrr�_test_default_attrs/szTest_Csv._test_default_attrscCs|�tjg�dS)N)r.rr)rrrr�test_reader_attrsAszTest_Csv.test_reader_attrscCs|�tjt��dS)N)r.rrr)rrrr�test_writer_attrsDszTest_Csv.test_writer_attrsc
Gs�tdddddtjddd�}|||�}|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jj	d�|�|jj
tj�|�|jjd�|�|jjd�dS)Nr!F�\�
�*T)r
r$r%r
rrr'r()
�dictr�
QUOTE_NONEr"r#r
r$r%r
rrr'r()rrr,�kwargsr-rrr�_test_kw_attrsGs
zTest_Csv._test_kw_attrscCs|�tjg�dS)N)r7rr)rrrr�test_reader_kw_attrsWszTest_Csv.test_reader_kw_attrscCs|�tjt��dS)N)r7rrr)rrrr�test_writer_kw_attrsZszTest_Csv.test_writer_kw_attrscGs�Gdd�d�}||f}||�}|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjtj	�|�|jj
d�|�|jjd�dS)	Nc@s.eZdZdZdZdZdZdZej	Z
dZdZdS)z-Test_Csv._test_dialect_attrs.<locals>.dialect�-F�^�$�#TN)
�__name__�
__module__�__qualname__r
r$r%r
rrrrr'r(rrrrr#_sr#r:Fr;r<r=T)r"r#r
r$r%r
rrrrr'r()rrr,r#r-rrr�_test_dialect_attrs]s	
zTest_Csv._test_dialect_attrscCs|�tjg�dS)N)rArr)rrrr�test_reader_dialect_attrsssz"Test_Csv.test_reader_dialect_attrscCs|�tjt��dS)N)rArrr)rrrr�test_writer_dialect_attrsvsz"Test_Csv.test_writer_dialect_attrsc	KsVtddd��@}tj|f|�}|�|�|�d�|�|��||jj�WdQRXdS)Nzw+r)�newliner)	rrr�writerow�seekr"�readr#r
)r�fields�expectr6�fileobjrrrr�_write_testzs


zTest_Csv._write_testc
Ksdtddd��N}tj|f|�}|�|��|�|�WdQRX|�d�|�|��d�WdQRXdS)Nzw+r)rDr)rrrrrErFr"rG)r�excrHr6rJrrrr�_write_error_test�s
zTest_Csv._write_error_testcCs||�tjd�|�dd�|�dgd�|jtjdgtjd�Gdd�d�}|�t|��Gdd�d�}|�t|�g�dS)	Nrrz"")rc@seZdZdd�Zdd�ZdS)z.Test_Csv.test_write_arg_valid.<locals>.BadListcSsdS)N�
r)rrrr�__len__�sz6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__cSs|dkrt�dS)N�)�OSError)r�irrr�__getitem__�sz:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__N)r>r?r@rOrSrrrr�BadList�srTc@seZdZdd�ZdS)z.Test_Csv.test_write_arg_valid.<locals>.BadItemcSst�dS)N)rQ)rrrr�__str__�sz6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__N)r>r?r@rUrrrr�BadItem�srV)rMrrrKr5rQ)rrTrVrrr�test_write_arg_valid�szTest_Csv.test_write_arg_validcCs$dd}|�||gd||f�dS)N�XiP�z%s,%s)rK)r�	bigstringrrr�test_write_bigfield�szTest_Csv.test_write_bigfieldcCs�|�dddgd�|jtjdddgtjd�|jdddgdtjd�|jdddgdtjd�|jdddgdtjd�|jddgd	tjd�dS)
N�arzp,qz	a,1,"p,q")rz"a",1,"p,q"z
"a","1","p,q"za
bz	"a
b","1")rKrMrrr5r&�QUOTE_NONNUMERICr)rrrr�test_write_quoting�s



zTest_Csv.test_write_quotingcCs�|jdddgddd�|jtjdddgddd	�|jdddgd
ddd	�|jdgddtjd
�|jdgddtjdd�|jdgddtjd
�|jdddgddtjd
�dS)Nr[rzp,qz	a,1,"p,q"r1)r%zp,"q"F)r%r$z
a,1,"p,\"q\""r z"""")r%rz\")r%rr$za,1,p\,q)rKrMrrr&r5)rrrr�test_write_escape�s




zTest_Csv.test_write_escapecCs�|�tdddg�d�|�tdddg�d�|�tg�d�|�tdg�d�|jtjtdg�tjd�|�tddg�d	�dS)
Nr[rzp,qz	a,1,"p,q"za,1,rz"")rr)rK�iterrMrrr5)rrrr�test_write_iterable�szTest_Csv.test_write_iterablec	Cs�Gdd�d�}t�|��}|�t|jdgg�tddd��P}t�|�}|�t|jd�|�ddgdd	gg�|�d
�|�|�	�d�WdQRXdS)Nc@seZdZdd�ZdS)z+Test_Csv.test_writerows.<locals>.BrokenFilecSst�dS)N)rQ)r�bufrrr�write�sz1Test_Csv.test_writerows.<locals>.BrokenFile.writeN)r>r?r@rbrrrr�
BrokenFile�srcr[zw+r)rD�b�c�drz
a,b
c,d
)
rrrrQ�	writerowsrrrFr"rG)rrcrrJrrr�test_writerows�s

zTest_Csv.test_writerowsc	Cs�tddd��@}t�|�}|�ddgddgg�|�d�|�|��d�WdQRXtddd��<}t�|�}|�dgdgg�|�d�|�|��d�WdQRXtddd��<}t�|�}|�dgdgg�|�d�|�|��d	�WdQRXdS)
Nzw+r)rDr[rfrza,
,d
z""
a
za
""
)rrrrgrFr"rG)rrJrrrr�test_writerows_with_none�s





z!Test_Csv.test_writerows_with_nonec	Cs`ddl}|�d�}tddd��8}t�|�}|�|gg�|�d�|�|��d�WdQRXdS)Nrr[zw+r)rDza
)	�	_testcapiZunicode_legacy_stringrrrrgrFr"rG)rrjrerJrrrr�test_writerows_legacy_strings�s


z&Test_Csv.test_writerows_legacy_stringscKs&tj|f|�}t|�}|�||�dS)N)rr�listr")r�inputrIr6r�resultrrr�
_read_test�szTest_Csv._read_testcCs�|�gg�|�dggg�|jtj|jdgddd�|jtj|jdgddd�|jdgdggdd�|�tj|jd	gd�dS)
Nrz"ab"cr)r(zabc�abcr)r$sabc)rorrr)rrrr�test_read_oddinputs�szTest_Csv.test_read_oddinputscCs�|�dgddgg�|�dgddgg�|�dgddgg�|�dgddgg�|�tj|jdgg�|�tj|jdgg�|�tj|jd	gg�dS)
Nza,br[rdza,b
za,b
za,b
za,b
c,dza,b
c,dza,b
c,d)rorrr)rrrr�
test_read_eolszTest_Csv.test_read_eolcCs�|�dgddgg�|�dgdgg�|jdgdggdd�|jtj|jdggdd	�|jtj|jdggdd	�|jtj|jdggddd
�dS)Nza,"r[rz"ar;�
)r%T)r()r%r()rorrr)rrrr�
test_read_eofszTest_Csv.test_read_eofcCs�|jdgdddggdd�|jdgddggdd�|jd	gddggdd�|jd
gddggdd�|jdgddggdd�|jd
gddggdd�dS)Nza,\b,cr[rdrer1)r%za,b\,czb,cza,"b\,c"za,"b,\c"z	a,"b,c\""zb,c"za,"b,c"\zb,c\)ro)rrrr�test_read_escapeszTest_Csv.test_read_escapecCs�|�dgdddgg�|jdgdddddggddd�|jdgdddddggtjdd	�|jd
gdddd
dggtjd�|�dgddgg�|jt|jdgggtjd�dS)Nz	1,",3,",5�1z,3,�5r �3r1)rr%)rr%z
,3,"5",7.3, 9r�g333333@�	)rz"a
b", 7za
bz 7zabc,3)rorr5r\r�
ValueError)rrrr�test_read_quoting!s


zTest_Csv.test_read_quotingc	Cs�t��}z�d}d|}d||f}|�|g||gg�t�|�|�|g||gg�|�t��|�t�|d�|�tj|j|gg�|�ttjd�|�ttjdd�Wdt�|�XdS)NiP�rXz%s,%sr)rZfield_size_limitror"rrr)r�limit�sizerYZbiglinerrr�test_read_bigfield/s
zTest_Csv.test_read_bigfieldcCs�t�dddg�}|�|jd�t|�|�|jd�t|�|�|jd�t|�|�|jd�|�tt|�|�|jd�dS)Nzline,1zline,2zline,3rrrPry)rrr"Zline_num�nextr�
StopIteration)r�rrrr�test_read_linenumBszTest_Csv.test_read_linenumc	Cs�tddd��p}t�|�}|�t|jd�ddgddgg}|�|�|�d�x*tt�|��D]\}}|�	|||�q\WWdQRXdS)	Nzw+r)rDza
brdrezx
dr)
rrrrrrgrF�	enumeraterr")rrJr�rowsrR�rowrrr�test_roundtrip_quoteed_newlinesNs


z(Test_Csv.test_roundtrip_quoteed_newlinesc	Cs�tddd��p}tj|tjdd�}ddgdd	gg}|�|�|�d
�x2ttj|tjdd��D]\}}|�|||�q\WWdQRXdS)Nzw+r)rDr1)rr%za
brdrezx
dr)	rrrr5rgrFr�rr")rrJrr�rRr�rrr�(test_roundtrip_escaped_unquoted_newlinesXs

 z1Test_Csv.test_roundtrip_escaped_unquoted_newlinesN)&r>r?r@�__doc__rrrr.r/r0r7r8r9rArBrCrKrMrWrZr]r^r`rhrirZcpython_onlyrkrorqrrrtrur|rr�r�r�rrrrrsB
		
rc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestDialectRegistrycCs�|�ttjd�|�ttj�|�tjtjd�|�tjtjd�|�ttj�|�tjtjd�|�tjtjd�|�ttjd�|�ttjdd�|�ttjddd�|jttjddd�|jttjddd�|�ttjg�dS)NZnonesuchr)Zbadargument)r)rrr�
list_dialects�get_dialectr�unregister_dialect�register_dialect)rrrr�test_registry_badargsbsz)TestDialectRegistry.test_registry_badargscCsvGdd�dtj�}d}t��|g}|��t�||�|�tj|�|�t�|�j	d�t
t���}|�||�dS)Nc@seZdZdZdS)z5TestDialectRegistry.test_registry.<locals>.myexceltsv�	N)r>r?r@r
rrrr�
myexceltsvtsr�r�)r�excelr��sortr��
addCleanupr�r"r�r
�sorted)rr��nameZexpected_dialectsZgot_dialectsrrr�
test_registryssz!TestDialectRegistry.test_registrycCsZd}tj|dd�|�tj|�|�t�|�jd�|�dddggtt�dg|���dS)NZfedcba�;)r
rX�Y�ZzX;Y;Z)	rr�r�r�r"r�r
rlr)rr�rrr�test_register_kwargss
z(TestDialectRegistry.test_register_kwargscCs$Gdd�dtj�}|�tj|�dS)Nc@seZdZdZdS)z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr�N)r>r?r@r
rrrrr��sr�)r�Dialectrr)rr�rrr�test_incomplete_dialect�sz+TestDialectRegistry.test_incomplete_dialectc	CsvGdd�dtj�}td��R}|�d�|�d�tj||�d�}|�t|�ddg�|�t|�d	d
g�WdQRXdS)Nc@seZdZdZejZdZdS)z5TestDialectRegistry.test_space_dialect.<locals>.space� r1N)r>r?r@r
rr5rr%rrrr�space�sr�zw+zabc def
c1ccccc1 benzene
r)r#rp�defZc1ccccc1Zbenzene)rr�rrbrFrr"r�)rr�rJrrrr�test_space_dialect�s


z&TestDialectRegistry.test_space_dialectc	OsZtdddd��B}tj|f|�|�}|�dddg�|�d�|�|��|�WdQRXdS)	Nzw+rzutf-8)rD�encodingrrPryr)rrrrErFr"rG)r�expectedZ	writeargsZkwwriteargsrJrrrr�compare_dialect_123�s

z'TestDialectRegistry.compare_dialect_123c	Cs�Gdd�dtj�}Gdd�dtj�}Gdd�dtj�}Gdd�dtj�}t�d|�zV|�d	�|�d
|�|jd|�d�|jd
dd�|jd|dd�|jd|d�Wdt�d�XdS)Nc@seZdZdZdS)z5TestDialectRegistry.test_dialect_apply.<locals>.testAr�N)r>r?r@r
rrrr�testA�sr�c@seZdZdZdS)z5TestDialectRegistry.test_dialect_apply.<locals>.testBr!N)r>r?r@r
rrrr�testB�sr�c@seZdZdZdS)z5TestDialectRegistry.test_dialect_apply.<locals>.testC�|N)r>r?r@r
rrrr�testC�sr�c@seZdZdZdS)z7TestDialectRegistry.test_dialect_apply.<locals>.testUniuΛN)r>r?r@r
rrrr�testUni�sr�z1,2,3
z1	2	3
z1:2:3
)r#z1|2|3
z1;2;3
r�)r#r
u	1Λ2Λ3
)rr�r�r�r�)rr�r�r�r�rrr�test_dialect_apply�s
z&TestDialectRegistry.test_dialect_applycCsT|jttjgdd�|jttjgdd�|jttjgdd�|jttjgdd�dS)Nr)r	)r
���)r�d)rrrr)rrrr�test_bad_dialect�sz$TestDialectRegistry.test_bad_dialectcCs0x*t��D]}t�|�}|�ttj|�q
WdS)N)rr�r�rr�copy)rr�r#rrr�	test_copy�s
zTestDialectRegistry.test_copycCsJxDt��D]8}t�|�}x(ttjd�D]}|�ttj||�q(Wq
WdS)Nr)	rr�r��range�pickleZHIGHEST_PROTOCOLrr�dumps)rr�r#�protorrr�test_pickle�s
zTestDialectRegistry.test_pickleN)
r>r?r@r�r�r�r�r�r�r�r�r�r�rrrrr�as
	r�c@seZdZdd�Zdd�ZdS)�TestCsvBasec	CsTtddd��>}|�|�|�d�tj||jd�}t|�}|�||�WdQRXdS)Nzw+r)rDr)r#)rrbrFrrr#rlr")rrm�expected_resultrJrrHrrr�readerAssertEqual�s

zTestCsvBase.readerAssertEqualc	CsPtddd��:}tj||jd�}|�|�|�d�|�|��|�WdQRXdS)Nzw+r)rD)r#r)rrrr#rgrFr"rG)rrmr�rJrrrr�writerAssertEqual�s


zTestCsvBase.writerAssertEqualN)r>r?r@r�r�rrrrr��sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4S)5�TestDialectExcelr�cCs|�ddgg�dS)Nrp)r�)rrrr�test_single�szTestDialectExcel.test_singlecCs|�ddddddgg�dS)Nz	1,2,3,4,5rv�2rx�4rw)r�)rrrr�test_simple�szTestDialectExcel.test_simplecCs|�dg�dS)Nr)r�)rrrr�test_blankline�szTestDialectExcel.test_blanklinecCs|�dddgg�dS)Nrr)r�)rrrr�test_empty_fields�sz"TestDialectExcel.test_empty_fieldscCs|�ddgg�dS)Nz""r)r�)rrrr�test_singlequoted�sz"TestDialectExcel.test_singlequotedcCs|�dddgg�dS)Nz"",r)r�)rrrr�test_singlequoted_left_empty�sz-TestDialectExcel.test_singlequoted_left_emptycCs|�dddgg�dS)Nz,""r)r�)rrrr�test_singlequoted_right_empty�sz.TestDialectExcel.test_singlequoted_right_emptycCs|�ddgg�dS)Nz""""r )r�)rrrr�test_single_quoted_quote�sz)TestDialectExcel.test_single_quoted_quotecCs|�ddgg�dS)Nz""""""z"")r�)rrrr�test_quoted_quotes�sz#TestDialectExcel.test_quoted_quotescCs|�ddgg�dS)Nza""b)r�)rrrr�test_inline_quote�sz"TestDialectExcel.test_inline_quotecCs|�ddgg�dS)Nza"b"c)r�)rrrr�test_inline_quotes�sz#TestDialectExcel.test_inline_quotescCs|�ddgg�dS)Nz"a"bZab)r�)rrrr�test_quotes_and_moresz%TestDialectExcel.test_quotes_and_morecCs|�ddgg�dS)Nza"b)r�)rrrr�test_lone_quotesz TestDialectExcel.test_lone_quotecCs|�ddgg�dS)Nz"a" "b"za "b")r�)rrrr�test_quote_and_quotesz%TestDialectExcel.test_quote_and_quotecCs|�ddgg�dS)Nz "a")r�)rrrr�test_space_and_quote
sz%TestDialectExcel.test_space_and_quotec	Cs|�dddddddgg�dS)Nz#1,2,3,"I think, therefore I am",5,6rvr�rxzI think, therefore I amrw�6)r�)rrrr�test_quotedszTestDialectExcel.test_quotedcCs|�ddddddgg�dS)NzJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw"rvr�rxz"I see," said the blind manz"as he picked up his hammer and saw)r�)rrrr�test_quoted_quotesz"TestDialectExcel.test_quoted_quotecCs*d}|�|dddddgddd	d
gg�dS)NzR1,2,3,"""I see,""
said the blind man","as he picked up his
hammer and saw"
9,8,7,6rvr�rxz"I see,"
said the blind manz"as he picked up his
hammer and saw�9�8�7r�)r�)rrmrrr�test_quoted_nlszTestDialectExcel.test_quoted_nlcCs|�dddddgg�dS)Nz	12,12,1",Z12z1"r)r�)rrrr�test_dubious_quote(sz#TestDialectExcel.test_dubious_quotecCs|�gd�dS)Nr)r�)rrrr�	test_null+szTestDialectExcel.test_nullcCs|�dggd�dS)Nrpzabc
)r�)rrrr�test_single_writer.sz#TestDialectExcel.test_single_writercCs|�dddddggd�dS)NrrPrpry�z
1,2,abc,3,4
)r�)rrrr�test_simple_writer1sz#TestDialectExcel.test_simple_writercCs|�dddddggd�dS)NrrPza"bc"ryr�z1,2,"a""bc""",3,4
)r�)rrrr�test_quotes4szTestDialectExcel.test_quotescCs|�dggd�dS)Nzabc,defz"abc,def"
)r�)rrrr�test_quote_fieldsep7sz$TestDialectExcel.test_quote_fieldsepcCs|�dddddggd�dS)NrrPza
bcryr�z1,2,"a
bc",3,4
)r�)rrrr�
test_newlines:szTestDialectExcel.test_newlinesN)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�rrrrr��s4r�c@seZdZejZdZdS)�EscapedExcelr1N)r>r?r@rr5rr%rrrrr�=sr�c@s"eZdZe�Zdd�Zdd�ZdS)�TestEscapedExcelcCs|�dggd�dS)Nzabc,defz
abc\,def
)r�)rrrr�test_escape_fieldsepDsz%TestEscapedExcel.test_escape_fieldsepcCs|�ddgg�dS)Nz
abc\,def
zabc,def)r�)rrrr�test_read_escape_fieldsepGsz*TestEscapedExcel.test_read_escape_fieldsepN)r>r?r@r�r#r�r�rrrrr�Asr�c@s eZdZdZdd�Zdd�ZdS)�TestDialectUnixZunixcCs|�dddggd�dS)Nrzabc defrpz"1","abc def","abc"
)r�)rrrrr�Msz"TestDialectUnix.test_simple_writercCs|�ddddgg�dS)Nz"1","abc def","abc"
rvzabc defrp)r�)rrrr�test_simple_readerPsz"TestDialectUnix.test_simple_readerN)r>r?r@r#r�r�rrrrr�Jsr�c@seZdZejZdZdS)�QuotedEscapedExcelr1N)r>r?r@rr\rr%rrrrr�Ssr�c@s"eZdZe�Zdd�Zdd�ZdS)�TestQuotedEscapedExcelcCs|�dggd�dS)Nzabc,defz"abc,def"
)r�)rrrr�test_write_escape_fieldsepZsz1TestQuotedEscapedExcel.test_write_escape_fieldsepcCs|�ddgg�dS)Nz"abc\,def"
zabc,def)r�)rrrrr�]sz0TestQuotedEscapedExcel.test_read_escape_fieldsepN)r>r?r@r�r#r�r�rrrrr�Wsr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�TestDictFieldsc	Cs�tddd��n}tj|dddgd�}|��|�d�|�|��d	�|�d
dd��|�d�|��|�|��d
�WdQRXdS)Nzw+r)rD�f1�f2�f3)�
fieldnamesrz
f1,f2,f3
rNrp)r�r�z	10,,abc
)	rr�
DictWriter�writeheaderrFr"�readlinerErG)rrJrrrr�test_write_simple_dictcs

z%TestDictFields.test_write_simple_dictcCsdt�}tj|dddgd�}|��|�|��d�|�dddd	�d
ddd	�g�|�|��d
�dS)Nr�r�r�)r�z
f1,f2,f3
rrp�f)r�r�r�rP�Zxyzzf1,f2,f3
1,abc,f
2,5,xyz
)rrr�r�r"�getvaluerg)rrJrrrr�test_write_multiple_dict_rowsns
z,TestDictFields.test_write_multiple_dict_rowscCst�}|�ttj|�dS)N)rrrrr�)rrJrrr�test_write_no_fieldsxsz#TestDictFields.test_write_no_fieldsc
Cs�tddd��|}tj|dddgd�}|�t��}|�dd	d
d��WdQRXt|j�}|�d|�|�d
|�|�	d|�|�d|�WdQRXdS)Nzw+r)rDr�r�r�)r�rNZspamrp)Zf4r�rr�z'f4'z'f2'rv)
rrr�rr{rE�str�	exception�assertInZassertNotIn)rrJrZcxr�rrr�#test_write_fields_not_in_fieldnames|s
z2TestDictFields.test_write_fields_not_in_fieldnamescCs$t�}|jttj|ddgdd�dS)Nr�r�Zraised)�extrasaction)rrr{rr�)rrJrrr�&test_typo_in_extrasaction_raises_error�sz5TestDictFields.test_typo_in_extrasaction_raises_errorcCs@t�}tj|ddgdd�}ddddd	�}|�ttjj||�dS)
Nr�r��raise)r�rrrPry)�f0r�r�r�)rrr�rr{rE)rrJr�dictrowrrr�)test_write_field_not_in_field_names_raise�sz8TestDictFields.test_write_field_not_in_field_names_raisecCsJt�}tj|ddgdd�}ddddd	�}tj�||�|�|��d
�dS)Nr�r��ignore)r�rrrPry)r�r�r�r�z1,2
)rrr�rEr"r�)rrJrr�rrr�*test_write_field_not_in_field_names_ignore�s
z9TestDictFields.test_write_field_not_in_field_names_ignorec	CsXtd��F}|�d�|�d�tj|dddgd�}|�t|�dd	d
d��WdQRXdS)Nzw+z	1,2,abc
rr�r�r�)r�rvr�rp)r�r�r�)rrbrFr�
DictReaderr"r�)rrJrrrr�test_read_dict_fields�s


z$TestDictFields.test_read_dict_fieldsc	Csbtd��P}|�d�|�d�t�|�}|�t|�dddd��|�|jdd	d
g�WdQRXdS)Nzw+zf1,f2,f3
1,2,abc
rrvr�rp)r�r�r�r�r�r�)rrbrFrr�r"r�r�)rrJrrrr�test_read_dict_no_fieldnames�s



z+TestDictFields.test_read_dict_no_fieldnamesc	Csptd��^}|�d�|�d�tj|tt�|��d�}|�|jdddg�|�t|�dd	d
d��WdQRXdS)Nzw+zf1,f2,f3
1,2,abc
r)r�r�r�r�rvr�rp)r�r�r�)	rrbrFrr�r�rr"r�)rrJrrrr�#test_read_dict_fieldnames_from_file�s


z2TestDictFields.test_read_dict_fieldnames_from_filec	Cs�ddl}td��l}|�d�|�d�t�|�}t|�}x>|�|g|�D],}|�|j	dddg�|�|ddd	d
��qHWWdQRXdS)Nrzw+zf1,f2,f3
1,2,abc
r�r�r�rvr�rp)r�r�r�)
�	itertoolsrrbrFrr�r��chainr"r�)rrrJr�firstr�rrr�test_read_dict_fieldnames_chain�s



z.TestDictFields.test_read_dict_fieldnames_chainc
Cs^td��L}|�d�|�d�tj|ddgd�}|�t|�ddd	d
ddgd
��WdQRXdS)Nzw+z1,2,abc,4,5,6
rr�r�)r�rvr�rpr�rwr�)r�r�N)rrbrFrr�r"r�)rrJrrrr�test_read_long�s


zTestDictFields.test_read_longc
Cs`td��N}|�d�|�d�tj|ddgdd�}|�t|�dd	d
ddd
gd��WdQRXdS)Nzw+z1,2,abc,4,5,6
rr�r��_rest)r��restkeyrvr�rpr�rwr�)r�r�r)rrbrFrr�r"r�)rrJrrrr�test_read_long_with_rest�s


z'TestDictFields.test_read_long_with_restc
Csltd��Z}|�d�|�d�tj|dd�}|�|jddg�|�t|�dd	d
ddd
gd��WdQRXdS)Nzw+zf1,f2
1,2,abc,4,5,6
rr)rr�r�rvr�rpr�rwr�)r�r�r)rrbrFrr�r"r�r�)rrJrrrr�&test_read_long_with_rest_no_fieldnames�s


z5TestDictFields.test_read_long_with_rest_no_fieldnamescCs|td��j}|�d�|�d�tj|d��dd�}|�t|�ddd	d
ddd
��|�t|�ddd	dddd
��WdQRXdS)Nzw+z1,2,abc,4,5,6
1,2,abc
rz1 2 3 4 5 6ZDEFAULT)r�Zrestvalrvr�rpr�rwr�)rvr�rxr�rwr�)rrbrFrr��splitr"r�)rrJrrrr�test_read_short�s


zTestDictFields.test_read_shortc	Cs<dddg}tj|d��d�}|�t|�dddd	d
d��dS)Nz2147483648,43.0e12,17,abc,def
z147483648,43.0e2,17,abc,def
z47483648,43.0,170,abc,def
zi1 float i2 s1 s2)r�Z
2147483648z43.0e12Z17rpr�)Zi1�floatZi2�s1�s2)rr�r
r"r�)rZsamplerrrr�test_read_multi�szTestDictFields.test_read_multic
CsXtjdddgd��d�}|�t|�ddddd	d
d��|�t|�ddddd	d
d��dS)Nz1,2,abc,4,5,6
z
z1 2 3 4 5 6)r�rvr�rpr�rwr�)rvr�rxr�rwr�)rr�r
r"r�)rrrrr�test_read_with_blanks�sz$TestDictFields.test_read_with_blanksc
Cs8tjdgd��dd�}|�t|�ddddd	d
d��dS)Nz1;2;abc;4;5;6
z1 2 3 4 5 6r�)r�r
rvr�rpr�rwr�)rvr�rxr�rwr�)rr�r
r"r�)rrrrr�test_read_semi_seps
z!TestDictFields.test_read_semi_sepN)r>r?r@r�r�r�r�r�r�r�r�r�rrrrr	rrrrrrrrr�`s$

				
	r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestArrayWritesc	Cs�ddl}dd�td�D�}|�d|�}tddd��P}tj|d	d
�}|�|�d�dd�|D��d
}|�d�|�|�	�|�WdQRXdS)NrcSsg|]}d|�qS)�r)�.0rRrrr�
<listcomp>
sz2TestArrayWrites.test_int_write.<locals>.<listcomp>rrRzw+r)rDr�)r#rcSsg|]}t|��qSr)r�)rrRrrrrsz
)
�arrayr�rrrrE�joinrFr"rG)rr�contentsr[rJrr�rrr�test_int_writes

zTestArrayWrites.test_int_writec	Cs�ddl}dd�td�D�}|�d|�}tddd��P}tj|d	d
�}|�|�d�dd�|D��d
}|�d�|�|�	�|�WdQRXdS)NrcSsg|]}d|d�qS)rg�������?r)rrRrrrrsz5TestArrayWrites.test_double_write.<locals>.<listcomp>rrfzw+r)rDr�)r#rcSsg|]}t|��qSr)r�)rrRrrrrsz
)
rr�rrrrErrFr"rG)rrrr[rJrr�rrr�test_double_writes

z!TestArrayWrites.test_double_writec	Cs�ddl}dd�td�D�}|�d|�}tddd��P}tj|d	d
�}|�|�d�dd�|D��d
}|�d�|�|�	�|�WdQRXdS)NrcSsg|]}d|d�qS)rg�������?r)rrRrrrr!sz4TestArrayWrites.test_float_write.<locals>.<listcomp>rr�zw+r)rDr�)r#rcSsg|]}t|��qSr)r�)rrRrrrr&sz
)
rr�rrrrErrFr"rG)rrrr[rJrr�rrr�test_float_writes

z TestArrayWrites.test_float_writec	Cszddl}ddl}|�d|j�}tddd��F}tj|dd�}|�|�d�|�d	}|�d�|�	|�
�|�WdQRXdS)
Nr�uzw+r)rDr�)r#rz
)r�stringZ
ascii_lettersrrrrErrFr"rG)rrrr[rJrr�rrr�test_char_write*s

zTestArrayWrites.test_char_writeN)r>r?r@rrrrrrrrrsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDialectValidityc	Cs�Gdd�dtj�}|�}|�|jtj�d|_|�tj|�d|_tj|_d|_	|�}|�|jtj�|�|j	d�|�
|j�d|_	|�tj��}|�WdQRX|�t|j�d�d|_	|�tj��}|�WdQRX|�t|j�d�dS)	Nc@s&eZdZdZdZdZdZdZej	Z
dS)z3TestDialectValidity.test_quoting.<locals>.mydialectr�r1FTz
N)r>r?r@r
r%r$r'r
rr5rrrrr�	mydialect7sr Tr z''z("quotechar" must be a 1-character stringr�z#"quotechar" must be string, not int)
rr�r"rr5rrr$rr�
assertTruer�r�)rr rf�cmrrr�test_quoting6s,z TestDialectValidity.test_quotingc	CsGdd�dtj�}|�}|�|jd�d|_|�tj��}|�WdQRX|�t|j�d�d|_|�tj��}|�WdQRX|�t|j�d�d|_|�tj��}|�WdQRX|�t|j�d�d	|_|�tj��}|�WdQRX|�t|j�d
�dS)Nc@s&eZdZdZdZdZdZdZej	Z
dS)z5TestDialectValidity.test_delimiter.<locals>.mydialectr�r1FTz
N)r>r?r@r
r%r$r'r
rr5rrrrrr Ysr r�z:::z("delimiter" must be a 1-character stringr�,z%"delimiter" must be string, not bytesr�z#"delimiter" must be string, not int)rr�r"r
rrr�r�)rr rfr"rrr�test_delimiterXs.z"TestDialectValidity.test_delimiterc	CszGdd�dtj�}|�}|�|jd�d|_|�}|�|jd�d|_|�tj��}|�WdQRX|�t|j�d�dS)Nc@s&eZdZdZdZdZdZdZej	Z
dS)z:TestDialectValidity.test_lineterminator.<locals>.mydialectr�r1FTz
N)r>r?r@r
r%r$r'r
rr5rrrrrr |sr z
z:::r�z!"lineterminator" must be a string)rr�r"r
rrr�r�)rr rfr"rrr�test_lineterminator{sz'TestDialectValidity.test_lineterminatorc
Cszdd�}xldD]d}|j|d��N|�tj||d�|�tj||d�|�tj||d�|�tj||d�WdQRXqWdS)	NcSs(Gdd�dtj�}t|||�|�}dS)Nc@seZdZdS)zQTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialectN)r>r?r@rrrrr �sr )rr�r+)�
field_name�valuer rfrrr�create_invalid�sz>TestDialectValidity.test_invalid_chars.<locals>.create_invalid)r
r%r)r'rrp�xr�)�subTestrrr)rr)r'rrr�test_invalid_chars�s
z&TestDialectValidity.test_invalid_charsN)r>r?r@r#r%r&r,rrrrr5s"#rc@sheZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�TestSnifferz�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
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"
z�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?05/05/03
zT2147483648;43.0e12;17;abc;def
147483648;43.0e2;17;abc;def
47483648;43.0;170;abc;def
zaaa	bbb
AAA	
BBB	
za|b|c
d|e|f
z'a'|'b'|'c'
'd'|e|f
z+"venue"+"city"+"state"+"date"+"performers"
z�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
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'
cCs:t��}|�|�|j�d�|�|�|j|j�d�dS)NFT)r�Snifferr"�
has_header�sample1�header1)r�snifferrrr�test_has_header�szTestSniffer.test_has_headercCs:t��}|�|�|j�d�|�|�|j|j�d�dS)NFT)rr.r"r/�sample8�header2)rr2rrr�'test_has_header_regex_special_delimiter�sz3TestSniffer.test_has_header_regex_special_delimiterc
Cstt��}xfdD]^}|�|��J|�|d�}|�|jd�|�|jd�|�|jd�|�|j	d�WdQRXqWdS)N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r��'F)
rr.r+�sniffr"r
rZassertIsr$r')rr2�headerr#rrr�test_guess_quote_and_delimiter�s
z*TestSniffer.test_guess_quote_and_delimitercCsxt��}|�|j�}|�|jd�|�|jd�|�|jd�|�|j�}|�|jd�|�|jd�|�|jd�dS)Nrr Tr!r7F)	rr.r8r0r"r
rr'�sample2)rr2r#rrr�
test_sniff�szTestSniffer.test_sniffcCst��}|�|j�}|�|j|j�|j|jdd�}|�|jd�|j|jdd�}|�|jd�|�|j�}|�|jd�|�|j�}|�|jd�|�|j	�}|�|jd�|�|j
�}|�|jd�|�|jd	�|�|j�}|�|jd
�|�|j
�}|�|jd
�|�|jd	�dS)Nz?,)Z
delimiters�?z/,�/r�r�r�r7�+)rr.r8�sample3r�r
r"�sample4�sample5�sample6�sample7rr4�sample9)rr2r#rrr�test_delimiters�s*zTestSniffer.test_delimiterscCs�t��}|�|j�}|�|j�|�|j�}|�|j�|�|j�}|�|j�|�|j	�}|�|j�|�|j
�}|�|j�dS)N)rr.r8r1ZassertFalser$r5r;r!r4rE)rr2r#rrr�test_doublequote
szTestSniffer.test_doublequoteN)r>r?r@r0r;r1r@rArBrCrDr5r4rEr3r6r:r<rFrGrrrrr-�s"
r-c@seZdZdd�ZeZdS)�NULcGsdS)Nr)�sr,rrrrbsz	NUL.writeN)r>r?r@rb�
writelinesrrrrrHsrH�gettotalrefcountzrequires sys.gettotalrefcount()c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�	TestLeakscCs�d}t��}x^td�D]R}t��|�tjg�t��}t�dg�t�dg�t�dg�||}|}qW|�|dkd�dS)Nrrza,b,c
ryT)	�sysrKr��gc�collectr"�garbagerr)r�delta�lastrcrR�rcrrr�test_create_read"szTestLeaks.test_create_readcCs�d}t��}t�}xXtd�D]L}t��|�tjg�t��}t�	|�t�	|�t�	|�||}|}qW|�|dkd�dS)NrrryT)
rMrKrHr�rNrOr"rPrr)rrQrRrIrRrSrrr�test_create_write1s


zTestLeaks.test_create_writecCs~d}dgd}t��}xRtd�D]F}t��|�tjg�t��}t�|�}x|D]}qRW||}|}q W|�|dkd�dS)Nrza,b,c
r�rT)	rMrKr�rNrOr"rPrr)rrQr�rRrRrSZrdrr�rrr�	test_readAs


zTestLeaks.test_readc	Cs�d}dddggd}t�}t��}x\td�D]P}t��|�tjg�t��}t�	|�}x|D]}|�
|�q^W||}|}q,W|�|dkd�dS)NrrrPryr�rT)rHrMrKr�rNrOr"rPrrrE)	rrQr�rIrRrRrSrr�rrr�
test_writeQs

zTestLeaks.test_writeN)r>r?r@rTrUrVrWrrrrrLsrLc@s(eZdZddddgZdd�Zdd�Zd	S)
�TestUnicodeuMartin von LöwisuMarc André LemburgzGuido van RossumuFrançois Pinardc	Cs\tdddd��D}|�d�|j�d�|�d�t�|�}|�t|�|jg�WdQRXdS)Nzw+rzutf-8)rDr�rz
r)	rrbr�namesrFrrr"rl)rrJrrrr�test_unicode_readis


zTestUnicode.test_unicode_readc	Cs^tdddd��F}t�|�}|�|j�d�|j�d}|�d�|�|��|�WdQRXdS)Nzw+rzutf-8)rDr�rz
r)	rrrrErYrrFr"rG)rrJrr�rrr�test_unicode_writeqs

zTestUnicode.test_unicode_writeN)r>r?r@rYrZr[rrrrrXbsrXc@seZdZdd�Zdd�ZdS)�KeyOrderingTestc
Cs�t�}xrtd�D]f}tdddd��N}t�||�}|��|�d�t�|�}t|j	�}|�
||�|�|�WdQRXqW|�
t|�dd�dS)	NZabcdezw+rzutf-8)rDr�r�xz@Key ordering: some key permutations not collected (expected 120))
�setrrrr�r�rFr��tupler�r"�add�len)rZ	resultset�keysZ
fileobjectZdwZdrZktrrr�,test_ordering_for_the_dict_reader_and_writer{s


z<KeyOrderingTest.test_ordering_for_the_dict_reader_and_writerc
Cs�td���}|�tt�|��tddg�tdddddgfg�tdd	g�td
dg�g�|�ttj|dd
��tddg�tdddddgfg�tdd	g�td
dg�g�|d=|�ttj|ddgd��tddg�tdddddgfg�tddg�tddg�g�dS)Nz�            FirstName,LastName
            Eric,Idle
            Graham,Chapman,Over1,Over2

            Under1
            John,Cleese
        )�	FirstName�Eric)�LastName�Idle)rd�Graham)rf�ChapmanZOver1ZOver2)rd�Under1)rfN)rd�John)rf�CleeseZ	OtherInfo)rr�fname�lname)r�)rmre)rnrg)rmrh)rnri)rmrj)rnN)rmrk)rnrl)r�
splitlinesr"rlrr�r)r�datarrr�test_ordered_dict_reader�s*






z(KeyOrderingTest.test_ordered_dict_readerN)r>r?r@rcrqrrrrr\ysr\c@seZdZdd�ZdS)�MiscTestCasecCsddh}tj|td|d�dS)Nr��__version__)rZ_csv)�extra)rZcheck__all__r)rrtrrr�test__all__�szMiscTestCase.test__all__N)r>r?r@rurrrrrr�srr�__main__)*r�rMZunittest�iorZtempfilerrrNr�Ztestrrr�textwrapr�collectionsrZTestCaserr�r�r�r�r�r�r�r�r�r�rrr-rHZ
skipUnless�hasattrrLrXr\rrr>�mainrrrr�<module>sHRka			(.j{
A4