Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 13.58.37.241
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_csv.cpython-310.pyc
o

`b���@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�6/usr/local/python-3.10/lib/python3.10/test/test_csv.py�__iter__�zBadIterable.__iter__N)�__name__�
__module__�__qualname__rrrrrr
�r
c@s0eZdZdZdd�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-�Zejejejed.�d/d0����Z d1d2�Z!d3d4�Z"d5d6�Z#d7d8�Z$d9d:�Z%d;d<�Z&d=d>�Z'd?d@�Z(dAdB�Z)dCdD�Z*dES)F�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�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_quotingc	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_bigfieldRs
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_linenumeszTest_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_newlinesqs


�"�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_newlineszs

�"�z1Test_Csv.test_roundtrip_escaped_unquoted_newlinesN)+rrr�__doc__r*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�rrrrrsL

				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)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_kwargscCs$Gdd�dtj�}|�tj|�dS)Nc@r�)z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr�Nr�rrrrr��r�r�)r%�Dialectr#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:rrrr�space�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_dialect�sz$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_pickle�s
��zTestDialectRegistry.test_pickleN)
rrrr�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�readerAssertEqual�s

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

"�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_singlerIzTestDialectExcel.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_fieldsr�z"TestDialectExcel.test_empty_fieldscC�|�ddgg�dS)Nrir"r�rrrr�test_singlequotedrIz"TestDialectExcel.test_singlequotedcCr�)Nz"",r"r�rrrr�test_singlequoted_left_emptyr�z-TestDialectExcel.test_singlequoted_left_emptycCr�)Nz,""r"r�rrrr�test_singlequoted_right_emptyr�z.TestDialectExcel.test_singlequoted_right_emptycCr�)Nr�r4r�rrrr�test_single_quoted_quoterIz)TestDialectExcel.test_single_quoted_quotecCr�)Nz""""""rir�rrrr�test_quoted_quotesrIz#TestDialectExcel.test_quoted_quotescCr�)Nza""br�rrrr�test_inline_quote"rIz"TestDialectExcel.test_inline_quotecCr�)Nza"b"cr�rrrr�test_inline_quotes%rIz#TestDialectExcel.test_inline_quotescCr�)Nz"a"b�abr�rrrr�test_quotes_and_more(�z%TestDialectExcel.test_quotes_and_morecCr�)Nza"br�rrrr�test_lone_quote-rIz TestDialectExcel.test_lone_quotecCr�)Nz"a" "b"za "b"r�rrrr�test_quote_and_quote0rz%TestDialectExcel.test_quote_and_quotecCr�)Nz "a"r�rrrr�test_space_and_quote5rIz%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_quoted8��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>r
z"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_nlDs��zTestDialectExcel.test_quoted_nlcCr�)Nz	12,12,1",)�12rz1"r"r�rrrr�test_dubious_quotePr�z#TestDialectExcel.test_dubious_quotecCs|�gd�dSr��r�rrrr�	test_nullSr�zTestDialectExcel.test_nullcC�|�dggd�dS)Nr�zabc
rrrrr�test_single_writerVrIz#TestDialectExcel.test_single_writercC�|�gd�gd�dS)N)rrmr�r��z
1,2,abc,3,4
rrrrr�test_simple_writerYr�z#TestDialectExcel.test_simple_writercCr)N)rrmza"bc"r�rz1,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�rz1,2,"a
bc",3,4
rrrrr�
test_newlinesbr�zTestDialectExcel.test_newlinesN)rrrr7r�r�r�r�r�rrrrrrrr	r
rrrrrrrrrrrrrrrr�s6r�c@�eZdZejZdZdS)�EscapedExcelrJN)rrrr%rNr!r:rrrrr!e�r!c@�"eZdZe�Zdd�Zdd�ZdS)�TestEscapedExcelcCr)Nr�
abc\,def
rrrrr�test_escape_fieldseplrIz%TestEscapedExcel.test_escape_fieldsepcCr�)Nr%rr�rrrr�test_read_escape_fieldseporIz*TestEscapedExcel.test_read_escape_fieldsepN)rrrr!r7r&r'rrrrr$i�r$c@s eZdZdZdd�Zdd�ZdS)�TestDialectUnixZunixcCr)N)r�abc defr��"1","abc def","abc"
rrrrrrur�z"TestDialectUnix.test_simple_writercCr�)Nr+)r�r*r�r�rrrr�test_simple_readerxr�z"TestDialectUnix.test_simple_readerN)rrrr7rr,rrrrr)rsr)c@r )�QuotedEscapedExcelrJN)rrrr%r}r!r:rrrrr-{r"r-c@r#)�TestQuotedEscapedExcelcCrrrrrrr�test_write_escape_fieldsep�rIz1TestQuotedEscapedExcel.test_write_escape_fieldsepcCr�)Nz"abc\,def"
rr�rrrrr'�rIz0TestQuotedEscapedExcel.test_read_escape_fieldsepN)rrrr-r7r/r'rrrrr.r(r.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%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]r1r5r�
f1,f2,f3
rkr�)r2r4z	10,,abc
)	rr%r7r8rar6�readliner`rbr�rrr�test_write_simple_dict�s

"�z%TestDictFields.test_write_simple_dictcCsbt�}tj|gd�d�}|��|�|��d�|�dddd�ddd	d�g�|�|��d
�dS)Nr1r5r:rr��frm�Zxyzzf1,f2,f3
1,abc,f
2,5,xyz
)rr%r7r8r6�getvaluer�r�rrr�test_write_multiple_dict_rows�s
�
�z,TestDictFields.test_write_multiple_dict_rowscCst�}|�ttj|�dSr)rr#r$r%r7�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]r1r5rkZspamr�)Zf4r3rr6z'f4'z'f2'r�)
rr%r7r#r�r`�str�	exception�assertInZassertNotIn)rrer0ZcxrDrrr�#test_write_fields_not_in_fieldnames�s�
"�z2TestDictFields.test_write_fields_not_in_fieldnamescCs$t�}|jttj|ddgdd�dS)Nr2r3Zraised�Zextrasaction)rr#r�r%r7rArrr�&test_typo_in_extrasaction_raises_error�s
�z5TestDictFields.test_typo_in_extrasaction_raises_errorcCs@t�}tj|ddgdd�}ddddd	�}|�ttjj||�dS)
Nr2r3�raiserGrrrmr��Zf0r2r3r4)rr%r7r#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)Nr2r3�ignorerGrrrmr�rJz1,2
)rr%r7r`r6r?rKrrr�*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
rr1r5r�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�r1)rr-rar%rPr6r�r6rQrrr�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�rSrr5r1r�r�r�)	rr-rar%rPr�r+r6r6rQrrr�#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�rSr1r�r�r�)
�	itertoolsrr-rar%rPr��chainr6r6)rrVrer+�firstr�rrr�test_read_dict_fieldnames_chain�s


�"�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
rr2r3r5r�r��r�r�r�r�)r2r3NrOrQrrr�test_read_long�s

�
�"�zTestDictFields.test_read_longcCsvtddd��+}|�d�|�d�tj|ddgdd	�}|�t|�d
dgd�d
��Wd�dS1s4wYdS)Nr[r\r�rZrr2r3�_rest)r6�restkeyr�r�r[�r2r3r]rOrQrrr�test_read_long_with_rest�s

�
�"�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
rr]�r^r2r3r�r�r[r_)rr-rar%rPr6r6r�rQrrr�&test_read_long_with_rest_no_fieldnamess


�"�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)r6Zrestvalr�r�r�r�r�r��r�r�r�r�r�r�)rr-rar%rP�splitr6r�rQrrr�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 s2r5Z
2147483648z43.0e12Z17r�r�)Zi1�floatZi2�s1�s2�r%rPrer6r�)r�sampler+rrr�test_read_multis��zTestDictFields.test_read_multic
CsVtjgd�d��d�}|�t|�dddddd	d
��|�t|�dddddd	d
��dS)N)rZr3rZrcr5r�r�r�r�r�r�rdrj�rr+rrr�test_read_with_blanks%s
���z$TestDictFields.test_read_with_blanksc
Cs8tjdgd��dd�}|�t|�ddddd	d
d��dS)Nz1;2;abc;4;5;6
rcr�)r6rr�r�r�r�r�r�rdrjrmrrr�test_read_semi_sep.s��z!TestDictFields.test_read_semi_sepN)rrrr9r<r@rBrFrHrLrNrRrTrUrYr\r`rbrfrlrnrorrrrr0�s(

				
	r0c@�,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>8�z2TestArrayWrites.test_int_write.<locals>.<listcomp>rsrnr[r\r"r]r�r�r2cS�g|]}t|��qSr�rCrtrrrrv>rwr3�
�arrayr�rr%r0r`�joinrar6rb�rr{�contentsrzrer0r�rrr�test_int_write6s

"�zTestArrayWrites.test_int_writecCrr)NrcS�g|]}d|d�qS�rsg�������?rrtrrrrvD�z5TestArrayWrites.test_double_write.<locals>.<listcomp>rsr�r[r\r"r]r�r�r2cSrxrryrtrrrrvIrwr3rzr}rrr�test_double_writeB�

"�z!TestArrayWrites.test_double_writecCrr)NrcSr�r�rrtrrrrvOr�z4TestArrayWrites.test_float_write.<locals>.<listcomp>rsr=r[r\r"r]r�r�r2cSrxrryrtrrrrvTrwr3rzr}rrr�test_float_writeMr�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_writeXs

"�zTestArrayWrites.test_char_writeN)rrrrr�r�r�rrrrrq5s
rqc@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@�&eZdZdZdZdZdZdZej	Z
dS)z3TestDialectValidity.test_quoting.<locals>.mydialectr�rJFTr3N�rrrrr:r9r<rr%rNr!rrrr�	mydialecte�
r�Tr4z''z("quotechar" must be a 1-character stringrz+"quotechar" must be string or None, not int)
r%r�r6r!rNr#r&r9r'r�
assertTruerCrD�rr�r��cmrrr�test_quotingds4����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 bytesrz#"delimiter" must be string, not intz("delimiter" must be string, not NoneType)r%r�r6rr#r&rCrDr�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 bytesrz,"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�rz!"lineterminator" must be a string)r%r�r6rr#r&rCrDr�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��xr>)�subTestr#r%r&)rr�r�rrr�test_invalid_chars�s���z&TestDialectValidity.test_invalid_charsN)rrrr�r�r�r�r�rrrrr�cs")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_issue436255szTestSniffer.test_issue43625cCs0t��}|�|�|j��|�|�|j��dS)zDMore to document existing (unexpected?) behavior than anything else.N)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_header@�zTestSniffer.test_has_headercCr�r�)r%r�r8r��sample8�header2r�rrr�'test_has_header_regex_special_delimiterEr�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��'F)
r%r�r��sniffr6rrr8r9r<)rr��headerr7rrr�test_guess_quote_and_delimiterJs���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_sniffTs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��sample3rErr6�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_doublequotezs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@rp)
�	TestLeakscCsxd}t��}td�D])}t��|�tjg�t��}t�dg�t�dg�t�dg�||}|}q
|�	|d�dS)Nrrs�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)Nrrsr�)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�r>rsr�)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�r>rs)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�rQrrr�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%r7r8rarP�tupler6r6�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	OtherInforar�fname�lnamer5)r�r�)r�r�)r�r�)r�r�)r�r�)r�N)r�r�)r�r�)r�
splitlinesr6r�r%rPr)r�datarrr�test_ordered_dict_reader�s>�	

�

��

�

��

�

��z(KeyOrderingTest.test_ordered_dict_readerN)rrrr�r�rrrrr��sr�c@rj)�MiscTestCasecCsddh}tj|td|d�dS)Nr��__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�Foo!sr�)r%r&)rr�rrr�test_subclassableszMiscTestCase.test_subclassableN)rrrr�r�rrrrr�sr��__main__)-r�r�Zunittest�ior�tempfilerr%r�r��testrZtest.supportrrVr�textwrapr�collectionsrr
ZTestCaserr�r�r�r�r!r$r)r-r.r0rqr�r�r�Z
skipUnless�hasattrr�r�r�r�r�mainrrrr�<module>sVmqa			..�A4	�
© 2025 GrazzMean