a
    nÝEbØ  ã                   @   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)Ú	DataFrameZ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   úc/home/ja/django-apps/lartica_env/lib/python3.9/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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"    


ÿÿr3   c                 C   sL   | }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    	ÿr7   c                 C   sL   | }d}t g d¢dtjdggg d¢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   Úheaderr   r6   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   r4   r8   )r   r5   r:   r   r6   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   ©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    ÿrJ   r:   Z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,3rH   Ú1rI   Ú2r'   Ú3)r   r8   rC   rB   rG   r   r   r9   )r   r   r   r   r   )r   r:   r   r   r   r   r   r   r   Útest_comment_first_line�   s    rN   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(   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   é   )rC   rE   é   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    
ÿ
üÿrR   )Ú__doc__Úior   Únumpyr   r-   Zpandasr   Zpandas._testingZ_testingr   r.   ZusefixturesZ
pytestmarkZparametrizer    r3   r7   r;   r<   rJ   rN   rR   r   r   r   r   Ú<module>   s(   
ÿ


