U
    f/e                     @   s  d Z ddlZddlmZ ddlZddlmZ ddlmZ ddl	m
Z ejdddid	fdejd
dfddidfgdd Zejdddgdd Zdd Zejdddddddgdd Zejd ejejgejdd!dgd"d# Zejd$i d%ddggfd&ejd
d%ddggfd&ejd
d%ddggfd&ejd
d%dd'ggfd&ejd
d(d)dggfgd*d+ Zejd,d-d.d/ggfd0d.d1ggfgd2d3 Zejdd&d4gd5d6 Zejd7d-d0gd8d9 ZdS ):zt
Tests that quoting specifications are properly handled
during parsing for all of the parsers defined in parsers.py
    N)StringIO)ParserError)	DataFramez
kwargs,msg	quotecharfooz,"quotechar" must be a(n)? 1-character stringr   quoting(quotechar must be set if quoting enabled   z#"quotechar" must be string, not intc              	   C   s8   d}| }t jt|d |jt|f| W 5 Q R X d S )N1,2,3matchpytestraises	TypeErrorread_csvr   )all_parserskwargsmsgdataparser r   G/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/parser/test_quoting.pytest_bad_quote_char   s    r   zquoting,msg)r   z"quoting" must be an integer)   zbad "quoting" valuec              	   C   s8   d}| }t jt|d |jt||d W 5 Q R X d S )Nr   r   )r   r   )r   r   r   r   r   r   r   r   test_bad_quoting$   s    r   c                 C   sD   | }d}t dddggdddgd}|jt|d	d
}t|| d S )Na,b,c
1,2,"cat"   r
   catabccolumns"r   r   r   r   tmassert_frame_equal)r   r   r   expectedresultr   r   r   test_quote_char_basic3   s
    r,   
quote_char~*%$@Pc                 C   sP   | }t dddggdddgd}d}|d	|}|jt||d
}t|| d S )Nr   r
   r   r    r!   r"   r#   r   r%   r&   )r   replacer   r   r(   r)   )r   r-   r   r*   r   Znew_datar+   r   r   r   test_quote_char_various<   s    r5   r    c           	   	   C   s   ||d}d}| }|t jkrNd}tjt|d |jt|f| W 5 Q R X n8tdddggdd	d
gd}|jt|f|}t	|| d S )Nr   za,b,c
1,2,3r	   r   r   r
      r    r!   r"   r#   )
csv
QUOTE_NONEr   r   r   r   r   r   r(   r)   )	r   r   r-   r   r   r   r   r*   r+   r   r   r   test_null_quote_charH   s    

r:   zkwargs,exp_datar   r%   z"foo"g      ?g       @c                 C   sH   d}| }dddg}|j t|fd|i|}t||d}t|| d S )Nz	1,2,"foo"r    r!   r"   namesr#   r   r   r   r(   r)   )r   r   exp_datar   r   r$   r+   r*   r   r   r   test_quoting_various[   s    
r>   zdoublequote,exp_dataTr7   z4 " 5Fz4 " 5"c                 C   s<   | }d}|j t|d|d}t|ddgd}t|| d S )Nza,b
3,"4 "" 5"r%   )r   doublequoter    r!   r#   r<   )r   r?   r=   r   r   r+   r*   r   r   r   test_double_quoteu   s
    r@   c                 C   s8   d}| }t ddgi}|jt||d}t|| d S )Nza
1r    r   r&   r'   )r   r   r   r   r*   r+   r   r   r   test_quotechar_unicode   s
    rB   balancedc              	   C   s   | }d}|rFt dddggdddgd}|t|d	 }t|| n:|jdkrTd
nd}tjt|d |t| W 5 Q R X d S )Nza,b,c
1,2,"3r   r
   r7   r    r!   r"   r#   r%   z#EOF inside string starting at row 1zunexpected end of datar   )	r   r   r   r(   r)   Zenginer   r   r   )r   rC   r   r   r*   r+   r   r   r   r   test_unbalanced_quoting   s    rD   )__doc__r8   ior   r   Zpandas.errorsr   Zpandasr   Zpandas._testingZ_testingr(   markZparametrizeQUOTE_MINIMALr   r   r,   r5   r9   r:   	QUOTE_ALLQUOTE_NONNUMERICr>   r@   rB   rD   r   r   r   r   <module>   s`   




	


 
	

