U
    f/e=                  	   @   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ddddddg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   sP   | }d}t dddgdtjdggddd	gd
}|jt|d|d}t|| d S )Nz&A,B,C
1,2.,4.#hello world
5.,NaN,10.0
      ?       @      @      @      $@ABCcolumns#commentr   r   npnanread_csvr   tmassert_frame_equal)all_parsersr   parserdataexpectedresult r   G/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/parser/test_comment.pytest_comment   s     r    read_kwargslineterminator*delim_whitespaceTc                 C   s   | }d}| dr |dd}n0| drP|jdkr>td |d| d}d	|d
< |jt|f|}tdddgdtj	dggdddg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
r   r   r   r   r   r	   r
   r   r   r   r   )getreplaceenginepytestskipr   r   r   r   r   r   r   )r   r!   r   r   r   r   r   r   r   test_line_comment   s    



 r.   c                 C   sP   | }d}t dddgdtjdggddd	g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   r   r   r      )r   skiprowsr   r   r   r   r   r   r   r   r   test_comment_skiprows8   s    	 r2   c                 C   sP   | }d}t dddgdtjdggddd	gd
}|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      r   headerr   r1   r   r   r   test_comment_headerJ   s     r6   c                 C   sR   | }d}t dddgdtjdggddd	g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   r   r   r   r   r/   r3   )r   r0   r5   r   r1   r   r   r   test_comment_skiprows_header[   s     r7   comment_charr   ~&^@c                 C   sT   | }d}|j t|d||d}tdddgddd	ggd
ddgd}t|| d S )Nz,a,b,c
1,2,3#ignore this!
4,5,6#ignorethistoor   )r   r3         r/         abr'   r   )r   r   r*   r   r   r   )r   r8   r   r   r   r   r   r   r   test_custom_comment_charp   s     "rC   r5   Zinferc                 C   sl   | }d}|d kr.t ddgddgddgd}nt d	d
dggdddgd}|jt|d|d}t|| d S )Nz # notes
a,b,c
# more notes
1,2,3rA   1rB   2r'   3)r   r3   r=   r3   r=   r>   r   r   r4   )r   r   r   r   r   )r   r5   r   r   r   r   r   r   r   test_comment_first_line|   s    rG   c                 C   s   | j dkr&d}|jtjj|td | }d}|jt|ddd}t	dd	d
gdddg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)reasonZ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   r3   r/      r=   r?      g      @r   g      &@)Zcol1Zcol2Zcol3Zcol4)r+   nodeZ
add_markerr,   markZxfailAssertionErrorr   r   r   r   r   r   r   )r   requestrH   r   r   r   r   r   r   r   "test_comment_char_in_default_value   s    

rO   )__doc__ior   Znumpyr   r,   Zpandasr   Zpandas._testingZ_testingr   rL   Zparametrizer    r.   r2   r6   r7   rC   rG   rO   r   r   r   r   <module>   s(   
 


