U
    NZf                     @   sj
  d Z ddl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ZddlZddlZddlmZ ddl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$Z$ ej%&dZ'ej%&dZ(e'dd Z)e'dd Z*e'dd Z+e'ej%,dddgdd Z-ej%,de.e/eegej%,dddgdd Z0e'ej%,dddgd d! Z1d"d# Z2e'd$d% Z3e'd&d' Z4e'd(d) Z5ej%,d*d+ddggd,fd-d.ddgid/fgd0d1 Z6d2d3 Z7e'd4d5 Z8e'd6d7 Z9e'd8d9 Z:e'd:d; Z;ej%j<d<d=ej%,d>d?d@ggddgggdAdB Z=e'ej%,d>ddgdCdDggdEdF Z>e'ej%,dGddgddggdHdI Z?e'ej%,dJdKdidLdigdMdN Z@dOdP ZAe'ej%,dQdRddgidRfdRddgidfddggdfgdSdT ZBe'dUdV ZCe'dWdX ZDe'dYdZ ZEej%,dJi dGd[igd\d] ZFej%,d>d^eGd_d`gddahgdbdc ZHej%,ddddgej%,dedfdggdhdi ZIej%,ddddgej%,dedjgdkdl ZJe'dmdn ZKej%,dodpdqgdrds ZLej%,dodpdqgdtdu ZMe'ej%,dvdwd>dCgieedxd_dygdCgdzfdwddd{eed|gdCd}g d~fdd>dCdgieedxd_dyedddggdCdgdzfddddgd{eejNedxd_dyedddfgdCdgdg d~fgdd ZOe'dd ZPe'ej%,dvdddddgideeddd`dddddgeddd`dddddggddCdgdzfddddgddag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ddRdd_gdzfgdd ZQe'ej%Rddd ZSe'ej%,dddd eTfdgdd ZUe'ej%,dddd eTfdgdd ZVe'dd ZWe'dd ZXdd ZYej%,ddedCddgiddfdedCdddgiddfgej%,d>ddgddÄ ZZddń Z[e(ej%,dddddddgdd΄ Z\e(ej%,dddeddd҃fddeddd҃fddeddd_fgddք Z]e(ej%,dddeddd҃fddeddd҃fgdd؄ Z^ddڄ Z_dd܄ Z`e(ee ej%,de.dރej%,dKddgej%,ddddddddgdd Zae(ej%,dddgd?d@gdfddgdd@gd@fddgd?d@ggdfddgdd@ggd@fddgd?dd@gid@fddgd?d?d@gidfddgd?d@gd?gdfdddgdd?d@gdfdddgddgdd@gd@fg	dd Zbe(dd Zce(dd Zde(ej%,dddggdfdddgidfgdd Zee(dd Zfe(dd Zgd d Zhej%,dejiddddejiddddgdd	 Zje(d
d Zke(ej%,dddd eTfdgdd Zle(dd Zmdd Zndd Zoe(ej%,ddddggfddddgifgdd Zpe(dd Zqdd ZrdS (  zO
Tests date parsing functionality for all of the
parsers defined in parsers.py
    )datedatetime	timedeltatimezone)StringIO)parse)givenN)parsing)py_parse_datetime_string)	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp)DATETIME_NO_TZ)
date_range)read_csvZpyarrow_xfailZpyarrow_skipc              	   C   s   dd }t d}| jtd|dd|dd}dd	d
ddg}tjdd |D dd}tdddddgdddddgdddddgd|d}t|| d S )Nc                 S   s&   |  tj} |  tj} tj| ddS NsunitastypenpZfloat_int_pdto_timedeltatime r    K/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser0   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
         Please use 'date_format' insteadTr   Zdelim_whitespaceparse_datesdate_parser	index_coliW  iX  iY  iZ  i[  c                 S   s   g | ]}t j|d dqS )r   r   )r   r   ).0ir    r    r!   
<listcomp>H   s     z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>nameg>٬gVgzg1g D*Ag D*Ag D*AgSt$Px@gGx$Px@g9#Px@)enhindex)r   read_csv_check_warningsFutureWarningr   ZTimedeltaIndexr   tmassert_frame_equalall_parsersr"   Ztestdataresultr   expectedr    r    r!   %test_read_csv_with_custom_date_parser-   s.    			r:   c              	   C   sh   dd }t d}| jtd|dd|dd}td	d
dddgdd}tddddddgi|d}t|| d S )Nc                 S   s&   |  tj} |  tj} tj| ddS r   r   r   r    r    r!   r"   X   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
        r#   TFr   r$   g    
@g     @g     @g    @@g    `@r+   r-   gzGqWg(\WgQXg(\WgGznXr0   )r   r2   r3   r   r   r4   r5   r6   r    r    r!   7test_read_csv_with_custom_date_parser_parse_dates_falseU   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;-   )sep	thousandsr%   header)r   r   r   r   r4   r5   )r7   parserdatar9   dfr    r    r!   test_separator_date_conflictx   s     
rL   keep_date_colTFc                 C   s  d}| }dd }d |ddgddgd|dd	d
ddddddg	d}|j tdt|f|}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/d0d d1gtdddd2dtdddd(dddd3d4d+d5d6d d7gtdddd8dtdddd2dddd9d:d+d5d;d d!ggd<d=dd	d
ddddddgd>}|s|jd	d
dgdd?}||j }t|| d S )@N  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 jt | tdS )z
        Test date parser.

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

        Returns
        -------
        parsed : Series
        )rI   )r	   Ztry_parse_datesconcat_date_colsdu_parse)	date_colsr    r    r!   r&      s     z2test_multiple_date_col_custom.<locals>.date_parserrE   r>      actualnominalX0X1X2X3X4X5X6X7X8)rH   r&   r%   rM   namesuse 'date_format' instead        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   rA   Zaxis)	r2   r3   r   r   r   droprB   r4   r5   )r7   rM   rJ   rI   r&   kwdsr8   r9   r    r    r!   test_multiple_date_col_custom   s    Q`
r   	containerdimrE   r>   c              	      sL   d}dt  fddt|D }tjt|d t| W 5 Q R X d S )Nz0not all elements from date_cols are numpy arraysrg   c                 3   s   | ]} gV  qd S Nr    )r(   _r   valuer    r!   	<genexpr>*  s     z,test_concat_date_col_fail.<locals>.<genexpr>match)tuplerangepytestraises
ValueErrorr	   rO   )r   r   msgrQ   r    r   r!   test_concat_date_col_fail$  s
    r   c                 C   s  d}| }d ddgddgg|ddddd	d
dddg	d}|j t|f|}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/d0d'd1d2dd3gtdddd4dtdddd.dddd5d6d'd1d7ddggd8d9ddddd	d
dddgd:}|s|jdddgdd;}t|| d S )<NrN   rE   r>   rR   rV   rW   rX   rY   rZ   r[   r\   r]   r^   )rH   r%   rM   r_   ra   rb   rc   r   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   r   r   r   r   r   r   r   r   r   ZX1_X2ZX1_X3rA   r   )r   r   r   r   r   r4   r5   )r7   rM   rJ   rI   r   r8   r9   r    r    r!   test_multiple_date_col0  s    Q`r   c                 C   s.  d}| }d dgdddddddd	d
gd}|j t|f|}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dddddddgdddddddgddd dd!ddgdd"d#d$d%dd&gdd'd d(d)dd*ggdddddd	d
g|d+}|jd,krt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
rE   rV   rW   rX   rY   rZ   r[   r\   r]   )rH   r%   r'   r_   ra   rb   rc   r   ro   ru   r   r+   rf   ri   rj   rk   rl   rm   rn   rq   rr   rs   rt   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   rB   r1   pyarrow
1970-01-01)r   r   r   r   r   enginer   to_datetimedtr   r4   r5   )r7   rJ   rI   r   r8   r1   r9   r    r    r!   test_date_col_as_index_col  s<    
r   c                 C   s8  d}ddgddgd}| }d |t jd}|jtdt|f|}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ddddg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.5900rE   r>   rR   rS   rH   r%   r&   r`   ra   rb   rc   r   rd   re   rf   rj   ro   rr   ru   rx   r{   r   r   rT   rU      rA   )
r   r   r2   r3   r   r   r   rB   r4   r5   )r7   rJ   r%   rI   r   r8   r9   r    r    r!    test_multiple_date_cols_int_cast  sV      ""
#
r   c              	   C   s~   | }d}|j td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d
ddddddg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   rE   )r%   rH   r&   z05/31/2012, 15:30:00.029g     i@E   Z0_1r>   rR   r      r=      rA   )	r2   r3   r   r   r   r   nanr4   r5   r7   rI   rJ   r8   r9   r    r    r!   &test_multiple_date_col_timestamp_parse  s>    
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dd'd(d)d*d+d,d-g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   rE   r>   r%   ra   rb   rc   r   rf   ri   rj   rk   rl   rm   rn   ro   rq   rr   rs   rt   ru   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirrA   )r   r   r   r   r4   r5   r   r    r    r!   #test_multiple_date_cols_with_header=  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   s4   | }t jt|d |jt||d W 5 Q R X d S )Nr   r   )r   r   r   r   r   )r7   rJ   r%   r   rI   r    r    r!   %test_multiple_date_col_name_collision  s    r   c                 C   s   | }d}|j tdt|ddgdd d}tdddd	d
dddddddggddddddddddddg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`   r   c                 S   s   t t| S r   )r   utcfromtimestampintxr    r    r!   <lambda>      z*test_date_parser_int_bug.<locals>.<lambda>)r'   r%   r&   go?r   r=   gX5;N?rR   i90  rE   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   )r2   r3   r   r   r   r   r4   r5   r   r    r    r!   test_date_parser_int_bug  sT    !r   c              	   C   s~   | }t ttjdddtdd}tj|jddd d f< td.}|	| |j
|d	d
gd}t|| W 5 Q R X d S )N
   float64dtypeZ20010101)ABrR   r=   z__nat_parse_.csvr   r   r'   r%   )r   dictr   Zaranger   r   Zilocr4   Zensure_cleanZto_csvr   r5   )r7   rI   rK   pathr8   r    r    r!   test_nat_parse  s    
r   c                 C   sb   d}| }|j tdt|dd d}|jt|dd}t|| |jt|dd	}t|| d S )
N3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r`   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   )date_format)r2   r3   r   r   r4   r5   r7   rJ   rI   r8   r9   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   r4   r5   r   r    r    r!   #test_parse_dates_implicit_first_col  s
    r   c                 C   sn   d}| }|j t|ddgd}tttddddd d}tdd	d
gdddgdddg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crE   r   r>   r   )r   r   Cr0   )r   r   r   listr   r   r4   r5   )r7   rJ   rI   r8   r1   r9   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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dddgd	ddgd|d}t|| d S )Nz>date,time,B,C
090131,0010,1,2
090228,1020,3,4
090331,0830,5,6
Could not infer formatr   r     rE      r   r>      ro   rR   r      	date_timer   r,   r   r   r=   r   r   r0   )	r2   UserWarningr   r   r   objectr   r4   r5   )r7   r%   rJ   rI   r8   r1   r9   r    r    r!   test_yy_format_with_year_first1  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  rE   r>      r   r   r   r   r   r   T)r'   r%   dayfirst)r   r   	set_indexr   r   r4   r5   )r7   r%   rJ   rI   r9   r8   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dddgdddgdddgdddgdddgdddgdddgdddgdddgg	dddg|d}|jtd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   rE   r>   rR   )ZoneZtwoZthreeZindex1index2r_   r   r   r   r   r   r   r   r   r   r   r   Tr   )
r   Zfrom_productr   Z	swaplevelr   r2   r   r   r4   r5   )r7   r'   rJ   rI   r1   r9   r8   r    r    r!   test_multi_index_parse_dates_  s@     	r   kwargsr   Z	day_firstc                    s   | }d}d kr|j tdt|dddg 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dddgdtjdgd|ddgd}t	|| nPd}t
jt|d8 |j tdt|dddg fddd	gd	d
dgd	 W 5 Q R X d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r   r`   r   QNTUc                    s   t | f S r   rP   dr   r    r!   r     r   z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TZNA)r_   r&   rH   r'   r%   	na_valuesr   rE   r   r>   r+   )r   r   r1   rB   z.got an unexpected keyword argument 'day_first'r   c                    s   t | f S r   r   r   r   r    r!   r     r   )r_   r&   Zskiprowsr'   r%   r   )r2   r3   r   r   r   r   r   r   r4   r5   r   r   	TypeError)r7   r   rI   rJ   rK   Z	exp_indexr9   r   r    r   r!   #test_parse_dates_custom_euro_format  sJ    
 
r  c                 C   st   | }d}|j t|ddd}tddgittdgdd	d
}t|| |jdkrZtj	}nt
j	}|jj|ksptd S )NzDate,x
2012-06-13T01:39:00Z,0.5r   Tr   r   g      ?z2012-06-13 01:39:00+00:00r@   r+   r0   r   )r   r   r   r   r   r4   r5   r   pytzutcr   r1   tzAssertionError)r7   requestrI   rJ   r8   r9   Zexpected_tzr    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d)d*d+d,d-d.d/d0gd1}|d)}t|tsd2|j_|jt|||d3}t	
|| d S )4Na  
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
ra   rE   rb   rc   r   ZKORD1ri   rj   rk   rl   rm   rn   ro   ZKORD2rq   rr   rs   rt   ru   ZKORD3rw   rx   ry   ZKORD4rz   r{   r|   r}   r~   r   ZKORD5r   r   r   r   r   ZKORD6r   r   rU   r   r   r   r   r   r   r   rA   Zdate_NominalTimer%   r'   )r   r   r   
isinstancer   r1   r,   r   r   r4   r5   )r7   r%   r'   rI   rJ   r9   r8   r    r    r!   test_multiple_date_cols_index  s    	?J

  r
  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d$d%d&d'd(d)d*d+gd,}|d$}|jt|d$dd-gid$d-d.}t|}W 5 Q R X t|d |d d-  t|d |d-d/  t|d- |d/d   d S )0N  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
ra   rE   rb   rc   r   rf   ri   rj   rk   rl   rm   rn   ro   rq   rr   rs   rt   ru   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   rU   r   Z
actualTimer   r   r   Dr   rA   r>   )r%   r'   	chunksizer   )r   r   r   r   r   r   r4   r5   )r7   rI   rJ   r9   readerchunksr    r    r!   test_multiple_date_cols_chunked8  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   rE   r>   r  r   ZnominalTimer   r   )r7   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   rE   r>   r   r   )r   r   r   r4   r5   r   r    r    r!   ,test_multiple_date_col_multiple_index_compat  s    	  
r  r   c              	   C   sD   | }d}d}t jt|d  |jt|fddi| W 5 Q R X 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   )r7   r   rI   r   rJ   r    r    r!   *test_read_with_parse_dates_scalar_non_bool  s    r  rE   r   r   rR   c              	   C   s<   | }d}d}t jt|d |jt|dd W 5 Q R X d S )Nr  r  r   r  r   r  )r7   r%   rI   r   rJ   r    r    r!   'test_read_with_parse_dates_invalid_type  s    r  cache_datesr   r    c              	   C   sP   | }t | dd }|jdkr*|s*t}nd }|j|d|d ddgdg|d d S Nz,
iP  r   r   foobar)rH   r_   r%   r  r   r   r   r2   r7   r  r   rI   r   warnr    r    r!   test_bad_date_parse  s    r!  0c              	   C   sV   | }t | dd }|jdkr&d }n|r0d }nt}|j|d|d ddgdg|d d S r  r  r  r    r    r!    test_bad_date_parse_with_warning  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 )
NDate,test
2012-01-01,1
,2r@   F)r%   Z	na_filteri  rE   r>   testrA   )r   r   r   r   r   NaTr4   r5   r   r    r    r!   test_parse_dates_empty_string  s     r'  r  r2   Zread_table_check_warningsc                 C   s,   | }d}t ||tdt|dgddd d S )Nr$  z2The argument 'infer_datetime_format' is deprecatedr@   T,)r%   Zinfer_datetime_formatrF   )getattrr3   r   )r7   r  rI   rJ   r    r    r!   .test_parse_dates_infer_datetime_format_warning(  s    r*  c              
   C   sN   | }d}d}t jt|d* t||tdt|dgtjddd W 5 Q R X d S )	Nr$  z/Cannot use both 'date_parser' and 'date_format'r   r`   r@   ZISO8601r(  )r%   r&   r   rF   )r   r   r   r)  r3   r   r   r   )r7   r  rI   rJ   r   r    r    r!   ,test_parse_dates_date_parser_and_date_format:  s    r+  zdata,kwargs,expectedza
04.15.2016i  r   rA   r  z
2016-04-15r+   r   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   r7   rJ   r   r9   rI   r8   r    r    r!   %test_parse_dates_no_convert_thousandsN  s    #r0  c                 C   s   d}| }|j tdt|ddgdddgitjd}tdddd	ddd
dgtddddddddgg}t|dddg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.
r`   r   rE   r   r     r   r,  rm         $@r=         ?      &@)r   r   )r   r   rA   )	r2   r3   r   r   r   r   r   r4   r5   )r7   rJ   rI   r8   expected_datar9   r    r    r!   ,test_parse_date_time_multi_level_column_namew  s    

r6  zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r   rH   r%   r1  r   rm   r3  r4  r   rS   ra   rb   rc   rd   re   rf   rj   ro   rr   ru   rx   r{   r   r   rT   c                 C   s>   | }|j tdt|fdtji|}||j }t|| d S )Nr`   r&   )r2   r3   r   r   r   rB   r4   r5   r/  r    r    r!   test_parse_date_time  s    J
r8  z+ignore:elementwise comparison:FutureWarningc              	   C   sj   | }d}|j tdt|dddddgitjd}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.r`   r   ZymdrE   r>   r   r1  r   r2  r4  r   rA   )	r2   r3   r   r   r   r   r   r4   r5   r   r    r    r!   test_parse_date_fields  s    	r:  )keyr   r   r&   c                 C   s   t j| ddS )N%Y %m %d %H %M %Sformatr   r   r   r    r    r!   r     r   r   )r   r<  Nc              
   C   s   | }d}|j |dt|fdddddddd	gid
||i}ttddd	dddddgtddd	dddddggdddg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.
r`   r   ymdHMSrE   r>   rR   r   r   r7  r1  r   rm   r2  r3  r4  r   r   rA   r2   r   r   r   r4   r5   r7   r;  r   r   rI   rJ   r8   r9   r    r    r!   test_parse_date_all_fields  s&    rC  c                 C   s   t j| ddS )N%Y %m %d %H %M %S.%fr=  r?  r   r    r    r!   r   ,  r   )r   rD  Nc                 C   s   | }d}|j |dt|fdddddddd	gid
||i}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dddg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.
r`   r   r@  rE   r>   rR   r   r   r7  r1  r   i@ )microsecondrm   r2  i  r3  r4  r   r   rA   rA  rB  r    r    r!    test_datetime_fractional_seconds&  s&    rF  c                 C   s   | }d}dd }|j tdt|ddddgi|d}ttd	ddd
dgtd	ddddggdddgd}|d d|d< t|| d S )Nr9  c                 S   s   dd t | |D S )Nc                 S   s&   g | ]\}}t t|t|d dqS )rE   )yearmonthday)r   r   )r(   ymr    r    r!   r*   Q  s     z8test_generic.<locals>.parse_function.<locals>.<listcomp>)zip)yymmr    r    r!   parse_functionP  s    z$test_generic.<locals>.parse_functionr`   r   ZymrE   r   r1  r   r2  r>   r4  rI  r   rA   datetime64[ns])r2   r3   r   r   r   r   r4   r5   )r7   rI   rJ   rO  r8   r9   r    r    r!   test_genericK  s"    
"rQ  c                 C   s   | }d}dd }|j td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dg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   sH   z| d | }W n( t k
r8   dd t| |D }Y nX tj|ddS )NTc                 S   s   g | ]\}}t ||qS r    )r   combine)r(   r   tr    r    r!   r*   s  s     zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>datetime64[s]r   )r   rL  r   array)r   r   Zarrr    r    r!   r&   n  s
    z:test_date_parser_resolution_if_not_ns.<locals>.date_parserr`   r   r   r   Zprn)r&   r%   r'   z2013-11-03T19:00:00rR   rU  r   ZrxstatusZ00E80000~   r   r?   r   )rJ   r1   )
r2   r3   r   r   rV  r   r   Zfrom_arraysr4   r5   )r7   rI   rJ   r&   r8   Z	datetimesr9   r    r    r!   %test_date_parser_resolution_if_not_nsc  s(    
	rX  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caserA   r   r   r   r4   r5   r7   rI   rJ   r8   r5  r9   r    r    r!   (test_parse_date_column_with_empty_string  s    r\  zdata,expectedz"a
135217135789158401
1352171357E+5l   0l    Hbk r   r   z%a
99999999999
123456789012345
1234E+0l   g] l   y_"A i  c                 C   s&   | }|j t||d}t|| d S )Nr   r   )r7   rJ   r9   r%   rI   r8   r    r    r!   test_parse_date_float  s    r]  c              
   C   sn   | }d}|j t|dgd}tttdddttddd	d d
}|dddddg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  )minutes)startendr   r  )r   i6[  ih[  )r   val)
r   r   r   r   r   r   r   r   r4   r5   )r7   rI   rJ   r8   Zdtir5  r9   r    r    r!   test_parse_timezone  s"    rb  date_stringz
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   r7  r   r   r   r4   r5   )r7   rc  rI   r9   r8   r    r    r!   !test_invalid_parse_delimited_date  s    re  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   rP  r   rH   r   r%   rd  )r7   rc  r   r9   rI   r8   r    r    r!   )test_parse_delimited_date_swap_no_warning  s       rg  c                 C   sF   | }t d|gidd}d}|jt|t|d |dgd}t|| d S )Nr   rP  r   zParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.rf  )r   r2   r   r   r4   r5   )r7   rc  r   r9   rI   warning_msgr8   r    r    r!   +test_parse_delimited_date_swap_with_warning  s    rj  c                	   C   s0   t jtdd tddddg W 5 Q R X d S )Nz_^time data "31/05/2000" doesn\'t match format "%m/%d/%Y", at position 1. You might want to try:r   z
01/01/2000z
31/05/2000z
31/05/2001z
01/02/2000)r   r   r   r   r   r    r    r    r!   6test_parse_multiple_delimited_dates_with_swap_warnings  s
    rk  c              
   K   sL   d\}}z| |f|}W n* t k
rB } zt|}W 5 d }~X Y nX ||fS )N)NN)r   str)callrc  r   r   r8   Zerr    r    r!   !_helper_hypothesis_delimited_date  s    rn  	delimiterz -./r   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&| j tjjdd ||d|}tt||d\}}tt	|t
ddd|dd	\}}	||kstt||	kstd S )
Nrp  r.  zRparse_datetime_string cannot reliably tell whether e.g. %m.%Y is a float or a dater   rY  )r   rE   F)defaultr   Z	yearfirst)nodeZ
add_markerr   markxfailstrftimereplacern  r
   rP   r   r  )
r  r   r   ro  Ztest_datetimerc  Zexcept_out_dateutilr8   Zexcept_in_dateutilr9   r    r    r!   test_hypothesis_delimited_date$  s*      


rw  z)names, usecols, parse_dates, missing_colsra  z
date, timeZdate1Ztime1Ztemperaturec              	   C   sJ   | }t d}d| d}tjt|d |j|d|||d W 5 Q R X d S )Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': ''r   r(  )rF   r_   usecolsr%   )r   r   r   r   r   )r7   r_   ry  r%   Zmissing_colsrI   contentr   r    r    r!   &test_missing_parse_dates_column_raisesG  s        r{  c                 C   sL   | }t d}|jtd|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%   r_   rJ  2r   1r0   )r   r2   r   r   r4   r5   r   r    r    r!   test_date_parser_and_namesh  s    r~  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   r}  r   rE   r%   rH   
2019-12-31r=   )r  r   r|  r   r   r   r   r4   r5   r   r    r    r!   #test_date_parser_multiindex_columnsx  s
    r  zparse_spec, col_namer  r  )a_bZ1_2)r  r}  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   rE   r  r  )r   3r=   r  )r7   Z
parse_specZcol_namerI   rJ   r8   r9   r    r    r!   0test_date_parser_multiindex_columns_combine_cols  s    	r  c                 C   sT   d}| }|j td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   rE   r>   rD   )r%   ry  rG   rR   r   z20-09-2001 01:00:00r   )r2   r   r   r   r   r4   r5   r   r    r    r!   "test_date_parser_usecols_thousands  s    r  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   r4   r5   r[  r    r    r!   &test_parse_dates_and_keep_orgin_column  s      r  c               	   C   s   d} t ddgd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 5 Q R X t|| d} tddg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 5 Q R X t|| d S )Nzdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10rP  r   r   r   r,   rh  T)r%   r   r'   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r   r   )	r   r   r   r1   r4   assert_index_equalassert_produces_warningr   r   )inputr9   ri  Zres1Zres2Zres5Zres6r    r    r!   test_dayfirst_warnings  sR                   r  zdate_string, dayfirstz	31/1/2014zsecond date is single-digit)idz	1/31/2014zfirst date is single-digitc              	   C   sb   d|  }t dgdd dd}d}tjt|d tt|dgd|dj}W 5 Q R X t|| d S )	Nzdate
z
2014-01-31rP  r   r  rh  r   )r%   r'   r   )r   r4   r  r   r   r   r1   r  )rc  r   initial_valuer9   ri  resr    r    r!   &test_dayfirst_warnings_no_leading_zero  s"    
   r  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   r|  rR   r   r   r   r0   rZ  r   r    r    r!    test_infer_first_column_as_index  s    r  c                 C   s   t j| ddS )N%Y-%m-%dr=  r?  r   r    r    r!   r   "  r   )r   r  Nc                 C   sl   | }d}|j |dt|fdddgidgd||i}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
r`   ZTest#r"  )r   r%   z
2012-10-01z
2015-05-15z
2017-09-09)r2   r   r   r   r   r&  r4   r5   rB  r    r    r!   &test_replace_nans_before_parsing_dates  s.    

r  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%   r}  r  r   r   r   )r   r   r   r   r   r4   r5   r   r    r    r!   !test_parse_dates_and_string_dtypeF  s    r  c                 C   s   | }d}|j dkr*tddgddd}d }ntdd	gd
dd}t}d}|j||t|ddd}tdddgi|d}t|| d S )Nz7a,b
27.03.2003 14:55:00.000,1
03.08.2003 15:20:00.000,2r   z27.03.2003 14:55:00.000z03.08.2003 15:20:00.000r   r   r   z2003-03-27 14:55:00z2003-08-03 15:20:00rP  z1when dayfirst=False \(the default\) was specifiedTr   r  r   rE   r>   r0   )	r   r   r   r   r2   r   r   r4   r5   )r7   rI   rJ   Zexpected_indexr   r   r8   r9   r    r    r!   test_parse_dot_separated_datesS  s2    
    r  c                 C   s\   | }d}|j t|dddddgd}ttdtd	gtdtd	gd}t|| d S )
N/a,b
2019-12-31,31-12-2019
2020-12-31,31-12-2020r  z%d-%m-%Yr  r   r   r   r%   r  
2020-12-31r  r   r    r    r!   test_parse_dates_dict_formato  s    r  zkey, parse_datesr  r  c              	   C   s^   | }d}t d  |jt||di|d}W 5 Q R X t|tdtdgi}t || d S )Nza,b
31-,12-2019
31-,12-2020z	%d- %m-%Yr  r  r  )r4   r  r   r   r   r   r5   )r7   r;  r%   rI   rJ   r8   r9   r    r    r!   (test_parse_dates_dict_format_two_columns  s       r  c                 C   sZ   | }d}|j t|ddiddd}tddd	gittd
tdgddd}t|| d S )Nr  r   r  Tr   )r   r%   r'   r   z
31-12-2019z
31-12-2020r  r  r+   r0   )r   r   r   r   r   r4   r5   r   r    r    r!   "test_parse_dates_dict_format_index  s        r  c                 C   sF   | }d}|j t|dgd}ttdtdgdd}t|| d S )Nz/a,b
2000-01-01 00:00:00,1
2000-01-01 00:00:01,1r   r   z2000-01-01 00:00:00z2000-01-01 00:00:01rE   r  r  r   r    r    r!   test_parse_dates_arrow_engine  s    	r  )s__doc__r   r   r   r   ior   Zdateutil.parserr   rP   Z
hypothesisr   Znumpyr   r   r  Zpandas._libs.tslibsr	   Zpandas._libs.tslibs.parsingr
   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr4   Zpandas._testing._hypothesisr   Zpandas.core.indexes.datetimesr   Zpandas.io.parsersr   rs  ZusefixturesZxfail_pyarrowZskip_pyarrowr:   r;   rL   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt  r   r   r   r  r  r
  r  r  r  r  rV  r  r!  r#  r'  r*  r+  from_tuplesr0  r6  r8  filterwarningsr:  r3   rC  rF  rQ  rX  r\  r]  rb  re  rg  rj  rk  rn  rw  r{  r~  r  r  r  r  r  paramr  r  r  r  r  r  r  r  r  r    r    r    r!   <module>   s   
'
"
 
x.
<
'
Y	

6



2-*`
\


 

 
 

   
&
H


&		




0  "