
    .iX              
          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rd
ZdZndZdZej                  j-                  dddide fdej.                  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j.                  ej8                  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j<                  dg d"gfd#ej8                  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)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        a/var/www/app/trading-bot/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#   5   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_basicr6   E   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/   r0   )r   replacer   r   r2   r3   )r   r8   r   r4   r   new_datar5   s          r   test_quote_char_variousrB   N   sQ    F-/BHD||C,H__Xh/:_FF&(+r7   r   c                    ||d}d}| }|t         j                  k7  rgt        sd}nd}| j                  dk(  r
|dk(  rd| nd}t	        j
                  t        |	      5   |j                  t        |      fi | d d d        y | j                  dk7  rEt        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   enginer   r   r   r   r   r   r2   r3   )	r   r   r8   r   r   r   r   r4   r5   s	            r   test_null_quote_charrJ   Z   s     &':FDF#.. &C-C !!X-*2B %SE*; 	 ]]9C0 	6FOOHTN5f5	6 	6			x	'i[/B $:6:
fh/	 
(	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   r2   r3   )r   r   exp_datar   r   r.   r5   r4   s           r   test_quoting_variousrN   w   sM    $ DFGV__Xd^E7EfEF73H&(+r7   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   r2   r3   )	r   rT   rM   requestr   r   rU   r5   r4   s	            r   test_double_quoterY      sz     FD}}	!+{{  (; <D!__Xd^s_TFC:6H&(+r7   c                     d}| }t        ddgi      }|j                  t        |      |      }t        j                  ||       y )Nza
1r*   r'   r0   r1   )r   r
   r   r   r4   r5   s         r   test_quotechar_unicoder\      sD     DF#s$H__Xd^y_AF&(+r7   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   r2   r3   r   r   )	r   r]   rX   r   r   rU   r4   r5   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_testingr2   rU   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowMSG1MSG2parametrizeQUOTE_MINIMALr   r#   r6   rB   rH   rJ   	QUOTE_ALLQUOTE_NONNUMERICrN   rY   r\   r_    r7   r   <module>rs      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,r7   