o
    LDi                  
   @   s(  d Z ddlZddlmZ ddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ejdZejdZejd	ZerCd
ZdZndZdZejdddide fdejddfddide dfgedd Zejdddgedd Zdd Zejdg d d!d" Ze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ed+d, Z!ejd-d.d/d0ggfd1d/d2ggfgd3d4 Z"ejdd(d5gd6d7 Z#ejd8d.d1gd9d: Z$dS );zt
Tests that quoting specifications are properly handled
during parsing for all of the parsers defined in parsers.py
    N)StringIO)PY311PY314)ParserError)	DataFramez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrow_xfailpyarrow_skip z[\s\S]*za(n)? 1-character stringzstring( or None)?z
kwargs,msg	quotecharfooz"quotechar" must be r
   quoting(quotechar must be set if quoting enabled   z	, 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   o/var/www/www-root/data/www/77.83.87.30/venv/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_quoting8   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_basicH   s
   r3   
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/   r0   )r   r4   r   r1   r   new_datar2   r   r   r   test_quote_char_variousQ   s   r=   r   c           	      C   s   ||d}d}| }|t jkrLtsd}nd}tr%| jdkr%|dkr%d| nd}tjt|d	 |jt	|fi | W d    d S 1 sEw   Y  d S trS| jdksqt
g d
gg dd}|jt	|fi |}t|| d S d S )Nr   za,b,c
1,2,3z1-character stringzunicode character or Nonepythonr	   z"quotechar" must be a r   r   r$   r      r&   r*   )csv
QUOTE_NONEr   r   enginer   r   r   r   r   r   r/   r0   )	r   r   r4   r   r   r   r   r1   r2   r   r   r   test_null_quote_char]   s*   


"rD   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/   r0   )r   r   exp_datar   r   r+   r2   r1   r   r   r   test_quoting_variousz   s   rG   zdoublequote,exp_dataTr@   z4 " 5Fz4 " 5"c           	      C   sb   | }d}|j dkr|stjjdd}|| |jt|d|d}t|ddgd	}t	|| d S )
Nza,b
3,"4 "" 5"pyarrowMismatched resultreasonr,   )r
   doublequoter'   r(   r*   )
rC   r   markxfailapplymarkerr   r   r   r/   r0   )	r   rL   rF   requestr   r   rM   r2   r1   r   r   r   test_double_quote   s   
rQ   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   r1   r2   r   r   r   test_quotechar_unicode   s
   rS   balancedc           	      C   s   | }d}|j dkr|stjjdd}|| |r5t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 sXw   Y  d S )Nza,b,c
1,2,"3rH   rI   rJ   r?   r&   r*   r,   r)   z#EOF inside string starting at row 1zunexpected end of datar   )rC   r   rM   rN   rO   r   r   r   r/   r0   r   r   )	r   rT   rP   r   r   rM   r1   r2   r   r   r   r   test_unbalanced_quoting   s    

"rU   )%__doc__rA   ior   r   pandas.compatr   r   pandas.errorsr   pandasr   pandas._testing_testingr/   rM   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowMSG1MSG2parametrizeQUOTE_MINIMALr   r!   r3   r=   rB   rD   	QUOTE_ALLQUOTE_NONNUMERICrG   rQ   rS   rU   r   r   r   r   <module>   s~    
	




