o
    �¨Êhd  ã                
   @   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¡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¡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,d-ggfd.d,d/ggfg¡d0d1„ ƒZej dd%d2g¡d3d4„ ƒZ ej d5d+d.g¡d6d7„ ƒZ!dS )8zt
Tests that quoting specifications are properly handled
during parsing for all of the parsers defined in parsers.py
é    N)ÚStringIO)ÚPY311)ÚParserError)Ú	DataFramez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningÚpyarrow_xfailÚ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   úU/var/www/html/env/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_basic<   s
   r1   Ú
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   r2   r   r/   r   Únew_datar0   r   r   r   Útest_quote_char_variousE   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   r2   r   r   r   r   r/   r0   r   r   r   Útest_null_quote_charQ   s$   

ÿÿý"ÿürC   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)   r0   r/   r   r   r   Útest_quoting_variousj   s   rF   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(   )
rB   r   ÚmarkÚxfailÚapplymarkerr   r   r   r-   r.   )	r   rK   rE   Úrequestr   r   rL   r0   r/   r   r   r   Útest_double_quote…   s   
rP   ú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/   r0   r   r   r   Útest_quotechar_unicode•   s
   rR   Ú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,"3rG   rH   rI   r>   r$   r(   r*   r'   z#EOF inside string starting at row 1zunexpected end of datar   )rB   r   rL   rM   rN   r   r   r   r-   r.   r   r   )	r   rS   rO   r   r   rL   r/   r0   r   r   r   r   Útest_unbalanced_quoting    s    

ÿý"ÿrT   )"Ú__doc__r@   Úior   r   Úpandas.compatr   Úpandas.errorsr   Úpandasr   Úpandas._testingÚ_testingr-   rL   ÚfilterwarningsÚ
pytestmarkÚusefixturesÚxfail_pyarrowÚskip_pyarrowÚparametrizeÚQUOTE_MINIMALr   r   r1   r;   rA   rC   Ú	QUOTE_ALLÚQUOTE_NONNUMERICrF   rP   rR   rT   r   r   r   r   Ú<module>   st    ÿ

þ
úþþþ	
õþ
ÿ


