
    Eg2                     
   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                            d          Z ej        dd	gd
           d             Z G d d          Zd Zd Zd ZdS )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    \/var/www/sysmax/venv/lib/python3.11/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                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestUnsupportedFeaturesc                     d}dD ]T}t          j        t          d          5  t          t	          |          |d           d d d            n# 1 swxY w Y   Ud S )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!   s    % 	O 	OFy0DEEE O O$NNNNO O O O O O O O O O O O O O O	O 	Os    AA	A	c           	      8	   d}d}d}t          j        t          |          5  t          j        t
          |          5  t          t          |          dd d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          |          dd	           d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          |          dd
t          d                     d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          |          dd           d d d            n# 1 swxY w Y   t          j        t          j
        t
          f          5  t          t          |          d d           d d d            n# 1 swxY w Y   t          j        t          j
                  5  t          t          |          d           d d d            n# 1 swxY w Y   t          j        t          j
                  5  t          t          |          d
t          d                     d d d            n# 1 swxY w Y   t          j        t          j
                  5  t          t          |          d           d d d            n# 1 swxY w Y   d}d}t          j        t          |          5  t          t          |          d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          |          dd	           d d d            n# 1 swxY w Y   d}d}t          j        t          |          5  t          t          |          d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          t          |          d           d d d            n# 1 swxY w Y   d}d}t          j        t          |          5  t          t          |          d           d d d            d S # 1 swxY w Y   d S )Nr   zdoes not support;The 'delim_whitespace' keyword in pd.read_csv is deprecatedr   r   F)r   sepdelim_whitespacez\s)r   r&   	   )r   r&   	quotechar   )r   
skipfooter)r&   r'   )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   
ValueErrortmassert_produces_warningFutureWarningr   r   chrparsersParserWarningr   )r!   r"   msgdepr_msgtexts        r   test_c_enginez%TestUnsupportedFeatures.test_c_engine)   s    P ]:S111 	W 	W+MJJJ W W$PUVVVVW W W W W W W W W W W W W W W	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W ]:S111 	< 	<Xd^^CU;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<]:S111 	O 	OXd^^CTSXXNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O]:S111 	? 	?Xd^^CA>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ')>(NOO 	G 	GXd^^FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G'(=>> 	0 	0Xd^^////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0'(=>> 	C 	CXd^^SBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C'(=>> 	3 	3Xd^^2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3A
 &];c222 	1 	1Xd^^0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1];c222 	= 	=Xd^^CV<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= : ]:S111 	5 	5Xd^^t4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5]:S111 	3 	3Xd^^r2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 9$]:S111 	: 	:Xd^^D9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s  B!A+B+A/	/B2A/	3BB	B( CCC:.D44D8;D8 FF
F
6 G""G&)G&H66H:=H:-JJJK,,K03K0MMM' NNN=O((O,/O,P99P= P=#RRRc                 $   ddl m} d}|D ]}dt          |           dt          |           d}|t                      i}t	          j        t          |          5  t          t          |          fd|i| d d d            n# 1 swxY w Y   d S )	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.readersr<   reprobjectr   r   r0   r   r   )r!   r   py_unsupportedr"   defaultr7   kwargss          r   test_python_enginez*TestUnsupportedFeatures.test_python_engine`   s#   SSSSSS & 	I 	IGCtG}} C C&*=&9&9C C C 
 vxx(Fz555 I I$HHHHHHI I I I I I I I I I I I I I I	I 	Is   BB	B	c                      G d d          }d}d}t          j        t          |          5  t           ||          |           d d d            d S # 1 swxY w Y   d S )Nc                   (    e Zd ZddZd Zd Zd ZdS )MTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBufferreturnNc                     || _         d S r	   r"   )r!   csv_datas     r   __init__zVTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.__init__v   s    $			r   c                 4    | j                                         S r	   )r"   __next__r!   s    r   rN   zVTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.__next__y   s    y))+++r   c                     | j         S r	   rJ   rO   s    r   readzRTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.read|   
    y r   c                     | j         S r	   rJ   rO   s    r   readlinezVTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.readline   rR   r   )rH   N)__name__
__module____qualname__rL   rN   rQ   rT   r
   r   r   NoNextBufferrG   u   sU        % % % %, , ,! ! !! ! ! ! !r   rX   za
1zD'NoNextBuffer' object is not iterable|argument 1 must be an iteratorr   )r   )r   r   r    r   )r!   r   rX   r"   r7   s        r   test_python_engine_file_no_iterz7TestUnsupportedFeatures.test_python_engine_file_no_iters   s    	! 	! 	! 	! 	! 	! 	! 	! T]9C000 	? 	?\\$''>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   AAAc                    ddl m} d}|D ]}dt          |           d}|t                      i}ddh}|dk    rd	||<   n||v rd
||<   n|dk    rd||<   d }d }d|v r	d}t          }d|v r	d}t          }t          j        t          |          5  t          j	        ||          5  t          t          |          fddi| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr   )_pyarrow_unsupportedzJ1,2,3,,
        1,2,3,4,
        1,2,3,4,5
        1,2,,,
        1,2,3,4,r=   z2 option is not supported with the 'pyarrow' enginewarn_bad_lineserror_bad_linesdialectexcelTon_bad_lineswarnr'   r%   verbosez2The 'verbose' keyword in pd.read_csv is deprecatedr   r   pyarrow)r>   r[   r?   r@   r3   r   r   r0   r1   r2   r   r   )	r!   pa_unsupportedr"   rB   r7   rC   default_needs_boolra   r8   s	            r   test_pyarrow_enginez+TestUnsupportedFeatures.test_pyarrow_engine   s   TTTTTT & 	I 	IG7tG}} 7 7 7  vxx(F"24E!F)##")w..."&wN**"(wDH!V++X$F""O$z555 I I/HEEE I IXd^^HHIHHHHI I I I I I I I I I I I I I II I I I I I I I I I I I I I I/	I 	Is6   C%%CC%CC%CC%%C)	,C)	c                    t          d          }d }|}|j        dvrOd}t          j        t          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S |                    ||           d S )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   rc   zKon_bad_line can only be a callable function if engine='python' or 'pyarrow'r   )r`   )r   r   r   r   r0   r   )r!   all_parserssiobad_lines_funcparserr7   s         r   ,test_on_bad_lines_callable_python_or_pyarrowzDTestUnsupportedFeatures.test_on_bad_lines_callable_python_or_pyarrow   s     z""$%:::;  z555 B B.AAAB B B B B B B B B B B B B B B B B B OOCnO=====s   A  A$'A$N)	rU   rV   rW   r#   r:   rD   rY   rf   rn   r
   r   r   r   r       sy        O O O5: 5: 5:nI I I&? ? ?*"I "I "IH> > > > >r   r   c                    | }t           }|j        dk    rt          j        d           t	          j        d          5 }t          |                              dd           t	          j        d          5  t          j	        |d	
          5  |
                    |g d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        |           d d d            d S # 1 swxY w Y   d S )Nrc   z,https://github.com/apache/arrow/issues/38676reasonztest.csvzcol1,col2
a,b
1,2zutf-8)encodingFcol3r   )col1col2rs   )usecols)r0   r   r   skipr1   ensure_cleanr   
write_textr2   r   r   osunlink)rj   rm   errorfnames       r   )test_close_file_handle_on_invalid_usecolsr~      s   FE}	!!IJJJJ		$	$ U4wGGG'.. 	I 	IuF333 I I/G/G/GHHHI I I I I I I I I I I I I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 		%                 sY   9C77CB4(C4B88C;B8<C?C7C	C7C	C77C;>C;c                 (   |}|j         dk    r;|                     t          j                            |j          d                     t          j        t          d          5  |                    g            d d d            d S # 1 swxY w Y   d S )Nr   z engine supports lists.rp   Invalidr   )r   applymarkerr   markxfailr   r0   r   )r   rj   rm   s      r   test_invalid_file_inputsr      s    F}  K%N%N%NOO	
 	
 	
 
z	3	3	3                   s   $BBBc                     | }d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   testnumpy)dtype_backend)r   r   r0   r   )rj   rm   r7   s      r   test_invalid_dtype_backendr      s    F	!  
z	-	-	- 7 7g6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   AA	A	)__doc__ior   rz   pathlibr   r   pandas.errorsr   pandas._testing_testingr1   pandas.io.parsersr   r>   r5   readersr   filterwarnings
pytestmarkfixturer   r   r~   r   r   r
   r   r   <module>r      sX          				        % % % % % %       & & & & & & + + + + + + + + + + + +[''C 

 ,/__EEE  FEZ> Z> Z> Z> Z> Z> Z> Z>z  $	 	 	7 7 7 7 7r   