B
    `              
   @   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 Zdd	 Zd
d Zdd Zejdddddddgejddddgdd Zejjdedddfeddefedddfedddfeddefeddefgd d!d"d#d$d%gd&d'd( ZdS ))zf
Tests that dialects are properly handled during parsing
for all of the parsers defined in parsers.py
    N)StringIO)ParserWarning)	DataFramec              C   s    d} t ddddddd}| |fS )NZweirdF~:   )doublequote
escapechar	delimiterskipinitialspace	quotecharquoting)dict)dialect_namedialect_kwargs r   R/home/dcms/DCMS/lib/python3.7/site-packages/pandas/tests/io/parser/test_dialect.pycustom_dialect   s    r   c             C   s\   | }d}t  }t j|_|jt||d}d}|t|}|jdddd t|| d S )Nz0label1,label2,label3
index1,"a,c,e
index2,b,d,f
)dialectz/label1,label2,label3
index1,a,c,e
index2,b,d,f
az"aT)Zinplace)	csvexcel
QUOTE_NONEr   read_csvr   replacetmassert_frame_equal)all_parsersparserdataZdiadfexpr   r   r   test_dialect   s    r"   c          	   C   s^   d}| }d}t ddgddgd}tj|dd	$ |jt||d
}t|| W d Q R X d S )NZ	mydialectz+fruit:vegetable
apple:broccoli
pear:tomato
ZappleZpearZbroccoliZtomato)ZfruitZ	vegetabler   )r
   )r   )r   r   with_csv_dialectr   r   r   )r   r   r   r   r!   r    r   r   r   test_dialect_str5   s    r$   c          	   C   sJ   G dd d}d}| }d}t jt|d |jt||d W d Q R X d S )Nc               @   s   e Zd ZdS )z,test_invalid_dialect.<locals>.InvalidDialectN)__name__
__module____qualname__r   r   r   r   InvalidDialectE   s   r(   za
1zInvalid dialect)match)r   )pytestZraises
ValueErrorr   r   )r   r(   r   r   msgr   r   r   test_invalid_dialectD   s    r-   argr   r	   r   r   r   valuer   defaultotherc          
   C   s   |\}}| }t dgdgd}d}d }	t }
|d k	rxddkrJ|| |
|< n.ddkrldd	lm} || |
|< nt}	d
|
|< tj|f|B t|	, |jt	|fd|i|
}t
|| W d Q R X W d Q R X d S )N      )r   bza:b
1:2r/   r   r0   r   )_parser_defaultsZblah)r   r   Zpandas.io.parsersr5   r   r   r#   assert_produces_warningr   r   r   )r   r   r.   r/   r   r   r   expectedr   warning_klasskwdsr5   resultr   r   r   &test_dialect_conflict_except_delimiterP   s$    r;   zkwargs,warning_klass,)sep.r   )r
   zsep-override-truezsep-override-falsezdelimiter-no-conflictzdelimiter-default-argzdelimiter-conflictzdelimiter-conflict2)idsc       
   
   C   s|   |\}}| }t dgdgd}d}tj|f|B t|, |jt|fd|i|}	t|	| W d Q R X W d Q R X d S )Nr2   r3   )r   r4   za:b
1:2r   )r   r   r#   r6   r   r   r   )
r   r   kwargsr8   r   r   r   r7   r   r:   r   r   r   test_dialect_conflict_delimiterr   s    rA   )__doc__r   ior   r*   Zpandas.errorsr   Zpandasr   Zpandas._testingZ_testingr   Zfixturer   r"   r$   r-   markZparametrizer;   r   rA   r   r   r   r   <module>   s8   