o
    5c                     @   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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pyarrow_skip	na_valuesNaNc                 C   sL   | }d}t g ddtjdggg dd}|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#commentr   r   npnanread_csvr   tmassert_frame_equal)all_parsersr   parserdataexpectedresult r   Y/var/www/html/gps/gps/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r|dd}n | dr0|jdkr'tjjdd}|j| |d	| d}d
|d< |jt	|fi |}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
r%   , r#   cz2Custom terminator not supported with Python engine)reason
r   r   r   r	   r
   r   r   )getreplaceenginepytestmarkxfailnode
add_markerr   r   r   r   r   r   r   )r   r"   requestr   r   r/   r   r   r   r   r    test_line_comment   s"   


r4   c                 C   L   | }d}t g ddtjdggg dd}|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   skiprowsr   r   r   r   r   r   r   r   r    test_comment_skiprows=   s   	r9   c                 C   r5   )
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   headerr   r8   r   r   r    test_comment_headerO   s   r=   c                 C   sN   | }d}t g ddtjdggg dd}|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   r6   r:   )r   r7   r<   r   r8   r   r   r    test_comment_skiprows_header`   s   r>   comment_char)r   ~&^r$   @c                 C   sN   | }d}|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:         )r6         abr(   r   )r   r   r,   r   r   r   )r   r?   r   r   r   r   r   r   r    test_custom_comment_charu   s   rL   r<   inferc                 C   sh   | }d}|d u rt ddgddgddgd}nt g d	gg d
d}|jt|d|d}t|| d S )Nz # notes
a,b,c
# more notes
1,2,3rJ   1rK   2r(   3)r   r:   rE   rD   rI   r   r   r;   )r   r   r   r   r   )r   r<   r   r   r   r   r   r   r    test_comment_first_line   s   rQ   c                 C   s~   | j dkrd}|jtjj|td | }d}|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 )Nr(   z=see gh-34002: works on the python engine but not the c engine)r)   raiseszU# this is a comment
col1,col2,col3,col4
1,2,3,4#inline comment
4,5#,6,10
7,8,#N/A,11
r   z#N/Ar   )r:   r6      )rE   rG      g      @r   g      &@)col1col2col3col4)r-   r1   r2   r.   r/   r0   AssertionErrorr   r   r   r   r   r   r   )r   r3   r)   r   r   r   r   r   r   r    "test_comment_char_in_default_value   s   

rZ   )__doc__ior   numpyr   r.   pandasr   pandas._testing_testingr   r/   usefixtures
pytestmarkparametrizer!   r4   r9   r=   r>   rL   rQ   rZ   r   r   r   r    <module>   s*    



