a
    Gb>                  	   @   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Zejdd Zd	d
 Zdd Zdd Zejdg dejdg ddd Zejjdddidfddiefddidfddidfddiefddiefgg d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)	DataFrameZpyarrow_skipc                  C   s   d} ddddddd}| |fS )NZweirdF~:   )doublequote
escapechar	delimiterskipinitialspace	quotecharquoting )dialect_namedialect_kwargsr   r   Blib/python3.9/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)	csvZexcelZ
QUOTE_NONEr   read_csvr   replacetmassert_frame_equal)all_parsersparserdataZdiadfexpr   r   r   test_dialect!   s    r    c                 C   sr   d}| }d}t ddgddgd}tj|dd	. |jt||d
}t|| W d    n1 sd0    Y  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_str7   s    r"   c                 C   s^   G dd d}d}| }d}t jt|d" |jt||d W d    n1 sP0    Y  d S )Nc                   @   s   e Zd ZdS )z,test_invalid_dialect.<locals>.InvalidDialectN)__name__
__module____qualname__r   r   r   r   InvalidDialectG   s   r&   za
1zInvalid dialect)matchr   )pytestZraises
ValueErrorr   r   )r   r&   r   r   msgr   r   r   test_invalid_dialectF   s    r+   arg)Nr   r	   r   r   r   value)r   defaultotherc              	   C   s   |\}}| }t dgdgd}d}d }	i }
|d urvddkrH|| |
|< n.ddkrjdd	lm} || |
|< nt}	d
|
|< tj|fi |` t|	6 |jt|fd|i|
}t	|| W d    n1 s0    Y  W d    n1 s0    Y  d S )N      r   ba:b
1:2r-   r   r.   r   )parser_defaultsZblah)
r   Zpandas.io.parsers.base_parserr5   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_delimiterR   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)Zidsc           
   	   C   s   |\}}| }t dgdgd}d}tj|fi |` t|6 |jt|fd|i|}	t|	| W d    n1 s|0    Y  W d    n1 s0    Y  d S )Nr0   r1   r2   r4   r   )r   r   r!   r6   r   r   r   )
r   r   kwargsr8   r   r   r   r7   r   r:   r   r   r   test_dialect_conflict_delimitert   s    r@   )__doc__r   ior   r(   Zpandas.errorsr   Zpandasr   Zpandas._testingZ_testingr   ZmarkZusefixturesZ
pytestmarkZfixturer   r    r"   r+   Zparametrizer;   r@   r   r   r   r   <module>   s<   






