Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_csv.cpython-311.opt-1.pyc
�

�Ke�����ddlZddlZddlZddlmZddlmZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZGd	�d
��ZGd�dej��ZGd
�dej��ZGd�dej��ZGd�de��ZGd�dej��ZGd�de��ZGd�de��ZGd�dej��ZGd�de��ZGd�dej��Z Gd�d ej��Z!Gd!�d"ej��Z"Gd#�d$ej��Z#Gd%�d&��Z$ej%e&ed'��d(��Gd)�d*ej����Z'Gd+�d,ej��Z(Gd-�d.ej��Z)Gd/�d0ej��Z*e+d1krej,��dSdS)2�N)�StringIO)�
TemporaryFile)�support)�warnings_helper)�permutations)�dedent)�OrderedDictc��eZdZd�ZdS)�BadIterablec��t��N��OSError��selfs �7/usr/local/apps/python3/lib/python3.11/test/test_csv.py�__iter__zBadIterable.__iter__s���
�N)�__name__�
__module__�__qualname__r�rrrrs#����������rrc�R�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejejeje ���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&�Z-d'�Z.d(S))�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.
    c���|�t|��|�t|d��|�t||d���|�t||d���|�t||d���|�tj||d��|�t||d���|�t||d���|�t||d���|�t||d���|�t||d���|�t||d�	��|�t||tjd
���|�t||tjd���|�t||tjd
���dS)Nr��bad_attr��	delimiter�XX�foo���	quotechar��lineterminator��quoting�)r(r$)�assertRaises�	TypeError�csv�Error�	QUOTE_ALL�
QUOTE_NONE)r�ctor�args   r�_test_arg_validzTest_Csv._test_arg_valids������)�T�*�*�*����)�T�4�0�0�0����)�T�3�1��=�=�=����)�T�3�A��>�>�>����)�T�3�D��A�A�A����#�)�T�3��6�6�6����)�T�3�$��?�?�?����)�T�3�!��<�<�<����)�T�3�!��<�<�<����)�T�3�t��D�D�D����)�T�3�q��A�A�A����)�T�3���=�=�=����)�T�3�"%�-�2�	�	?�	?�	?����)�T�3�"%�-�4�	�	A�	A�	A����)�T�3�"%�.�B�	�	@�	@�	@�	@�	@rc��|�tjg��|�ttjt����dSr
)r2r,�readerr*rrrs r�test_reader_arg_validzTest_Csv.test_reader_arg_valid2s>�����S�Z��,�,�,����'�3�:�{�}�}�=�=�=�=�=rc���|�tjt����Gd�d��}|�t
tj|����dS)Nc�$�eZdZed���ZdS)�1Test_Csv.test_writer_arg_valid.<locals>.BadWriterc��t�r
rrs r�writez7Test_Csv.test_writer_arg_valid.<locals>.BadWriter.write9s���
rN)rrr�propertyr:rrr�	BadWriterr88s-������
�
�
��X�
�
�
rr<)r2r,�writerrr*r)rr<s  r�test_writer_arg_validzTest_Csv.test_writer_arg_valid6sn�����S�Z����4�4�4�	�	�	�	�	�	�	�	�	
���'�3�:�y�y�{�{�;�;�;�;�;rc�`�||�}|�|jjd��|�|jjd��|�|jjd��|�|jjd��|�|jjd��|�|jjtj
��|�|jjd��|�|jjd��|�
tt|jd��|�
tt |jdd��|�
tt|jd��|�
tt |jdd��dS)	N�,T�
�"Fr�:r()�assertEqual�dialectr�assertIs�doublequote�
escapecharr&r$r(r,�
QUOTE_MINIMAL�skipinitialspace�strictr*�AttributeError�delattr�setattr)rr0�args�objs    r�_test_default_attrszTest_Csv._test_default_attrs>sg���d�D�k�������.��4�4�4��
�
�c�k�-�t�4�4�4������/��6�6�6������3�V�<�<�<������.��4�4�4������,�c�.?�@�@�@��
�
�c�k�2�E�:�:�:��
�
�c�k�(�%�0�0�0����.�'�3�;��L�L�L����.�'�3�;��S�Q�Q�Q����.�'�3�;�	�J�J�J����.�'�3�;�#�T�	+�	+�	+�	+�	+rc�F�|�tjg��dSr
)rQr,r4rs r�test_reader_attrszTest_Csv.test_reader_attrsP� ��� � ���R�0�0�0�0�0rc�^�|�tjt����dSr
)rQr,r=rrs r�test_writer_attrszTest_Csv.test_writer_attrsS�$��� � ���X�Z�Z�8�8�8�8�8rc
�l�tdddddtjdd���}||i|��}|�|jjd��|�|jjd��|�|jjd��|�|jj	d��|�|jj
d��|�|jjtj��|�|jjd��|�|jj
d��dS)NrCF�\�
�*T)rrGrHr&r$r(rJrK)�dictr,r/rDrErrFrGrHr&r$r(rJrK)rr0rO�kwargsrPs     r�_test_kw_attrszTest_Csv._test_kw_attrsVs�����4�%)�S�!�n�t�!�#�#�#���d�D�#�F�#�#�������.��4�4�4��
�
�c�k�-�u�5�5�5������/��6�6�6������3�T�:�:�:������.��4�4�4������,�c�n�=�=�=��
�
�c�k�2�D�9�9�9��
�
�c�k�(�$�/�/�/�/�/rc�F�|�tjg��dSr
)r^r,r4rs r�test_reader_kw_attrszTest_Csv.test_reader_kw_attrsfs �����C�J��+�+�+�+�+rc�^�|�tjt����dSr
)r^r,r=rrs r�test_writer_kw_attrszTest_Csv.test_writer_kw_attrsis$�����C�J��
�
�3�3�3�3�3rc�J�Gd�d��}||fz}||�}|�|jjd��|�|jjd��|�|jjd��|�|jjd��|�|jjd��|�|jjtj
��|�|jjd��|�|jjd��dS)	Nc�8�eZdZdZdZdZdZdZej	Z
dZdZdS)�-Test_Csv._test_dialect_attrs.<locals>.dialect�-F�^�$�#TN)
rrrrrGrHr&r$r,r.r(rJrKrrrrErens9�������I��K��J��N��I��M�G�!���F�F�FrrErfFrgrhriT)
rDrErrFrGrHr&r$r(r,r.rJrK)rr0rOrErPs     r�_test_dialect_attrszTest_Csv._test_dialect_attrsls��	�	�	�	�	�	�	�	��w�j� ���d�D�k�������.��4�4�4��
�
�c�k�-�u�5�5�5������/��5�5�5������3�S�9�9�9������.��4�4�4������,�c�m�<�<�<��
�
�c�k�2�D�9�9�9��
�
�c�k�(�%�0�0�0�0�0rc�F�|�tjg��dSr
)rjr,r4rs r�test_reader_dialect_attrsz"Test_Csv.test_reader_dialect_attrs�rTrc�^�|�tjt����dSr
)rjr,r=rrs r�test_writer_dialect_attrsz"Test_Csv.test_writer_dialect_attrs�rWrc�>�tddd���5}tj|fi|��}|�|��|�d��|�|���||jjz��ddd��dS#1swxYwYdS�N�w+�utf-8r)��encoding�newliner)	rr,r=�writerow�seekrD�readrEr&)r�fields�expectr]�fileobjr=s      r�_write_testzTest_Csv._write_test�s���
�4�'�2�
>�
>�
>�	E�'��Z��2�2�6�2�2�F��O�O�F�#�#�#��L�L��O�O�O����W�\�\�^�^�#�f�n�&C�C�
E�
E�
E�		E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es�A2B�B�Bc�~�tddd���5}tj|fi|��}|�|��5|�|��ddd��n#1swxYwY|�d��|�|���d��ddd��dS#1swxYwYdSrp)rr,r=r*rvrwrDrx)r�excryr]r{r=s      r�_write_error_testzTest_Csv._write_error_test�s7��
�4�'�2�
>�
>�
>�	1�'��Z��2�2�6�2�2�F��"�"�3�'�'�
(�
(�����'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��L�L��O�O�O����W�\�\�^�^�R�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s5�(B2�A�B2�A!	�!B2�$A!	�%AB2�2B6�9B6c�
�|�tjd��|�dd��|�dgd��|�tjdgtj���|�t
t
����Gd�d��}|�t
|����Gd�d��}|�t
|��g��dS)	Nrr)�""r'c��eZdZd�Zd�ZdS)�.Test_Csv.test_write_arg_valid.<locals>.BadListc��dS)N�
rrs r�__len__z6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__�s���rrc� �|dkrt�dS)N�r)r�is  r�__getitem__z:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__�s���q�5�5�!�M��5rN)rrrr�r�rrr�BadListr��s2������
�
�
�
"�
"�
"�
"�
"rr�c��eZdZd�ZdS)�.Test_Csv.test_write_arg_valid.<locals>.BadItemc��t�r
rrs r�__str__z6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__�����
rN)rrrr�rrr�BadItemr���#������
�
�
�
�
rr�)rr,r-r|r/rr)rr�r�s   r�test_write_arg_validzTest_Csv.test_write_arg_valid�s�����s�y�$�/�/�/�����R� � � ����$���&�&�&����s�y�4�&�C�N��K�K�K����w��
�
�6�6�6�	"�	"�	"�	"�	"�	"�	"�	"�	
���w���	�	�2�2�2�	�	�	�	�	�	�	�	�	
���w������4�4�4�4�4rc�J�ddz}|�||g|�d|����dS)N�X�P�r@)r|)r�	bigstrings  r�test_write_bigfieldzTest_Csv.test_write_bigfield�sD���%�K�	����)�I�.�#�)�)�Y�Y�10�	1�	1�	1�	1�	1rc��|�gd�d��|�tjgd�tj���|�gd�dtj���|�gd�dtj���|�gd�dtj���|�ddgdtj���dS)	N��ar"zp,q�	a,1,"p,q"r'z"a",1,"p,q"z
"a","1","p,q"�a
br"z	"a
b","1")r|rr,r-r/rI�QUOTE_NONNUMERICr.rs r�test_write_quotingzTest_Csv.test_write_quoting�s����������4�4�4����s�y�-�-�-�),��	�	9�	9�	9��������#&�#4�	�	6�	6�	6�������
�#&�#7�	�	9�	9�	9��������#&�=�	�	2�	2�	2����&���\�#&�=�	�	2�	2�	2�	2�	2rc���|�gd�dd���|�tjgd�dd���|�gd�ddd���|�d	gd
dtj���|�d	gddtjd�
��|�d	gddtj���|�gd�ddtj���|�ddgddtj���|�ddgddtj���|�ddgddtj���|�ddgddtj���|�ddgddtj���|�ddgddtj���|�gd�ddtj���dS)Nr�r�rY�rH)r�r"zp,"q"F)rHrGz
a,1,"p,\"q\""rB�"""")rHr(z\")rHr(rGza,1,p\,qr�z\\,az"\\","a"z\ z\\ ,az\,z\\\,,az,\z",\\",a)zC\�6�7zX"z
C\\,6,7,"X""")r|rr,r-rIr/r.rs r�test_write_escapezTest_Csv.test_write_escape�s����������$(�	�	*�	*�	*����s�y�/�/�/�*.�E�	�	C�	C�	C�������*;�$(��	�	?�	?�	?����#���$(�C�4E�	�	G�	G�	G����#���$(�C�4E�',�	�	.�	.�	.�	
���#���$(�C�N�	�	D�	D�	D��������$(�C�N�	�	D�	D�	D����$���h�$(�#�.�	�	B�	B�	B����$���h�$(�#�2C�	�	E�	E�	E����$���l�$(�#�-�	�	A�	A�	A����%���y�$(�#�2C�	�	E�	E�	E����%���{�$(�#�.�	�	B�	B�	B����%���{�$(�#�2C�	�	E�	E�	E����0�0�0�2C�$(�#�2C�	�	E�	E�	E�	E�	Erc
��dD]�}|�|���5t��5}tj||���}|�ddg��|�ddg��|�|���d|�d|����ddd��n#1swxYwYddd��n#1swxYwY��dS)	N)rA�
rZz!@#�r%r��br"r��a,bz1,2)�subTestrr,r=rvrD�getvalue)rr&�sior=s    r�test_write_lineterminatorz"Test_Csv.test_write_lineterminator�sa��=�	=�	=�N����^��<�<�
=�
=��Z�Z�=�3� �Z��N�K�K�K�F��O�O�S�#�J�/�/�/��O�O�Q��F�+�+�+��$�$�S�\�\�^�^�&<�>�&<�&<�+9�&<�&<�=�=�=�	=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��	=�	=s5�C�A3B)�C�)B-�-C�0B-�1C�C	�C	c���|�tgd���d��|�tgd���d��|�tg��d��|�tdg��d��|�tjtdg��tj���|�tddg��d��dS)	Nr�r�)r�r"Nza,1,r)r�r'r@)r|�iterrr,r-r/rs r�test_write_iterablezTest_Csv.test_write_iterable�s�������o�o�o�.�.��<�<�<�����n�n�n�-�-�v�6�6�6�����b���2�&�&�&�����t�f���t�,�,�,����s�y�$��v�,�,����O�O�O�����t�T�l�+�+�S�1�1�1�1�1rc��Gd�d��}tj|����}|�t|jdgg��tddd���5}tj|��}|�t|jd��|�ddgd	d
gg��|�d��|�|�	��d��ddd��dS#1swxYwYdS)
Nc��eZdZd�ZdS)�+Test_Csv.test_writerows.<locals>.BrokenFilec��t�r
r)r�bufs  rr:z1Test_Csv.test_writerows.<locals>.BrokenFile.write�r�rN)rrrr:rrr�
BrokenFiler��r�rr�r�rqrrr)rsr��c�drz
a,b
c,d
)
r,r=r*r�	writerowsrr+rwrDrx)rr�r=r{s    r�test_writerowszTest_Csv.test_writerows�sO��	�	�	�	�	�	�	�	���J�J�L�L�)�)�����'�6�#3�s�e�W�=�=�=�
�4�'�2�
>�
>�
>�	?�'��Z��(�(�F����i��)9�4�@�@�@����s�C�j�3��*�5�6�6�6��L�L��O�O�O����W�\�\�^�^�-=�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�BC:�:C>�C>c��tddd���5}tj|��}|�ddgddgg��|�d��|�|���d��ddd��n#1swxYwYtddd���5}tj|��}|�dgdgg��|�d��|�|���d	��ddd��n#1swxYwYtddd���5}tj|��}|�dgdgg��|�d��|�|���d
��ddd��dS#1swxYwYdS)Nrqrrr)rsr�r�rza,
,d
z""
a
za
""
)rr,r=r�rwrDrx�rr{r=s   r�test_writerows_with_nonez!Test_Csv.test_writerows_with_none�sW��
�4�'�2�
>�
>�
>�	=�'��Z��(�(�F����s�D�k�D�#�;�7�8�8�8��L�L��O�O�O����W�\�\�^�^�^�<�<�<�		=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��4�'�2�
>�
>�
>�	<�'��Z��(�(�F����t�f�s�e�_�-�-�-��L�L��O�O�O����W�\�\�^�^�]�;�;�;�		<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<��4�'�2�
>�
>�
>�	<�'��Z��(�(�F����s�e�d�V�_�-�-�-��L�L��O�O�O����W�\�\�^�^�]�;�;�;�		<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s8�A-B�B�B�)A+D � D$�'D$�=A+F5�5F9�<F9c� �tddd���5}tj|��}|�t|jd��|�t|jt����ddd��dS#1swxYwYdS)Nrqrrr)rs)rr,r=r*r+r�rrr�s   r�test_writerows_errorszTest_Csv.test_writerows_errorss���
�4�'�2�
>�
>�
>�	H�'��Z��(�(�F����i��)9�4�@�@�@����g�v�'7����G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hs�A#B�B�
B)�categoryc�^�ddl}|�d��}tddd���5}tj|��}|�|gg��|�d��|�|���d��ddd��dS#1swxYwYdS)Nrr�rqrrr)rsza
)	�	_testcapi�unicode_legacy_stringrr,r=r�rwrDrx)rr�r�r{r=s     r�test_writerows_legacy_stringsz&Test_Csv.test_writerows_legacy_stringss���	�����+�+�C�0�0��
�4�'�2�
>�
>�
>�	6�'��Z��(�(�F����q�c�U�#�#�#��L�L��O�O�O����W�\�\�^�^�W�5�5�5�		6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�A)B"�"B&�)B&c�t�tj|fi|��}t|��}|�||��dSr
)r,r4�listrD)r�inputrzr]r4�results      r�
_read_testzTest_Csv._read_test$s@����E�,�,�V�,�,���f���������(�(�(�(�(rc�<�|�gg��|�dggg��|�tj|jdgdd���|�dgdggd���|�tj|jdgd��dS)	Nr)z"ab"cr"�rK�abcr)rGsabc�r�r*r,r-rs r�test_read_oddinputszTest_Csv.test_read_oddinputs)s�������B���������r�d�#�#�#����#�)�T�_�"�)�T�A�	�	7�	7�	7�����	�U�G�9�A��>�>�>����#�)�T�_�!�(�D�	*�	*�	*�	*�	*rc���|�dgddgg��|�dgddgg��|�dgddgg��|�dgddgg��|�tj|jdgg��|�tj|jdgg��|�tj|jd	gg��dS)
Nr�r�r�za,b
za,b
za,b
za,b
c,dza,b
c,dza,b
c,dr�rs r�
test_read_eolzTest_Csv.test_read_eol3s��������3�s�)��-�-�-�����	�S��I�;�/�/�/������s�3�i�[�1�1�1�����	�S��I�;�/�/�/����#�)�T�_�z�l�B�G�G�G����#�)�T�_�z�l�B�G�G�G����#�)�T�_�|�n�b�I�I�I�I�Irc��|�dgddgg��|�dgdgg��|�dgdggd���|�tj|jdggd�	��|�tj|jdggd�	��|�tj|jdggdd�
��dS)Nza,"r�r)z"argr�r�Tr�)rHrKr�rs r�
test_read_eofzTest_Csv.test_read_eof<s��������3��)��-�-�-������#���(�(�(��������x�C��8�8�8����#�)�T�_�u�g�r�$��O�O�O����#�)�T�_�t�f�b���N�N�N����#�)�T�_��%���D�	�	B�	B�	B�	B�	Brc��|�dgdgg��|�dggd�g��|�dggd�g��|�dggd�gd���|�d	ggd�g��dS)
Nr��a,b,c)r�zbr�za,b,c)r�zbr�za,b\,crYr�za,"b",c�r�rs r�
test_read_nulzTest_Csv.test_read_nulEs��������$���)�)�)������&7�&7�&7�%8�9�9�9������&7�&7�&7�%8�9�9�9�����
�(9�(9�(9�':�t��L�L�L�����
�(9�(9�(9�':�;�;�;�;�;rc��|�dggd�g��|�dggd�gd���|�dggd�gd���dS)Nza,b,c�r�r�r�za;b;c�;rzabcr�r�rs r�test_read_delimiterzTest_Csv.test_read_delimiterLsg������	�O�O�O�#4�5�5�5�����	�O�O�O�#4���D�D�D������o�o�o�%6�$��G�G�G�G�Grc�2�|�dggd�gd���|�dgddggd���|�dgddggd���|�d	gddggd���|�d
gddggd���|�dgdd
ggd���|�dggd�gd���|�dggd�gd���|�dggd�gd���|�dggd�g��dS)Nza,\b,cr�rYr�za,b\,cr�zb,cza,"b\,c"za,"b,\c"z	a,"b,c\""zb,c"za,"b,c"\zb,c\za,^b,crgr�r�)r�z\br�r�rs r�test_read_escapezTest_Csv.test_read_escapeQsP�������o�o�o�%6�4��H�H�H������s�E�l�^���E�E�E�����
��e��~�$��G�G�G�����
��e��~�$��G�G�G������#�v���D��I�I�I�����
��g��'7�D��I�I�I�����
�_�_�_�$5�#��F�F�F������o�o�o�%6�4��H�H�H������&7�&7�&7�%8�T��J�J�J������&7�&7�&7�%8�9�9�9�9�9rc��|�dggd�g��|�dggd�gdd���|�dggd�gtjd���|�dggd�gtj�	��|�d
gddgg��|�t
|jd
gggtj�	��|�dggd�gd���|�dggd�gd���dS)Nz	1,",3,",5)�1z,3,�5)r�rB�3rBr�rY)r$rH�r(rHz
,3,"5",7.3, 9)r)�r�g333333@�	r'z"a
b", 7r�z 7zabc,3z	1,@,3,@,5�@r#z	1,,3,,5r�)r�r,r/r�r*�
ValueErrorrs r�test_read_quotingzTest_Csv.test_read_quoting]sZ������
�(9�(9�(9�':�;�;�;�����
�(A�(A�(A�'B�"&�4�	�	9�	9�	9�����
�(A�(A�(A�'B� #��4�	�	A�	A�	A�	
����)�,@�,@�,@�+A� #� 4�	�	6�	6�	6�����
����'7�8�8�8����*�d�o�"�)�b�T�"%�"6�	�	8�	8�	8�	
����
�(9�(9�(9�':�c��J�J�J������*;�*;�*;�)<���M�M�M�M�Mrc�>�|�dggd�gd���dS)Nzno space, space,  spaces,	tab)zno space�space�spacesz	tabT)rJr�rs r�test_read_skipinitialspacez#Test_Csv.test_read_skipinitialspacems<�����9�:�A�A�A�B�)-�	�	/�	/�	/�	/�	/rc��tj��}	d}d|z}|�d|��}|�|g||gg��tj|��|�|g||gg��|�tj��|��tj|dz
��|�tj|j|gg��|�ttjd��|�ttjdd��tj|��dS#tj|��wxYw)Nr�r�r@r")r,�field_size_limitr�rDr*r-r+)r�limit�sizer��biglines     r�test_read_bigfieldzTest_Csv.test_read_bigfieldrs<���$�&�&��
	(��D��d�
�I�!*���I�I�6�G��O�O�W�I��I�(>�'?�@�@�@�� ��&�&�&��O�O�W�I��I�(>�'?�@�@�@����S�1�3�3�T�:�:�:�� ��a��(�(�(����c�i���7�)�R�H�H�H����i��)=�t�D�D�D����i��)=�q�$�G�G�G�� ��'�'�'�'�'��C� ��'�'�'�'���s�D	D4�4E
c���tjgd���}|�|jd��t	|��|�|jd��t	|��|�|jd��t	|��|�|jd��|�tt|��|�|jd��dS)N)zline,1zline,2zline,3rr"r�r�)r,r4rD�line_num�nextr*�
StopIteration)r�rs  r�test_read_linenumzTest_Csv.test_read_linenum�s����J�5�5�5�6�6�������Q�'�'�'��Q���������Q�'�'�'��Q���������Q�'�'�'��Q���������Q�'�'�'����-��q�1�1�1������Q�'�'�'�'�'rc�p�tddd���5}tj|��}ddgddgg}|�|��|�d	��ttj|����D]!\}}|�|||���"	ddd��dS#1swxYwYdS)
Nrqrrr)rsr�r�r��x
dr)rr,r=r�rw�	enumerater4rD�rr{r=�rowsr��rows      r�test_roundtrip_quoteed_newlinesz(Test_Csv.test_roundtrip_quoteed_newlines�s��
�4�'�2�
>�
>�
>�	/�'��Z��(�(�F��C�L�#�h��0�D����T�"�"�"��L�L��O�O�O�#�C�J�w�$7�$7�8�8�
/�
/���3�� � ��d�1�g�.�.�.�.�
/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�B
B+�+B/�2B/c��tddd���5}tj|tjd���}ddgd	d
gg}|�|��|�d��t
tj|tjd�����D]!\}}|�|||���"	ddd��dS#1swxYwYdS)Nrqrrr)rsrYr�r�r�r�r�r)	rr,r=r/r�rwr�r4rDr�s      r�(test_roundtrip_escaped_unquoted_newlinesz1Test_Csv.test_roundtrip_escaped_unquoted_newlines�s��
�4�'�2�
>�
>�
>�	.�'��Z����$�O�O�O�F��C�L�#�h��0�D����T�"�"�"��L�L��O�O�O�#�C�J�w�s�~�Y]�$^�$^�$^�_�_�
.�
.���3�� � ��T�!�W�-�-�-�-�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s�B$C�C	�C	N)/rrr�__doc__r2r5r>rQrSrVr^r`rbrjrlrnr|rr�r�r�r�r�r�r�r�r�r�cpython_only�requires_legacy_unicode_capir�ignore_warnings�DeprecationWarningr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrs���������
@�@�@�(>�>�>�<�<�<�+�+�+�$1�1�1�9�9�9�0�0�0� ,�,�,�4�4�4�1�1�1�,1�1�1�9�9�9�E�E�E�1�1�1�5�5�5�&1�1�1�2�2�2�E�E�E�>	=�	=�	=�2�2�2�?�?�?�<�<�<�&H�H�H�
���)�$�_�$�.@�A�A�A�6�6�B�A�*�)���6�)�)�)�
*�*�*�J�J�J�B�B�B�<�<�<�H�H�H�

:�
:�
:�N�N�N� /�/�/�
(�(�(�&
(�
(�
(�/�/�/�.�.�.�.�.rrc�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�TestDialectRegistryc��|�ttjd��|�ttj��|�tjtjd��|�tjtjd��|�ttj��|�tjtjd��|�tjtjd��|�ttjd��|�ttjdd��|�ttjddd��|�ttjdd���|�ttjdd���|�ttjg��dS)N�nonesuchr)�badargumentr')r*r+r,�
list_dialects�get_dialectr-�unregister_dialect�register_dialectrs r�test_registry_badargsz)TestDialectRegistry.test_registry_badargs�s������)�S�%6��=�=�=����)�S�_�5�5�5����#�)�S�_�d�;�;�;����#�)�S�_�j�A�A�A����)�S�%;�<�<�<����#�)�S�%;�T�B�B�B����#�)�S�%;�Z�H�H�H����)�S�%9�4�@�@�@����)�S�%9�4��F�F�F����)�S�%9�:�q�!�L�L�L����)�S�%9�:�&*�	�	,�	,�	,����)�S�%9�:�"&�	�	(�	(�	(����)�S�%9�2�>�>�>�>�>rc��Gd�dtj��}d}tj��|gz}|���tj||��|�tj|��|�tj|��j	d��ttj����}|�||��dS)Nc��eZdZdZdS)�5TestDialectRegistry.test_registry.<locals>.myexceltsv�	N�rrrrrrr�
myexceltsvr���������I�I�Irrr)r,�excelr�sortr�
addCleanupr
rDrr�sorted)rr�name�expected_dialects�got_dialectss     r�
test_registryz!TestDialectRegistry.test_registry�s���	�	�	�	�	���	�	�	����-�/�/�4�&�8����� � � ���T�:�.�.�.�����.��5�5�5�������.�.�8�$�?�?�?��c�/�1�1�2�2�����*�L�9�9�9�9�9rc	�D�d}tj|d���|�tj|��|�tj|��jd��|�gd�gttjdg|������dS)N�fedcbar�r)r��Y�ZzX;Y;Z)	r,rrr
rDrrr�r4)rrs  r�test_register_kwargsz(TestDialectRegistry.test_register_kwargs�s�������T�S�1�1�1�1�����.��5�5�5�������.�.�8�#�>�>�>����/�/�/�*�D���W�I�t�1L�1L�,M�,M�N�N�N�N�Nrc
�F�Gd�dtj��}d}tj||dddddtj�	��|�tj|��tj|��}|�|jd��|�|j	d��|�|j
d��|�|jd��|�|jd��|�|j
tj��dS)
Nc�0�eZdZdZdZdZdZdZej	Z
dS)�DTestDialectRegistry.test_register_kwargs_override.<locals>.mydialectrrBTFrAN)rrrrr$rGrJr&r,rIr(rrr�	mydialectr&�s0�������I��I��K�$��#�N��'�G�G�Grr'�test_dialectr��'FTr�)rr$rGrJr&r()r,�Dialectrr.rr
rrDrr$rGrJr&r()rr'rrEs    r�test_register_kwargs_overridez1TestDialectRegistry.test_register_kwargs_override�s.��	(�	(�	(�	(�	(���	(�	(�	(�����T�9�'*�'*�).�.2�,0�%(�]�
	4�	4�	4�	4�	
����.��5�5�5��/�$�'�'������*�C�0�0�0�����*�C�0�0�0�����,�e�4�4�4�����1�4�8�8�8�����/��6�6�6������#�-�8�8�8�8�8rc�v�Gd�dtj��}|�tj|��dS)Nc��eZdZdZdS)�?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvrNrrrrrr.�rrr)r,r*r*r-)rrs  r�test_incomplete_dialectz+TestDialectRegistry.test_incomplete_dialect�sL��	�	�	�	�	���	�	�	����#�)�Z�0�0�0�0�0rc��Gd�dtj��}tdd���5}|�d��|�d��tj||�����}|�t|��d	d
g��|�t|��ddg��ddd��dS#1swxYwYdS)
Nc�$�eZdZdZejZdZdS)�5TestDialectRegistry.test_space_dialect.<locals>.space� rYN)rrrrr,r/r(rHrrrr�r2�s�������I��n�G��J�J�Jrr�rqrr�rtzabc def
c1ccccc1 benzene
r�rEr��def�c1ccccc1�benzene)r,rrr:rwr4rDr�)rr�r{r4s    r�test_space_dialectz&TestDialectRegistry.test_space_dialect�s4��	�	�	�	�	�C�I�	�	�	�
�4�'�
2�
2�
2�	D�g��M�M�7�8�8�8��L�L��O�O�O��Z������9�9�9�F����T�&�\�\�E�5�>�:�:�:����T�&�\�\�J�	�+B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�BC
�
C�Cc�.�tddd���5}tj|g|�Ri|��}|�gd���|�d��|�|���|��ddd��dS#1swxYwYdS)Nrqr)rr�rurt�r"r�r�r)rr,r=rvrwrDrx)r�expected�	writeargs�kwwriteargsr{r=s      r�compare_dialect_123z'TestDialectRegistry.compare_dialect_123�s���
�4��g�
>�
>�
>�	7�'��Z��C�)�C�C�C�{�C�C�F��O�O�G�G�G�$�$�$��L�L��O�O�O����W�\�\�^�^�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�A*B
�
B�Bc���Gd�dtj��}Gd�dtj��}Gd�dtj��}Gd�dtj��}Gd	�d
��}tjd|��	|�d��|�dd���|�d|���|�d
|��|�d|�����|�dd���|�d|d���|�d|���tjd��dS#tjd��wxYw)Nc��eZdZdZdS)�5TestDialectRegistry.test_dialect_apply.<locals>.testArNrrrr�testArCrrrDc��eZdZdZdS)�5TestDialectRegistry.test_dialect_apply.<locals>.testBrCNrrrr�testBrF��������I�I�IrrGc��eZdZdZdS)�5TestDialectRegistry.test_dialect_apply.<locals>.testC�|Nrrrr�testCrJrHrrLc��eZdZdZdS)�7TestDialectRegistry.test_dialect_apply.<locals>.testUniuΛNrrrr�testUnirNs������ �I�I�IrrOc��eZdZdS)�;TestDialectRegistry.test_dialect_apply.<locals>.unspecifiedN�rrrrrr�unspecifiedrQ	s�������DrrSz1,2,3
r5z1	2	3
z1:2:3
z1|2|3
z1;2;3
r�)rEru	1Λ2Λ3
)r,rrr@r
)rrDrGrLrOrSs      r�test_dialect_applyz&TestDialectRegistry.test_dialect_apply�s���	�	�	�	�	�C�I�	�	�	�	�	�	�	�	�C�I�	�	�	�	�	�	�	�	�C�I�	�	�	�	!�	!�	!�	!�	!�c�i�	!�	!�	!�	�	�	�	�	�	�	�	�	��W�e�,�,�,�
	,��$�$�[�1�1�1��$�$�[�$�$�?�?�?��$�$�[�+�$�F�F�F��$�$�]�E�:�:�:��$�$�[�%�%�'�'�$�B�B�B��$�$�[�'�$�B�B�B��$�$�[�%�/2�
%�
4�
4�
4��$�$�%:�-4�
%�
6�
6�
6�
�"�7�+�+�+�+�+��C�"�7�+�+�+�+���s
�B>E�E.c�F�|�ttjgd���|�ttjgd���|�ttjgd���|�ttjgd���dS)Nrrr���r'�d)r*r+r,r4rs r�test_bad_dialectz$TestDialectRegistry.test_bad_dialects������)�S�Z����B�B�B����)�S�Z����F�F�F����)�S�Z��r��B�B�B����)�S�Z��s��C�C�C�C�Crc��tj��D]<}tj|��}|�tt
j|���=dSr
)r,rrr*r+�copy)rrrEs   r�	test_copyzTestDialectRegistry.test_copy%sP���%�'�'�	=�	=�D��o�d�+�+�G����i���G�<�<�<�<�	=�	=rc���tj��D]\}tj|��}ttjdz��D])}|�ttj||���*�]dS)Nr")	r,rr�range�pickle�HIGHEST_PROTOCOLr*r+�dumps)rrrE�protos    r�test_picklezTestDialectRegistry.test_pickle*s}���%�'�'�	K�	K�D��o�d�+�+�G��v�6��:�;�;�
K�
K���!�!�)�V�\�7�E�J�J�J�J�
K�	K�	KrN)rrrrrr#r+r/r9r@rTrXr[rbrrrrr�s�������?�?�?�"
:�
:�
:�O�O�O�9�9�9�81�1�1�
D�D�D�7�7�7�,�,�,�<D�D�D�=�=�=�
K�K�K�K�Krrc��eZdZd�Zd�ZdS)�TestCsvBasec�0�tddd���5}|�|��|�d��tj||j���}t
|��}|�||��ddd��dS#1swxYwYdS)Nrqrrr)rsrr5)rr:rwr,r4rEr�rD)rr��expected_resultr{r4rys      r�readerAssertEqualzTestCsvBase.readerAssertEqual1s���
�4�'�2�
>�
>�
>�	6�'��M�M�%� � � ��L�L��O�O�O��Z��4�<�@�@�@�F��&�\�\�F����V�_�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�A+B�B�Bc�6�tddd���5}tj||j���}|�|��|�d��|�|���|��ddd��dS#1swxYwYdS)Nrqrrr)rsr5r)rr,r=rEr�rwrDrx)rr�rfr{r=s     r�writerAssertEqualzTestCsvBase.writerAssertEqual9s���
�4�'�2�
>�
>�
>�	>�'��Z��4�<�@�@�@�F����U�#�#�#��L�L��O�O�O����W�\�\�^�^�_�=�=�=�		>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s�A.B�B�BN)rrrrgrirrrrdrd0s2������6�6�6�>�>�>�>�>rrdc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestDialectExcelrc�6�|�ddgg��dS)Nr��rgrs r�test_singlezTestDialectExcel.test_singleC�"�����u��w�i�0�0�0�0�0rc�8�|�dgd�g��dS)Nz	1,2,3,4,5)r��2r��4r�rmrs r�test_simplezTestDialectExcel.test_simpleFs(�����{�-B�-B�-B�,C�D�D�D�D�Drc�2�|�dg��dS�Nr)rmrs r�test_blanklinezTestDialectExcel.test_blanklineI������r�2�&�&�&�&�&rc�8�|�dddgg��dS)Nr@r)rmrs r�test_empty_fieldsz"TestDialectExcel.test_empty_fieldsLs$�����s�b�"�X�J�/�/�/�/�/rc�6�|�ddgg��dS)Nr�r)rmrs r�test_singlequotedz"TestDialectExcel.test_singlequotedOs"�����t�r�d�V�,�,�,�,�,rc�8�|�dddgg��dS)Nz"",r)rmrs r�test_singlequoted_left_emptyz-TestDialectExcel.test_singlequoted_left_emptyR�$�����u��2�w�i�0�0�0�0�0rc�8�|�dddgg��dS)Nz,""r)rmrs r�test_singlequoted_right_emptyz.TestDialectExcel.test_singlequoted_right_emptyUr~rc�6�|�ddgg��dS)Nr�rBrmrs r�test_single_quoted_quotez)TestDialectExcel.test_single_quoted_quoteXs"�����v���w�/�/�/�/�/rc�6�|�ddgg��dS)Nz""""""r�rmrs r�test_quoted_quotesz#TestDialectExcel.test_quoted_quotes[s"�����x�4�&��2�2�2�2�2rc�6�|�ddgg��dS)Nza""brmrs r�test_inline_quotez"TestDialectExcel.test_inline_quote^�"�����v���z�2�2�2�2�2rc�6�|�ddgg��dS)Nza"b"crmrs r�test_inline_quotesz#TestDialectExcel.test_inline_quotesas"�����w�'���4�4�4�4�4rc�6�|�ddgg��dS)Nz"a"b�abrmrs r�test_quotes_and_morez%TestDialectExcel.test_quotes_and_moreds$��	
���v���x�0�0�0�0�0rc�6�|�ddgg��dS)Nza"brmrs r�test_lone_quotez TestDialectExcel.test_lone_quoteirorc�6�|�ddgg��dS)Nz"a" "b"za "b"rmrs r�test_quote_and_quotez%TestDialectExcel.test_quote_and_quotels$��	
���y�G�9�+�6�6�6�6�6rc�6�|�ddgg��dS)Nz "a"rmrs r�test_space_and_quotez%TestDialectExcel.test_space_and_quoteqr�rc�8�|�dgd�g��dS)Nz#1,2,3,"I think, therefore I am",5,6)r�rqr�zI think, therefore I amr�r�rmrs r�test_quotedzTestDialectExcel.test_quotedts;�����D�!+�!+�!+� ,�	-�	-�	-�	-�	-rc�8�|�dgd�g��dS)NzJ1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw")r�rqr�z"I see," said the blind manz"as he picked up his hammer and sawrmrs r�test_quoted_quotez"TestDialectExcel.test_quoted_quotezsD�����k�!G�!G�!G� H�	I�	I�	I�	I�	Irc�B�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�rqr�z"I see,"
said the blind manz"as he picked up his
hammer and saw)�9�8r�r�rm)rr�s  r�test_quoted_nlzTestDialectExcel.test_quoted_nl�sQ����
	
���u�!J�!J�!J�!2� 1� 1� 3�	4�	4�	4�	4�	4rc�8�|�dgd�g��dS)Nz	12,12,1",)�12r�z1"r)rmrs r�test_dubious_quotez#TestDialectExcel.test_dubious_quote�s(�����{�-C�-C�-C�,D�E�E�E�E�Erc�2�|�gd��dSru�rirs r�	test_nullzTestDialectExcel.test_null�rwrc�6�|�dggd��dS)Nr�zabc
r�rs r�test_single_writerz#TestDialectExcel.test_single_writer�s"�������y�)�4�4�4�4�4rc�8�|�gd�gd��dS)N)r"r�r�r��z
1,2,abc,3,4
r�rs r�test_simple_writerz#TestDialectExcel.test_simple_writer�s)����� 3� 3� 3�4�6G�H�H�H�H�Hrc�8�|�gd�gd��dS)N)r"r�za"bc"r�r�z1,2,"a""bc""",3,4
r�rs r�test_quoteszTestDialectExcel.test_quotes��)����� 5� 5� 5�6�8O�P�P�P�P�Prc�6�|�dggd��dS�N�abc,defz"abc,def"
r�rs r�test_quote_fieldsepz$TestDialectExcel.test_quote_fieldsep��"�������}�o�>�>�>�>�>rc�8�|�gd�gd��dS)N)r"r�za
bcr�r�z1,2,"a
bc",3,4
r�rs r�
test_newlineszTestDialectExcel.test_newlines�s)����� 5� 5� 5�6�8M�N�N�N�N�NrN)rrrrErnrsrvryr{r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrkrk@s��������G�1�1�1�E�E�E�'�'�'�0�0�0�-�-�-�1�1�1�1�1�1�0�0�0�3�3�3�3�3�3�5�5�5�1�1�1�
1�1�1�7�7�7�
3�3�3�-�-�-�I�I�I�
4�
4�
4�F�F�F�'�'�'�5�5�5�I�I�I�Q�Q�Q�?�?�?�O�O�O�O�Orrkc� �eZdZejZdZdS)�EscapedExcelrYN)rrrr,r/r(rHrrrr�r��s�������n�G��J�J�Jrr�c�.�eZdZe��Zd�Zd�ZdS)�TestEscapedExcelc�6�|�dggd��dS)Nr��
abc\,def
r�rs r�test_escape_fieldsepz%TestEscapedExcel.test_escape_fieldsep�r�rc�6�|�ddgg��dS)Nr�r�rmrs r�test_read_escape_fieldsepz*TestEscapedExcel.test_read_escape_fieldsep�s"������)��
�>�>�>�>�>rN)rrrr�rEr�r�rrrr�r��s=�������l�n�n�G�?�?�?�?�?�?�?�?rr�c��eZdZdZd�Zd�ZdS)�TestDialectUnix�unixc�8�|�gd�gd��dS)N)r"�abc defr��"1","abc def","abc"
r�rs rr�z"TestDialectUnix.test_simple_writer�r�rc�8�|�dgd�g��dS)Nr�)r�r�r�rmrs r�test_simple_readerz"TestDialectUnix.test_simple_reader�s)�����6�9P�9P�9P�8Q�R�R�R�R�RrN)rrrrEr�r�rrrr�r��s?�������G�Q�Q�Q�S�S�S�S�Srr�c� �eZdZejZdZdS)�QuotedEscapedExcelrYN)rrrr,r�r(rHrrrr�r��s�������"�G��J�J�Jrr�c�.�eZdZe��Zd�Zd�ZdS)�TestQuotedEscapedExcelc�6�|�dggd��dSr�r�rs r�test_write_escape_fieldsepz1TestQuotedEscapedExcel.test_write_escape_fieldsep�r�rc�6�|�ddgg��dS)Nz"abc\,def"
r�rmrs rr�z0TestQuotedEscapedExcel.test_read_escape_fieldsep�s#�����0�I�;�-�@�@�@�@�@rN)rrrr�rEr�r�rrrr�r��sE������ � �"�"�G�?�?�?�A�A�A�A�Arr�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestDictFieldsc���tddd���5}tj|gd����}|���}|�|d��ddd��dS#1swxYwYdS)Nrqrrr)rs��f1�f2�f3��
fieldnamesr�)rr,�
DictWriter�writeheaderrD)rr{r=�writeheader_return_values    r�test_writeheader_return_valuez,TestDictFields.test_writeheader_return_value�s���
�4�'�2�
>�
>�
>�	;�'��^�G�:L�:L�:L�M�M�M�F�'-�'9�'9�';�';�$����5�r�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�AA#�#A'�*A'c��tddd���5}tj|gd����}|���|�d��|�|���d��|�d	d
d���|�d��|���|�|���d��ddd��dS#1swxYwYdS)
Nrqrrr)rsr�r�r�
f1,f2,f3
r�r�)r�r�z	10,,abc
)	rr,r�r�rwrD�readlinervrxr�s   r�test_write_simple_dictz%TestDictFields.test_write_simple_dict�s/��
�4�'�2�
>�
>�
>�	<�'��^�G�:L�:L�:L�M�M�M�F���� � � ��L�L��O�O�O����W�-�-�/�/��@�@�@��O�O�2�U�3�3�4�4�4��L�L��O�O�O����������W�\�\�^�^�]�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�CC3�3C7�:C7c�X�t��}tj|gd����}|���|�|���d��|�dddd�ddd	d�g��|�|���d
��dS)Nr�r�r�r"r��fr���xyzzf1,f2,f3
1,abc,f
2,5,xyz
)rr,r�r�rDr�r�r�s   r�test_write_multiple_dict_rowsz,TestDictFields.test_write_multiple_dict_rows�s����*�*�����4F�4F�4F�G�G�G������������)�)�+�+�^�<�<�<�����%�s�;�;�!"�!�5�9�9�;�	<�	<�	<�����)�)�+�+�=�	?�	?�	?�	?�	?rc�n�t��}|�ttj|��dSr
)rr*r+r,r��rr{s  r�test_write_no_fieldsz#TestDictFields.test_write_no_fields�s+���*�*�����)�S�^�W�=�=�=�=�=rc��tddd���5}tj|gd����}|�t��5}|�ddd	d
���ddd��n#1swxYwYt
|j��}|�d|��|�d|��|�	d
|��|�d|��ddd��dS#1swxYwYdS)Nrqrrr)rsr�r�r��spamr�)�f4r�r"r�z'f4'z'f2'r�)
rr,r�r*r�rv�str�	exception�assertIn�assertNotIn)rr{r=�cxr�s     r�#test_write_fields_not_in_fieldnamesz2TestDictFields.test_write_fields_not_in_fieldnames�s���
�4�'�2�
>�
>�
>�		*�'��^�G�:L�:L�:L�M�M�M�F��"�"�:�.�.�
D�"����r��E� B� B�C�C�C�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��B�L�)�)�I��M�M�,�	�2�2�2��M�M�&�)�,�,�,����V�Y�/�/�/��M�M�#�y�)�)�)�		*�		*�		*�		*�		*�		*�		*�		*�		*�		*�		*�		*����		*�		*�		*�		*�		*�		*s6�3C0�A,� C0�,A0	�0C0�3A0	�4A/C0�0C4�7C4c�x�t��}|�ttj|ddgd���dS)Nr�r��raised��extrasaction)rr*r�r,r�r�s  r�&test_typo_in_extrasaction_raises_errorz5TestDictFields.test_typo_in_extrasaction_raises_error�sC���*�*�����*�c�n�g��d�|�'/�	�	1�	1�	1�	1�	1rc��t��}tj|ddgd���}ddddd	�}|�ttjj||��dS)
Nr�r��raiser�rr"r�r���f0r�r�r�)rr,r�r*r�rv�rr{r=�dictrows    r�)test_write_field_not_in_field_names_raisez8TestDictFields.test_write_field_not_in_field_names_raise�s[���*�*�����$���G�L�L�L���!�1�A�6�6�����*�c�n�&=�v�w�O�O�O�O�Orc���t��}tj|ddgd���}ddddd	�}tj�||��|�|���d
��dS)Nr�r��ignorer�rr"r�r�r�z1,2
)rr,r�rvrDr�r�s    r�*test_write_field_not_in_field_names_ignorez9TestDictFields.test_write_field_not_in_field_names_ignore�sv���*�*�����$���H�M�M�M���!�1�A�6�6��������0�0�0�����)�)�+�+�Y�7�7�7�7�7rc�,�tdd���5}|�d��|�d��tj|gd����}|�t
|��dd	d
d���ddd��dS#1swxYwYdS)Nrqrrr4z	1,2,abc
rr�r�r�rqr��rr:rwr,�
DictReaderrDr��rr{r4s   r�test_read_dict_fieldsz$TestDictFields.test_read_dict_fieldss���
�4�'�
2�
2�
2�	P�g��M�M�-�(�(�(��L�L��O�O�O��^�G�/A�/A�/A�C�C�C�F����T�&�\�\�#�S��+N�+N�O�O�O�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Ps�A*B	�	B
�B
c�^�tdd���5}|�d��|�d��tj|��}|�t
|��dddd	���|�|jgd	���ddd��dS#1swxYwYdS)
Nrqrrr4�f1,f2,f3
1,2,abc
rr�rqr�r�)rr:rwr,r�rDr�r�r�s   r�test_read_dict_no_fieldnamesz+TestDictFields.test_read_dict_no_fieldnamess��
�4�'�
2�
2�
2�	D�g��M�M�3�4�4�4��L�L��O�O�O��^�G�,�,�F����T�&�\�\�#�S��+N�+N�O�O�O����V�.�0B�0B�0B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�BB"�"B&�)B&c	��tdd���5}|�d��|�d��tj|ttj|�������}|�|jgd���|�t|��dd	d
d���ddd��dS#1swxYwYdS)Nrqrrr4r�rr�r�r�rqr�)	rr:rwr,r�r�r4rDr�r�s   r�#test_read_dict_fieldnames_from_filez2TestDictFields.test_read_dict_fieldnames_from_files!��
�4�'�
2�
2�
2�	P�g��M�M�3�4�4�4��L�L��O�O�O��^�G�/3�C�J�w�4G�4G�/H�/H�J�J�J�F����V�.�0B�0B�0B�C�C�C����T�&�\�\�#�S��+N�+N�O�O�O�
	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Ps�B$C�C�
Cc	��ddl}tdd���5}|�d��|�d��t	j|��}t
|��}|�|g|��D]9}|�|j	gd���|�|ddd	d����:	ddd��dS#1swxYwYdS)
Nrrqrrr4r�r�r�rqr�)
�	itertoolsrr:rwr,r�r��chainrDr�)rrr{r4�firstr�s      r�test_read_dict_fieldnames_chainz.TestDictFields.test_read_dict_fieldnames_chains;������
�4�'�
2�
2�
2�	K�g��M�M�3�4�4�4��L�L��O�O�O��^�G�,�,�F���L�L�E� ����w��7�7�
K�
K��� � ��!2�4F�4F�4F�G�G�G�� � ��S��5�&I�&I�J�J�J�J�
K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks�BC�C�
Cc�0�tdd���5}|�d��|�d��tj|ddg���}|�t
|��d	d
gd�d���ddd��dS#1swxYwYdS)
Nrqrrr4�1,2,abc,4,5,6
rr�r�r�r�rq�r�rrr�r�)r�r�Nr�r�s   r�test_read_longzTestDictFields.test_read_long*s��
�4�'�
2�
2�
2�	L�g��M�M�-�.�.�.��L�L��O�O�O��^�G�04�d�|�=�=�=�F����T�&�\�\�#�S�3I�3I�3I�,K�,K�
L�
L�
L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�A,B�B�Bc�2�tdd���5}|�d��|�d��tj|ddgd�	��}|�t
|��d
dgd�d
���ddd��dS#1swxYwYdS)Nrqrrr4r	rr�r��_rest)r��restkeyr�rqr
�r�r�r
r�r�s   r�test_read_long_with_restz'TestDictFields.test_read_long_with_rest3s��
�4�'�
2�
2�
2�	O�g��M�M�-�.�.�.��L�L��O�O�O��^�G�04�d�|�W�N�N�N�F����T�&�\�\�#�S�6L�6L�6L�,N�,N�
O�
O�
O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�A-B�B�Bc�f�tdd���5}|�d��|�d��tj|d���}|�|jdd	g��|�t|��d
dgd�d
���ddd��dS#1swxYwYdS)Nrqrrr4zf1,f2
1,2,abc,4,5,6
rr
�rr�r�r�rqr
r)rr:rwr,r�rDr�r�r�s   r�&test_read_long_with_rest_no_fieldnamesz5TestDictFields.test_read_long_with_rest_no_fieldnames<s��
�4�'�
2�
2�
2�	O�g��M�M�6�7�7�7��L�L��O�O�O��^�G�W�=�=�=�F����V�.��t��=�=�=����T�&�\�\�#�S�6L�6L�6L�,N�,N�
O�
O�
O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�BB&�&B*�-B*c��tdd���5}|�d��|�d��tj|d���d���}|�t|��d	d
ddd
dd���|�t|��d	d
ddddd���ddd��dS#1swxYwYdS)Nrqrrr4z1,2,abc,4,5,6
1,2,abc
r�1 2 3 4 5 6�DEFAULT)r��restvalr�rqr�rrr�r��r�rqr�rrr�r�)rr:rwr,r��splitrDr�r�s   r�test_read_shortzTestDictFields.test_read_shortEs8��
�4�'�
2�
2�
2�
	>�g��M�M�8�9�9�9��L�L��O�O�O��^�G�/<�/B�/B�/D�/D�,5�7�7�7�F�
���T�&�\�\��3�U�25�C�c�,K�,K�
L�
L�
L����T�&�\�\��3�U�2;�)�2;�,=�,=�
>�
>�
>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>����
	>�
	>�
	>�
	>�
	>�
	>s�B(C�C�Cc	��gd�}tj|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��
2147483648z43.0e12�17r�r6)�i1�float�i2�s1�s2�r,r�rrDr�)r�sampler4s   r�test_read_multizTestDictFields.test_read_multiRs����������+>�+D�+D�+F�+F�H�H�H������f���l�2;�/3�/4�/4�	(6�(6�	7�	7�	7�	7�	7rc
��tjgd�d������}|�t	|��dddddd	d
���|�t	|��dddddd	d
���dS)N)r	rAr	rr�r�rqr�rrr�r�rr#�rr4s  r�test_read_with_blanksz$TestDictFields.test_read_with_blanksas�����!6�!6�!6�+8�+>�+>�+@�+@�B�B�B��	
����f���S�s��.1��#�(G�(G�	H�	H�	H�����f���S�s��.1��#�(G�(G�	H�	H�	H�	H�	Hrc
��tjdgd���d���}|�t	|��ddddd	d
d���dS)Nz1;2;abc;4;5;6
rr�)r�rr�rqr�rrr�r�rr#r's  r�test_read_semi_sepz!TestDictFields.test_read_semi_sepjsz����!4� 5�+8�+>�+>�+@�+@�*-�/�/�/��	
����f���S�s��.1��#�(G�(G�	H�	H�	H�	H�	HrN)rrrr�r�r�r�r�r�r�r�r�rrrrrrrr%r(r*rrrr�r��sQ������;�;�;�	<�	<�	<�?�?�?�>�>�>�
*�
*�
*�1�1�1�
P�P�P�8�8�8�P�P�P�D�D�D�P�P�P�	K�	K�	K�L�L�L�O�O�O�O�O�O�>�>�>�
7�
7�
7�H�H�H�H�H�H�H�Hrr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestArrayWritesc���ddl}d�td��D��}|�d|��}tddd���5}tj|d	�
��}|�|��d�d�|D����d
z}|�d��|�|�	��|��ddd��dS#1swxYwYdS)Nrc��g|]}d|z
��S)�r��.0r�s  r�
<listcomp>z2TestArrayWrites.test_int_write.<locals>.<listcomp>ts��.�.�.�q�R��T�.�.�.rr/r�rqrrr)rsrr5r@c�,�g|]}t|����Sr�r�r0s  rr2z2TestArrayWrites.test_int_write.<locals>.<listcomp>z��� 3� 3� 3�A��Q��� 3� 3� 3rrA�
�arrayr]rr,r=rv�joinrwrDrx�rr7�contentsr�r{r=r=s       r�test_int_writezTestArrayWrites.test_int_writers%������.�.�E�"�I�I�.�.�.���K�K��X�&�&��
�4�'�2�
>�
>�
>�	7�'��Z���9�9�9�F��O�O�A�����x�x� 3� 3�� 3� 3� 3�4�4�V�;�H��L�L��O�O�O����W�\�\�^�^�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7��BC�C"�%C"c���ddl}d�td��D��}|�d|��}tddd���5}tj|d	�
��}|�|��d�d�|D����d
z}|�d��|�|�	��|��ddd��dS#1swxYwYdS)Nrc��g|]
}d|z
dz��S�r/g�������?rr0s  rr2z5TestArrayWrites.test_double_write.<locals>.<listcomp>�� ��2�2�2�1�R��T�3�J�2�2�2rr/r�rqrrr)rsrr5r@c�,�g|]}t|����Srr4r0s  rr2z5TestArrayWrites.test_double_write.<locals>.<listcomp>�r5rrAr6r9s       r�test_double_writez!TestArrayWrites.test_double_write~�%������2�2��b�	�	�2�2�2���K�K��X�&�&��
�4�'�2�
>�
>�
>�	7�'��Z���9�9�9�F��O�O�A�����x�x� 3� 3�� 3� 3� 3�4�4�V�;�H��L�L��O�O�O����W�\�\�^�^�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7r<c���ddl}d�td��D��}|�d|��}tddd���5}tj|d	�
��}|�|��d�d�|D����d
z}|�d��|�|�	��|��ddd��dS#1swxYwYdS)Nrc��g|]
}d|z
dz��Sr?rr0s  rr2z4TestArrayWrites.test_float_write.<locals>.<listcomp>�r@rr/r�rqrrr)rsrr5r@c�,�g|]}t|����Srr4r0s  rr2z4TestArrayWrites.test_float_write.<locals>.<listcomp>�r5rrAr6r9s       r�test_float_writez TestArrayWrites.test_float_write�rCr<c��ddl}ddl}|�d|j��}tddd���5}t	j|d���}|�|��d	�|��d
z}|�d��|�	|�
��|��ddd��dS#1swxYwYdS)Nr�urqrrr)rsrr5r@rA)r7�string�
ascii_lettersrr,r=rvr8rwrDrx)rr7rJr�r{r=r=s       r�test_char_writezTestArrayWrites.test_char_write�s
�����������K�K��V�1�2�2��
�4�'�2�
>�
>�
>�	7�'��Z���9�9�9�F��O�O�A�����x�x��{�{�6�)�H��L�L��O�O�O����W�\�\�^�^�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�BC�C�CN)rrrr;rBrGrLrrrr,r,qsP������
7�
7�
7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7rr,c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestDialectValidityc��Gd�dtj��}|��}|�|jtj��d|_|�tj|��d|_tj|_d|_	|��}|�|jtj��|�|j	d��|�
|j��d|_	|�tj��5}|��ddd��n#1swxYwY|�t|j��d��d|_	|�tj��5}|��ddd��n#1swxYwY|�t|j��d��d|_	|�tj��5}|��ddd��n#1swxYwY|�t|j��d	��dS)
Nc�0�eZdZdZdZdZdZdZej	Z
dS)�3TestDialectValidity.test_quoting.<locals>.mydialectr�rYFTrAN�rrrrrHrGrJr&r,r/r(rrrr'rQ��/�������I��J��K�#��#�N��n�G�G�Grr'TrBr)z("quotechar" must be a 1-character stringz''r�z+"quotechar" must be string or None, not int)
r,r*rDr(r/r*r-rGr.r$�
assertTruer�r��rr'r��cms    r�test_quotingz TestDialectValidity.test_quoting�s���	%�	%�	%�	%�	%���	%�	%�	%�
�I�K�K�������C�N�3�3�3� �	�����#�)�Y�/�/�/� $�	���M�	��!�	���I�K�K�������C�M�2�2�2������c�*�*�*�����
�&�&�&� �	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�C�	E�	E�	E�#�	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�C�	E�	E�	E� �	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�F�	H�	H�	H�	H�	Hs6�D/�/D3�6D3�F�F#�&F#�8H�H�Hc���Gd�dtj��}|��}|�|jd��d|_|�tj��5}|��ddd��n#1swxYwY|�t
|j��d��d|_|�tj��5}|��ddd��n#1swxYwY|�t
|j��d��d|_|�tj��5}|��ddd��n#1swxYwY|�t
|j��d��d	|_|�tj��5}|��ddd��n#1swxYwY|�t
|j��d
��d|_|�tj��5}|��ddd��n#1swxYwY|�t
|j��d��dS)Nc�0�eZdZdZdZdZdZdZej	Z
dS)�5TestDialectValidity.test_delimiter.<locals>.mydialectr�rYFTrANrRrrrr'rZ�rSrr'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*rDrr*r-r�r�rUs    r�test_delimiterz"TestDialectValidity.test_delimiter�s���	%�	%�	%�	%�	%���	%�	%�	%�
�I�K�K�������c�*�*�*�#�	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�C�	E�	E�	E�!�	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�C�	E�	E�	E�#�	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�@�	B�	B�	B� �	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�>�	@�	@�	@�#�	��
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�C�	E�	E�	E�	E�	EsZ�$A;�;A?�A?�C+�+C/�2C/�E�E�"E�4G�G�G�$H;�;H?�H?c���Gd�dtj��}|��}|�|jd��d|_|�tjd��5|��ddd��n#1swxYwYd|_|�tjd��5|��ddd��n#1swxYwYd|_|�tjd��5|��ddd��n#1swxYwYd	|_|�tjd
��5|��ddd��dS#1swxYwYdS)Nc�0�eZdZdZdZdZdZdZej	Z
dS)�6TestDialectValidity.test_escapechar.<locals>.mydialectr�rYFTrANrRrrrr'r`�rSrr'rYr)z)"escapechar" must be a 1-character stringz**�*z."escapechar" must be string or None, not bytesr�z,"escapechar" must be string or None, not int)r,r*rDrH�assertRaisesRegexr-)rr'r�s   r�test_escapecharz#TestDialectValidity.test_escapechar�sl��	%�	%�	%�	%�	%���	%�	%�	%�
�I�K�K�������t�,�,�,�!�	��
�
#�
#�C�I�/Z�
[�
[�	�	��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	� $�	��
�
#�
#�C�I�/Z�
[�
[�	�	��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	� $�	��
�
#�
#�C�I�/_�
`�
`�	�	��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	� !�	��
�
#�
#�C�I�/]�
^�
^�	�	��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sH�%A<�<B�B�.C�C	�C	�7D�D�D�E�E�Ec��Gd�dtj��}|��}|�|jd��d|_|��}|�|jd��d|_|�tj��5}|��ddd��n#1swxYwY|�t
|j��d��dS)Nc�0�eZdZdZdZdZdZdZej	Z
dS)�:TestDialectValidity.test_lineterminator.<locals>.mydialectr�rYFTrANrRrrrr'rf
rSrr'rAr[r�z!"lineterminator" must be a string)r,r*rDr&r*r-r�r�rUs    r�test_lineterminatorz'TestDialectValidity.test_lineterminators,��	%�	%�	%�	%�	%���	%�	%�	%�
�I�K�K������)�6�2�2�2�#(�	� ��I�K�K������)�5�1�1�1�#$�	� �
�
�
�s�y�
)�
)�	�R��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����R�\�*�*�<�	>�	>�	>�	>�	>s�B'�'B+�.B+c��d�}dD]�}|�|���5|�tj||d��|�tj||d��|�tj||d��|�tj||d��ddd��n#1swxYwY��dS)Nc�l�Gd�dtj��}t|||��|��}dS)Nc��eZdZdS)�QTestDialectValidity.test_invalid_chars.<locals>.create_invalid.<locals>.mydialectNrRrrrr'rk#s�������rr')r,r*rN)�
field_name�valuer'r�s    r�create_invalidz>TestDialectValidity.test_invalid_chars.<locals>.create_invalid"sO��
�
�
�
�
�C�K�
�
�
��I�z�5�1�1�1��	���A�A�Ar)rrHr$)rlr)r��xr�)r�r*r,r-)rrnrls   r�test_invalid_charsz&TestDialectValidity.test_invalid_chars!s��	�	�	�C�	L�	L�J������4�4�
L�
L��!�!�#�)�^�Z��L�L�L��!�!�#�)�^�Z��O�O�O��!�!�#�)�^�Z��N�N�N��!�!�#�)�^�Z��K�K�K�	
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L��	L�	Ls�B	B3�3B7	�:B7	N)rrrrWr]rcrgrprrrrNrN�sl������&H�&H�&H�P'E�'E�'E�R���6>�>�>�*L�L�L�L�LrrNc���eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
ed��Zed
��Zed��Zed��ZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�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'
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
                        zabcdef
ghijklmno
ghijkl
c���tj��}|�|�|j����|�|�|j����dSr
)r,�SnifferrT�
has_header�sample12�assertFalse�sample13�r�sniffers  r�test_issue43625zTestSniffer.test_issue43625�sY���+�-�-������*�*�4�=�9�9�:�:�:�����+�+�D�M�:�:�;�;�;�;�;rc���tj��}|�|�|j����|�|�|j����dS)zDMore to document existing (unexpected?) behavior than anything else.N)r,rtrwru�sample10�sample11rys  r�test_has_header_stringsz#TestSniffer.test_has_header_strings�s[���+�-�-������+�+�D�M�:�:�;�;�;�����+�+�D�M�:�:�;�;�;�;�;rc���tj��}|�|�|j��d��|�|�|j|jz��d��dS�NFT)r,rtrFru�sample1�header1rys  r�test_has_headerzTestSniffer.test_has_header��b���+�-�-���
�
�g�(�(���6�6��>�>�>��
�
�g�(�(�����)D�E�E�t�L�L�L�L�Lrc���tj��}|�|�|j��d��|�|�|j|jz��d��dSr�)r,rtrFru�sample8�header2rys  r�'test_has_header_regex_special_delimiterz3TestSniffer.test_has_header_regex_special_delimiter�r�rc��tj��}dD]�}|�|��5|�|d��}|�|jd��|�|jd��|�|jd��|�|j	d��ddd��n#1swxYwY��dS)N)z	;'123;4';z'123;4';z;'123;4'z'123;4'z,;r�r)F)
r,rtr��sniffrDrr$rFrGrJ)rrz�headerrEs    r�test_guess_quote_and_delimiterz*TestSniffer.test_guess_quote_and_delimiter�s���+�-�-��F�	?�	?�F����f�%�%�
?�
?�!�-�-���5�5��� � ��!2�C�8�8�8�� � ��!2�C�8�8�8��
�
�g�1�5�9�9�9��
�
�g�6��>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?��	?�	?s�BB<�<C	�C	c���tj��}|�|j��}|�|jd��|�|jd��|�|jd��|�|j	��}|�|jd��|�|jd��|�|jd��dS)Nr@rBTrCr)F)
r,rtr�r�rDrr$rFrJ�sample2�rrzrEs   r�
test_sniffzTestSniffer.test_sniff�s����+�-�-���-�-���-�-������*�C�0�0�0�����*�C�0�0�0��
�
�g�.��5�5�5��-�-���-�-������*�C�0�0�0�����*�C�0�0�0��
�
�g�.��6�6�6�6�6rc���tj��}|�|j��}|�|j|j��|�|jd���}|�|jd��|�|jd���}|�|jd��|�|j��}|�|jd��|�|j��}|�|jd��|�|j	��}|�|jd��|�|j
��}|�|jd��|�|jd	��|�|j��}|�|jd
��|�|j
��}|�|jd
��|�|jd	��|�|j��}|�|jd��dS)Nz?,)�
delimiters�?z/,�/r�rrKr)�+r�)r,rtr��sample3r�rrD�sample4�sample5�sample6�sample7r$r��sample9�sample14r�s   r�test_delimiterszTestSniffer.test_delimiters�s���+�-�-���-�-���-�-��	
�
�
�g�'���6�6�6��-�-����-�>�>������*�C�0�0�0��-�-����-�>�>������*�C�0�0�0��-�-���-�-������*�C�0�0�0��-�-���-�-������*�D�1�1�1��-�-���-�-������*�C�0�0�0��-�-���-�-������*�C�0�0�0�����*�C�0�0�0��-�-���-�-������*�C�0�0�0��-�-���-�-������*�C�0�0�0�����*�C�0�0�0��-�-��
�.�.������*�D�1�1�1�1�1rc�4�tj��}|�|j��}|�|j��|�|j��}|�|j��|�|j��}|�|j��|�|j	��}|�|j��|�|j
��}|�|j��dSr
)r,rtr�r�rwrGr�r�rTr�r�r�s   r�test_doublequotezTestSniffer.test_doublequote�s����+�-�-���-�-���-�-������,�-�-�-��-�-���-�-������,�-�-�-��-�-���-�-������+�,�,�,��-�-���-�-������,�-�-�-��-�-���-�-������+�,�,�,�,�,rN)rrrr�r�r�r�r�r�r�r�r�r�r�rr}r~rvrxr�r{rr�r�r�r�r�r�rrrrrrr0sB�������G��G��G��G��G�/�G�"�G�*�G��G��G��G��v����H��v����H��v����H��v����H��H�<�<�<�
<�<�<�M�M�M�
M�M�M�
?�?�?�
7�
7�
7�2�2�2�8-�-�-�-�-rrrc��eZdZd�ZeZdS)�NULc��dSr
r)�srOs  rr:z	NUL.write�s���rN)rrrr:�
writelinesrrrr�r��s"������
�
�
��J�J�Jrr��gettotalrefcountzrequires sys.gettotalrefcount()c�&�eZdZd�Zd�Zd�Zd�ZdS)�	TestLeaksc��d}tj��}td��D]�}tj��|�tjg��tj��}tjdg��tjdg��tjdg��||z
}|}��|�	|d��dS)Nrr/�a,b,c
r��
�sysr�r]�gc�collectrD�garbager,r4�
assertLess)r�delta�lastrcr��rcs     r�test_create_readzTestLeaks.test_create_read�s������%�'�'���r���	�	�A��J�L�L�L����R�Z��,�,�,��%�'�'�B��J��}�%�%�%��J��}�%�%�%��J��}�%�%�%��v�I�E��F�F�����q�!�!�!�!�!rc��d}tj��}t��}td��D]�}t	j��|�tjg��tj��}tj	|��tj	|��tj	|��||z
}|}��|�
|d��dS)Nrr/r�)r�r�r�r]r�r�rDr�r,r=r�)rr�r�r�r�r�s      r�test_create_writezTestLeaks.test_create_write�s������%�'�'���E�E���r���	�	�A��J�L�L�L����R�Z��,�,�,��%�'�'�B��J�q�M�M�M��J�q�M�M�M��J�q�M�M�M��v�I�E��F�F�����q�!�!�!�!�!rc�X�d}dgdz}tj��}td��D]h}tj��|�tjg��tj��}tj|��}|D]}�||z
}|}�i|�	|d��dS)Nrr�r�r/r�)rr�r�r�r�r��rdrr�s        r�	test_readzTestLeaks.test_read�s������}�Q����%�'�'���r���	�	�A��J�L�L�L����R�Z��,�,�,��%�'�'�B��*�T�"�"�C��
�
����v�I�E��F�F�����q�!�!�!�!�!rc��d}gd�gdz}t��}tj��}td��D]}}t	j��|�tjg��tj��}tj	|��}|D]}|�
|���||z
}|}�~|�|d��dS)Nrr<r�r/)r�r�r�r]r�r�rDr�r,r=rvr�)	rr�r�r�r�r�r�r=r�s	         r�
test_writezTestLeaks.test_writes��������y��{���E�E���%�'�'���r���	�	�A��J�L�L�L����R�Z��,�,�,��%�'�'�B��Z��]�]�F��
%�
%������$�$�$�$��v�I�E��F�F�����q�!�!�!�!�!rN)rrrr�r�r�r�rrrr�r��sP������
"�
"�
"�"�"�"� "�"�"� "�"�"�"�"rr�c�"�eZdZgd�Zd�Zd�ZdS)�TestUnicode)uMartin von LöwisuMarc André LemburgzGuido van RossumuFrançois Pinardc�`�tddd���5}|�d�|j��dz��|�d��tj|��}|�t|��|jg��ddd��dS#1swxYwYdS�Nrqr)rrr;r@rAr)	rr:r8�namesrwr,r4rDr�r�s   r�test_unicode_readzTestUnicode.test_unicode_read$s���
�4��g�
>�
>�
>�	9�'��M�M�#�(�(�4�:�.�.��7�8�8�8��L�L��O�O�O��Z��(�(�F����T�&�\�\�D�J�<�8�8�8�		9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�BB#�#B'�*B'c�l�tddd���5}tj|��}|�|j��d�|j��dz}|�d��|�|���|��ddd��dS#1swxYwYdSr�)	rr,r=rvr�r8rwrDrx)rr{r=r=s    r�test_unicode_writezTestUnicode.test_unicode_write,s���
�4��g�
>�
>�
>�	7�'��Z��(�(�F��O�O�D�J�'�'�'��x�x��
�+�+�F�2�H��L�L��O�O�O����W�\�\�^�^�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�B	B)�)B-�0B-N)rrrr�r�r�rrrr�r�sC������
!�
!�
!�E�
9�9�9�7�7�7�7�7rr�c��eZdZd�Zd�ZdS)�KeyOrderingTestc��t��}td��D]�}tddd���5}tj||��}|���|�d��tj|��}t|j	��}|�
||��|�|��ddd��n#1swxYwY��|�
t|��dd��dS)	N�abcderqr)rrr;r�xz@Key ordering: some key permutations not collected (expected 120))
�setrrr,r�r�rwr��tupler�rD�add�len)r�	resultset�keys�
fileobject�dw�dr�kts       r�,test_ordering_for_the_dict_reader_and_writerz<KeyOrderingTest.test_ordering_for_the_dict_reader_and_writer6s*���E�E�	� ��)�)�	"�	"�D��t�R�'�B�B�B�
"�j��^�J��5�5����� � � �����"�"�"��^�J�/�/���2�=�)�)��� � ��r�*�*�*��
�
�b�!�!�!�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"����
"�
"�
"�
"��	
����Y����.p�q�q�q�q�qs�BC�C	�C	c�6�td�����}|�tt	j|����t
ddg��t
dddddgfg��t
dd	g��t
d
dg��g��|�tt	j|d�
����t
ddg��t
dddddgfg��t
dd	g��t
d
dg��g��|d=|�tt	j|ddg�����t
ddg��t
dddddgfg��t
ddg��t
ddg��g��dS)Nz�            FirstName,LastName
            Eric,Idle
            Graham,Chapman,Over1,Over2

            Under1
            John,Cleese
        )�	FirstName�Eric)�LastName�Idle)r��Graham)r��Chapman�Over1�Over2)r��Under1)r�N)r��John)r��Cleese�	OtherInforr�fname�lnamer�)r�r�)r�r�)r�r�)r�r�)r�r�)r�N)r�r�)r�r�)r�
splitlinesrDr�r,r�r	)r�datas  r�test_ordered_dict_readerz(KeyOrderingTest.test_ordered_dict_readerDs�����
�
��Z�\�\�	
�	
����c�n�T�2�2�3�3�
�/�1E�F�
G�
G�
�1�3J��'�7�!3�4�6�7�7�
�1�3E�F�
G�
G�
�/�1G�H�
I�
I�	
�	�	�	�	
����c�n�T�;�G�G�G�H�H�
�/�1E�F�
G�
G�
�1�3J�&��'�(:�;�=�>�>�
�1�3E�F�
G�
G�
�/�1G�H�
I�
I�	
�	�	�	�
��G�����c�n�T�w��>P�Q�Q�Q�R�R�
�+�->�?�
@�
@�
�-�/C��'�7�!3�4�6�7�7�
�-��?�
@�
@�
�+�-@�A�
B�
B�	
�	�	�	�	�	rN)rrrr�r�rrrr�r�4s5������r�r�r�!�!�!�!�!rr�c��eZdZd�Zd�ZdS)�MiscTestCasec�H�ddh}tj|td|���dS)Nr�__version__)r,�_csv)�extra)r�check__all__r,)rr�s  r�test__all__zMiscTestCase.test__all__is,���M�*����T�3��u�E�E�E�E�E�Erc�6�Gd�dtj��}dS)Nc��eZdZdS)�+MiscTestCase.test_subclassable.<locals>.FooNrRrrr�Foor�os�������rr�)r,r-)rr�s  r�test_subclassablezMiscTestCase.test_subclassablems$��!�!�!�!�!�#�)�!�!�!�!�!rN)rrrr�r�rrrr�r�hs5������F�F�F�"�"�"�"�"rr��__main__)-rZr��unittest�ior�tempfilerr,r�r^�testr�test.supportrrr�textwrapr�collectionsr	r�TestCaserrrdrkrr�r�r�r�r�r�r,rNrrr��
skipUnless�hasattrr�r�r�r�r�mainrrr�<module>r�s�������
�
�
�
�����������"�"�"�"�"�"�
�
�
�
�	�	�	�	�
�
�
�
�������(�(�(�(�(�(�"�"�"�"�"�"�������#�#�#�#�#�#���������
I.�I.�I.�I.�I.�x� �I.�I.�I.�VKK�KK�KK�KK�KK�(�+�KK�KK�KK�Z>�>�>�>�>�(�#�>�>�>� _O�_O�_O�_O�_O�{�_O�_O�_O�B�����3�9����?�?�?�?�?�{�?�?�?�S�S�S�S�S�k�S�S�S�����������A�A�A�A�A�[�A�A�A�kH�kH�kH�kH�kH�X�&�kH�kH�kH�Z,7�,7�,7�,7�,7�h�'�,7�,7�,7�\NL�NL�NL�NL�NL�(�+�NL�NL�NL�bc-�c-�c-�c-�c-�(�#�c-�c-�c-�J��������
���W�W�S�"4�5�5�6�8�8�?"�?"�?"�?"�?"��!�?"�?"�8�8�?"�B7�7�7�7�7�(�#�7�7�7�.1�1�1�1�1�h�'�1�1�1�h"�"�"�"�"�8�$�"�"�"��z����H�M�O�O�O�O�O��r