Ë
    AúYjI  ã                   ó  — 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    úr/var/www/ramen.bs-engineer-server.com/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Ü—‘œyÐ0DÔ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ñ 	<Ü”X˜d“^¨C°UÕ;÷	<ä�]‰]œ:¨SÔ1ñ 	OÜ”X˜d“^¨C°TÄSÈÃXÕN÷	Oä�]‰]œ:¨SÔ1ñ 	?Ü”X˜d“^¨C¸AÕ>÷	?ô ×'Ñ'¬×(=Ñ(=Ó>ñ 	0Ü”X˜d“^¨Õ/÷	0ä×'Ñ'¬×(=Ñ(=Ó>ñ 	CÜ”X˜d“^¨¼¸S»ÕB÷	Cä×'Ñ'¬×(=Ñ(=Ó>ñ 	3Ü”X˜d“^°Õ2÷	3ðAˆð
 &ˆä�]‰]œ;¨cÔ2ñ 	1Ü”X˜d“^¨Õ0÷	1ä�]‰]œ;¨cÔ2ñ 	=Ü”X˜d“^¨C°VÕ<÷	=ð :ˆðˆô �]‰]œ:¨SÔ1ñ 	5Ü”X˜d“^¨tÕ4÷	5ä�]‰]œ:¨SÔ1ñ 	3Ü”X˜d“^¨rÕ2÷	3ð 9ˆØ$ˆÜ�]‰]œ:¨SÔ1ñ 	:Ü”X˜d“^°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à�w�kð "&Ø&3Ð%6°gð?ð ð
 œv›xÐ(ˆ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   € Ø—y‘y×)Ñ)Ó+Ð+r   c                 ó   — | j                   S r	   rD   rI   s    r   ÚreadzRTestUnsupportedFeatures.test_python_engine_file_no_iter.<locals>.NoNextBuffer.readv   ó   € Ø—y‘yÐ 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ˆä�]‰]œ9¨CÔ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ÐVˆCØœv›xÐ(ˆFØ"2Ð4EÐ!FÐØ˜)Ò#Ø")��w’ØÐ.Ñ.Ø"&��w’Ø˜NÒ*Ø"(��w‘ä—‘œz°Ô5ñ EÜœ $›ÑD°	ÐD¸VÒ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ð �O‰O˜C¨nˆOÕ=÷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×ÑÐ0¸7ÐÔCÜ	×	#Ñ	# EÓ	*ñ EÜ�]‰]˜5¨Ô/ñ 	EØ�O‰O˜EÒ+CˆOÔD÷	E÷Eô ‡I�IˆeÕ÷	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Ø‡}�}˜Ò Ø×ÑÜ�K‰K×Ñ¨¯© Ð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ñ 7ús	    =½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   