
    :i              
          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                  j!                  d      Zej                  j%                  d      Zej                  j%                  d	      Zerd
ZdZndZdZej                  j/                  dddide fdej0                  ddfddide dfg      ed               Zej                  j/                  dddg      ed               Zd Zej                  j/                  dg d      d        Zeej                  j/                  dej0                  ej:                  g      ej                  j/                  dd
dg      d                       Zej                  j/                  d!i g d"gfd#ej0                  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&               Z!ej                  j/                  d'd(d)d*ggfd+d)d,ggfg      d-        Z"ej                  j/                  dd#d.g      d/        Z#ej                  j/                  d0d(d+g      d1        Z$y)2zt
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                     d}| }t        j                  t        |      5   |j                  t	        |      fi | d d d        y # 1 sw Y   y xY w)N1,2,3matchpytestraises	TypeErrorread_csvr   )all_parserskwargsmsgdataparsers        i/var/www/html/talentspherev1.5.2/venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_quoting.pytest_bad_quote_charr    $   sH     DF	y	, 21&12 2 2   AAzquoting,msg)r   z%"quoting" must be an integer|Argument)
   zbad "quoting" valuec                     d}| }t        j                  t        |      5  |j                  t	        |      |       d d d        y # 1 sw Y   y xY w)Nr   r   )r   r   )r   r   r   r   r   s        r   test_bad_quotingr$   8   sE     DF	y	, 989 9 9r!   c                     | }d}t        g dgg d      }|j                  t        |      d      }t        j                  ||       y )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results        r   test_quote_char_basicr7   H   s@    FD-/BH__Xd^s_;F&(+    
quote_char)~*%$@Pc                     | }t        g dgg d      }d}|j                  d|      }|j                  t        |      |      }t	        j
                  ||       y )Nr'   r*   r.   r&   r0   r1   )r   replacer   r   r3   r4   )r   r9   r   r5   r   new_datar6   s          r   test_quote_char_variousrC   Q   sQ    F-/BHD||C,H__Xh/:_FF&(+r8   r   c                    ||d}d}| }|t         j                  k7  rmt        sd}nd}t        r| j                  dk(  r
|dk(  rd| nd}t        j                  t        |	      5   |j                  t        |      fi | d d d        y t        r| j                  dk(  sEt        g d
gg d      } |j                  t        |      fi |}t        j                  ||       y y # 1 sw Y   y xY w)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   r3   r4   )	r   r   r9   r   r   r   r   r5   r6   s	            r   test_null_quote_charrK   ]   s     &':FDF#.. &C-C ++x7J"<L %SE*; 	 ]]9C0 	6FOOHTN5f5	6 	6**h6i[/B $:6:
fh/	 7	6 	6s   $C%%C.zkwargs,exp_data)r(   r   r   r0   )r(   r   z"foo")g      ?g       @r   c                     d}| }g d} |j                   t        |      fd|i|}t        ||      }t        j                  ||       y )Nz	1,2,"foo"r*   namesr.   )r   r   r   r3   r4   )r   r   exp_datar   r   r/   r6   r5   s           r   test_quoting_variousrO   z   sM    $ DFGV__Xd^E7EfEF73H&(+r8   zdoublequote,exp_dataTrG   z4 " 5Fz4 " 5"c                    | }d}|j                   dk(  r3|s1t        j                  j                  d      }|j	                  |       |j                  t        |      d|      }t        |ddg	      }t        j                  ||       y )
Nza,b
3,"4 "" 5"pyarrowMismatched resultreasonr0   )r   doublequoter+   r,   r.   )
rJ   r   markxfailapplymarkerr   r   r   r3   r4   )	r   rU   rN   requestr   r   rV   r6   r5   s	            r   test_double_quoterZ      sz     FD}}	!+{{  (; <D!__Xd^s_TFC:6H&(+r8   c                     d}| }t        ddgi      }|j                  t        |      |      }t        j                  ||       y )Nza
1r+   r(   r1   r2   )r   r   r   r   r5   r6   s         r   test_quotechar_unicoder]      sD     DF#s$H__Xd^y_AF&(+r8   balancedc                    | }d}|j                   dk(  r3|s1t        j                  j                  d      }|j	                  |       |rFt        g dgg d      }|j                  t        |dz               }t        j                  ||       y |j                   d	k(  rd
nd}t        j                  t        |      5  |j                  t        |             d d d        y # 1 sw Y   y xY w)Nza,b,c
1,2,"3rQ   rR   rS   rF   r*   r.   r0   r-   z#EOF inside string starting at row 1zunexpected end of datar   )rJ   r   rV   rW   rX   r   r   r   r3   r4   r   r   )	r   r^   rY   r   r   rV   r5   r6   r   s	            r   test_unbalanced_quotingr`      s     FD}}	!({{  (; <D!i[/B$*!56
fh/ }}# 2) 	 ]];c2 	,OOHTN+	, 	, 	,s   =C!!C*)%__doc__rH   ior   r   pandas.compatr   r   pandas.errorsr   pandasr   pandas._testing_testingr3   rV   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowMSG1MSG2parametrizeQUOTE_MINIMALr    r$   r7   rC   rI   rK   	QUOTE_ALLQUOTE_NONNUMERICrO   rZ   r]   r`    r8   r   <module>rt      s  
    &  [[''C
 ''8{{&&~6 	DD%DD 
u	!5dV<=3+<+<=6	
 q	1$yAB
 2 
2 8# 9 9, 'EF, G, S%6%6$GHDz20 3 I 04 	m_s'8'8	9M?Ks}}	5G s~~	68IJ s';';	<?P>QR  , !", da\N3eq(m_5MN
,
, sHo6, 7, dE]3, 4,r8   