a
    nÝEbp  ã                   @   sè  d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
mZ ddlmZ ej d¡Zej deed	ƒƒd	g¡d
d„ ƒZdd„ Zdd„ Zej ddddgie
g d¢g d¢gg d¢d�fdddgdœe
g d¢gg d¢d�fddddgdœe
dd ggd!d"gd�fg¡d#d$„ ƒZd%d&„ Zej d'd(g d)¢g d*¢gfd+g d,¢g d-¢gfd.g d/¢g d0¢gfg¡d1d2„ ƒZej d3g d4¢¡d5d6„ ƒZd7d8„ Zej d9i e
d:dd;giƒfdd<gd=œe
d<dd;giƒfg¡d>d?„ ƒZd@dA„ ZdBdC„ ZdDdE„ Z dS )Fzj
Tests that skipped rows are properly handled during
parsing for all of the parsers defined in parsers.py
é    )Údatetime)ÚStringION)ÚEmptyDataError)Ú	DataFrameÚIndexZpyarrow_skipÚskiprowsé   c                 C   sz   | }d}|j t|ƒ|d ddd�}ttdddƒtdddƒtdddƒgdd	�}tt d
d¡ d¡g d¢|d�}t 	||¡ d S )Nzr#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
#foo,a,b,c
1/1/2000,1.,2.,3.
1/2/2000,4,5,6
1/3/2000,7,8,9
r   T©r   ÚheaderZ	index_colZparse_dateséÐ  é   é   é   ©Únameç      ð?ç      $@©r   r   ©r   r   r   ©ÚcolumnsÚindex©
Úread_csvr   r   r   r   ÚnpZarangeZreshapeÚtmÚassert_frame_equal)Úall_parsersr   ÚparserÚtextÚresultr   Úexpected© r"   úd/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/parser/test_skiprows.pyÚtest_skip_rows_bug   s    
ÿ"ÿÿr$   c                 C   sl   | }dd  dd„ tdƒD ƒ¡ }dd  dd„ dD ƒ¡ }|jt|ƒdd	gd
�}| t|ƒ¡}t ||¡ d S )Nza,b,c
Ú
c              	   S   s0   g | ](}d   t|ƒt|d ƒt|d ƒg¡‘qS ©ú,r   r   ©ÚjoinÚstr©Ú.0Úir"   r"   r#   Ú
<listcomp>7   ó    z'test_deep_skip_rows.<locals>.<listcomp>é
   c              	   S   s0   g | ](}d   t|ƒt|d ƒt|d ƒg¡‘qS r&   r(   r+   r"   r"   r#   r.   :   r/   )r   r   r   r   é   r   é   é	   r   r2   ©r   )r)   Úranger   r   r   r   )r   r   ÚdataZcondensed_datar    Zcondensed_resultr"   r"   r#   Útest_deep_skip_rows3   s    ÿÿr7   c                 C   sz   | }d}|j t|ƒdd ddd�}ttdddƒtdddƒtddd	ƒgdd
�}tt dd¡ d¡g d¢|d�}t 	||¡ d S )Nz^#foo,a,b,c
#foo,a,b,c

#foo,a,b,c
#foo,a,b,c

1/1/2000,1.,2.,3.
1/2/2000,4,5,6
1/3/2000,7,8,9
r   r   Tr	   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r6   r   r!   r"   r"   r#   Útest_skip_rows_blankB   s    
ÿ"ÿÿr8   zdata,kwargs,expectedzKid,text,num_lines
1,"line 11
line 12",2
2,"line 21
line 22",2
3,"line 31",1r   )r   zline 21
line 22r   )r   zline 31r   ©Úidr   Z	num_lines©r   z+a,b,c
~a
 b~,~e
 d~,~f
 f~
1,2,~12
 13
 14~ú~r   )Ú	quotecharr   )za
 bze
 dzf
 f)ÚaÚbÚczdText,url
~example
 sentence
 one~,url1
~example
 sentence
 two~,url2
~example
 sentence
 three~,url3r   zexample
 sentence
 twoÚurl2ÚTextÚurlc                 C   s*   | }|j t|ƒfi |¤Ž}t ||¡ d S )N©r   r   r   r   )r   r6   Úkwargsr!   r   r    r"   r"   r#   Útest_skip_row_with_newline\   s    #rF   c                 C   sL   | }d}g d¢g d¢g}t |g d¢d�}|jt|ƒdgd�}t ||¡ d S )NzYid,text,num_lines
1,"line '11' line 12",2
2,"line '21' line 22",2
3,"line '31' line 32",1)r   zline '21' line 22r   )r   zline '31' line 32r   r9   r;   r   r4   ©r   r   r   r   r   )r   r   r6   Úexp_datar!   r    r"   r"   r#   Útest_skip_row_with_quote„   s    rI   zdata,exp_dataz\id,text,num_lines
1,"line 
'11' line 12",2
2,"line 
'21' line 22",2
3,"line 
'31' line 32",1)r   zline 
'21' line 22r   )r   zline 
'31' line 32r   z\id,text,num_lines
1,"line '11
' line 12",2
2,"line '21
' line 22",2
3,"line '31
' line 32",1)r   zline '21
' line 22r   )r   zline '31
' line 32r   zbid,text,num_lines
1,"line '11
' 	line 12",2
2,"line '21
' 	line 22",2
3,"line '31
' 	line 32",1)r   zline '21
' 	line 22r   )r   zline '31
' 	line 32r   c                 C   s8   | }|j t|ƒdgd�}t|g d¢d�}t ||¡ d S )Nr   r4   r9   r;   ©r   r   r   r   r   )r   r6   rH   r   r    r!   r"   r"   r#   Ú$test_skip_row_with_newline_and_quote“   s    rK   Úline_terminator)r%   z
úc                 C   s–   | }d  g d¢¡}tg d¢g d¢g d¢gg d¢d�}|jdkr`|d	kr`tjjd
d�}|j |¡ | d|¡}|j	t
|ƒddg d¢d�}t ||¡ d S )Nr%   )zSMOSMANIA ThetaProbe-ML2X z2007/01/01 01:00   0.2140 U M z2007/01/01 02:00   0.2141 M O z2007/01/01 04:00   0.2142 D M )ú
2007/01/01z01:00g1¬ZdË?ÚUÚM)rN   z02:00gºk	ù gË?rP   ÚO)rN   z04:00gBÏfÕçjË?ÚDrP   )ÚdateÚtimeÚvarÚflagZoflagr;   ÚpythonrM   z+'CR' not respect with the Python parser yet)Úreasonr   T)r   Zdelim_whitespaceÚnames)r)   r   ZengineÚpytestÚmarkZxfailÚnodeZ
add_markerÚreplacer   r   r   r   )r   rL   Úrequestr   r6   r!   r[   r    r"   r"   r#   Útest_skiprows_lineterminator¶   s,    ÿýú	ür_   c                 C   s8   | }d}t ddgiƒ}|jt|ƒdd�}t ||¡ d S )Nz	a"
b"
a
1r>   r   r   r4   rG   )r   r   r6   r!   r    r"   r"   r#   Útest_skiprows_infield_quoteÛ   s
    r`   zkwargs,expectedÚ1é   Zfoo)r
   rY   c                 C   s6   | }d}|j t|ƒfddd„ i|¤Ž}t ||¡ d S )Núa
1
2
3
4
5r   c                 S   s   | d dkS )Nr   r   r"   ©Úxr"   r"   r#   Ú<lambda>ð   r/   z)test_skip_rows_callable.<locals>.<lambda>rD   )r   rE   r!   r   r6   r    r"   r"   r#   Útest_skip_rows_callableå   s    rg   c                 C   sT   | }d}d}t jt|d��& |jt|ƒdd„ d� W d   ƒ n1 sF0    Y  d S )Nrc   zNo columns to parse from file©Úmatchc                 S   s   dS )NTr"   rd   r"   r"   r#   rf   ú   r/   z)test_skip_rows_skip_all.<locals>.<lambda>r4   )rZ   Úraisesr   r   r   )r   r   r6   Úmsgr"   r"   r#   Útest_skip_rows_skip_allô   s
    rl   c                 C   sT   d}| }d}t jt|d��& |jt|ƒdd„ d� W d   ƒ n1 sF0    Y  d S )Nzby zerorc   rh   c                 S   s   dd S )Nr   r   r"   rd   r"   r"   r#   rf     r/   z-test_skip_rows_bad_callable.<locals>.<lambda>r4   )rZ   rj   ÚZeroDivisionErrorr   r   )r   rk   r   r6   r"   r"   r#   Útest_skip_rows_bad_callableý   s
    rn   c                 C   sF   d}| }|j t|ƒdg d¢d�}tg d¢g d¢dœƒ}t ||¡ d S )Nz$a,b
1,a
2,b
3,c
4,d
5,e
6,f
7,g
8,h
rb   )r   r1   r   )Znrowsr   )r   r   rb   é   r2   )r>   r@   ÚeÚgÚh)r>   r?   rJ   )r   r6   r   r    r!   r"   r"   r#   Útest_skip_rows_and_n_rows  s
    
rs   )!Ú__doc__r   Úior   Únumpyr   rZ   Zpandas.errorsr   Zpandasr   r   Zpandas._testingZ_testingr   r[   ZusefixturesZ
pytestmarkZparametrizeÚlistr5   r$   r7   r8   rF   rI   rK   r_   r`   rg   rl   rn   rs   r"   r"   r"   r#   Ú<module>   s|   
þø
ýøíþ!
ûûûñþ
	ÿ
"
þþ
		