
    iI                        d Z ddlm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c mc mZ ej"                  j%                  d      Z ej(                  dd	gd
       d        Z G d d      Zd Zd Zd Zy)a  
Tests that features that are currently unsupported in
either the Python or C parser are actually enforced
and are clearly communicated to the user.

Ultimately, the goal is to remove test cases from this
test suite as new feature support is added to the parsers.
    )StringION)Path)ParserError)read_csvz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpythonz
python-fwfc                     | S N )vals    d/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_unsupported.py<lambda>r      s         )paramsidsc                     | j                   S r	   )param)requests    r   python_enginer      s    ==r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestUnsupportedFeaturesc                     d}dD ]=  }t        j                  t        d      5  t        t	        |      |d       d d d        ? y # 1 sw Y   JxY w)Na b c
1 2 3)cr   zunexpected keywordmatchT)enginemangle_dupe_cols)pytestraises	TypeErrorr   r   )selfdatar   s      r   test_mangle_dupe_cols_falsez3TestUnsupportedFeatures.test_mangle_dupe_cols_false"   sV    % 	OFy0DE O$NO O	OO Os   AA	c           	         d}d}t        j                  t        |      5  t        t	        |      dd       d d d        t        j                  t        |      5  t        t	        |      ddt        d      	       d d d        t        j                  t        |      5  t        t	        |      dd
       d d d        t        j                  t        j                        5  t        t	        |      d       d d d        t        j                  t        j                        5  t        t	        |      dt        d             d d d        t        j                  t        j                        5  t        t	        |      d
       d d d        d}d}t        j                  t        |      5  t        t	        |      d       d d d        t        j                  t        |      5  t        t	        |      dd       d d d        d}d}t        j                  t        |      5  t        t	        |      d       d d d        t        j                  t        |      5  t        t	        |      d       d d d        d}d}t        j                  t        |      5  t        t	        |      d       d d d        y # 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   zdoes not supportr   r   z\s)r   sep	   )r   r%   	quotechar   )r   
skipfooter)r%   )r%   r(   )r*   a                        A       B       C       D        E
one two three   four
a   b   10.0032 5    -0.5109 -2.3358 -0.4645  0.05076  0.3640
a   q   20      4     0.4473  1.4152  0.2834  1.00661  0.1744
x   q   30      3    -0.6662 -0.5243 -0.3580  0.89145  2.5838zError tokenizing dataz\s+z)Only length-1 thousands markers supportedzA|B|C
1|2,334|5
10|13|10.
z,,)	thousands z(Only length-1 line terminators supportedza,b,c~~1,2,3~~4,5,6z~~)lineterminator)r   r   
ValueErrorr   r   chrtmassert_produces_warningparsersParserWarningr   )r!   r"   msgtexts       r   test_c_enginez%TestUnsupportedFeatures.test_c_engine*   s     ]]:S1 	<Xd^CU;	<]]:S1 	OXd^CTSXN	O]]:S1 	?Xd^CA>	? ''(=(=> 	0Xd^/	0''(=(=> 	CXd^SB	C''(=(=> 	3Xd^2	3A
 &]];c2 	1Xd^0	1]];c2 	=Xd^CV<	= : ]]:S1 	5Xd^t4	5]]:S1 	3Xd^r2	3 9$]]:S1 	:Xd^D9	: 	:O	< 	<	O 	O	? 	?	0 	0	C 	C	3 	3	1 	1	= 	=	5 	5	3 	3
	: 	:s   K "K K#K'%!K41L/L)L(L("L4 M  K
KK$'K14K>LLL%(L14L= M	c                     ddl m} d}|D ]R  }d|d|d}|t               i}t        j                  t
        |      5  t        t        |      fd|i| d d d        T y # 1 sw Y   _xY w)	Nr   )_python_unsupportedz*1,2,3,,
1,2,3,4,
1,2,3,4,5
1,2,,,
1,2,3,4,The z" option is not supported with the z enginer   r   )pandas.io.parsers.readersr8   objectr   r   r.   r   r   )r!   r   py_unsupportedr"   defaultr4   kwargss          r   test_python_enginez*TestUnsupportedFeatures.test_python_engineZ   s    S & 	IGwk "&&3%6g? 
 vx(Fz5 I$HHHI I	II Is   A!!A*	c                      G d d      }d}d}t        j                  t        |      5  t         ||      |       d d d        y # 1 sw Y   y xY w)Nc                   &    e Zd ZddZd Zd Zd Zy)MTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBufferNc                     || _         y r	   r"   )r!   csv_datas     r   __init__zVTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.__init__p   s	    $	r   c                 6    | j                   j                         S r	   )r"   __next__r!   s    r   rH   zVTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.__next__s   s    yy))++r   c                     | j                   S r	   rD   rI   s    r   readzRTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.readv       yy r   c                     | j                   S r	   rD   rI   s    r   readlinezVTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.readliney   rL   r   )returnN)__name__
__module____qualname__rF   rH   rK   rN   r
   r   r   NoNextBufferrB   o   s    %,!!r   rS   za
1zD'NoNextBuffer' object is not iterable|argument 1 must be an iteratorr   )r   )r   r   r    r   )r!   r   rS   r"   r4   s        r   test_python_engine_file_no_iterz7TestUnsupportedFeatures.test_python_engine_file_no_iterm   sJ    	! 	! T]]9C0 	?\$'>	? 	? 	?s   AAc                    ddl m} d}|D ]r  }d|d}|t               i}ddh}|dk(  rd	||<   n||v rd
||<   n
|dk(  rd||<   t        j                  t
        |      5  t        t        |      fddi| d d d        t y # 1 sw Y   xY w)Nr   )_pyarrow_unsupportedzJ1,2,3,,
        1,2,3,4,
        1,2,3,4,5
        1,2,,,
        1,2,3,4,r9   z2 option is not supported with the 'pyarrow' enginewarn_bad_lineserror_bad_linesdialectexcelTon_bad_lineswarnr   r   pyarrow)r:   rV   r;   r   r   r.   r   r   )r!   pa_unsupportedr"   r=   r4   r>   default_needs_bools          r   test_pyarrow_enginez+TestUnsupportedFeatures.test_pyarrow_engine   s    T & 	EG#UVCvx(F"24E!F)#")w.."&wN*"(wz5 E$D	DVDE E	EE Es   BB
	c                     t        d      }d }|}|j                  dvr:d}t        j                  t        |      5  |j                  ||       d d d        y |j                  ||       y # 1 sw Y   y xY w)Nza,b
1,2c                     | S r	   r
   )xs    r   r   zVTestUnsupportedFeatures.test_on_bad_lines_callable_python_or_pyarrow.<locals>.<lambda>   s    1 r   )r   r]   zKon_bad_line can only be a callable function if engine='python' or 'pyarrow'r   )r[   )r   r   r   r   r.   r   )r!   all_parserssiobad_lines_funcparserr4   s         r   ,test_on_bad_lines_callable_python_or_pyarrowzDTestUnsupportedFeatures.test_on_bad_lines_callable_python_or_pyarrow   s     z"$%::;  z5 B.AB B OOCnO=B Bs   A--A6N)	rP   rQ   rR   r#   r6   r?   rT   r`   rh   r
   r   r   r   r   !   s$    O.:`I&?*E.>r   r   c                    | }t         }|j                  dk(  rt        j                  d       |}t	        |      j                  dd       t        j                  d      5  t        j                  |d	      5  |j                  |g d
       d d d        d d d        t        j                  |       y # 1 sw Y   'xY w# 1 sw Y   +xY w)Nr]   z,https://github.com/apache/arrow/issues/38676reasonzcol1,col2
a,b
1,2zutf-8)encodingFcol3r   )col1col2rm   )usecols)r.   r   r   skipr   
write_textr0   r1   r   r   osunlink)rd   	temp_filerg   errorfnames        r   )test_close_file_handle_on_invalid_usecolsrx      s    FE}}	!IJEK07C		#	#E	* E]]5/ 	EOOE+COD	EE IIe	E 	EE Es$   !C9B5C5B>	:CC
c                     |}|j                   dk(  r<| j                  t        j                  j	                  |j                    d             t        j
                  t        d      5  |j                  g        d d d        y # 1 sw Y   y xY w)Nr   z engine supports lists.rj   Invalidr   )r   applymarkerr   markxfailr   r.   r   )r   rd   rg   s      r   test_invalid_file_inputsr~      ss    F}} KK6M%NO	
 
z	3   s   )BBc                     | }d}t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   testnumpy)dtype_backend)r   r   r.   r   )rd   rg   r4   s      r   test_invalid_dtype_backendr      sF    F	!  
z	- 7g67 7 7s	   =A)__doc__ior   rs   pathlibr   r   pandas.errorsr   pandas._testing_testingr0   pandas.io.parsersr   r:   r2   readersr|   filterwarnings
pytestmarkfixturer   r   rx   r~   r   r
   r   r   <module>r      s     	   %  & + +[[''C

 ,/_E FF> F>R$	7r   