o
    5ci                  
   @   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
 ddlmZ ejd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g ddd Zejdejejgejdddgdd  Zejd!i g d"gfd#ejdg d"gfd#ejdg d"gfd#ejdg d$gfd#ejdg d%gfgd&d' Zejd(d)d*d+ggfd,d*d-ggfgd.d/ Zejd	d#d0gd1d2 Zejd3d)d,gd4d5 ZdS )6zt
Tests that quoting specifications are properly handled
during parsing for all of the parsers defined in parsers.py
    N)StringIO)PY311)ParserError)	DataFramepyarrow_skipz
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( or None)?, not intc                 C   sR   d}| }t jt|d |jt|fi | W d    d S 1 s"w   Y  d S )N1,2,3matchpytestraises	TypeErrorread_csvr   )all_parserskwargsmsgdataparser r   Y/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/io/parser/test_quoting.pytest_bad_quote_char   s
   "r   zquoting,msg)r   z%"quoting" must be an integer|Argument)   zbad "quoting" valuec                 C   sN   d}| }t jt|d |jt||d W d    d S 1 s w   Y  d S )Nr   r   )r
   r   )r   r
   r   r   r   r   r   r   test_bad_quoting'   s
   "r   c                 C   s@   | }d}t g dgg d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_basic6   s
   r0   
quote_char)~*%$@Pc                 C   sL   | }t g dgg dd}d}|d|}|jt||d}t|| d S )Nr    r#   r'   r   r)   r*   )r   replacer   r   r,   r-   )r   r1   r   r.   r   new_datar/   r   r   r   test_quote_char_various?   s   r:   r
    c           	      C   s   ||d}d}| }|t jkrBtr| jdkr|dkrdnd}tjt|d |jt|fi | W d    d S 1 s;w   Y  d S trI| jdksgt	g dgg d	d
}|jt|fi |}t
|| d S d S )Nr	   za,b,c
1,2,3pythonr;   z("quotechar" must be a 1-character stringr   r   r!   r      r#   r'   )csv
QUOTE_NONEr   enginer   r   r   r   r   r   r,   r-   )	r   r
   r1   r   r   r   r   r.   r/   r   r   r   test_null_quote_charK   s(   

"rB   zkwargs,exp_data)r!   r   r   r)   )r!   r   z"foo")g      ?g       @r   c                 C   sF   d}| }g d}|j t|fd|i|}t||d}t|| d S )Nz	1,2,"foo"r#   namesr'   r   r   r   r,   r-   )r   r   exp_datar   r   r(   r/   r.   r   r   r   test_quoting_variousc   s   rF   zdoublequote,exp_dataTr>   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'   rD   )r   rG   rE   r   r   r/   r.   r   r   r   test_double_quote}   s
   rH   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
   rJ   balancedc                 C   s   | }d}|r"t g dgg dd}|t|d }t|| d S |jdkr)dnd}tjt|d	 |t| W d    d S 1 sEw   Y  d S )
Nza,b,c
1,2,"3r=   r#   r'   r)   r&   z#EOF inside string starting at row 1zunexpected end of datar   )	r   r   r   r,   r-   rA   r   r   r   )r   rK   r   r   r.   r/   r   r   r   r   test_unbalanced_quoting   s   "rL   )__doc__r?   ior   r   pandas.compatr   pandas.errorsr   pandasr   pandas._testing_testingr,   markusefixtures
pytestmarkparametrizeQUOTE_MINIMALr   r   r0   r:   r@   rB   	QUOTE_ALLQUOTE_NONNUMERICrF   rH   rJ   rL   r   r   r   r   <module>   sd    




	



	

