
    .i                        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                  j                  dddgg      d        Zej                  j                  di d	d
iddig      d        Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dddg      d        Zd Zy)zf
Tests that comments are properly handled during parsing
for all of the parsers defined in parsers.py
    )StringION)	DataFrame	na_valuesNaNc                 x   | }d}t        g ddt        j                  dggg d      }|j                  dk(  rDd}t	        j
                  t        |	      5  |j                  t        |      d
|       d d d        y |j                  t        |      d
|      }t        j                  ||       y # 1 sw Y   y xY w)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results          a/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_comment.pytest_commentr*      s    FD 	3-.H }}	!O]]:S1 	NOOHTNC9OM	N__Xd^SI_NF&(+		N   B00B9read_kwargslineterminator*sepz\s+c                    | }d}|j                  d      r|j                  dd      }n2|j                  d      r!|j                  d|j                  d            }d|d<   |j                  d	k(  rJd|v rd
}nd}t        j                  t
        |      5   |j                  t        |      fi | d d d        y |j                  dk(  rT|j                  d      rCd}t        j                  t
        |      5   |j                  t        |      fi | d d d        y  |j                  t        |      fi |}t        g ddt        j                  dggg d      }t        j                  ||       y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nz@# empty
A,B,C
1,2.,4.#hello world
#ignore this line
5.,NaN,10.0
r/   , r-   
r   r   r   zFThe 'lineterminator' option is not supported with the 'pyarrow' enginer   r   pythonz>Custom line terminators not supported in python parser \(yet\)r   r
   r   r   r   )getreplacer   r   r   r   r    r   r   r   r   r!   r"   )r#   r,   r$   r%   r'   r(   r&   s          r)   test_line_commentr7   "   s^   FD u||C%	)	*||D+//2B"CD K	}}	!{*X  TC]]:S1 	;FOOHTN:k:	;	(	"{7G'HO]]:S1 	;FOOHTN:k:	;V__Xd^;{;F	3-.H &(+	;	;s   E36E?3E<?Fc                 x   | }d}t        g ddt        j                  dggg d      }|j                  dk(  rDd}t	        j
                  t        |	      5  |j                  t        |      d
d       d d d        y |j                  t        |      d
d      }t        j                  ||       y # 1 sw Y   y xY w)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(   s         r)   test_comment_skiprowsr<   H   s    FD 	3-.H }}	!O]]:S1 	EOOHTNC!OD	E__Xd^S1_EF&(+	Er+   c                 x   | }d}t        g ddt        j                  dggg d      }|j                  dk(  rDd}t	        j
                  t        |	      5  |j                  t        |      d
d       d d d        y |j                  t        |      d
d      }t        j                  ||       y # 1 sw Y   y xY w)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;   s         r)   test_comment_headerrA   `   s    FD 	3-.H }}	!O]]:S1 	COOHTNCOB	C__Xd^S_CF&(+		Cr+   c                 |   | }d}t        g ddt        j                  dggg d      }|j                  dk(  rEd}t	        j
                  t        |	      5  |j                  t        |      d
dd       d d d        y |j                  t        |      d
dd      }t        j                  ||       y # 1 sw Y   y xY w)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   r9   r>   )r   r:   r@   r   r;   s         r)   test_comment_skiprows_headerrC   v   s    FD 	3-.H }}	!O]]:S1 	OOOHTNC!AON	O__Xd^S1Q_OF&(+	Os   B22B;comment_char)r   ~&^r.   @c           	         | }d}|j                   dk(  rSd}t        j                  t        |      5  |j	                  t        |j                  d|            |       d d d        y |j	                  t        |j                  d|            |      }t        g dg dgg d	
      }t        j                  ||       y # 1 sw Y   y xY w)Nz,a,b,c
1,2,3#ignore this!
4,5,6#ignorethistoor   r   r   r   )r   r>         )r9         abcr   )
r   r   r   r   r    r   r6   r   r!   r"   )r#   rD   r$   r%   r'   r(   r&   s          r)   test_custom_comment_charrS      s    F;D}}	!O]]:S1 	OOc<89<  	 	__c<01<  F )Y/IH&(+	 	s   -B??Cr@   inferc                    | }d}|t        ddgddgddgd      }nt        g d	gg d
      }|j                  dk(  rDd}t        j                  t        |      5  |j                  t        |      d|       d d d        y |j                  t        |      d|      }t        j                  ||       y # 1 sw Y   y xY w)Nz # notes
a,b,c
# more notes
1,2,3rP   1rQ   2rR   3)r   r>   rK   rJ   rO   r   r   r   r   r   r?   )	r   r   r   r   r   r    r   r!   r"   )r#   r@   r$   r%   r&   r'   r(   s          r)   test_comment_first_linerY      s     F0D~#sc
SzJKi[/B}}	!O]]:S1 	HOOHTNCOG	H__Xd^S_HF&(+		Hs   B66B?c                 B   | j                   dk(  r6d}|j                  t        j                  j	                  |t
                     | }d}|j                   dk(  rDd}t        j                  t        |      5  |j                  t        |      dd	
       d d d        y |j                  t        |      dd	
      }t        g dg ddt        j                  t        j                  gdt        j                  dgd      }t        j                  ||       y # 1 sw Y   y xY w)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>   r9      )rK   rM      g      @r	   g      &@)col1col2col3col4)r   applymarkerr   markxfailAssertionErrorr   r   r    r   r   r   r   r!   r"   )r#   requestr[   r$   r%   r'   r(   r&   s           r)   "test_comment_char_in_default_valuerg      s    S PFKK--VN-STF	 	 }}	!O]]:S1 	KOOHTNC6OJ	K__Xd^SF_KF"&&"&&)"&&$'		
H &(+	Ks   6DD)__doc__ior   numpyr   r   pandasr   pandas._testing_testingr!   rc   parametrizer*   r7   r<   rA   rC   rS   rY   rg        r)   <module>rq      s   
      teWo6, 7,$ .>-Dufo(VW", X",J,0,,,6 )GH, I,& GT?3, 4,&,rp   