o
    Û­jˆ  ã                   @   sÐ   d Z ddlmZ ddlZddlZddlmZ ddlm	Z
 ej dddgg¡dd„ ƒZej d	i d
diddig¡dd„ ƒZdd„ Zdd„ Zdd„ Zej dg d¢¡dd„ ƒZej dddg¡dd„ ƒZdd„ ZdS ) zf
Tests that comments are properly handled during parsing
for all of the parsers defined in parsers.py
é    )ÚStringION)Ú	DataFrameÚ	na_valuesÚNaNc                 C   s¢   | }d}t g d¢dtjdggg d¢d�}|jdkr?d}tjt|d	�� |jt|ƒd
|d� W d   ƒ d S 1 s8w   Y  d S |jt|ƒd
|d�}t	 
||¡ d S )Nz&A,B,C
1,2.,4.#hello world
5.,NaN,10.0
©g      ð?g       @ç      @ç      @ç      $@©ÚAÚBÚC©ÚcolumnsÚpyarrowú?The 'comment' option is not supported with the 'pyarrow' engine©Úmatchú#©Úcommentr   ©r   ÚnpÚnanÚengineÚpytestÚraisesÚ
ValueErrorÚread_csvr   ÚtmÚassert_frame_equal)Úall_parsersr   ÚparserÚdataÚexpectedÚmsgÚresult© r'   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/io/parser/test_comment.pyÚtest_comment   s   ÿ

ÿþr)   Úread_kwargsÚlineterminatorÚ*Údelim_whitespaceTc           
   	   C   s  | }d}d }d}|  d¡r| dd¡}t}n|  d¡r$| d|  d¡¡}d|d	< |jd
kr{d|v r4d}nd}tjt|d��4 tj||dd�� |j	t
|ƒfi |¤Ž W d   ƒ n1 s\w   Y  W d   ƒ d S W d   ƒ d S 1 stw   Y  d S |jdkrÌ|  d¡rÌd}tjt|d��4 tj||dd�� |j	t
|ƒfi |¤Ž W d   ƒ n1 s­w   Y  W d   ƒ d S W d   ƒ d S 1 sÅw   Y  d S tj||dd�� |j	t
|ƒfi |¤Ž}W d   ƒ n1 sêw   Y  tg d¢dtjdggg d¢d�}	t ||	¡ d S )Nz@# empty
A,B,C
1,2.,4.#hello world
#ignore this line
5.,NaN,10.0
z;The 'delim_whitespace' keyword in pd.read_csv is deprecatedr-   ú,ú r+   Ú
r   r   r   zFThe 'lineterminator' option is not supported with the 'pyarrow' enginer   r   F)r   Úcheck_stacklevelÚpythonz>Custom line terminators not supported in python parser \(yet\)r   r   r	   r
   r   )ÚgetÚreplaceÚFutureWarningr   r   r   r   r   Úassert_produces_warningr   r   r   r   r   r    )
r!   r*   Úrequestr"   r#   ÚwarnÚdepr_msgr%   r&   r$   r'   r'   r(   Útest_line_comment!   sd   


ÿÿý
ÿü
ÿûÿý
ÿü
ÿûÿÿr:   c                 C   ó¢   | }d}t g d¢dtjdggg d¢d�}|jdkr?d}tjt|d	�� |jt|ƒd
dd� W d   ƒ d S 1 s8w   Y  d S |jt|ƒd
dd�}t	 
||¡ d S )NzH# empty
random line
# second empty line
1,2,3
A,B,C
1,2.,4.
5.,NaN,10.0
r   r   r	   r
   r   r   r   r   r   é   )r   Úskiprowsr   ©r!   r"   r#   r$   r%   r&   r'   r'   r(   Útest_comment_skiprowsU   s   	ÿ

ÿþr?   c                 C   r;   )Nz<# empty
# second empty line
1,2,3
A,B,C
1,2.,4.
5.,NaN,10.0
r   r   r	   r
   r   r   r   r   r   é   ©r   Úheaderr   r>   r'   r'   r(   Útest_comment_headerm   s   ÿ

ÿþrC   c                 C   s¦   | }d}t g d¢dtjdggg d¢d�}|jdkr@d}tjt|d	�� |jt|ƒd
ddd� W d   ƒ d S 1 s9w   Y  d S |jt|ƒd
ddd�}t	 
||¡ d S )NzU# empty
# second empty line
# third empty line
X,Y,Z
1,2,3
A,B,C
1,2.,4.
5.,NaN,10.0
r   r   r	   r
   r   r   r   r   r   r<   r@   )r   r=   rB   r   r>   r'   r'   r(   Útest_comment_skiprows_headerƒ   s   ÿ

ÿþrD   Úcomment_char)r   ú~ú&ú^r,   ú@c                 C   sª   | }d}|j dkr2d}tjt|d�� |jt| d|¡ƒ|d� W d   ƒ d S 1 s+w   Y  d S |jt| d|¡ƒ|d�}tg d¢g d¢gg d	¢d
�}t 	||¡ d S )Nz,a,b,c
1,2,3#ignore this!
4,5,6#ignorethistoor   r   r   r   )r   ©r@   é   é   )r<   é   é   ©ÚaÚbÚcr   )
r   r   r   r   r   r   r4   r   r   r    )r!   rE   r"   r#   r%   r&   r$   r'   r'   r(   Útest_custom_comment_charž   s"   
ÿ
ÿüÿrS   rB   Úinferc                 C   s¾   | }d}|d u rt ddgddgddgdœƒ}nt g d	¢gg d
¢d�}|jdkrMd}tjt|d�� |jt|ƒd|d� W d   ƒ d S 1 sFw   Y  d S |jt|ƒd|d�}t ||¡ d S )Nz # notes
a,b,c
# more notes
1,2,3rP   Ú1rQ   Ú2rR   Ú3)r   r@   rK   rJ   rO   r   r   r   r   r   rA   )	r   r   r   r   r   r   r   r   r    )r!   rB   r"   r#   r$   r%   r&   r'   r'   r(   Útest_comment_first_line²   s   

ÿþrX   c                 C   sÒ   | j dkrd}| tjj|td�¡ | }d}|j dkrAd}tjt|d�� |jt	|ƒdd	d
� W d   ƒ d S 1 s:w   Y  d S |jt	|ƒdd	d
�}t
g d¢g d¢dtjtjgdtjdgdœƒ}t ||¡ d S )NrR   z=see gh-34002: works on the python engine but not the c engine)Úreasonr   zU# this is a comment
col1,col2,col3,col4
1,2,3,4#inline comment
4,5#,6,10
7,8,#N/A,11
r   r   r   r   z#N/Ar   )r@   r<   é   )rK   rM   é   g      @r   g      &@)Úcol1Úcol2Úcol3Úcol4)r   Úapplymarkerr   ÚmarkÚxfailÚAssertionErrorr   r   r   r   r   r   r   r   r    )r!   r7   rY   r"   r#   r%   r&   r$   r'   r'   r(   Ú"test_comment_char_in_default_valueÆ   s.   
ÿ

ÿþ
üÿrd   )Ú__doc__Úior   Únumpyr   r   Úpandasr   Úpandas._testingÚ_testingr   ra   Úparametrizer)   r:   r?   rC   rD   rS   rX   rd   r'   r'   r'   r(   Ú<module>   s(    
ÿ
1

