o
    _~#g                     @   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    d S 1 s8w   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/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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 }d}| dr|dd}t}n| dr$|d| d}d|d	< |jd
kr{d|v r4d}nd}tjt|d4 tj||dd |j	t
|fi | W d    n1 s\w   Y  W d    d S W d    d S 1 stw   Y  d S |jdkr| drd}tjt|d4 tj||dd |j	t
|fi | W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S tj||dd |j	t
|fi |}W d    n1 sw   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   check_stacklevelpythonz>Custom line terminators not supported in python parser \(yet\)r   r   r	   r
   r   )getreplaceFutureWarningr   r   r   r   r   assert_produces_warningr   r   r   r   r   r    )
r!   r*   requestr"   r#   warndepr_msgr%   r&   r$   r'   r'   r(   test_line_comment!   sd   






r:   c                 C      | }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    d S 1 s8w   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   	

r?   c                 C   r;   )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   

rC   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    d S 1 s9w   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   r<   r@   )r   r=   rB   r   r>   r'   r'   r(   test_comment_skiprows_header   s   

rD   comment_char)r   ~&^r,   @c                 C   s   | }d}|j dkr2d}tjt|d |jt|d||d W d    d S 1 s+w   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@         )r<         abcr   )
r   r   r   r   r   r   r4   r   r   r    )r!   rE   r"   r#   r%   r&   r$   r'   r'   r(   test_custom_comment_char   s"   

rS   rB   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rMd}tjt|d |jt|d|d W d    d S 1 sFw   Y  d S |jt|d|d}t|| d S )Nz # notes
a,b,c
# more notes
1,2,3rP   1rQ   2rR   3)r   r@   rK   rJ   rO   r   r   r   r   r   rA   )	r   r   r   r   r   r   r   r   r    )r!   rB   r"   r#   r$   r%   r&   r'   r'   r(   test_comment_first_line   s   

rX   c                 C   s   | j dkrd}|tjj|td | }d}|j dkrAd}tjt|d |jt	|dd	d
 W d    d S 1 s:w   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 )NrR   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@   r<      )rK   rM      g      @r   g      &@)col1col2col3col4)r   applymarkerr   markxfailAssertionErrorr   r   r   r   r   r   r   r   r    )r!   r7   rY   r"   r#   r%   r&   r$   r'   r'   r(   "test_comment_char_in_default_value   s.   



rd   )__doc__ior   numpyr   r   pandasr   pandas._testing_testingr   ra   parametrizer)   r:   r?   rC   rD   rS   rX   rd   r'   r'   r'   r(   <module>   s(    

1

