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.10/test/__pycache__/test_csv.cpython-310.opt-2.pyc
o

�i���@s�ddlZddlZddlZddlmZddlmZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZGd	d
�d
�ZGdd�dej�ZGd
d�dej�ZGdd�dej�ZGdd�de�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�de�ZGdd�dej�Z Gdd �d ej�Z!Gd!d"�d"ej�Z"Gd#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/d0�d0ej�Z*e+d1kr�e�,�dSdS)2�N)�StringIO)�
TemporaryFile)�support)�warnings_helper)�permutations)�dedent)�OrderedDictc@�eZdZdd�ZdS)�BadIterablecC�t��N��OSError��self�r�*/usr/local/lib/python3.10/test/test_csv.py�__iter__�zBadIterable.__iter__N)�__name__�
__module__�__qualname__rrrrrr
�r
c@s6eZdZ	dd�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%d&�Zd'd(�Zd)d*�Zd+d,�Zejejejed-�d.d/����Zd0d1�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_CsvcCs�|�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�Zbad_attr��	delimiterZXXZfoo�)�	quotechar)�lineterminator��quoting�)r!r)�assertRaises�	TypeError�csv�Error�	QUOTE_ALL)r�ctor�argrrr�_test_arg_valids$
�

�zTest_Csv._test_arg_validcCs$|�tjg�|�ttjt��dSr)r*r%�readerr#rr
rrrr�test_reader_arg_valid0szTest_Csv.test_reader_arg_validcCs4|�tjt��Gdd�d�}|�ttj|��dS)Nc@seZdZedd��ZdS)z1Test_Csv.test_writer_arg_valid.<locals>.BadWritercSrrr
rrrr�write7sz7Test_Csv.test_writer_arg_valid.<locals>.BadWriter.writeN)rrr�propertyr-rrrr�	BadWriter6sr/)r*r%�writerrr#r)rr/rrr�test_writer_arg_valid4szTest_Csv.test_writer_arg_validcGs�||�}|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjt	j
�|�|jjd�|�|jjd�|�
tt|jd�|�
tt|jdd�|�
tt|jd�|�
tt|jdd�dS)	N�,T�
�"Fr�:r!)�assertEqual�dialectr�assertIs�doublequote�
escapecharrrr!r%�
QUOTE_MINIMAL�skipinitialspace�strictr#�AttributeError�delattr�setattr)rr(�args�objrrr�_test_default_attrs<s�zTest_Csv._test_default_attrscC�|�tjg�dSr)rCr%r+rrrr�test_reader_attrsN�zTest_Csv.test_reader_attrscC�|�tjt��dSr)rCr%r0rrrrr�test_writer_attrsQ�zTest_Csv.test_writer_attrsc
Gs�tdddddtjddd�}||i|��}|�|jjd�|�|jjd�|�|jjd�|�|jj	d�|�|jj
d�|�|jjtj�|�|jjd�|�|jj
d�dS)Nr5F�\�
�*T)rr9r:rrr!r<r=)�dictr%�
QUOTE_NONEr6r7rr8r9r:rrr!r<r=)rr(rA�kwargsrBrrr�_test_kw_attrsTs�zTest_Csv._test_kw_attrscCrDr)rPr%r+rrrr�test_reader_kw_attrsdrFzTest_Csv.test_reader_kw_attrscCrGr)rPr%r0rrrrr�test_writer_kw_attrsgrIzTest_Csv.test_writer_kw_attrscGs�Gdd�d�}||f}||�}|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjd�|�|jjt	j
�|�|jjd�|�|jjd�dS)	Nc@s.eZdZdZdZdZdZdZej	Z
dZdZdS)z-Test_Csv._test_dialect_attrs.<locals>.dialect�-F�^�$�#TN)
rrrrr9r:rrr%r'r!r<r=rrrrr7lsr7rSFrTrUrVT)
r6r7rr8r9r:rrr!r%r'r<r=)rr(rAr7rBrrr�_test_dialect_attrsjs
	zTest_Csv._test_dialect_attrscCrDr)rWr%r+rrrr�test_reader_dialect_attrs�rFz"Test_Csv.test_reader_dialect_attrscCrGr)rWr%r0rrrrr�test_writer_dialect_attrs�rIz"Test_Csv.test_writer_dialect_attrscKsrtdddd��(}tj|fi|��}|�|�|�d�|�|��||jj�Wd�dS1s2wYdS�N�w+�utf-8r"��encoding�newliner)	rr%r0�writerow�seekr6�readr7r)r�fields�expectrO�fileobjr0rrr�_write_test�s



�"�zTest_Csv._write_testc	Ks�tdddd��9}tj|fi|��}|�|��
|�|�Wd�n1s&wY|�d�|�|��d�Wd�dS1sCwYdSrZ)rr%r0r#r`rar6rb)r�excrcrOrer0rrr�_write_error_test�s�
"�zTest_Csv._write_error_testcCs�|�tjd�|�dd�|�dgd�|jtjdgtjd�|�tt��Gdd�d�}|�t|��Gdd�d�}|�t|�g�dS)	Nrr"�""r c@�eZdZdd�Zdd�ZdS)z.Test_Csv.test_write_arg_valid.<locals>.BadListcSsdS)N�
rrrrr�__len__�rz6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__cSs|dkrt�dS)N�r
)r�irrr�__getitem__�s�z:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__N)rrrrlrorrrr�BadList�srpc@r	)z.Test_Csv.test_write_arg_valid.<locals>.BadItemcSrrr
rrrr�__str__�rz6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__N)rrrrqrrrr�BadItem�rrr)rhr%r&rfrNrr
)rrprrrrr�test_write_arg_valid�szTest_Csv.test_write_arg_validcCs$dd}|�||gd||f�dS)N�X�P��%s,%s)rf)r�	bigstringrrr�test_write_bigfield�s
�zTest_Csv.test_write_bigfieldcCs�|�gd�d�|jtjgd�tjd�|jgd�dtjd�|jgd�dtjd�|jgd�dtjd�|jddgdtjd�dS)	N��arzp,q�	a,1,"p,q"r z"a",1,"p,q"z
"a","1","p,q"�a
brz	"a
b","1")rfrhr%r&rNr;�QUOTE_NONNUMERICr'rrrr�test_write_quoting�s ����
�zTest_Csv.test_write_quotingcCsJ|jgd�ddd�|jtjgd�ddd�|jgd�dddd�|jd	gd
dtjd�|jd	gddtjdd
�|jd	gddtjd�|jgd�ddtjd�|jddgddtjd�|jddgddtjd�|jddgddtjd�|jddgddtjd�|jddgddtjd�|jddgddtjd�|jgd�ddtjd�dS)Nryr{rJ�r:)rzrzp,"q"F)r:r9z
a,1,"p,\"q\""r4�"""")r:r!z\")r:r!r9za,1,p\,qrzz\\,az"\\","a"z\ z\\ ,az\,z\\\,,az,\z",\\",a)zC\�6�7zX"z
C\\,6,7,"X""")rfrhr%r&r;rNr'rrrr�test_write_escape�sV���
�
�
��������
�zTest_Csv.test_write_escapecCs||�tgd��d�|�tgd��d�|�tg�d�|�tdg�d�|jtjtdg�tjd�|�tddg�d�dS)	Nryr{)rzrNza,1,r"rir r2)rf�iterrhr%r&rNrrrr�test_write_iterable�szTest_Csv.test_write_iterablecCs�Gdd�d�}t�|��}|�t|jdgg�tdddd��.}t�|�}|�t|jd�|�ddgd	d
gg�|�d�|�|�	�d�Wd�dS1sOwYdS)
Nc@r	)z+Test_Csv.test_writerows.<locals>.BrokenFilecSrrr
)r�bufrrrr-�rz1Test_Csv.test_writerows.<locals>.BrokenFile.writeN)rrrr-rrrr�
BrokenFile�rr�rzr[r\r"r]�b�c�drz
a,b
c,d
)
r%r0r#r�	writerowsrr$rar6rb)rr�r0rerrr�test_writerows�s

"�zTest_Csv.test_writerowscCs6tdddd��%}t�|�}|�ddgddgg�|�d�|�|��d�Wd�n1s/wYtdddd��#}t�|�}|�dgdgg�|�d�|�|��d	�Wd�n1sawYtdddd��$}t�|�}|�dgdgg�|�d�|�|��d
�Wd�dS1s�wYdS)Nr[r\r"r]rzr�rza,
,d
z""
a
za
""
)rr%r0r�rar6rb�rrer0rrr�test_writerows_with_none�s$

�

�

"�z!Test_Csv.test_writerows_with_nonecCs`tdddd��}t�|�}|�t|jd�|�t|jt��Wd�dS1s)wYdS)Nr[r\r"r])rr%r0r#r$r�rr
r�rrr�test_writerows_errorss

"�zTest_Csv.test_writerows_errors)�categorycCsxddl}|�d�}tdddd��"}t�|�}|�|gg�|�d�|�|��d�Wd�dS1s5wYdS)Nrrzr[r\r"r]za
)	�	_testcapiZunicode_legacy_stringrr%r0r�rar6rb)rr�r�rer0rrr�test_writerows_legacy_stringss


"�z&Test_Csv.test_writerows_legacy_stringscKs*tj|fi|��}t|�}|�||�dSr)r%r+�listr6)r�inputrdrOr+�resultrrr�
_read_testszTest_Csv._read_testcCs�|�gg�|�dggg�|jtj|jdgddd�|jtj|jdgddd�|jdgdggdd�|�tj|jd	gd�dS)
Nr"z"ab"cr�r=zabc�abcr)r9sabc�r�r#r%r&rrrr�test_read_oddinputss���zTest_Csv.test_read_oddinputscCs�|�dgddgg�|�dgddgg�|�dgddgg�|�dgddgg�|�tj|jdgg�|�tj|jdgg�|�tj|jd	gg�dS)
Nza,brzr�za,b
za,b
za,b
za,b
c,dza,b
c,dza,b
c,dr�rrrr�
test_read_eol*szTest_Csv.test_read_eolcCs�|�dgddgg�|�dgdgg�|jdgdggdd�|jtj|jdggdd	�|jtj|jdggdd	�|jtj|jdggddd
�dS)Nza,"rzr"z"arT�
rTr�)r:r=r�rrrr�
test_read_eof3s

�zTest_Csv.test_read_eofcCs�|jdggd�gdd�|jdgddggdd�|jdgddggdd�|jd	gddggdd�|jd
gddggdd�|jdgdd
ggdd�dS)Nza,\b,c)rzr�r�rJrza,b\,crzzb,cza,"b\,c"za,"b,\c"z	a,"b,c\""zb,c"za,"b,c"\zb,c\�r�rrrr�test_read_escape<szTest_Csv.test_read_escapecCs�|�dggd�g�|jdggd�gddd�|jdggd�gtjdd�|jdggd�gtjd	�|�d
gddgg�|jt|jd
gggtjd	�dS)Nz	1,",3,",5)�1z,3,�5)r�r4�3r4r�rJ)rr:�r!r:z
,3,"5",7.3, 9)r"�r�g333333@�	r z"a
b", 7r|z 7zabc,3)r�r%rNr}r#�
ValueErrorrrrr�test_read_quotingDs���

�zTest_Csv.test_read_quotingcCs|jdggd�gdd�dS)Nzno space, space,  spaces,	tab)zno space�space�spacesz	tabT)r<r�rrrr�test_read_skipinitialspaceRs
�z#Test_Csv.test_read_skipinitialspacec	Cs�t��}zXd}d|}d||f}|�|g||gg�t�|�|�|g||gg�|�t��|�t�|d�|�tj|j|gg�|�ttjd�|�ttjdd�Wt�|�dSt�|�w)Nrurtrvr)r%Zfield_size_limitr�r6r#r&r$)r�limit�sizerwZbiglinerrr�test_read_bigfieldWs
zTest_Csv.test_read_bigfieldcCs~t�gd��}|�|jd�t|�|�|jd�t|�|�|jd�t|�|�|jd�|�tt|�|�|jd�dS)N)zline,1zline,2zline,3rrrmr�)r%r+r6Zline_num�nextr#�
StopIteration)r�rrrr�test_read_linenumjszTest_Csv.test_read_linenumcCs�tdddd��4}t�|�}ddgddgg}|�|�|�d	�tt�|��D]\}}|�|||�q&Wd�dS1s>wYdS)
Nr[r\r"r]r|r�r��x
dr)rr%r0r�ra�	enumerater+r6�rrer0�rowsrn�rowrrr�test_roundtrip_quoteed_newlinesvs


�"�z(Test_Csv.test_roundtrip_quoteed_newlinescCs�tdddd��<}tj|tjdd�}ddgd	d
gg}|�|�|�d�ttj|tjdd��D]\}}|�|||�q.Wd�dS1sFwYdS)Nr[r\r"r]rJr�r|r�r�r�r)	rr%r0rNr�rar�r+r6r�rrr�(test_roundtrip_escaped_unquoted_newliness

�"�z1Test_Csv.test_roundtrip_escaped_unquoted_newlinesN)+rrrr*r,r1rCrErHrPrQrRrWrXrYrfrhrsrxr~r�r�r�r�r�rZcpython_onlyZrequires_legacy_unicode_capirZignore_warnings�DeprecationWarningr�r�r�r�r�r�r�r�r�r�r�r�rrrrrsN

				rc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestDialectRegistrycCs�|�ttjd�|�ttj�|�tjtjd�|�tjtjd�|�ttj�|�tjtjd�|�tjtjd�|�ttjd�|�ttjdd�|�ttjddd�|jttjddd�|jttjddd�|�ttjg�dS)NZnonesuchr)Zbadargumentr )r#r$r%�
list_dialects�get_dialectr&�unregister_dialect�register_dialectrrrr�test_registry_badargs�s"��z)TestDialectRegistry.test_registry_badargscCsvGdd�dtj�}d}t��|g}|��t�||�|�tj|�|�t�|�j	d�t
t���}|�||�dS)Nc@�eZdZdZdS)z5TestDialectRegistry.test_registry.<locals>.myexceltsv�	N�rrrrrrrr�
myexceltsv��r�r�)r%�excelr��sortr��
addCleanupr�r6r�r�sorted)rr��nameZexpected_dialectsZgot_dialectsrrr�
test_registry�sz!TestDialectRegistry.test_registrycCsXd}tj|dd�|�tj|�|�t�|�jd�|�gd�gtt�dg|���dS)NZfedcba�;r)rt�Y�ZzX;Y;Z)	r%r�r�r�r6r�rr�r+)rr�rrr�test_register_kwargs�s
$z(TestDialectRegistry.test_register_kwargsc
Cs�Gdd�dtj�}d}tj||dddddtjd	�|�tj|�t�|�}|�|jd�|�|j	d�|�|j
d�|�|jd�|�|jd�|�|j
tj�dS)
Nc@�&eZdZdZdZdZdZdZej	Z
dS)zDTestDialectRegistry.test_register_kwargs_override.<locals>.mydialectr�r4TFr3N)rrrrrr9r<rr%r;r!rrrr�	mydialect��
r�Ztest_dialectr��'FTr�)rrr9r<rr!)r%�Dialectr�r'r�r�r�r6rrr9r<rr!)rr�r�r7rrr�test_register_kwargs_override�s$�
z1TestDialectRegistry.test_register_kwargs_overridecCs$Gdd�dtj�}|�tj|�dS)Nc@r�)z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr�Nr�rrrrr��r�r�)r%r�r#r&)rr�rrr�test_incomplete_dialect�sz+TestDialectRegistry.test_incomplete_dialectcCs�Gdd�dtj�}tddd��/}|�d�|�d�tj||�d�}|�t|�d	d
g�|�t|�ddg�Wd�dS1sAwYdS)
Nc@seZdZdZejZdZdS)z5TestDialectRegistry.test_space_dialect.<locals>.space� rJN)rrrrr%rNr!r:rrrrr��sr�r[r\�r^zabc def
c1ccccc1 benzene
r�r7r��defZc1ccccc1Zbenzene)r%r�rr-rar+r6r�)rr�rer+rrr�test_space_dialect�s

"�z&TestDialectRegistry.test_space_dialectcOsttdddd��)}tj|g|�Ri|��}|�gd��|�d�|�|��|�Wd�dS1s3wYdS)Nr[r"r\�r_r^�rrmr�r)rr%r0r`rar6rb)r�expectedZ	writeargsZkwwriteargsrer0rrr�compare_dialect_123�s
"�z'TestDialectRegistry.compare_dialect_123c	Cs�Gdd�dtj�}Gdd�dtj�}Gdd�dtj�}Gdd�dtj�}Gd	d
�d
�}t�d|�z?|�d�|jddd�|jd|d�|�d
|�|jd|�d�|jddd�|jd|dd�|jd|d�Wt�d�dSt�d�w)Nc@r�)z5TestDialectRegistry.test_dialect_apply.<locals>.testAr�Nr�rrrr�testA�r�r�c@r�)z5TestDialectRegistry.test_dialect_apply.<locals>.testBr5Nr�rrrr�testB�r�r�c@r�)z5TestDialectRegistry.test_dialect_apply.<locals>.testC�|Nr�rrrr�testC�r�r�c@r�)z7TestDialectRegistry.test_dialect_apply.<locals>.testUniuΛNr�rrrr�testUni�r�r�c@�eZdZdS)z;TestDialectRegistry.test_dialect_apply.<locals>.unspecifiedN�rrrrrrr�unspecified�sr�z1,2,3
r�z1	2	3
z1:2:3
z1|2|3
z1;2;3
r�)r7ru	1Λ2Λ3
)r%r�r�r�r�)rr�r�r�r�r�rrr�test_dialect_apply�s(
��z&TestDialectRegistry.test_dialect_applycCsT|jttjgdd�|jttjgdd�|jttjgdd�|jttjgdd�dS)Nrrr���r �d)r#r$r%r+rrrr�test_bad_dialectsz$TestDialectRegistry.test_bad_dialectcCs,t��D]}t�|�}|�ttj|�qdSr)r%r�r�r#r$�copy)rr�r7rrr�	test_copy
s
�zTestDialectRegistry.test_copycCsBt��D]}t�|�}ttjd�D]}|�ttj||�qqdS)Nr)	r%r�r��range�pickle�HIGHEST_PROTOCOLr#r$�dumps)rr�r7�protorrr�test_pickles
��zTestDialectRegistry.test_pickleN)rrrr�r�r�r�r�r�r�r�r�r�r�rrrrr��s
	r�c@rj)�TestCsvBasecCsltdddd��%}|�|�|�d�tj||jd�}t|�}|�||�Wd�dS1s/wYdS)Nr[r\r"r]rr�)rr-rar%r+r7r�r6)rr��expected_resultrer+rcrrr�readerAssertEquals

"�zTestCsvBase.readerAssertEqualcCshtdddd��#}tj||jd�}|�|�|�d�|�|��|�Wd�dS1s-wYdS)Nr[r\r"r]r�r)rr%r0r7r�rar6rb)rr�r�rer0rrr�writerAssertEquals

"�zTestCsvBase.writerAssertEqualN)rrrr�r�rrrrr�sr�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�cC�|�ddgg�dS)Nr��r�rrrr�test_single(rIzTestDialectExcel.test_singlecC�|�dgd�g�dS)Nz	1,2,3,4,5)r��2r��4r�r�rrrr�test_simple+�zTestDialectExcel.test_simplecCs|�dg�dS�Nr"r�rrrr�test_blankline.�zTestDialectExcel.test_blanklinecC�|�dddgg�dS)Nr2r"r�rrrr�test_empty_fields1r�z"TestDialectExcel.test_empty_fieldscC�|�ddgg�dS)Nrir"r�rrrr�test_singlequoted4rIz"TestDialectExcel.test_singlequotedcCr)Nz"",r"r�rrrr�test_singlequoted_left_empty7r�z-TestDialectExcel.test_singlequoted_left_emptycCr)Nz,""r"r�rrrr�test_singlequoted_right_empty:r�z.TestDialectExcel.test_singlequoted_right_emptycCr)Nr�r4r�rrrr�test_single_quoted_quote=rIz)TestDialectExcel.test_single_quoted_quotecCr)Nz""""""rir�rrrr�test_quoted_quotes@rIz#TestDialectExcel.test_quoted_quotescCr�)Nza""br�rrrr�test_inline_quoteCrIz"TestDialectExcel.test_inline_quotecCr�)Nza"b"cr�rrrr�test_inline_quotesFrIz#TestDialectExcel.test_inline_quotescCr)Nz"a"b�abr�rrrr�test_quotes_and_moreI�z%TestDialectExcel.test_quotes_and_morecCr�)Nza"br�rrrr�test_lone_quoteNrIz TestDialectExcel.test_lone_quotecCr)Nz"a" "b"za "b"r�rrrr�test_quote_and_quoteQrz%TestDialectExcel.test_quote_and_quotecCr�)Nz "a"r�rrrr�test_space_and_quoteVrIz%TestDialectExcel.test_space_and_quotecCr�)Nz#1,2,3,"I think, therefore I am",5,6)r�r�r�zI think, therefore I amr�r�r�rrrr�test_quotedY��zTestDialectExcel.test_quotedcCr�)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�rrrr�test_quoted_quote_rz"TestDialectExcel.test_quoted_quotecCs d}|�|gd�gd�g�dS)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�)rr�rrr�test_quoted_nles��zTestDialectExcel.test_quoted_nlcCr�)Nz	12,12,1",)�12rz1"r"r�rrrr�test_dubious_quoteqr�z#TestDialectExcel.test_dubious_quotecCs|�gd�dSr�r�rrrr�	test_nulltrzTestDialectExcel.test_nullcC�|�dggd�dS)Nr�zabc
rrrrr�test_single_writerwrIz#TestDialectExcel.test_single_writercC�|�gd�gd�dS)N)rrmr�r��z
1,2,abc,3,4
rrrrr�test_simple_writerzr�z#TestDialectExcel.test_simple_writercCr)N)rrmza"bc"r�r z1,2,"a""bc""",3,4
rrrrr�test_quotes}r�zTestDialectExcel.test_quotescCr�N�abc,defz"abc,def"
rrrrr�test_quote_fieldsep�rIz$TestDialectExcel.test_quote_fieldsepcCr)N)rrmza
bcr�r z1,2,"a
bc",3,4
rrrrr�
test_newlines�r�zTestDialectExcel.test_newlinesN)rrrr7r�r�rrrrrr	r
rrrrrrrrrrrrr!r"r%r&rrrrr�%s6r�c@�eZdZejZdZdS)�EscapedExcelrJN)rrrr%rNr!r:rrrrr(��r(c@�"eZdZe�Zdd�Zdd�ZdS)�TestEscapedExcelcCr)Nr$�
abc\,def
rrrrr�test_escape_fieldsep�rIz%TestEscapedExcel.test_escape_fieldsepcCr)Nr,r$r�rrrr�test_read_escape_fieldsep�rIz*TestEscapedExcel.test_read_escape_fieldsepN)rrrr(r7r-r.rrrrr+��r+c@s eZdZdZdd�Zdd�ZdS)�TestDialectUnixZunixcCr)N)r�abc defr��"1","abc def","abc"
rrrrrr!�r�z"TestDialectUnix.test_simple_writercCr�)Nr2)r�r1r�r�rrrr�test_simple_reader�r�z"TestDialectUnix.test_simple_readerN)rrrr7r!r3rrrrr0�sr0c@r')�QuotedEscapedExcelrJN)rrrr%r}r!r:rrrrr4�r)r4c@r*)�TestQuotedEscapedExcelcCrr#rrrrr�test_write_escape_fieldsep�rIz1TestQuotedEscapedExcel.test_write_escape_fieldsepcCr)Nz"abc\,def"
r$r�rrrrr.�rIz0TestQuotedEscapedExcel.test_read_escape_fieldsepN)rrrr4r7r6r.rrrrr5�r/r5c@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%d&�Zd'S)(�TestDictFieldscCsZtdddd��}tj|gd�d�}|��}|�|d�Wd�dS1s&wYdS)Nr[r\r"r]��f1�f2�f3��
fieldnamesrk)rr%�
DictWriter�writeheaderr6)rrer0Zwriteheader_return_valuerrr�test_writeheader_return_value�s
"�z,TestDictFields.test_writeheader_return_valuecCs�tdddd��<}tj|gd�d�}|��|�d�|�|��d�|�d	d
d��|�d�|��|�|��d�Wd�dS1sFwYdS)
Nr[r\r"r]r8r<r�
f1,f2,f3
rkr�)r9r;z	10,,abc
)	rr%r>r?rar6�readliner`rbr�rrr�test_write_simple_dict�s

"�z%TestDictFields.test_write_simple_dictcCsbt�}tj|gd�d�}|��|�|��d�|�dddd�ddd	d�g�|�|��d
�dS)Nr8r<rArr��frm�Zxyzzf1,f2,f3
1,abc,f
2,5,xyz
)rr%r>r?r6�getvaluer�r�rrr�test_write_multiple_dict_rows�s
�
�z,TestDictFields.test_write_multiple_dict_rowscCst�}|�ttj|�dSr)rr#r$r%r>�rrerrr�test_write_no_fields�sz#TestDictFields.test_write_no_fieldsc	Cs�tdddd��M}tj|gd�d�}|�t��}|�ddd	d
��Wd�n1s*wYt|j�}|�d|�|�d|�|�	d
|�|�d|�Wd�dS1sWwYdS)Nr[r\r"r]r8r<rkZspamr�)Zf4r:rr=z'f4'z'f2'r�)
rr%r>r#r�r`�str�	exception�assertInZassertNotIn)rrer0ZcxrKrrr�#test_write_fields_not_in_fieldnames�s�
"�z2TestDictFields.test_write_fields_not_in_fieldnamescCs$t�}|jttj|ddgdd�dS)Nr9r:Zraised�Zextrasaction)rr#r�r%r>rHrrr�&test_typo_in_extrasaction_raises_error�s
�z5TestDictFields.test_typo_in_extrasaction_raises_errorcCs@t�}tj|ddgdd�}ddddd	�}|�ttjj||�dS)
Nr9r:�raiserNrrrmr��Zf0r9r:r;)rr%r>r#r�r`�rrer0Zdictrowrrr�)test_write_field_not_in_field_names_raise�sz8TestDictFields.test_write_field_not_in_field_names_raisecCsJt�}tj|ddgdd�}ddddd	�}tj�||�|�|��d
�dS)Nr9r:�ignorerNrrrmr�rQz1,2
)rr%r>r`r6rFrRrrr�*test_write_field_not_in_field_names_ignore�s
z9TestDictFields.test_write_field_not_in_field_names_ignorecCsptddd��(}|�d�|�d�tj|gd�d�}|�t|�dd	d
d��Wd�dS1s1wYdS)Nr[r\r�z	1,2,abc
rr8r<r�r�r��rr-rar%�
DictReaderr6r��rrer+rrr�test_read_dict_fields�s

�"�z$TestDictFields.test_read_dict_fieldscCsztddd��-}|�d�|�d�t�|�}|�t|�dddd	��|�|jgd	��Wd�dS1s6wYdS)
Nr[r\r��f1,f2,f3
1,2,abc
rr�r�r�r8)rr-rar%rWr6r�r=rXrrr�test_read_dict_no_fieldnames�s


"�z+TestDictFields.test_read_dict_no_fieldnamescCs�tddd��4}|�d�|�d�tj|tt�|��d�}|�|jgd��|�t|�dd	d
d��Wd�dS1s=wYdS)Nr[r\r�rZrr<r8r�r�r�)	rr-rar%rWr�r+r6r=rXrrr�#test_read_dict_fieldnames_from_file�s

�"�z2TestDictFields.test_read_dict_fieldnames_from_filec	Cs�ddl}tddd��9}|�d�|�d�t�|�}t|�}|�|g|�D]}|�|j	gd��|�|ddd	d��q%Wd�dS1sFwYdS)
Nrr[r\r�rZr8r�r�r�)
�	itertoolsrr-rar%rWr��chainr6r=)rr]rer+�firstr�rrr�test_read_dict_fieldnames_chains


�"�z.TestDictFields.test_read_dict_fieldnames_chaincCsttddd��*}|�d�|�d�tj|ddgd�}|�t|�d	d
gd�d��Wd�dS1s3wYdS)
Nr[r\r��1,2,abc,4,5,6
rr9r:r<r�r��r�r�r�r�)r9r:NrVrXrrr�test_read_longs

�
�"�zTestDictFields.test_read_longcCsvtddd��+}|�d�|�d�tj|ddgdd	�}|�t|�d
dgd�d
��Wd�dS1s4wYdS)Nr[r\r�rarr9r:�_rest)r=�restkeyr�r�rb�r9r:rdrVrXrrr�test_read_long_with_rests

�
�"�z'TestDictFields.test_read_long_with_restcCs�tddd��1}|�d�|�d�tj|dd�}|�|jdd	g�|�t|�d
dgd�d
��Wd�dS1s:wYdS)Nr[r\r�zf1,f2
1,2,abc,4,5,6
rrd�rer9r:r�r�rbrf)rr-rar%rWr6r=r�rXrrr�&test_read_long_with_rest_no_fieldnames!s


�"�z5TestDictFields.test_read_long_with_rest_no_fieldnamescCs�tddd��;}|�d�|�d�tj|d��dd�}|�t|�d	d
ddd
dd��|�t|�d	d
ddddd��Wd�dS1sDwYdS)Nr[r\r�z1,2,abc,4,5,6
1,2,abc
r�1 2 3 4 5 6ZDEFAULT)r=Zrestvalr�r�r�r�r�r��r�r�r�r�r�r�)rr-rar%rW�splitr6r�rXrrr�test_read_short*s

��
�"�zTestDictFields.test_read_shortc	Cs:gd�}tj|d��d�}|�t|�dddddd	��dS)
N)z2147483648,43.0e12,17,abc,def
z147483648,43.0e2,17,abc,def
z47483648,43.0,170,abc,def
zi1 float i2 s1 s2r<Z
2147483648z43.0e12Z17r�r�)Zi1�floatZi2�s1�s2�r%rWrlr6r�)r�sampler+rrr�test_read_multi7s��zTestDictFields.test_read_multic
CsVtjgd�d��d�}|�t|�dddddd	d
��|�t|�dddddd	d
��dS)N)rar3rarjr<r�r�r�r�r�r�rkrq�rr+rrr�test_read_with_blanksFs
���z$TestDictFields.test_read_with_blanksc
Cs8tjdgd��dd�}|�t|�ddddd	d
d��dS)Nz1;2;abc;4;5;6
rjr�)r=rr�r�r�r�r�r�rkrqrtrrr�test_read_semi_sepOs��z!TestDictFields.test_read_semi_sepN)rrrr@rCrGrIrMrOrSrUrYr[r\r`rcrgrirmrsrurvrrrrr7�s(

				
	r7c@�,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestArrayWritescC�ddl}dd�td�D�}|�d|�}tdddd	��.}tj|d
d�}|�|�d�d
d�|D��d}|�d�|�|�	�|�Wd�dS1sKwYdS)NrcSsg|]}d|�qS)�r��.0rnrrr�
<listcomp>Y�z2TestArrayWrites.test_int_write.<locals>.<listcomp>rzrnr[r\r"r]r�r�r2cS�g|]}t|��qSr�rJr{rrrr}_r~r3�
�arrayr�rr%r0r`�joinrar6rb�rr��contentsrzrer0r�rrr�test_int_writeWs

"�zTestArrayWrites.test_int_writecCry)NrcS�g|]}d|d�qS�rzg�������?rr{rrrr}e�z5TestArrayWrites.test_double_write.<locals>.<listcomp>rzr�r[r\r"r]r�r�r2cSrrr�r{rrrr}jr~r3r�r�rrr�test_double_writec�

"�z!TestArrayWrites.test_double_writecCry)NrcSr�r�rr{rrrr}pr�z4TestArrayWrites.test_float_write.<locals>.<listcomp>rzrDr[r\r"r]r�r�r2cSrrr�r{rrrr}ur~r3r�r�rrr�test_float_writenr�z TestArrayWrites.test_float_writecCs�ddl}ddl}|�d|j�}tdddd��)}tj|dd�}|�|�d	�|�d
}|�d�|�	|�
�|�Wd�dS1sBwYdS)Nr�ur[r\r"r]r�r�r2r3)r��string�
ascii_lettersrr%r0r`r�rar6rb)rr�r�rzrer0r�rrr�test_char_writeys

"�zTestArrayWrites.test_char_writeN)rrrr�r�r�r�rrrrrxVs
rxc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestDialectValiditycCsGdd�dtj�}|�}|�|jtj�d|_|�tj|�d|_tj|_d|_	|�}|�|jtj�|�|j	d�|�
|j�d|_	|�tj��}|�Wd�n1sWwY|�t|j�d�d|_	|�tj��}|�Wd�n1s|wY|�t|j�d�dS)	Nc@r�)z3TestDialectValidity.test_quoting.<locals>.mydialectr�rJFTr3N�rrrrr:r9r<rr%rNr!rrrrr��r�r�Tr4z''z("quotechar" must be a 1-character stringr z+"quotechar" must be string or None, not int)
r%r�r6r!rNr#r&r9r'r�
assertTruerJrK�rr�r��cmrrr�test_quoting�s4����z TestDialectValidity.test_quotingcCs�Gdd�dtj�}|�}|�|jd�d|_|�tj��}|�Wd�n1s*wY|�t|j�d�d|_|�tj��}|�Wd�n1sOwY|�t|j�d�d|_|�tj��}|�Wd�n1stwY|�t|j�d�d	|_|�tj��}|�Wd�n1s�wY|�t|j�d
�d|_|�tj��}|�Wd�n1s�wY|�t|j�d�dS)Nc@r�)z5TestDialectValidity.test_delimiter.<locals>.mydialectr�rJFTr3Nr�rrrrr��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�r6rr#r&rJrKr�rrr�test_delimiter�sL����������z"TestDialectValidity.test_delimitercCs�Gdd�dtj�}|�}|�|jd�d|_|�tjd��|�Wd�n1s+wYd|_|�tjd��|�Wd�n1sHwYd|_|�tjd	��|�Wd�dS1sfwYdS)
Nc@r�)z6TestDialectValidity.test_escapechar.<locals>.mydialectr�rJFTr3Nr�rrrrr��r�r�rJz**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�r6r:ZassertRaisesRegexr&)rr�r�rrr�test_escapechar�s��"�z#TestDialectValidity.test_escapecharcCs�Gdd�dtj�}|�}|�|jd�d|_|�}|�|jd�d|_|�tj��}|�Wd�n1s7wY|�t|j�d�dS)Nc@r�)z:TestDialectValidity.test_lineterminator.<locals>.mydialectr�rJFTr3Nr�rrrrr��r�r�r3r�r z!"lineterminator" must be a string)r%r�r6rr#r&rJrKr�rrr�test_lineterminator�s��z'TestDialectValidity.test_lineterminatorc	Cs�dd�}dD]<}|j|d��,|�tj||d�|�tj||d�|�tj||d�|�tj||d�Wd�n1s=wYqdS)	NcSs(Gdd�dtj�}t|||�|�}dS)Nc@r�)zQTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialectNr�rrrrr��sr�)r%r�r@)�
field_name�valuer�r�rrr�create_invalid�s
z>TestDialectValidity.test_invalid_chars.<locals>.create_invalid)rr:r)r�r"r��xrE)�subTestr#r%r&)rr�r�rrr�test_invalid_chars�s���z&TestDialectValidity.test_invalid_charsN)rrrr�r�r�r�r�rrrrr��s")r�c@s�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
ed�Zed
�Zed�Zed�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd S)!�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'
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
                        cCs0t��}|�|�|j��|�|�|j��dSr)r%�Snifferr��
has_header�sample12�assertFalse�sample13�r�snifferrrr�test_issue43625VszTestSniffer.test_issue43625cCs2	t��}|�|�|j��|�|�|j��dSr)r%r�r�r��sample10�sample11r�rrr�test_has_header_strings[sz#TestSniffer.test_has_header_stringscC�:t��}|�|�|j�d�|�|�|j|j�d�dS�NFT)r%r�r8r��sample1�header1r�rrr�test_has_headera�zTestSniffer.test_has_headercCr�r�)r%r�r8r��sample8�header2r�rrr�'test_has_header_regex_special_delimiterfr�z3TestSniffer.test_has_header_regex_special_delimiterc	Cs�t��}dD]9}|�|��*|�|d�}|�|jd�|�|jd�|�|jd�|�|j	d�Wd�n1s:wYqdS)N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r�r�F)
r%r�r��sniffr6rrr8r9r<)rr��headerr7rrr�test_guess_quote_and_delimiterks���z*TestSniffer.test_guess_quote_and_delimitercCsxt��}|�|j�}|�|jd�|�|jd�|�|jd�|�|j	�}|�|jd�|�|jd�|�|jd�dS)Nr2r4Tr5r�F)
r%r�r�r�r6rrr8r<�sample2�rr�r7rrr�
test_sniffus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�r��+)r%r�r��sample3rLrr6�sample4�sample5�sample6�sample7rr��sample9r�rrr�test_delimiters�s*zTestSniffer.test_delimiterscCs�t��}|�|j�}|�|j�|�|j�}|�|j�|�|j�}|�|j�|�|j	�}|�|j�|�|j
�}|�|j�dSr)r%r�r�r�r�r9r�r�r�r�r�r�rrr�test_doublequote�szTestSniffer.test_doublequoteN)rrrr�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�rrrrr�s0
r�c@seZdZdd�ZeZdS)�NULcGsdSrr)�srArrrr-�rz	NUL.writeN)rrrr-�
writelinesrrrrr��sr��gettotalrefcountzrequires sys.gettotalrefcount()c@rw)
�	TestLeakscCsxd}t��}td�D])}t��|�tjg�t��}t�dg�t�dg�t�dg�||}|}q
|�	|d�dS)Nrrz�a,b,c
r��
�sysr�r��gc�collectr6�garbager%r+�
assertLess)r�delta�lastrcrn�rcrrr�test_create_read�szTestLeaks.test_create_readcCsxd}t��}t�}td�D]&}t��|�tjg�t��}t�	|�t�	|�t�	|�||}|}q
|�
|d�dS)Nrrzr�)r�r�r�r�r�r�r6r�r%r0r�)rr�r�r�rnr�rrr�test_create_write�s


zTestLeaks.test_create_writecCsrd}dgd}t��}td�D]!}t��|�tjg�t��}t�|�}|D]}q'||}|}q|�	|d�dS)Nrr�rErzr�)rr�r�r�rnr�Zrdrr�rrr�	test_read�s

zTestLeaks.test_readc	Cs�d}gd�gd}t�}t��}td�D]&}t��|�tjg�t��}t�	|�}|D]}|�
|�q,||}|}q|�|d�dS)Nrr�rErz)r�r�r�r�r�r�r6r�r%r0r`r�)	rr�r�r�r�rnr�r0r�rrr�
test_write�s
zTestLeaks.test_writeN)rrrr�r�r�r�rrrrr��s
r�c@s$eZdZgd�Zdd�Zdd�ZdS)�TestUnicode)uMartin von LöwisuMarc André LemburgzGuido van RossumuFrançois PinardcCsrtdddd��(}|�d�|j�d�|�d�t�|�}|�t|�|jg�Wd�dS1s2wYdS�Nr[r"r\r�r2r3r)	rr-r��namesrar%r+r6r�rXrrr�test_unicode_read�s

"�zTestUnicode.test_unicode_readcCsttdddd��)}t�|�}|�|j�d�|j�d}|�d�|�|��|�Wd�dS1s3wYdSr�)	rr%r0r`r�r�rar6rb)rrer0r�rrr�test_unicode_write�s

"�zTestUnicode.test_unicode_writeN)rrrr�r�r�rrrrr��sr�c@rj)�KeyOrderingTestc	Cs�t�}td�D]=}tdddd��,}t�||�}|��|�d�t�|�}t|j	�}|�
||�|�|�Wd�n1s?wYq|�
t|�dd�dS)	NZabcder[r"r\r�r�xz@Key ordering: some key permutations not collected (expected 120))
�setrrr%r>r?rarW�tupler=r6�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)r��Graham)r��ChapmanZOver1ZOver2)r��Under1)r�N)r��John)r��CleeseZ	OtherInforhr�fname�lnamer<)r�r�)r�r�)r�r�)r�r�)r�r�)r�N)r�r�)r�r�)r�
splitlinesr6r�r%rWr)r�datarrr�test_ordered_dict_readers>�	

�

��

�

��

�

��z(KeyOrderingTest.test_ordered_dict_readerN)rrrr�r�rrrrr�sr�c@rj)�MiscTestCasecCsddh}tj|td|d�dS)N�__doc__�__version__)r%Z_csv)�extra)rZcheck__all__r%)rr�rrr�test__all__<szMiscTestCase.test__all__cCsGdd�dtj�}dS)Nc@r�)z+MiscTestCase.test_subclassable.<locals>.FooNr�rrrr�FooBsr�)r%r&)rr�rrr�test_subclassable@szMiscTestCase.test_subclassableN)rrrr�r�rrrrr�;sr��__main__)-r�r�Zunittest�ior�tempfilerr%r�r��testrZtest.supportrr]r�textwrapr�collectionsrr
ZTestCaserr�r�r�r�r(r+r0r4r5r7rxr�r�r�Z
skipUnless�hasattrr�r�r�r�r�mainrrrr�<module>sXra			..�A4	�