a
    Pf                     @   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    n1 sn0    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/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/parser/test_comment.pytest_comment   s    
2r)   read_kwargslineterminator*delim_whitespaceTc           
   	   C   s  | }d}d }d}| dr,|dd}t}n| drH|d| d}d|d	< |jd
krd|v rhd}nd}tjt|dV tj||dd& |j	t
|fi | W d    n1 s0    Y  W d    n1 s0    Y  d S |jdkr|| dr|d}tjt|dX tj||dd& |j	t
|fi | W d    n1 sN0    Y  W d    n1 sn0    Y  d S tj||dd& |j	t
|fi |}W d    n1 s0    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   Zcheck_stacklevelpythonz>Custom line terminators not supported in python parser \(yet\)r   r   r	   r
   r   )getreplaceFutureWarningr   r   r   r   r   Zassert_produces_warningr   r   r   r   r   r    )
r!   r*   requestr"   r#   warnZdepr_msgr%   r&   r$   r'   r'   r(   test_line_comment!   sF    


RV6r7   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 W d    n1 sn0    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    	
2r;   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 W d    n1 sn0    Y  d S |jt|d
dd}t	
|| d S )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    
2r?   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    n1 sp0    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   r8   r<   )r   r9   r>   r   r:   r'   r'   r(   test_comment_skiprows_header   s    
4r@   comment_char)r   ~&^r,   @c                 C   s   | }d}|j dkrbd}tjt|d* |jt|d||d W d    n1 sT0    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<         )r8         abcr   )
r   r   r   r   r   r   r3   r   r   r    )r!   rA   r"   r#   r%   r&   r$   r'   r'   r(   test_custom_comment_char   s    
$rO   r>   Z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rd}tjt|d$ |jt|d|d W d    n1 s0    Y  d S |jt|d|d}t|| d S )Nz # notes
a,b,c
# more notes
1,2,3rL   1rM   2rN   3)r   r<   rG   rF   rK   r   r   r   r   r   r=   )	r   r   r   r   r   r   r   r   r    )r!   r>   r"   r#   r$   r%   r&   r'   r'   r(   test_comment_first_line   s    
2rS   c                 C   s   | j dkr$d}|tjj|td | }d}|j dkrd}tjt|d$ |jt	|dd	d
 W d    n1 sr0    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 )NrN   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<   r8      )rG   rI      g      @r   g      &@)Zcol1Zcol2Zcol3Zcol4)r   Zapplymarkerr   markZxfailAssertionErrorr   r   r   r   r   r   r   r   r    )r!   r5   rT   r"   r#   r%   r&   r$   r'   r'   r(   "test_comment_char_in_default_value   s(    

2
rY   )__doc__ior   numpyr   r   Zpandasr   Zpandas._testingZ_testingr   rW   Zparametrizer)   r7   r;   r?   r@   rO   rS   rY   r'   r'   r'   r(   <module>   s&   

1

