U
    ¾mœdØ  ã                	   @   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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)Ú	DataFrameZpyarrow_skipÚ	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   ú\/home/sam/Atlas/atlas_env/lib/python3.8/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¡r`|jdkrNtjjdd�}|j |¡ | 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)ÚreasonÚ
r   r   r   r   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$    


ÿ ÿr3   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_skiprows=   s    	 ÿr7   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   r6   r   r   r   Útest_comment_headerO   s     ÿr;   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   r4   r8   )r   r5   r:   r   r6   r   r   r   Útest_comment_skiprows_header`   s     ÿr<   Ú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   r8   é   é   r4   é   é   ÚaÚbr'   r   )r   r   r+   r   r   r   )r   r=   r   r   r   r   r   r   r   Útest_custom_comment_charu   s     ÿ"rH   r:   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,3rF   Ú1rG   Ú2r'   Ú3)r   r8   rB   r8   rB   rC   r   r   r9   )r   r   r   r   r   )r   r:   r   r   r   r   r   r   r   Útest_comment_first_line�   s    rL   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)r(   Z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   r8   r4   é   rB   rD   é   g      @r   g      &@)Zcol1Zcol2Zcol3Zcol4)r,   r0   r1   r-   r.   r/   ÚAssertionErrorr   r   r   r   r   r   r   )r   r2   r(   r   r   r   r   r   r   r   Ú"test_comment_char_in_default_value�   s    
ÿ
üÿrP   )Ú__doc__Úior   Únumpyr   r-   Zpandasr   Zpandas._testingZ_testingr   r.   ZusefixturesZ
pytestmarkZparametrizer    r3   r7   r;   r<   rH   rL   rP   r   r   r   r   Ú<module>   s*   
 ÿ


