a
    GGbW                     @   s	  d Z ddlmZmZ ddlmZ ddlZddlmZ ddl	m
Z
 ddlZddlZddlZddlmZ ddlmZ dd	lmZmZ ddlZdd
lmZmZmZmZmZmZ ddlmZ  ddl!m"Z" ddl#m$Z$ ddl%m  m&Z' ddl(m)Z) ej*+dZ,ej*+dZ-edddZ.e,dd Z/e,dd Z0e,dd Z1e,ej*2dddgdd Z3ej*2de4e5eegej*2dddgdd  Z6e,ej*2dddgd!d" Z7d#d$ Z8e,ej*2d%e'j9e:gej;dgfd&d' Z<e,d(d) Z=e,d*d+ Z>ej*2d,d-ddggd.fd/d0ddgid1fgd2d3 Z?d4d5 Z@e,d6d7 ZAe,d8d9 ZBe,d:d; ZCe,d<d= ZDej*jEd>d?ej*2d@dAdBggddgggdCdD ZFe,ej*2d@ddgdEdFggdGdH ZGe,ej*2dIddgddggdJdK ZHe,ej*2dLdMdidNdigdOdP ZIdQdR ZJe,ej*2dSdTddgidTfdTddgidfddggdfgdUdV ZKe,dWdX ZLe,dYdZ ZMe,d[d\ ZNej*2dLi dId]igd^d_ ZOej*2d@d`ePdadbgh dcgddde ZQej*2dfddgej*2dgg dhdidj ZRe,dkdl ZSe,ej*2dmdnd@dEgieedodadpgdEgdqfdndddreedsgdEdtdufdvd@dEdwgieedodadpedxdydzggdEdwgdqfdvdddgdreejTedodadpedxdydzfgdEdwgd{dufgd|d} ZUe,ej*2d%e'j9e:gej;dgfd~d ZVe,ej*2d%e'j9e:gej;dgfej*2dmdddddgideedddbdddddgedddbdddddggg ddqfddddgddgddeedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddggg ddqfgdd ZWe,ej*2d%e'jXe:gej;dgfdd ZYe,ej*2d%e'jZe:gdd dgfdd Z[e,ej*2d%e'jZe:gdd dgfdd Z\e,dd Z]e,dd Z^dd Z_ej*2ddedEddgiddfdedEg diddfgej*2d@ddgdd Z`dd Zae-ej*2dg ddd Zbe-ej*2dddedddfddedddfddedddafgddÄ Zce-ej*2dddedddfddedddfgddń ZdddǄ Zee-e
e"ej*2de4dɃej*2dMddgej*2dg dˢdd̈́ Zfe-ej*2dddgdAdBgdfddgddBgdBfddgdAdBggdfddgddBggdBfddgdAddBgidBfddgdAdAdBgidfddgdAdBgdAgdfg dѢddAdBgdfg dѢddgddBgdBfg	ddՄ Zge-ddׄ Zhe-ddل Zie-ej*2dddggdfdddgidfgdd Zje-dd Zke-dd Zldd Zme-dd Zne-dd Zoe-dd ZpdS )zO
Tests date parsing functionality for all of the
parsers defined in parsers.py
    )datedatetime)StringION)parse)given)parsing)parse_datetime_string)pa_version_under6p0pa_version_under7p0)	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp)DATETIME_NO_TZ)
date_range)read_csvZpyarrow_xfailZpyarrow_skip   c                 C   st   dd }t d}| j|dd|dd}g d}tjdd	 |D dd
}tg dg dg dd|d}t|| d S )Nc                 S   s&   |  tj} |  tj} tj| ddS NsZunitastypenpZfloat_Zint_pdto_timedeltatime r   Flib/python3.9/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser7   s    zCtest_read_csv_with_custom_date_parser.<locals>.__custom_date_parsera  time e n h
        41047.00 -98573.7297 871458.0640 389.0089
        41048.00 -98573.7299 871458.0640 389.0089
        41049.00 -98573.7300 871458.0642 389.0088
        41050.00 -98573.7299 871458.0643 389.0088
        41051.00 -98573.7302 871458.0640 389.0086
        Tr   Zdelim_whitespaceparse_datesdate_parser	index_col)iW  iX  iY  iZ  i[  c                 S   s   g | ]}t j|d dqS )r   r   )r   r   ).0ir   r   r    
<listcomp>M       z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>name)g>٬Vgzr,   g1)禛 D*Ar-   g D*Ag D*Ar-   )St$Px@r.   Gx$Px@r/   g9#Px@)enhindex)r   r   r   ZTimedeltaIndexr   tmassert_frame_equalall_parsersr!   Ztestdataresultr   expectedr   r   r    %test_read_csv_with_custom_date_parser4   s*    		r;   c                 C   sX   dd }t d}| j|dd|dd}tg ddd	}td
g di|d}t|| d S )Nc                 S   s&   |  tj} |  tj} tj| ddS r   r   r   r   r   r    r!   ]   s    zUtest_read_csv_with_custom_date_parser_parse_dates_false.<locals>.__custom_date_parserztime e
        41047.00 -93.77
        41048.00 -95.79
        41049.00 -98.73
        41050.00 -93.99
        41051.00 -97.72
        TFr   r"   )g    
@g     @g     @g    @@g    `@r*   r0   )gzGqWg(\WgQXg(\WgGznXr3   )r   r   r   r   r5   r6   r7   r   r   r    7test_read_csv_with_custom_date_parser_parse_dates_falseZ   s"    	
r<   c                 C   s\   | }d}t tdddddddggddgd	}|jt|d
ddddgid d}t|| d S )Nz06-02-2013;13:00;1-000.215           r   gQA@Datecolumns;-r   )sep	thousandsr#   header)r   r   r   r   r5   r6   )r8   parserdatar:   dfr   r   r    test_separator_date_conflict{   s    
rL   keep_date_colTFc                 C   s  d}| }dd }d |dddgddgd|d	}|j td
t|fi |}ttdddddtddddddddddddddgtdddddtddddddddddddddgtdddd dtdddddddd!d"d#dd$ddgtdddd dtdddd dddd!d%d&d'd(dd)gtdddd*dtdddd dddd+d,d#d-d.dd/gtdddd0dtdddd*dddd1d2d#d-d3ddggg d4d5}|s|jg d6dd7}||j }t|| d S )8N  KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
c                  W   s   t t | S )z
        Test date parser.

        Parameters
        ----------
        date_cols : args
            The list of data columns to parse.

        Returns
        -------
        parsed : Series
        )r   Ztry_parse_datesconcat_date_cols)	date_colsr   r   r    r$      s    z2test_multiple_date_col_custom.<locals>.date_parserXr   r?      actualnominal)rH   r$   prefixr#   rM   UThe prefix argument has been deprecated and will be removed in a future version. .*

        r      8   KORD19990127	 19:00:00	 18:56:00Q?{Gz@@             q@   	 20:00:00	 19:56:00{Gz?Gz@     @p@   	 21:00:00	 20:56:00zG@	 21:18:00GzGz @@     p@   	 22:00:00	 21:56:00\(\?ffffff@      r@   	 23:00:00	 22:56:00ffffff@)rT   rU   X0X1X2X3X4X5X6X7X8rB   r   r   r   Zaxis)	read_csv_check_warningsFutureWarningr   r   r   droprC   r5   r6   )r8   rM   rJ   rI   r$   kwdsr9   r:   r   r   r    test_multiple_date_col_custom   s    P`
r   	containerdimr?   c                    s`   d}dt  fddt|D }tjt|d t| W d    n1 sR0    Y  d S )Nz0not all elements from date_cols are numpy arraysr^   c                 3   s   | ]} gV  qd S Nr   )r&   _r   valuer   r    	<genexpr>,  r)   z,test_concat_date_col_fail.<locals>.<genexpr>match)tuplerangepytestraises
ValueErrorr   rO   )r   r   msgrP   r   r   r    test_concat_date_col_fail&  s
    r   c                 C   s  d}| }d dddgddgg|d}|j tdt|fi |}ttddd	d
dtddd	dddddddddddgtddd	ddtddd	d
ddddddddddgtddd	ddtddd	ddddddd dd!ddgtddd	ddtddd	dddddd"d#d$d%dd&gtddd	d'dtddd	ddddd(d)d d*d+dd,gtddd	d-dtddd	d'dddd.d/d d*d0ddggg d1d2}|s|jg d3dd4}t|| d S )5NrN   rQ   r   r?   rR   )rH   rV   r#   rM   rW   rX   rY   rZ   r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   )ZX1_X2ZX1_X3r   r   r   r   r   r   r   r   r   rB   r   r   )r   r   r   r   r   r   r5   r6   )r8   rM   rJ   rI   r   r9   r:   r   r   r    test_multiple_date_col2  s    P`r   c                 C   s   d}| }d ddgdd}|j tdt|fi |}ttddddd	tdddd
d	tddddd	tddddd	tddddd	gdd}tg dg dg dg dg dgg d|d}|jdkrtst	d|d  j
j|d< t|| d S )Naz  KORD,19990127 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
rQ   r   )rH   rV   r#   r%   rW   rX   rY   rZ   r   rf   rl   rv   r   r*   )r]   r`   ra   rb   rc   rd   re   )r]   rh   ri   rj   rc   rd   rk   )r]   rn   ro   rj   rp   rd   re   )r]   rq   rr   rs   rt   rd   ru   )r]   rx   ro   ry   rz   rd   r{   )r   r   r   r   r   r   r   rC   r4   pyarrow
1970-01-01r   )r   r   r   r   r   r   enginer	   r   to_datetimedtr   r5   r6   )r8   rJ   rI   r   r9   r4   r:   r   r   r    test_date_col_as_index_col  s@    
r   zdate_parser, warningc           	      C   s8  d}ddgddgd}| }d d||d}|j tdt|fi |}ttd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddggg dd}||j }t|| d S )NKORD,19990127, 19:00:00, 18:56:00, 0.8100
KORD,19990127, 20:00:00, 19:56:00, 0.0100
KORD,19990127, 21:00:00, 20:56:00, -0.5900
KORD,19990127, 21:00:00, 21:18:00, -0.9900
KORD,19990127, 22:00:00, 21:56:00, -0.5900
KORD,19990127, 23:00:00, 22:56:00, -0.5900r   r?   rR   rS   rQ   )rH   rV   r#   r$   rW   rX   rY   rZ   r   r[   r\   r]   ra   rf   ri   rl   ro   rr   rv   r|   )rT   rU   r   r   rB   )r   r   r   r   r   rC   r5   r6   )	r8   r$   warningrJ   r#   rI   r   r9   r:   r   r   r     test_multiple_date_cols_int_cast  sX    ""#
r   c              	   C   sp   | }d}|j t|ddggd td}ttdddddtjdgtdddddtjdggg d	d
}t|| d S )Nz]05/31/2012,15:30:00.029,1306.25,1,E,0,,1306.25
05/31/2012,15:30:00.029,1306.25,8,E,0,,1306.25r   r   )r#   rH   r$   z05/31/2012, 15:30:00.029g     i@E   )Z0_1r?   rR         r>      rB   )r   r   r   r   r   nanr5   r6   r8   rI   rJ   r9   r:   r   r   r    &test_multiple_date_col_timestamp_parse'  s4    
r   c                 C   s   | }d}|j t|dddgid}ttddddd	d
ddddddgtddddd	d
ddddddgtddddd	d
ddddddgtddddd	d
ddddddgtddddd	d
d dd!d"dd#gtdddd$d	d
d%dd!d&ddggg d'd(}t|| d S ))Na  ID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000rU   r   r?   r#   rX   rY   rZ   r   r]   r`   ra   rb   rc   rd   re   rf   rh   ri   rj   rk   rl   rn   ro   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   r{   r|   r~   r   rU   IDZ
ActualTimeZTDewZTAirZ	WindspeedZPrecipZWindDirrB   )r   r   r   r   r5   r6   r   r   r   r    #test_multiple_date_cols_with_headerJ  s|    	>Jr   zdata,parse_dates,msgzSdate_NominalTime,date,NominalTime
KORD1,19990127, 19:00:00
KORD2,19990127, 20:00:00z0New date column already in dict date_NominalTimezCID,date,nominalTime
KORD,19990127, 19:00:00
KORD,19990127, 20:00:00r   zDate column ID already in dictc                 C   sH   | }t jt|d" |jt||d W d    n1 s:0    Y  d S )Nr   r   )r   r   r   r   r   )r8   rJ   r#   r   rI   r   r   r    %test_multiple_date_col_name_collision  s    r   c                 C   sZ   | }d}|j t|ddgdd d}tg dgg dttdgd	d
d}t|| d S )Nzposix_timestamp,elapsed,sys,user,queries,query_time,rows,accountid,userid,contactid,level,silo,method
1343103150,0.062353,0,4,6,0.01690,3,12345,1,-1,3,invoice_InvoiceResource,search
r   c                 S   s   t t| S r   )r   Zutcfromtimestampintxr   r   r    <lambda>  r)   z*test_date_parser_int_bug.<locals>.<lambda>)r%   r#   r$   )go?r   r   r>   gX5;N?rR   i90  r   rR   Zinvoice_InvoiceResourcesearch)elapsedsysuserZqueriesZ
query_timeZrowsZ	accountidZuseridZ	contactidlevelZsilomethodz2012-07-24 04:12:30Zposix_timestampr*   r   )r   r   r   r   r   r5   r6   r   r   r   r    test_date_parser_int_bug  s     !r   c                 C   s   | }t ttjdddtdd}tj|jddd d f< td8}|	| |j
|d	d
gd}t|| W d    n1 s0    Y  d S )N
   float64dtypeZ20010101)ABrR   r>   z__nat_parse_.csvr   r   r%   r#   )r   dictr   Zaranger   r   Zilocr5   Zensure_cleanZto_csvr   r6   )r8   rI   rK   pathr9   r   r   r    test_nat_parse  s    
r   c                 C   s@   d}| }|j t|dd d}|j t|dd}t|| d S )N3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
c                 S   s   t | dS )N%Y%m%d)r   strptimer   r   r   r    r     r)   z(test_csv_custom_parser.<locals>.<lambda>)r$   Tr   r   r   r5   r6   r8   rJ   rI   r9   r:   r   r   r    test_csv_custom_parser  s    r   c                 C   s>   d}| }|j t|dd}|j t|ddd}t|| d S )Nr   Tr   r   r   r   r   r   r   r    #test_parse_dates_implicit_first_col  s
    r   c                 C   sh   d}| }|j t|ddgd}tttddddd d}tg dg d	g d
d|d}t|| d S )Nz8date,A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r   r   z1/1/2009rR   )Zperiods)r+   freqabc)r   rR   r   )r?   r   r   r   r   Cr3   )r   r   r   listr   r   r5   r6   )r8   rJ   rI   r9   r4   r:   r   r   r    test_parse_dates_string!  s    r   z#yearfirst is not surfaced in read_*reasonr#   r   r   c              
   C   s   d}| }|j t|d|d}ttddddddtddd	dd
dtddddddgtdd}tg dg dd|d}t|| d S )Nz>date,time,B,C
090131,0010,1,2
090228,1020,3,4
090331,0830,5,6
r   r     r      r   r?      rf   rR   r      	date_time)r   r+   )r   rR   r   )r?   r   r>   r   r   r3   )r   r   r   r   objectr   r5   r6   )r8   r#   rJ   rI   r9   r4   r:   r   r   r    test_yy_format_with_year_first7  s    	r   r   r   c                 C   sf   d}| }t tdddgdgtdddgd}|ddg}|jt|d	dg|d
d}t|| d S )Nza,b,c
01/01/2010,1,15/02/2010  r   r?      r   r   r   r   T)r%   r#   dayfirst)r   r   	set_indexr   r   r5   r6   )r8   r#   rJ   rI   r:   r9   r   r   r    test_parse_dates_column_listN  s     r   r%   c                 C   s   d}| }t jtdddtdddtdddfdgddgd	}|dd
gkrT|d
d}tg dg dg dg dg dg dg dg dg dg	g d|d}|jt||dd}t|| d S )Nzindex1,index2,A,B,C
20090101,one,a,1,2
20090101,two,b,3,4
20090101,three,c,4,5
20090102,one,a,1,2
20090102,two,b,3,4
20090102,three,c,4,5
20090103,one,a,1,2
20090103,two,b,3,4
20090103,three,c,4,5
r   r   r?   rR   )ZoneZtwoZthreeZindex1Zindex2namesr   )r   r   r?   )r   rR   r   )r   r   r   r   r   Tr   )	r   Zfrom_productr   Z	swaplevelr   r   r   r5   r6   )r8   r%   rJ   rI   r4   r:   r9   r   r   r    test_multi_index_parse_dates_  s4     	r   kwargsr   Z	day_firstc                    s$  | }d}d v r|j t|g d fddddddgd	}ttd
ddtd
ddtd
ddgdd}tg ddtjdgd|ddgd}t|| nd}t	j
t|df tt< |j t|g d fdddgdddgd W d    n1 s0    Y  W d    n1 s0    Y  d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r   )r   QNTUc                    s   t | fi  S r   du_parsedr   r   r    r     r)   z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TZNA)r   r$   rH   r%   r#   	na_valuesr   r   r   r?   r   r*   )r   r   r   )r   r   r   r   )r4   rC   z.got an unexpected keyword argument 'day_first'r   c                    s   t | fi  S r   r   r   r   r   r    r     r)   )r   r$   Zskiprowsr%   r#   r   )r   r   r   r   r   r   r   r5   r6   r   r   	TypeErrorassert_produces_warningr   )r8   r   rI   rJ   rK   Z	exp_indexr:   r   r   r   r    #test_parse_dates_custom_euro_format  sF    
	 
r   c                 C   s   | }|j dkr(tr(|jtjjdd d}|jt|ddd}t	dd	git
td
gddd}t|| |jjtju s~J d S )Nr   zFails for pyarrow < 7.0r   zDate,x
2012-06-13T01:39:00Z,0.5r   Tr   r   g      ?z2012-06-13 01:39:00+00:00rA   r*   r3   )r   r
   ZnodeZ
add_markerr   markxfailr   r   r   r   r   r5   r6   r4   tzpytzZutc)r8   ZrequestrI   rJ   r9   r:   r   r   r    test_parse_tz_aware  s    r   zparse_dates,index_colrU   c                 C   s  | }d}t tdddddddd	d
dddgtddddddddddddgtddddddddddddgtddddddddddddgtdddddd d!dd"d#dd$gtdddd%dd&d'dd"d(ddggg d)d*}|d+}t|tsd,|j_|jt|||d-}t	
|| d S ).Na  
ID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
KORD1,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD2,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD3,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD4,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD5,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD6,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
rX   r   rY   rZ   r   ZKORD1r`   ra   rb   rc   rd   re   rf   ZKORD2rh   ri   rj   rk   rl   ZKORD3rn   ro   rp   ZKORD4rq   rr   rs   rt   ru   rv   ZKORD5rx   ry   rz   r{   r|   ZKORD6r~   r   r   rB   rU   Zdate_NominalTimer#   r%   )r   r   r   
isinstancer   r4   r+   r   r   r5   r6   )r8   r#   r%   rI   rJ   r:   r9   r   r   r    test_multiple_date_cols_index  s    	>J


r  c                 C   sj  | }d}t tdddddddd	d
dddgtddddddddddddgtddddddddddddgtddddddddddddgtdddddddddddd gtdddd!ddd"ddd#ddggg d$d%}|d&}|jt|d&dd'gid&d'd(}t|}W d    n1 s0    Y  t|d |d d'  t|d |d'd)  t|d' |d)d   d S )*N  ID,date,nominalTime,actualTime,A,B,C,D,E
KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
rX   r   rY   rZ   r   r]   r`   ra   rb   rc   rd   re   rf   rh   ri   rj   rk   rl   rn   ro   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   r{   r|   r~   r   )rU   r   Z
actualTimer   r   r   Dr   rB   rU   r?   )r#   r%   Z	chunksizer   )r   r   r   r   r   r   r5   r6   )r8   rI   rJ   r:   readerZchunksr   r   r    test_multiple_date_cols_chunked.  s    
>A

(r  c                 C   sP   | }d}|j t|dddgidd}|j t|ddddgid}t|| d S )	Nr  rU   r   r?   r  r   ZnominalTimer   r   )r8   rI   rJ   Zwith_indicesZ
with_namesr   r   r    )test_multiple_date_col_named_index_compat  s    

r  c                 C   s`   | }d}|j t|ddgdddgid}|j t|dddgid}|ddg}t|| d S )Nr  rU   r   r   r?   r   r   )r   r   r   r5   r6   r   r   r   r    ,test_multiple_date_col_multiple_index_compat  s    	r	  r   c                 C   sX   | }d}d}t jt|d* |jt|fddi| W d    n1 sJ0    Y  d S )NSOnly booleans, lists, and dictionaries are accepted for the 'parse_dates' parameterA,B,C
    1,2,2003-11-1r   r#   r   r   r   r   r   r   )r8   r   rI   r   rJ   r   r   r    *test_read_with_parse_dates_scalar_non_bool  s    r  r   r   r   >   r   rR   c                 C   sP   | }d}d}t jt|d" |jt|dd W d    n1 sB0    Y  d S )Nr
  r  r   r  r   r  )r8   r#   rI   r   rJ   r   r   r    'test_read_with_parse_dates_invalid_type  s    r  cache_datesr   )r   0 c                 C   s6   | }t | dd }|j|d ddgdgd|d d S )Nz,
iP  fooZbarF)rH   r   r#   infer_datetime_formatr  )r   r   )r8   r  r   rI   r   r   r   r    test_bad_date_parse  s    r  c                 C   sT   | }d}|j t|dgdd}ttddddgtjdggddgd	}t|| d S )
NzDate,test
2012-01-01,1
,2rA   F)r#   Z	na_filteri  r   r?   testrB   )r   r   r   r   r   NaTr5   r6   r   r   r   r    test_parse_dates_empty_string  s    r  zdata,kwargs,expectedza
04.15.2016i  r   rB   r  z
2016-04-15r*   r3   za,b
04.15.2016,09.16.2013r   r=   	      r   c                 C   s.   | }|j t|fddi|}t|| d S )NrG   .r   )r8   rJ   r   r:   rI   r9   r   r   r    %test_parse_dates_no_convert_thousands  s    "r  c                 C   s   d}| }t j|dd2 |jt|ddgdddgi|d}W d    n1 sN0    Y  tddd	d
ddddgtddddddddgg}t|g dd}t || d S )NzUD,T,A,B
date, time,a,b
2001-01-05, 09:00:00, 0.0, 10.
2001-01-06, 00:00:00, 1.0, 11.
FZcheck_stacklevelr   r   r   rH   r#   r$     r   r  rd         $@r>         ?      &@)r   )r   r   )r   r   rB   )r5   r   r   r   r   r   r6   )r8   r$   r   rJ   rI   r9   expected_datar:   r   r   r    ,test_parse_date_time_multi_level_column_name  s    
$r$  zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r   rH   r#   r  r   rd   r!  r"  )r   r   r   r   rR   rS   rX   rY   rZ   r[   r\   r]   ra   rf   ri   rl   ro   rr   rv   r|   )rT   rU   r   r   c                 C   sf   | }t j|dd* |jt|fd|i|}W d    n1 sB0    Y  ||j }t || d S )NFr  r$   )r5   r   r   r   rC   r6   )r8   rJ   r   r:   r$   r   rI   r9   r   r   r    test_parse_date_time9  s
    N8
r&  c                 C   s   | }d}t j|dd. |jt|ddg di|d}W d    n1 sJ0    Y  ttdd	d
dgtddd	dggddgd}t || d S )N-year,month,day,a
2001,01,10,10.
2001,02,1,11.Fr  r   Zymd)r   r   r?   r  r  r   r   r   r?   r"  r   rB   r5   r   r   r   r   r   r6   r8   r$   r   rI   rJ   r9   r:   r   r   r    test_parse_date_fields  s    
$r*  c                 C   s   t j| ddS )Nz%Y %m %d %H %M %Sformatr   r   r   r   r   r    r     r)   r   c              	   C   s   | }d}t j|dd. |jt|d|dg did}W d    n1 sJ0    Y  ttdd	d
dddddgtdd	d
dddddggg dd}t || d S )NzZyear,month,day,hour,minute,second,a,b
2001,01,05,10,00,0,0.0,10.
2001,01,5,10,0,00,1.,11.
Fr  r   ymdHMSr   r   r?   rR   r   r   rH   r$   r#   r  r   r   r   rd   r   r!  r"  r.  r   r   rB   r(  r)  r   r   r    test_parse_date_all_fields  s     	
$r2  c                 C   s   t j| ddS )Nz%Y %m %d %H %M %S.%fr+  r-  r   r   r   r    r     r)   c                 C   s   | }d}t j|dd. |jt|d|dg did}W d    n1 sJ0    Y  ttdd	d
dddddddgtdd	d
dddddddggg dd}t || d S )Nzgyear,month,day,hour,minute,second,a,b
2001,01,05,10,00,0.123456,0.0,10.
2001,01,5,10,0,0.500000,1.,11.
Fr  r   r.  r/  r0  r  r   r   r   i@ )Zmicrosecondrd   r   i  r!  r"  r1  rB   r(  r)  r   r   r     test_datetime_fractional_seconds  s     	
$r3  c                 C   s   | }d}t jtdd2 |jt|ddddgidd d	}W d    n1 sN0    Y  ttd
ddddgtd
ddddggg dd}t || d S )Nr'  Fr  r   ymr   c                 S   s   t t| t|ddS )Nr   )ZyearZmonthday)r   r   )ymr   r   r    r     r)   ztest_generic.<locals>.<lambda>r  r  r   r   r?   r"  )r4  r5  r   rB   )r5   r   r   r   r   r   r   r6   r   r   r   r    test_generic  s    
$"r8  c                 C   s   | }d}dd }|j t||dddgiddgd}tjd	gd
 dd}tddgd
 itj|d df|d df|d dfgddgdd}t|| d S )Nzxdate,time,prn,rxstatus
2013-11-03,19:00:00,126,00E80000
2013-11-03,19:00:00,23,00E80000
2013-11-03,19:00:00,13,00E80000
c                 S   s   t j| d | ddS )NTdatetime64[s]r   )r   array)r   r   r   r   r    r$     s    z:test_date_parser_resolution_if_not_ns.<locals>.date_parserr   r   r   Zprn)r$   r#   r%   z2013-11-03T19:00:00rR   r:  r   ZrxstatusZ00E80000r   ~   r   r|   r?   r@   r   )rJ   r4   )	r   r   r   r;  r   r   from_tuplesr5   r6   )r8   rI   rJ   r$   r9   Z	datetimesr:   r   r   r    %test_date_parser_resolution_if_not_ns  s$    
 r>  c                 C   sR   | }d}|j t|dgd}ddgddgddgg}t|d	dgd
}t|| d S )Nz+case,opdate
7,10/18/2006
7,10/18/2008
621, Zopdater   r   z
10/18/2006z
10/18/2008im   ZcaserB   r   r   r   r5   r6   r8   rI   rJ   r9   r#  r:   r   r   r    (test_parse_date_column_with_empty_string  s    rB  zdata,expectedz"a
135217135789158401
1352171357E+5l   0l    Hbk r   r   z%a
99999999999
123456789012345
1234E+0)l   g] l   y_"A i  c                 C   s&   | }|j t||d}t|| d S )Nr   r   )r8   rJ   r:   r#   rI   r9   r   r   r    test_parse_date_float'  s    rC  c              	   C   sd   | }d}|j t|dgd}tttdddtddd d	}|g d
d}t|}t	|| d S )Nzdt,val
              2018-01-04 09:01:00+09:00,23350
              2018-01-04 09:02:00+09:00,23400
              2018-01-04 09:03:00+09:00,23400
              2018-01-04 09:04:00+09:00,23400
              2018-01-04 09:05:00+09:00,23400r   r   z2018-01-04 09:01:00z2018-01-04 09:05:00Z1mini  )startendr   r   )r   )i6[  h[  rF  rF  rF  )r   val)
r   r   r   r   r   r   ZFixedOffsetr   r5   r6   )r8   rI   rJ   r9   Zdtir#  r:   r   r   r    test_parse_timezone@  s"    rH  date_string)z
32/32/2019z
02/30/2019z
13/13/2019z13/2019z
a3/11/2018z
10/11/2o17c                 C   s<   | }t d|gidd}|jt|d dgd}t|| d S )Nr   r   r   r%  r   r   r   r5   r6   )r8   rI  rI   r:   r9   r   r   r    !test_invalid_parse_delimited_date\  s    rK  zdate_string,dayfirst,expectedz
13/02/2019i  r@   z
02/13/2019z
04/02/2019c                 C   s>   | }t d|gidd}|jt|d |dgd}t|| d S )Nr   datetime64[ns]r   rH   r   r#   rJ  )r8   rI  r   r:   rI   r9   r   r   r    )test_parse_delimited_date_swap_no_warningh  s    rN  c                 C   sp   | }t d|gidd}d}tjt|d( |jt|d |dgd}W d    n1 sV0    Y  t|| d S )Nr   rL  r   zKProvide format or specify infer_datetime_format=True for consistent parsingr   rM  )r   r5   r   UserWarningr   r   r6   )r8   rI  r   r:   rI   Zwarning_msgr9   r   r   r    +test_parse_delimited_date_swap_with_warning  s    $rP  c              
   K   sR   d\}}z| |fi |}W n, t yH } zt|}W Y d }~n
d }~0 0 ||fS )NNN)r   str)ZcallrI  r   r   r9   Zerr   r   r    !_helper_hypothesis_delimited_date  s    rS  	delimiterz -./date_format)z%d %m %Yz%m %d %Y%m %Yz%Y %m %dz%y %m %dr   z%y%m%dc           	      C   s   | dkr|dkrt d d\}}d\}}|| d|}t 0 tjdtd tt	||d\}}W d    n1 sz0    Y  tt
|t|d	d
\}}||ksJ ||ksJ d S )NrV  r  zcparse_datetime_string cannot reliably tell whether e.g. %m.%Y is a float or a date, thus we skip itrQ  r?  ignore)category)r   F)defaultr   Z	yearfirst)r   skipstrftimereplacewarningscatch_warningsfilterwarningsrO  rS  r   r   _DEFAULT_DATETIME)	rU  r   rT  Ztest_datetimer9   r:   Zexcept_in_dateutilZexcept_out_dateutilrI  r   r   r    test_hypothesis_delimited_date  s*    	
(
ra  z)names, usecols, parse_dates, missing_colsrG  z
date, time)date1Ztime1temperaturerb  rc  c                 C   s^   | }t d}d| d}tjt|d$ |j|d|||d W d    n1 sP0    Y  d S )Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': ''r   ,)rF   r   usecolsr#   )r   r   r   r   r   )r8   r   rf  r#   Zmissing_colsrI   Zcontentr   r   r   r    &test_missing_parse_dates_column_raises  s    
rg  c                 C   sH   | }t d}|j|dgdgd}tdddgiddgd}t|| d S )	Nzx,y
1,2r   )r#   r   r6  2r   1r3   )r   r   r   r5   r6   r   r   r   r    test_date_parser_and_names  s
    rj  c                 C   sF   | }d}|j t|dgddgd}ttddgd}t|| d S )	Nza,b
1,2
2019-12-31,6r   ri  r   r   r#   rH   
2019-12-31r>   )rk  r   rh  r   r   r   r   r5   r6   r   r   r   r    #test_date_parser_multiindex_columns  s
    rp  zparse_spec, col_namerk  rn  )Za_bZ1_2)r  ri  c                 C   sF   | }d}|j t||ddgd}t|tdddgi}t|| d S )Nza,b,c
1,2,3
2019-12,-31,6r   r   rl  rm  )r   3r>   ro  )r8   Z
parse_specZcol_namerI   rJ   r9   r:   r   r   r    0test_date_parser_multiindex_columns_combine_cols  s    	rr  c                 C   sP   d}| }|j t|dgddgdd}tddgtdgd d	}t|| d S )
Nz2A,B,C
    1,3,20-09-01-01
    2,4,20-09-01-01
    r   r?   rE   )r#   rf  rG   rR   r   z20-09-2001 01:00:00r   ro  r   r   r   r    "test_date_parser_usecols_thousands  s    rs  c                 C   sP   | }d}|j t|ddgidd}tdtdg}t||d}t|| d S )	NzA
20150908
20150909
r   r   T)r#   rM   z
2015-09-08z
2015-09-09)r   r   )r   r   r   r   r5   r6   rA  r   r   r    &test_parse_dates_and_keep_orgin_column$  s    rt  c                  C   s  d} d}d}t ddgdd dd}t dd	gdd dd}tt|dgd
ddj}t|| tjt| d( tt|dgdddj}W d    n1 s0    Y  t|| tjt| d( tt|dgdddj}W d    n1 s0    Y  t|| tt|dgd
ddj}t|| d}t ddgdd dd}	tjt|d( tt|dgd
ddj}
W d    n1 sv0    Y  t|	|
 tjt| d( tt|dgdddj}W d    n1 s0    Y  t|	| tjt| d( tt|dgdddj}W d    n1 s0    Y  t|	| tjt| d( tt|dgd
ddj}W d    n1 sr0    Y  t|	| d S )NzwParsing '31/12/2014' in DD/MM/YYYY format. Provide format or specify infer_datetime_format=True for consistent parsing.zwParsing '03/30/2011' in MM/DD/YYYY format. Provide format or specify infer_datetime_format=True for consistent parsing.zdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10rL  r   )r   r   r+   z
2011-10-03T)r#   r   r%   r   F)r#   r  r%   zdate
31/12/2014
03/30/2011z
2011-03-30)r   r   r   r4   r5   Zassert_index_equalr   rO  )Zwarning_msg_day_firstZwarning_msg_month_firstinputZexpected_consistentZexpected_inconsistentZres1Zres2Zres3Zres4r:   Zres5Zres6Zres7Zres8r   r   r    test_dayfirst_warnings4  sv    &&((((rv  c                 C   sB   | }d}|j t|dgd}tdddddgd	}t|| d S )
Nza,b,c
1970-01-01,2,3,4r   r   rh  rR   r   r   r   r3   r@  r   r   r   r     test_infer_first_column_as_index  s
    rw  c                 C   sb   | }d}|j t|dddgidgdd d}tdtdtjtd	tjtd
gi}t|| d S )Nz*Test
2012-10-01
0
2015-05-15
#
2017-09-09
ZTest#r  c                 S   s   t j| ddS )Nz%Y-%m-%dr+  r-  r   r   r   r    r     r)   z8test_replace_nans_before_parsing_dates.<locals>.<lambda>)r   r#   r$   z
2012-10-01z
2015-05-15z
2017-09-09)r   r   r   r   r   r  r5   r6   r   r   r   r    &test_replace_nans_before_parsing_dates  s&    
ry  c                 C   sV   | }d}|j t|ddgd}tdgtdgd}|d d|d< t|| d S )	Nza,b
1,2019-12-31
stringr   )r   r#   ri  rm  )r   r   r   )r   r   r   r   r   r5   r6   r   r   r   r    !test_parse_dates_and_string_dtype  s    r{  )q__doc__r   r   ior   r]  Zdateutil.parserr   r   Z
hypothesisr   Znumpyr   r   r   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.parsingr   Zpandas.compat.pyarrowr	   r
   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr5   Zpandas._testing._hypothesisr   Zpandas.core.indexes.datetimesr   Zpandas.io.date_convertersZdate_convertersZconvZpandas.io.parsersr   r   ZusefixturesZxfail_pyarrowZskip_pyarrowr`  r;   r<   rL   Zparametrizer   r   r   r   r   r   Zparse_date_timer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r;  r  r  r  r=  r  r$  r&  Zparse_date_fieldsr*  Zparse_all_fieldsr2  r3  r8  r>  rB  rC  rH  rK  rN  rP  rS  ra  rg  rj  rp  rr  rs  rt  rv  rw  ry  r{  r   r   r   r    <module>   sj   
%
 
 
~/A
"
Y	

4



,+*`
\


 


&H



	

	



\
	
