o
    RÎVˆ  ã                   @   sH  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlZzeZW n   Y eefZG dd„ dejƒZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZ dS )é    N)ÚEncodedFile)ÚBytesIOc                   @   sà   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6S )7Ú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                 C   sþ   |   t|¡ |   t|d ¡ | j t||dd� | j t||dd� | j t||dd� |   tj||d¡ | j t||d d� | j t||dd� | j t||dd� | j t||d d� | j t||dd� | j t||d d	� | j t||tjd
d� | j t||tjd d� d S )Nr   ©Úbad_attr©Ú	delimiterÚXXÚfooé   )Ú	quotechar)Úlineterminator©ÚquotingÚ )r   r   )ÚassertRaisesÚpy_compat_excÚcsvÚErrorÚ	QUOTE_ALL)ÚselfÚctorÚarg© r   úA/var/www/html/env/lib/python3.10/site-packages/unicodecsv/test.pyÚ_test_arg_valid#   s$   
ÿ

ÿzTest_Csv._test_arg_validc                 C   ó   |   tjg ¡ d S ©N)r   r   Úreader©r   r   r   r   Útest_reader_arg_valid5   ó   zTest_Csv.test_reader_arg_validc                 C   ó   |   tjtƒ ¡ d S r   )r   r   Úwriterr   r   r   r   r   Útest_writer_arg_valid8   ó   zTest_Csv.test_writer_arg_validc                 G   sÚ   ||Ž }|   |jjd¡ |   |jjd¡ |   |jjd ¡ |   |jjd¡ |   |jjd¡ |   |jjtj	¡ |   |jj
d¡ |   |jjd¡ |  tt|jd¡ |  tt|jdd¡ |  tt|jd¡ |  tt|jdd ¡ d S )	Nú,Tz
ú"Fr   ú:r   )ÚassertEqualÚdialectr   ÚdoublequoteÚ
escapecharr   r   r   r   ÚQUOTE_MINIMALÚskipinitialspaceÚstrictr   r   ÚdelattrÚsetattr)r   r   ÚargsÚobjr   r   r   Ú_test_default_attrs;   s*   ÿÿÿÿzTest_Csv._test_default_attrsc                 C   r   r   )r4   r   r   r   r   r   r   Útest_reader_attrsP   r!   zTest_Csv.test_reader_attrsc                 C   r"   r   )r4   r   r#   r   r   r   r   r   Útest_writer_attrsS   r%   zTest_Csv.test_writer_attrsc              
   G   s®   t dddddtjddd�}||i |¤Ž}|  |jjd¡ |  |jjd¡ |  |jjd¡ |  |jjd¡ |  |jj	d¡ |  |jj
tj¡ |  |jjd¡ |  |jjd¡ d S )Nr(   Fú\úÚ*T)r   r+   r,   r   r   r   r.   r/   )Údictr   Ú
QUOTE_NONEr)   r*   r   r+   r,   r   r   r   r.   r/   )r   r   r2   Úkwargsr3   r   r   r   Ú_test_kw_attrsV   s   ýzTest_Csv._test_kw_attrsc                 C   r   r   )r=   r   r   r   r   r   r   Útest_reader_kw_attrsf   r!   zTest_Csv.test_reader_kw_attrsc                 C   r"   r   )r=   r   r#   r   r   r   r   r   Útest_writer_kw_attrsi   r%   zTest_Csv.test_writer_kw_attrsc                 G   s¦   G dd„ dƒ}||f }||Ž }|   |jjd¡ |   |jjd¡ |   |jjd¡ |   |jjd¡ |   |jjd¡ |   |jjtj	¡ |   |jj
d¡ |   |jjd¡ d S )	Nc                   @   s.   e Zd ZdZdZdZdZdZej	Z
dZdZdS )z-Test_Csv._test_dialect_attrs.<locals>.dialectú-Fú^ú$ú#TN)Ú__name__Ú
__module__Ú__qualname__r   r+   r,   r   r   r   r   r   r.   r/   r   r   r   r   r*   n   s    r*   r@   FrA   rB   rC   T)r)   r*   r   r+   r,   r   r   r   r   r   r.   r/   )r   r   r2   r*   r3   r   r   r   Ú_test_dialect_attrsl   s   
	zTest_Csv._test_dialect_attrsc                 C   r   r   )rG   r   r   r   r   r   r   Útest_reader_dialect_attrs‚   r!   z"Test_Csv.test_reader_dialect_attrsc                 C   r"   r   )rG   r   r#   r   r   r   r   r   Útest_writer_dialect_attrs…   r%   z"Test_Csv.test_writer_dialect_attrsc              	   K   sŠ   t  ¡ \}}t |d¡}z.tj|fi |¤Ž}| |¡ | d¡ |  | 	¡ ||j
j d¡ ¡ W | ¡  t |¡ d S | ¡  t |¡ w )Núw+br   úutf-8)ÚtempfileÚmkstempÚosÚfdopenr   r#   ÚwriterowÚseekr)   Úreadr*   r   ÚencodeÚcloseÚunlink)r   ÚfieldsÚexpectr<   ÚfdÚnameÚfileobjr#   r   r   r   Ú_write_testˆ   s   


ÿÿzTest_Csv._write_testc                 C   sº   dd l }t|dƒo|jjdk}|  |rtntj| jd d¡ |  dd¡ |  d gd¡ | jtj| jd gd tj	d� G d	d
„ d
ƒ}|  t
| j|ƒ d¡ G dd„ dƒ}|  t
| j|ƒ gd¡ d S )Nr   Úpypy_version_infoé   r   r   ó    ó   ""r   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )z.Test_Csv.test_write_arg_valid.<locals>.BadListc                 S   s   dS )Né
   r   r   r   r   r   Ú__len__¡   ó   z6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__c                 S   s   |dkrt ‚d S )Né   ©ÚIOError)r   Úir   r   r   Ú__getitem__¤   s   ÿz:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__N)rD   rE   rF   rb   rh   r   r   r   r   ÚBadList    s    ri   c                   @   ó   e Zd Zdd„ ZdS )z.Test_Csv.test_write_arg_valid.<locals>.BadItemc                 S   ó   t ‚r   re   r   r   r   r   Ú__str__«   rc   z6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__N)rD   rE   rF   rl   r   r   r   r   ÚBadItemª   ó    rm   )ÚsysÚhasattrÚversion_infoÚmajorr   Ú	TypeErrorr   r   r[   r;   rf   )r   ro   Úpypy3ri   rm   r   r   r   Útest_write_arg_valid•   s   
ÿzTest_Csv.test_write_arg_validc                 C   s.   dd }|   ||gd | d¡gd ¡¡ d S )NÚXiPÃ  ó   ,rK   rd   )r[   ÚjoinrS   )r   Ú	bigstringr   r   r   Útest_write_bigfield°   s   
ÿzTest_Csv.test_write_bigfieldc                 C   sŠ   |   g d¢d¡ | jtj| j g d¢dtjd� | j g d¢dtjd� | j g d¢dtjd� | j g d¢dtjd� | j ddgd	tjd� d S )
N©Úar   úp,qó	   a,1,"p,q"s   a,1,p,qr   s   "a",1,"p,q"s   "a","1","p,q"úa
br   s	   "a
b","1")r[   r   r   r   r;   r-   ÚQUOTE_NONNUMERICr   r   r   r   r   Útest_write_quoting¶   s$   ýÿÿÿ
ÿzTest_Csv.test_write_quotingc                 C   s"   | j dt d¡dgdtjd� d S )Nr|   z1.1r}   s   "a",1.1,"p,q"r   )r[   ÚdecimalÚDecimalr   r€   r   r   r   r   Útest_write_decimalÅ   s   
ÿzTest_Csv.test_write_decimalc                 C   s¨   | j g d¢ddd� | jtj| j g d¢dd dd� | j g d¢dddd� | j d	gd
dtjd� | j d	gddtjdd� | j d	gddtjd� | j g d¢ddtjd� d S )Nr{   r~   r7   ©r,   )r|   r   zp,"q"s   a,1,"p,\"q\""F)r,   r+   r'   ó   """")r,   r   s   \")r,   r   r+   s   a,1,p\,q)r[   r   r   r   r-   r;   r   r   r   r   Útest_write_escapeÉ   s0   ÿýÿ
ÿ
þ
ÿ
ÿzTest_Csv.test_write_escapec              	   C   s¾   G dd„ dƒ}t  |ƒ ¡}|  t|jdgg¡ t ¡ \}}t |d¡}z1t  |¡}|  t	|jd ¡ | ddgddgg¡ | 
d¡ |  | ¡ d	¡ W | ¡  t |¡ d S | ¡  t |¡ w )
Nc                   @   rj   )z+Test_Csv.test_writerows.<locals>.BrokenFilec                 S   rk   r   re   )r   Úbufr   r   r   ÚwriteÞ   rc   z1Test_Csv.test_writerows.<locals>.BrokenFile.writeN)rD   rE   rF   r‰   r   r   r   r   Ú
BrokenFileÝ   rn   rŠ   r|   rJ   ÚbÚcÚdr   s
   a,b
c,d
)r   r#   r   rf   Ú	writerowsrL   rM   rN   rO   rs   rQ   r)   rR   rT   rU   )r   rŠ   r#   rX   rY   rZ   r   r   r   Útest_writerowsÜ   s   

ÿzTest_Csv.test_writerowsc                 K   s*   t j|fi |¤Ž}t|ƒ}|  ||¡ d S r   )r   r   Úlistr)   )r   ÚinputrW   r<   r   Úresultr   r   r   Ú
_read_testð   s   zTest_Csv._read_testc                 C   sj   |   g g ¡ |   dgg g¡ | jtj| j dgd dd� | jtj| j dgd dd� | j dgdggdd� d S )	Nr^   s   "ab"cr   )r/   s   ab cÚabcr   )r+   ©r“   r   r   r   r   r   r   r   Útest_read_oddinputsõ   s   ÿÿzTest_Csv.test_read_oddinputsc                 C   s–   |   dgddgg¡ |   dgddgg¡ |   dgddgg¡ |   dgddgg¡ |  tj| j dgg ¡ |  tj| j dgg ¡ |  tj| j d	gg ¡ d S )
Ns   a,br|   r‹   s   a,b
s   a,b
s   a,bs   a,bc,ds   a,b
c,ds   a,b
c,dr•   r   r   r   r   Útest_read_eolÿ   s   zTest_Csv.test_read_eolc                 C   s”   | j dgg d¢gdd� | j dgddggdd� | j dgddggdd� | j d	gddggdd� | j d
gddggdd� | j dgddggdd� d S )Ns   a,\b,c©r|   r‹   rŒ   r7   r…   s   a,b\,cr|   zb,cs   a,"b\,c"s   a,"b,\c"s	   a,"b,c\""zb,c"s   a,"b,c"\zb,c\)r“   r   r   r   r   Útest_read_escape  s   zTest_Csv.test_read_escapec                 C   s˜   |   dgg d¢g¡ | j dgg d¢gd dd� | j dgg d¢gtjdd� | j dgg d¢gtjd	� |   d
gddgg¡ | jt| j dgg gtjd	� d S )Ns	   1,",3,",5)Ú1z,3,Ú5)rš   r'   Ú3r'   r›   r7   )r   r,   )r   r,   s   ,3,"5",7.3, 9)r   r]   r›   g333333@é	   r   s   "a
b", 7r   z 7s   abc,3)r“   r   r;   r€   r   Ú
ValueErrorr   r   r   r   Útest_read_quoting  s   ÿÿÿ

þzTest_Csv.test_read_quotingc                 C   sš   t  g d¢¡t jg d¢g d¢d�fD ]8}|  |jd¡ t|ƒ |  |jd¡ t|ƒ |  |jd¡ t|ƒ |  |jd¡ |  tt|¡ |  |jd¡ qd S )N)s   line,1s   line,2s   line,3r˜   ©Ú
fieldnamesr   r   rd   r]   )r   r   Ú
DictReaderr)   Úline_numÚnextr   ÚStopIteration)r   Úrr   r   r   Útest_read_linenum  s   
ÿÿõzTest_Csv.test_read_linenumc              	   C   s¬   t  ¡ \}}t |d¡}z?t |¡}|  t|jd ¡ ddgddgg}| |¡ | 	d¡ t
t |¡ƒD ]\}}|  ||| ¡ q3W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   r   r‹   rŒ   zx
dr   )rL   rM   rN   rO   r   r#   r   rs   rŽ   rQ   Ú	enumerater   r)   rT   rU   )r   rX   rY   rZ   r#   Úrowsrg   Úrowr   r   r   Útest_roundtrip_quoteed_newlines,  s   


ÿÿz(Test_Csv.test_roundtrip_quoteed_newlinesN)rD   rE   rF   Ú__doc__r   r    r$   r4   r5   r6   r=   r>   r?   rG   rH   rI   r[   ru   rz   r�   r„   r‡   r�   r“   r–   r—   r™   rŸ   r§   r«   r   r   r   r   r      s8    
	r   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestDialectRegistryc                 C   sæ   |   ttjd ¡ |   ttj¡ |   tjtjd ¡ |   tjtjd¡ |   ttj¡ |   tjtjd ¡ |   tjtjd¡ |   ttjd ¡ |   ttjd d ¡ |   ttjddd¡ | j ttjdd d� | j ttjdd d� |   ttjg ¡ d S )NÚnonesuchr   )Úbadargumentr   )r   rs   r   Úlist_dialectsÚget_dialectr   Úunregister_dialectÚregister_dialectr   r   r   r   Útest_registry_badargs=  s"   ÿÿz)TestDialectRegistry.test_registry_badargsc              	   C   s†   G dd„ dt jƒ}d}t  ¡ |g }| ¡  t  ||¡ z |  t  |¡jd¡ t  ¡ }| ¡  |  ||¡ W t  |¡ d S t  |¡ w )Nc                   @   ó   e Zd ZdZdS )z5TestDialectRegistry.test_registry.<locals>.myexceltsvú	N©rD   rE   rF   r   r   r   r   r   Ú
myexceltsvO  ó    r¸   r¶   )	r   Úexcelr°   Úsortr³   r)   r±   r   r²   )r   r¸   rY   Úexpected_dialectsÚgot_dialectsr   r   r   Útest_registryN  s   z!TestDialectRegistry.test_registryc              	   C   sd   d}t j|dd� z"|  t  |¡jd¡ |  tt  dg|¡ƒg d¢g¡ W t  |¡ d S t  |¡ w )NÚfedcbaú;r   r¶   s   X;Y;Z)rv   ÚYÚZ)	r   r³   ÚassertNotEqualr±   r   r)   r�   r   r²   )r   rY   r   r   r   Útest_register_kwargs]  s   "z(TestDialectRegistry.test_register_kwargsc                 C   s$   G dd„ dt jƒ}|  t j|¡ d S )Nc                   @   rµ   )z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr¶   Nr·   r   r   r   r   r¸   g  r¹   r¸   )r   ÚDialectr   r   )r   r¸   r   r   r   Útest_incomplete_dialectf  s   z+TestDialectRegistry.test_incomplete_dialectc              	   C   s¤   G dd„ dt jƒ}t ¡ \}}t |d¡}z2| d¡ | d¡ t j||ƒ d�}|  	t
|ƒddg¡ |  	t
|ƒd	d
g¡ W | ¡  t |¡ d S | ¡  t |¡ w )Nc                   @   s   e Zd ZdZejZdZdS )z5TestDialectRegistry.test_space_dialect.<locals>.spaceú r7   N)rD   rE   rF   r   r   r;   r   r,   r   r   r   r   Úspacel  s    rÈ   rJ   s   abc def
c1ccccc1 benzene
r   ©r*   r”   ÚdefÚc1ccccc1Úbenzene)r   rº   rL   rM   rN   rO   r‰   rQ   r   r)   r¤   rT   rU   )r   rÈ   rX   rY   rZ   Úrdrr   r   r   Útest_space_dialectk  s   

ÿz&TestDialectRegistry.test_space_dialectc              	   C   sÂ  G dd„ dt jƒ}G dd„ dt jƒ}G dd„ dt jƒ}t  d|¡ �z8t ¡ \}}t |d¡}z$t  |¡}| g d¢¡ | 	d	¡ |  
| ¡ d
¡ W | ¡  t |¡ n
| ¡  t |¡ w t ¡ \}}t |d¡}z%t  ||¡}| g d¢¡ | 	d	¡ |  
| ¡ d¡ W | ¡  t |¡ n
| ¡  t |¡ w t ¡ \}}t |d¡}z't j||ƒ d�}| g d¢¡ | 	d	¡ |  
| ¡ d¡ W | ¡  t |¡ n
| ¡  t |¡ w t ¡ \}}t |d¡}z&t j|dd�}| g d¢¡ | 	d	¡ |  
| ¡ d¡ W | ¡  t |¡ n
| ¡  t |¡ w t ¡ \}}t |d¡}z't j||dd�}| g d¢¡ | 	d	¡ |  
| ¡ d¡ W | ¡  t |¡ n
| ¡  t |¡ w W t  d¡ d S t  d¡ w )Nc                   @   rµ   )z5TestDialectRegistry.test_dialect_apply.<locals>.testAr¶   Nr·   r   r   r   r   ÚtestA~  r¹   rÏ   c                   @   rµ   )z5TestDialectRegistry.test_dialect_apply.<locals>.testBr(   Nr·   r   r   r   r   ÚtestB�  r¹   rÐ   c                   @   rµ   )z5TestDialectRegistry.test_dialect_apply.<locals>.testCú|Nr·   r   r   r   r   ÚtestC„  r¹   rÒ   rJ   )r   rd   r]   r   s   1,2,3
s   1	2	3
rÉ   s   1:2:3
s   1|2|3
rÀ   )r*   r   s   1;2;3
)r   rº   r³   rL   rM   rN   rO   r#   rP   rQ   r)   rR   rT   rU   r²   )r   rÏ   rÐ   rÒ   rX   rY   rZ   r#   r   r   r   Útest_dialect_apply}  sz   

ÿ
ÿ
ÿ
ÿ
ÿz&TestDialectRegistry.test_dialect_applyc                 C   sT   | j ttjg dd� | j ttjg d d� | j ttjg dd� | j ttjg dd� d S )Nr   r   r   éÿÿÿÿr   éd   )r   rs   r   r   r   r   r   r   Útest_bad_dialectÃ  s   z$TestDialectRegistry.test_bad_dialectN)
rD   rE   rF   r´   r¾   rÄ   rÆ   rÎ   rÓ   rÖ   r   r   r   r   r­   <  s    	Fr­   c                   @   r`   )ÚTestCsvBasec              	   C   s~   t  ¡ \}}t |d¡}z(| |¡ | d¡ tj|| jd�}t	|ƒ}|  
||¡ W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   r   rÉ   )rL   rM   rN   rO   r‰   rQ   r   r   r*   r�   r)   rT   rU   )r   r‘   Úexpected_resultrX   rY   rZ   r   rV   r   r   r   ÚreaderAssertEqualÍ  s   

ÿzTestCsvBase.readerAssertEqualc              	   C   sz   t  ¡ \}}t |d¡}z&tj|| jd�}| |¡ | d¡ |  	| 
¡ |¡ W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   rÉ   r   )rL   rM   rN   rO   r   r#   r*   rŽ   rQ   r)   rR   rT   rU   )r   r‘   rØ   rX   rY   rZ   r#   r   r   r   ÚwriterAssertEqualÚ  s   

ÿzTestCsvBase.writerAssertEqualN)rD   rE   rF   rÙ   rÚ   r   r   r   r   r×   Ì  s    r×   c                   @   sØ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4S )5ÚTestDialectExcelrº   c                 C   ó   |   ddgg¡ d S )Ns   abcr”   ©rÙ   r   r   r   r   Útest_singleê  r%   zTestDialectExcel.test_singlec                 C   ó   |   dg d¢g¡ d S )Ns	   1,2,3,4,5)rš   Ú2rœ   Ú4r›   rÝ   r   r   r   r   Útest_simpleí  ó   zTestDialectExcel.test_simplec                 C   s   |   dg ¡ d S ©Nr^   rÝ   r   r   r   r   Útest_blanklineð  ó   zTestDialectExcel.test_blanklinec                 C   ó   |   dddgg¡ d S )Nrw   r   rÝ   r   r   r   r   Útest_empty_fieldsó  rã   z"TestDialectExcel.test_empty_fieldsc                 C   rÜ   )Nr_   r   rÝ   r   r   r   r   Útest_singlequotedö  r%   z"TestDialectExcel.test_singlequotedc                 C   rç   )Ns   "",r   rÝ   r   r   r   r   Útest_singlequoted_left_emptyù  rã   z-TestDialectExcel.test_singlequoted_left_emptyc                 C   rç   )Ns   ,""r   rÝ   r   r   r   r   Útest_singlequoted_right_emptyü  rã   z.TestDialectExcel.test_singlequoted_right_emptyc                 C   rÜ   )Nr†   r'   rÝ   r   r   r   r   Útest_single_quoted_quoteÿ  r%   z)TestDialectExcel.test_single_quoted_quotec                 C   rÜ   )Ns   """"""z""rÝ   r   r   r   r   Útest_quoted_quotes  r%   z#TestDialectExcel.test_quoted_quotesc                 C   rÜ   )Ns   a""bza""brÝ   r   r   r   r   Útest_inline_quote  r%   z"TestDialectExcel.test_inline_quotec                 C   rÜ   )Ns   a"b"cza"b"crÝ   r   r   r   r   Útest_inline_quotes  r%   z#TestDialectExcel.test_inline_quotesc                 C   rÜ   )Ns   "a"bÚabrÝ   r   r   r   r   Útest_quotes_and_more  ó   z%TestDialectExcel.test_quotes_and_morec                 C   rÜ   )Ns   a"bza"brÝ   r   r   r   r   Útest_lone_quote  r%   z TestDialectExcel.test_lone_quotec                 C   rÜ   )Ns   "a" "b"za "b"rÝ   r   r   r   r   Útest_quote_and_quote  rò   z%TestDialectExcel.test_quote_and_quotec                 C   rÜ   )Ns    "a"z "a"rÝ   r   r   r   r   Útest_space_and_quote  r%   z%TestDialectExcel.test_space_and_quotec                 C   rß   )Ns#   1,2,3,"I think, therefore I am",5,6)rš   rà   rœ   zI think, therefore I amr›   Ú6rÝ   r   r   r   r   Útest_quoted  s   ÿzTestDialectExcel.test_quotedc                 C   s   d}|   |g d¢g¡ d S )NsJ   1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw")rš   rà   rœ   z"I see," said the blind manz"as he picked up his hammer and sawrÝ   )r   Úvaluer   r   r   Útest_quoted_quote!  s   ÿz"TestDialectExcel.test_quoted_quotec                 C   s    d}|   |g d¢g d¢g¡ d S )NsR   1,2,3,"""I see,""
said the blind man","as he picked up his
hammer and saw"
9,8,7,6)rš   rà   rœ   z"I see,"
said the blind manz"as he picked up his
hammer and saw)Ú9Ú8Ú7rö   rÝ   )r   r‘   r   r   r   Útest_quoted_nl(  s   ýÿzTestDialectExcel.test_quoted_nlc                 C   rß   )Ns	   12,12,1",)Ú12rþ   z1"r   rÝ   r   r   r   r   Útest_dubious_quote4  rã   z#TestDialectExcel.test_dubious_quotec                 C   s   |   g d¡ d S rä   ©rÚ   r   r   r   r   Ú	test_null7  ræ   zTestDialectExcel.test_nullc                 C   ó   |   dggd¡ d S )Nr”   s   abc
r   r   r   r   r   Útest_single_writer:  r%   z#TestDialectExcel.test_single_writerc                 C   ó   |   g d¢gd¡ d S )N)r   rd   r”   r]   é   s   1,2,abc,3,4
r   r   r   r   r   Útest_simple_writer=  ó   ÿz#TestDialectExcel.test_simple_writerc                 C   r  )N)r   rd   za"bc"r]   r  s   1,2,"a""bc""",3,4
r   r   r   r   r   Útest_quotesA  r  zTestDialectExcel.test_quotesc                 C   r  ©Núabc,defs   "abc,def"
r   r   r   r   r   Útest_quote_fieldsepE  s   
ÿz$TestDialectExcel.test_quote_fieldsepc                 C   r  )N)r   rd   za
bcr]   r  s   1,2,"a
bc",3,4
r   r   r   r   r   Útest_newlinesI  r  zTestDialectExcel.test_newlinesN)rD   rE   rF   r*   rÞ   râ   rå   rè   ré   rê   rë   rì   rí   rî   rï   rñ   ró   rô   rõ   r÷   rù   rý   rÿ   r  r  r  r  r  r  r   r   r   r   rÛ   ç  s6    rÛ   c                   @   ó   e Zd ZejZdZdS )ÚEscapedExcelr7   N)rD   rE   rF   r   r;   r   r,   r   r   r   r   r  N  ó    r  c                   @   ó"   e Zd Zeƒ Zdd„ Zdd„ ZdS )ÚTestEscapedExcelc                 C   r  )Nr
  ó
   abc\,def
r   r   r   r   r   Útest_escape_fieldsepV  r%   z%TestEscapedExcel.test_escape_fieldsepc                 C   rÜ   )Nr  r
  rÝ   r   r   r   r   Útest_read_escape_fieldsepY  r%   z*TestEscapedExcel.test_read_escape_fieldsepN)rD   rE   rF   r  r*   r  r  r   r   r   r   r  S  ó    r  c                   @   r  )ÚQuotedEscapedExcelr7   N)rD   rE   rF   r   r€   r   r,   r   r   r   r   r  ]  r  r  c                   @   r  )ÚTestQuotedEscapedExcelc                 C   r  r	  r   r   r   r   r   Útest_write_escape_fieldsepe  r%   z1TestQuotedEscapedExcel.test_write_escape_fieldsepc                 C   rÜ   )Ns   "abc\,def"
r
  rÝ   r   r   r   r   r  h  r%   z0TestQuotedEscapedExcel.test_read_escape_fieldsepN)rD   rE   rF   r  r*   r  r  r   r   r   r   r  b  r  r  c                   @   s„   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestDictFieldsc              	   C   sª   t  ¡ \}}t|dƒ}z?tj|g d¢d�}| ¡  | d¡ |  | ¡ d¡ | 	dddœ¡ | d¡ | ¡  |  | 
¡ d	¡ W | ¡  t |¡ d S | ¡  t |¡ w )
NrJ   ©Úf1Úf2Úf3r    r   s
   f1,f2,f3
ra   r”   )r  r  s	   10,,abc
)rL   rM   Úopenr   Ú
DictWriterÚwriteheaderrQ   r)   ÚreadlinerP   rR   rT   rN   rU   ©r   rX   rY   rZ   r#   r   r   r   Útest_write_simple_dicto  s   


ÿz%TestDictFields.test_write_simple_dictc              	   C   s~   t  ¡ \}}t|dƒ}z)tj|ddgd�}| ¡  | d¡ |  | ¡  	d¡d¡ W | 
¡  t |¡ d S | 
¡  t |¡ w )NrJ   õ   Ã±õ   Ã¶r    r   rK   u   Ã±,Ã¶
)rL   rM   r  r   r  r   rQ   r)   r!  ÚdecoderT   rN   rU   r"  r   r   r   Útest_write_unicode_header_dict  s   

ÿz-TestDictFields.test_write_unicode_header_dictc                 C   s   t ƒ }|  ttj|¡ d S r   )r   r   rs   r   r  )r   rZ   r   r   r   Útest_write_no_fields‹  s   z#TestDictFields.test_write_no_fieldsc              	   C   s„   t  ¡ \}}t |d¡}z+| d¡ | d¡ tj|g d¢d�}|  t	|ƒddddœ¡ W | 
¡  t |¡ d S | 
¡  t |¡ w )	NrJ   s	   1,2,abc
r   r  r    rš   rà   r”   ©rL   rM   rN   rO   r‰   rQ   r   r¢   r)   r¤   rT   rU   ©r   rX   rY   rZ   r   r   r   r   Útest_read_dict_fields�  s   

ÿ

ÿÿz$TestDictFields.test_read_dict_fieldsc              	   C   sŽ   t  ¡ \}}t |d¡}z0| d¡ | d¡ t |¡}|  |j	g d¢¡ |  t
|ƒddddœ¡ W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   ó   f1,f2,f3
1,2,abc
r   r  rš   rà   r”   ©rL   rM   rN   rO   r‰   rQ   r   r¢   r)   r¡   r¤   rT   rU   r*  r   r   r   Útest_read_dict_no_fieldnames�  s    


ÿ

ÿÿz+TestDictFields.test_read_dict_no_fieldnamesc              	   C   sœ   t  ¡ \}}t |d¡}z7| d¡ | d¡ tj|tt 	|¡ƒd�}|  
|jg d¢¡ |  
t|ƒddddœ¡ W | ¡  t |¡ d S | ¡  t |¡ w )	NrJ   r,  r   r    r  rš   rà   r”   )rL   rM   rN   rO   r‰   rQ   r   r¢   r¤   r   r)   r¡   rT   rU   )r   rX   rY   Úfr   r   r   r   Ú#test_read_dict_fieldnames_from_file®  s    

ÿ

ÿÿz2TestDictFields.test_read_dict_fieldnames_from_filec              	   C   s®   dd l }t ¡ \}}t |d¡}z<| d¡ | d¡ t |¡}t	|ƒ}| 
|g|¡D ]}|  |jg d¢¡ |  |ddddœ¡ q+W | ¡  t |¡ d S | ¡  t |¡ w )Nr   rJ   r,  r  rš   rà   r”   )Ú	itertoolsrL   rM   rN   rO   r‰   rQ   r   r¢   r¤   Úchainr)   r¡   rT   rU   )r   r1  rX   rY   r/  r   Úfirstrª   r   r   r   Útest_read_dict_fieldnames_chain½  s    


þÿz.TestDictFields.test_read_dict_fieldnames_chainc              	   C   sˆ   t  ¡ \}}t |d¡}z-| d¡ | d¡ tj|ddgd�}|  t	|ƒddg d	¢d
œ¡ W | 
¡  t |¡ d S | 
¡  t |¡ w )NrJ   ó   1,2,abc,4,5,6
r   r  r  r    rš   rà   ©r”   rá   r›   rö   )r  r  Nr)  r*  r   r   r   Útest_read_longÍ  s   

ÿ
ÿÿzTestDictFields.test_read_longc              	   C   sŠ   t  ¡ \}}t |d¡}z.| d¡ | d¡ tj|ddgdd�}|  t	|ƒdd	g d
¢dœ¡ W | 
¡  t |¡ d S | 
¡  t |¡ w )NrJ   r5  r   r  r  Ú_rest)r¡   Úrestkeyrš   rà   r6  ©r  r  r8  r)  r*  r   r   r   Útest_read_long_with_restÛ  s   

ÿ
ÿÿz'TestDictFields.test_read_long_with_restc              	   C   s–   t  ¡ \}}t |d¡}z4| d¡ | d¡ tj|dd�}|  |j	ddg¡ |  t
|ƒdd	g d
¢dœ¡ W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   s   f1,f2
1,2,abc,4,5,6
r   r8  )r9  r  r  rš   rà   r6  r:  r-  r*  r   r   r   Ú&test_read_long_with_rest_no_fieldnamesé  s   


ÿÿz5TestDictFields.test_read_long_with_rest_no_fieldnamesc              
   C   sª   t  ¡ \}}t |d¡}z>| d¡ | d¡ tj|d ¡ dd�}|  	t
|ƒddd	d
dddœ¡ |  	t
|ƒddd	ddddœ¡ W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   s   1,2,abc,4,5,6
1,2,abc
r   ú1 2 3 4 5 6ÚDEFAULT)r¡   Úrestvalrš   rà   r”   rá   r›   rö   ©rš   rà   rœ   rá   r›   rö   )rL   rM   rN   rO   r‰   rQ   r   r¢   Úsplitr)   r¤   rT   rU   r*  r   r   r   Útest_read_short÷  s(   

þÿ
þÿzTestDictFields.test_read_shortc              	   C   s:   g d¢}t j|d ¡ d�}|  t|ƒdddddd	œ¡ d S )
N)s   2147483648,43.0e12,17,abc,def
s   147483648,43.0e2,17,abc,def
s   47483648,43.0,170,abc,def
zi1 float i2 s1 s2r    Ú
2147483648z43.0e12Ú17r”   rÊ   )Úi1ÚfloatÚi2Ús1Ús2©r   r¢   rA  r)   r¤   )r   Úsampler   r   r   r   Útest_read_multi	  s   ÿüzTestDictFields.test_read_multic              
   C   sV   t jg d¢d ¡ d�}|  t|ƒdddddd	d
œ¡ |  t|ƒdddddd	d
œ¡ d S )N)r5  ó   
r5  r=  r    rš   rà   r”   rá   r›   rö   r@  rJ  ©r   r   r   r   r   Útest_read_with_blanks  s   
þÿÿz$TestDictFields.test_read_with_blanksc              
   C   s8   t jdgd ¡ dd�}|  t|ƒddddd	d
dœ¡ d S )Ns   1;2;abc;4;5;6
r=  rÀ   )r¡   r   rš   rà   r”   rá   r›   rö   r@  rJ  rN  r   r   r   Útest_read_semi_sep!  s   þÿz!TestDictFields.test_read_semi_sepc                 C   s   t  tƒ ¡ d S r   )r   r¢   r   r   r   r   r   Útest_empty_file(  ræ   zTestDictFields.test_empty_fileN)rD   rE   rF   r#  r'  r(  r+  r.  r0  r4  r7  r;  r<  rB  rL  rO  rP  rQ  r   r   r   r   r  l  s     	r  c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestArrayWritesc              	   C   s®   dd„ t dƒD ƒ}t d|¡}t ¡ \}}t |d¡}z1tj|dd�}| |¡ d 	d	d„ |D ƒ¡d
 }| 
d¡ |  | ¡ |¡ W | ¡  t |¡ d S | ¡  t |¡ w )Nc                 S   s   g | ]}d | ‘qS )é   r   ©Ú.0rg   r   r   r   Ú
<listcomp>-  s    z2TestArrayWrites.test_int_write.<locals>.<listcomp>rT  rg   rJ   rº   rÉ   rw   c                 S   s   g | ]	}t |ƒ d ¡‘qS ©rK   )ÚstrrS   rU  r   r   r   rW  5  ó    rM  r   )ÚrangeÚarrayrL   rM   rN   rO   r   r#   rP   rx   rQ   r)   rR   rT   rU   ©r   Úcontentsr|   rX   rY   rZ   r#   Úexpectedr   r   r   Útest_int_write,  s   

ÿzTestArrayWrites.test_int_writec              	      óÄ   dd„ t dƒD ƒ}t d|¡}t ¡ \}}t |d¡}z<tj|dd�}| |¡ t	‰ t
jdkr1t‰ d	 ‡ fd
d„|D ƒ¡d }| d¡ |  | ¡ |¡ W | ¡  t |¡ d S | ¡  t |¡ w )Nc                 S   ó   g | ]}d | d ‘qS ©rT  gš™™™™™¹?r   rU  r   r   r   rW  =  ó    z5TestArrayWrites.test_double_write.<locals>.<listcomp>rT  r�   rJ   rº   rÉ   ©rd   é   r]   rw   c                    ó   g | ]	}ˆ |ƒ  d ¡‘qS rX  ©rS   rU  ©Ú
float_reprr   r   rW  G  rZ  rM  r   ©r[  r\  rL   rM   rN   rO   r   r#   rP   rY  ro   rq   Úreprrx   rQ   r)   rR   rT   rU   r]  r   ri  r   Útest_double_write<  ó"   


ÿz!TestArrayWrites.test_double_writec              	      ra  )Nc                 S   rb  rc  r   rU  r   r   r   rW  O  rd  z4TestArrayWrites.test_float_write.<locals>.<listcomp>rT  r/  rJ   rº   rÉ   re  rw   c                    rg  rX  rh  rU  ri  r   r   rW  Y  rZ  rM  r   rk  r]  r   ri  r   Útest_float_writeN  rn  z TestArrayWrites.test_float_writec              	   C   s’   t j}t ¡ \}}t |d¡}z/tj|dd�}| |¡ d 	|¡ 
d¡d }| d¡ |  | ¡ |¡ W | ¡  t |¡ d S | ¡  t |¡ w )NrJ   rº   rÉ   r&   rK   rM  r   )ÚstringÚascii_lettersrL   rM   rN   rO   r   r#   rP   rx   rS   rQ   r)   rR   rT   rU   )r   r|   rX   rY   rZ   r#   r_  r   r   r   Útest_char_write`  s   

ÿzTestArrayWrites.test_char_writeN)rD   rE   rF   r`  rm  ro  rr  r   r   r   r   rS  +  s
    rS  c                   @   rj   )ÚTestUnicodec                 C   s>   t td d¡ƒdd�}tj|dd�}|  t|ƒg d¢g¡ d S )NuI   Martin von LÃ¶wis,Marc AndrÃ© Lemburg,Guido van Rossum,FranÃ§ois Pinard
ú
iso-8859-1©Údata_encoding)Úencoding)u   Martin von LÃ¶wisu   Marc AndrÃ© LemburgzGuido van Rossumu   FranÃ§ois Pinard©r   r   rS   r   r   r)   r�   )r   r/  r   r   r   r   Útest_unicode_readp  s   ýüzTestUnicode.test_unicode_readN)rD   rE   rF   ry  r   r   r   r   rs  o  rn   rs  c                   @   rR  )
ÚTestUnicodeErrorsc                 C   s<   t ƒ }tj|ddd�}| dtdƒg¡ |  | ¡ d¡ d S )NÚcp1252Úxmlcharrefreplace©rw  ÚerrorsÚhelloi+
  s   hello,&#2603;
)r   r   r#   rP   Úchrr)   Úgetvalue)r   rX   r#   r   r   r   Útest_encode_error~  s   z#TestUnicodeErrors.test_encode_errorc                 C   s@   t ƒ }tj|dgddd�}| dtdƒi¡ |  | ¡ d¡ d S )NÚcol1r{  r|  r}  i,
  s	   &#2604;
)r   r   r  rP   r€  r)   r�  )r   rX   Údwr   r   r   Útest_encode_error_dictwriter„  s   
ÿz.TestUnicodeErrors.test_encode_error_dictwriterc                 C   sB   t td d¡ƒdd�}tj|ddd�}|  t|ƒd d d¡ d	S )
zAMake sure the specified error-handling mode is obeyed on readers.u
   LÃ¶wis,2,3rt  ru  ÚasciiÚignorer}  r   ÚLwisNrx  ©r   Úfiler   r   r   r   Útest_decode_error‹  ó
   ÿz#TestUnicodeErrors.test_decode_errorc                 C   sB   t td d¡ƒdd�}tj|ddd�}|  t|ƒd d d	¡ d
S )z;Make sure the error-handling mode is obeyed on DictReaders.u   name,height,weight
LÃ¶wis,2,3rt  ru  r†  r‡  r}  r   rY   rˆ  N)r   r   rS   r   r¢   r)   r�   r‰  r   r   r   Útest_decode_error_dictreader’  rŒ  z.TestUnicodeErrors.test_decode_error_dictreaderN)rD   rE   rF   r‚  r…  r‹  r�  r   r   r   r   rz  }  s
    rz  )!r\  r‚   rN   rp  ro   rL   Ú	unittest2ÚunittestÚcodecsr   Úior   Ú
unicodecsvr   Úunichrr€  rs   ÚAttributeErrorr   ÚTestCaser   r­   r×   rÛ   rº   r  r  r  r  r  rS  rs  rz  r   r   r   r   Ú<module>   s>     ! g

 @D