
    Owgd              
          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                  j                  d      Zej                  j#                  d      Zej                  j#                  d	      Zej                  j)                  d
ddidfdej*                  ddfddi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j*                  ej4                  g      ej                  j)                  dddg      d                      Zej                  j)                  di g dgfd ej*                  dg dgfd ej8                  dg dgfd ej4                  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)                  d-d%d(g      d.        Z!y)/zt
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                     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        Z/var/www/horilla/myenv/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"   ,   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_basicr5   <   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$   r.   r/   )r   replacer   r   r1   r2   )r   r7   r   r3   r   new_datar4   s          r   test_quote_char_variousrA   E   sQ    F-/BHD||C,H__Xh/:_FF&(+r6   r    c                    ||d}d}| }|t         j                  k7  r_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,3pythonrB   z("quotechar" must be a 1-character stringr   r   r&   r      r(   r,   )csv
QUOTE_NONEr   enginer   r   r   r   r   r   r1   r2   )	r   r   r7   r   r   r   r   r3   r4   s	            r   test_null_quote_charrJ   Q   s     &':FDF#..  ++x7J"<L 7; 	 ]]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
   r.   )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   r1   r2   )r   r   exp_datar   r   r-   r4   r3   s           r   test_quoting_variousrN   j   sM    $ DFGV__Xd^E7EfEF73H&(+r6   zdoublequote,exp_dataTrF   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reasonr.   )r	   doublequoter)   r*   r,   )
rI   r   markxfailapplymarkerr   r   r   r1   r2   )	r   rT   rM   requestr   r   rU   r4   r3   s	            r   test_double_quoterY      sz     FD}}	!+{{  (; <D!__Xd^s_TFC:6H&(+r6   c                     d}| }t        ddgi      }|j                  t        |      |      }t        j                  ||       y )Nza
1r)   r&   r/   r0   )r   r	   r   r   r3   r4   s         r   test_quotechar_unicoder\      sD     DF#s$H__Xd^y_AF&(+r6   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,"3rP   rQ   rR   rE   r(   r,   r.   r+   z#EOF inside string starting at row 1zunexpected end of datar   )rI   r   rU   rV   rW   r   r   r   r1   r2   r   r   )	r   r]   rX   r   r   rU   r3   r4   r   s	            r   test_unbalanced_quotingr_      s     FD}}	!({{  (; <D!i[/B$*!56
fh/ }}# 2) 	 ]];c2 	,OOHTN+	, 	, 	,s   =C!!C*)"__doc__rG   ior   r   pandas.compatr   pandas.errorsr   pandasr   pandas._testing_testingr1   rU   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowparametrizeQUOTE_MINIMALr   r"   r5   rA   rH   rJ   	QUOTE_ALLQUOTE_NONNUMERICrN   rY   r\   r_    r6   r   <module>rq      s  
     %  [[''C
 ''8{{&&~6 
u	MN3+<+<=6	
 q	KL
 2 
2 8# 9 9, 'EF, G, S%6%6$GHDz20 3 I 0, 	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,r6   