U
    c                     @   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 Z.e,dd Z/e,dd Z0e,ej*1dddgdd Z2ej*1de3e4eegej*1dddgdd  Z5e,ej*1dddgd!d" Z6d#d$ Z7e,ej*1d%e'j8e9gej:dgfd&d' Z;e,d(d) Z<e,d*d+ Z=ej*1d,d-ddggd.fd/d0ddgid1fgd2d3 Z>d4d5 Z?e,d6d7 Z@e,d8d9 ZAe,d:d; ZBe,d<d= ZCej*jDd>d?ej*1d@dAdBggddgggdCdD ZEe,ej*1d@ddgdEdFggdGdH ZFe,ej*1dIddgddggdJdK ZGe,ej*1dLdMdidNdigdOdP ZHdQdR ZIe,ej*1dSdTddgidTfdTddgidfddggdfgdUdV ZJe,dWdX ZKe,dYdZ ZLe,d[d\ ZMej*1dLi dId]igd^d_ ZNej*1d@d`eOdadbgddcdchgddde ZPej*1dfddgej*1dgdhdidjgdkdl ZQe,dmdn ZRe,ej*1dodpd@dEgieedqdadrgdEgdsfdpdddteedugdEdvdwfdxd@dEdygieedqdadredzd{d|ggdEdygdsfdxdddgdteejSedqdadredzd{d|fgdEdygd}dwfgd~d ZTe,ej*1d%e'j8e9gej:dgfdd ZUe,ej*1d%e'j8e9gej:dgfej*1dodddddgideedddbdddddgedddbdddddggddEdygdsfddddgddcg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ddTddagdsfgdd ZVe,ej*1d%e'jWe9gej:dgfdd ZXe,ej*1d%e'jYe9gdd dgfdd ZZe,ej*1d%e'jYe9gdd dgfdd Z[e,dd Z\e,dd Z]dd Z^ej*1ddedEddgiddfdedEdddgiddfgej*1d@ddgdd Z_dd Z`e-ej*1dddddddgdd Zae-ej*1dddedddƃfddedddƃfddedddafgddʄ Zbe-ej*1dddedddƃfddedddƃfgdd̄ Zcdd΄ ZdddЄ Zee-e
e"ej*1de3d҃ej*1dMddgej*1ddddddddgdd܄ Zfe-ej*1dd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dddgddAdBgdfdddgddgddBgdBfg	dd Zge-dd Zhe-dd Zie-ej*1dddggdfdddgidfgdd Zje-dd Zke-dd Zldd Zmej*1dejnddddejnddddgdd Zoe-dd Zpe-d d Zqe-dd Zrd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_skipc                 C   s   dd }t d}| j|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-g7fro6k3/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser4   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_coliW  iX  iY  iZ  i[  c                 S   s   g | ]}t j|d dqS )r   r   )r   r   ).0ir    r    r!   
<listcomp>J   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   r   r   ZTimedeltaIndexr   tmassert_frame_equalall_parsersr"   Ztestdataresultr   expectedr    r    r!   %test_read_csv_with_custom_date_parser1   s*    		r7   c                 C   sd   dd }t d}| j|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"   Z   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*   r,   gzGqWg(\WgQXg(\WgGznXr/   )r   r   r   r   r1   r2   r3   r    r    r!   7test_read_csv_with_custom_date_parser_parse_dates_falseW   s"    	r8   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   r1   r2   )r4   parserdatar6   dfr    r    r!   test_separator_date_conflictx   s     
rI   keep_date_colTFc                 C   s  d}| }dd }d |dddgddgd|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'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d4d5d6d7d8d9d:d;d<d=d>gd?}|s|jd7d8d9gdd@}||j }t|| d S )AN  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XrB   r;      actualnominal)rE   r%   prefixr$   rJ   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@rQ   rR   X0X1X2X3X4X5X6X7X8r>   Zaxis)	read_csv_check_warningsFutureWarningr   r   r   dropr?   r1   r2   )r4   rJ   rG   rF   r%   kwdsr5   r6   r    r    r!   test_multiple_date_col_custom   s    Q`
r   	containerdimrB   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 arraysr[   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   rL   )r   r   msgrM   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|}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d1d2d3d4d5d6d7d8d9d:d;gd<}|s|jd4d5d6gdd=}t|| d S )>NrK   rN   rB   r;   rO   )rE   rS   r$   rJ   rT   rU   rV   rW   r   rX   rY   rZ   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|   ZX1_X2ZX1_X3r}   r~   r   r   r   r   r   r   r   r>   r   )r   r   r   r   r   r   r1   r2   )r4   rJ   rG   rF   r   r5   r6   r    r    r!   test_multiple_date_col/  s    Q`r   c                 C   s(  d}| }d ddgdd}|j td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st	d/|d'  j
j|d'< t|| d S )0Naz  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
rN   rB   )rE   rS   r$   r&   rT   rU   rV   rW   r   rc   ri   rs   r~   r*   rZ   r]   r^   r_   r`   ra   rb   re   rf   rg   rh   rk   rl   rm   rn   ro   rp   rq   rr   ru   rv   rw   rx   r}   r   r   r   r   r   r   r?   r0   pyarrow
1970-01-01)r   r   r   r   r   r   enginer	   r   to_datetimedtr   r1   r2   )r4   rG   rF   r   r5   r0   r6   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|}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.5900rB   r;   rO   rP   rN   )rE   rS   r$   r%   rT   rU   rV   rW   r   rX   rY   rZ   r^   rc   rf   ri   rl   ro   rs   ry   rQ   rR   r}   r   r>   )r   r   r   r   r   r?   r1   r2   )	r4   r%   warningrG   r$   rF   r   r5   r6   r    r    r!    test_multiple_date_cols_int_cast  sX    ""
#
r   c              	   C   sz   | }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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   rB   )r$   rE   r%   z05/31/2012, 15:30:00.029g     i@E   Z0_1r;   rO         r:      r>   )r   r   r   r   r   nanr1   r2   r4   rF   rG   r5   r6   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.0000rR   rB   r;   r$   rU   rV   rW   r   rZ   r]   r^   r_   r`   ra   rb   rc   re   rf   rg   rh   ri   rk   rl   rm   rn   ro   rp   rq   rr   rs   ru   rv   rw   rx   ry   r{   r|   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirr>   )r   r   r   r   r1   r2   r   r    r    r!   #test_multiple_date_cols_with_headerG  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   )r4   rG   r$   r   rF   r    r    r!   %test_multiple_date_col_name_collision  s    r   c                 C   s   | }d}|j 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   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?rO   i90  rB   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   r1   r2   r   r    r    r!   test_date_parser_int_bug  sP    !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BrO   r:   z__nat_parse_.csvr   r   r&   r$   )r   dictr   Zaranger   r   Zilocr1   Zensure_cleanZto_csvr   r2   )r4   rF   rH   pathr5   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   r1   r2   r4   rG   rF   r5   r6   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   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/2009rO   )Zperiods)r+   freqabcrB   r   r;   r   )r   r   Cr/   )r   r   r   listr   r   r1   r2   )r4   rG   rF   r5   r0   r6   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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
r   r     rB      r   r;      rc   rO   r      	date_time)r   r+   r   r   r:   r   r   r/   )r   r   r   r   objectr   r1   r2   )r4   r$   rG   rF   r5   r0   r6   r    r    r!   test_yy_format_with_year_first4  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  rB   r;      r   r   r   r   r   r   T)r&   r$   dayfirst)r   r   	set_indexr   r   r1   r2   )r4   r$   rG   rF   r6   r5   r    r    r!   test_parse_dates_column_listK  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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   rB   r;   rO   )ZoneZtwoZthreeZindex1index2namesr   r   r   r   r   r   r   r   r   r   Tr   )	r   Zfrom_productr   Z	swaplevelr   r   r   r1   r2   )r4   r&   rG   rF   r0   r6   r5   r    r    r!   test_multi_index_parse_dates\  s4     	r   kwargsr   Z	day_firstc                    s   | }d}d kr|j 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|| nbd}t	j
t|dJ tt4 |j t|dddg fdddgdd	d
gd W 5 Q R X 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   QNTUc                    s   t | f S r   du_parsedr   r    r!   r     r   z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TZNA)r   r%   rE   r&   r$   	na_valuesr   rB   r   r;   r*   )r   r   )r0   r?   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   )r   r   r   r   r   r   r   r1   r2   r   r   	TypeErrorassert_produces_warningr   )r4   r   rF   rG   rH   Z	exp_indexr6   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ks~t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:00r=   r*   r/   )r   r
   node
add_markerr   markxfailr   r   r   r   r   r1   r2   r0   tzpytzutcAssertionError)r4   requestrF   rG   r5   r6   r    r    r!   test_parse_tz_aware  s     r  zparse_dates,index_colrR   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
rU   rB   rV   rW   r   ZKORD1r]   r^   r_   r`   ra   rb   rc   ZKORD2re   rf   rg   rh   ri   ZKORD3rk   rl   rm   ZKORD4rn   ro   rp   rq   rr   rs   ZKORD5ru   rv   rw   rx   ry   ZKORD6r{   r|   rR   r   r   r   r   r   r   r   r>   Zdate_NominalTimer$   r&   )r   r   r   
isinstancer   r0   r+   r   r   r1   r2   )r4   r$   r&   rF   rG   r6   r5   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
rU   rB   rV   rW   r   rZ   r]   r^   r_   r`   ra   rb   rc   re   rf   rg   rh   ri   rk   rl   rm   rn   ro   rp   rq   rr   rs   ru   rv   rw   rx   ry   r{   r|   rR   r   Z
actualTimer   r   r   Dr   r>   r;   )r$   r&   	chunksizer   )r   r   r   r   r   r   r1   r2   )r4   rF   rG   r6   reader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  rR   rB   r;   r	  r   ZnominalTimer   r   )r4   rF   rG   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  rR   r   rB   r;   r   r   )r   r   r   r1   r2   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   )r4   r   rF   r   rG   r    r    r!   *test_read_with_parse_dates_scalar_non_bool  s    r  rB   r   r   rO   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  )r4   r$   rF   r   rG   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  foobarF)rE   r   r$   infer_datetime_formatr  )r   r   )r4   r  r   rF   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
,2r=   F)r$   Z	na_filteri  rB   r;   testr>   )r   r   r   r   r   NaTr1   r2   r   r    r    r!   test_parse_dates_empty_string  s     r#  zdata,kwargs,expectedza
04.15.2016i  r   r>   r	  z
2016-04-15r*   r/   za,b
04.15.2016,09.16.2013r   r9   	      r   c                 C   s.   | }|j t|fddi|}t|| d S )NrD   .r   )r4   rG   r   r6   rF   r5   r    r    r!   %test_parse_dates_no_convert_thousands  s    "r'  c              	   C   s   d}| }t j|dd( |jt|ddgdddgi|d}W 5 Q R X 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.
FZcheck_stacklevelr   rB   r   rE   r$   r%     r   r$  ra         $@r:         ?      &@)r   r   )r   r   r>   )r1   r   r   r   r   r   r2   )r4   r%   r   rG   rF   r5   expected_datar6   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   rE   r$   r*  r   ra   r,  r-  r   rP   rU   rV   rW   rX   rY   rZ   r^   rc   rf   ri   rl   ro   rs   ry   rQ   c              	   C   sR   | }t j|dd  |jt|fd|i|}W 5 Q R X ||j }t || d S )NFr(  r%   )r1   r   r   r   r?   r2   )r4   rG   r   r6   r%   r   rF   r5   r    r    r!   test_parse_date_time6  s
    N$
r1  c              	   C   s~   | }d}t j|dd& |jt|dddddgi|d}W 5 Q R X 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ymdrB   r;   r)  r*  r   r+  r-  r   r>   r1   r   r   r   r   r   r2   r4   r%   r   rF   rG   r5   r6   r    r    r!   test_parse_date_fields  s    r5  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ddddd	d
gid}W 5 Q R X 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.
Fr(  r   ymdHMSrB   r;   rO   r   r   rE   r%   r$   r*  r   ra   r+  r,  r-  r   r   r>   r3  r4  r    r    r!   test_parse_date_all_fields  s     	r;  c                 C   s   t j| ddS )Nz%Y %m %d %H %M %S.%fr6  r8  r   r    r    r!   r     r   c                 C   s   | }d}t j|dd, |jt|d|dddddd	d
gid}W 5 Q R X 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.
Fr(  r   r9  rB   r;   rO   r   r   r:  r*  r   i@ )microsecondra   r+  i  r,  r-  r   r   r>   r3  r4  r    r    r!    test_datetime_fractional_seconds  s     	r=  c              	   C   s   | }d}t jtdd( |jt|ddddgidd d	}W 5 Q R X ttd
ddddgtd
ddddggdddgd}t || d S )Nr2  Fr(  r   ZymrB   c                 S   s   t t| t|ddS )NrB   )yearmonthday)r   r   )ymr    r    r!   r     r   ztest_generic.<locals>.<lambda>r)  r*  r   r+  r;   r-  r@  r   r>   )r1   r   r   r   r   r   r   r2   r   r    r    r!   test_generic  s    
"rC  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   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     zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>datetime64[s]r   )r   zipr   array)r   r   Zarrr    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:00rO   rG  r   ZrxstatusZ00E80000r   ~   rB   ry   r;   r<   r   )rG   r0   )	r   r   r   rI  r   r   from_tuplesr1   r2   )r4   rF   rG   r%   r5   Z	datetimesr6   r    r    r!   %test_date_parser_resolution_if_not_ns  s$    
 rL  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caser>   r   r   r   r1   r2   r4   rF   rG   r5   r.  r6   r    r    r!   (test_parse_date_column_with_empty_string  s    rP  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   )r4   rG   r6   r$   rF   r5   r    r    r!   test_parse_date_float)  s    rQ  c              	   C   sj   | }d}|j t|dgd}tttdddt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  )startendr   r  )r   i6[  ih[  )r   val)
r   r   r   r   r   r  ZFixedOffsetr   r1   r2   )r4   rF   rG   r5   Zdtir.  r6   r    r    r!   test_parse_timezoneB  s"    rU  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   r0  r   r   r   r1   r2   )r4   rV  rF   r6   r5   r    r    r!   !test_invalid_parse_delimited_date^  s    rX  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   rE   r   r$   rW  )r4   rV  r   r6   rF   r5   r    r    r!   )test_parse_delimited_date_swap_no_warningj  s       r[  c                 C   sF   | }t d|gidd}d}|jt|t|d |dgd}t|| d S )Nr   rY  r   -Specify a format to ensure consistent parsingrZ  )r   r   UserWarningr   r1   r2   )r4   rV  r   r6   rF   warning_msgr5   r    r    r!   +test_parse_delimited_date_swap_with_warning  s    r_  c               	   C   sN   d} t jt| d}tddddg W 5 Q R X tdd |D d	ksJtd S )
Nr\  r   z
01/01/2000z
31/05/2000z
31/05/2001z
01/02/2000c                 S   s   h | ]}t |jqS r    )strmessage)r'   r   r    r    r!   	<setcomp>  s     zItest_parse_multiple_delimited_dates_with_swap_warnings.<locals>.<setcomp>rB   )r1   r   r]  r   r   lenr  )r^  recordr    r    r!   6test_parse_multiple_delimited_dates_with_swap_warnings  s    re  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   r`  )callrV  r   r   r5   Zerr    r    r!   !_helper_hypothesis_delimited_date  s    rg  	delimiterz -./date_formatz%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j	dt
d tt||d\}}W 5 Q R X tt|td	d	d	|d
d\}}	||kst||	kstd S )Nrj  r&  zRparse_datetime_string cannot reliably tell whether e.g. %m.%Y is a float or a dater   rM  ignore)category)r   rB   F)defaultr   Z	yearfirst)r   r   r   r  r  strftimereplacewarningscatch_warningsfilterwarningsr]  rg  r   r   r   r  )
r  ri  r   rh  Ztest_datetimerV  Zexcept_out_dateutilr5   Zexcept_in_dateutilr6   r    r    r!   test_hypothesis_delimited_date  s.    
  

rs  z)names, usecols, parse_dates, missing_colsrT  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   ,)rC   r   usecolsr$   )r   r   r   r   r   )r4   r   rv  r$   Zmissing_colsrF   contentr   r    r    r!   &test_missing_parse_dates_column_raises  s        rx  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   rA  2r   1r/   )r   r   r   r1   r2   r   r    r    r!   test_date_parser_and_names  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   rz  r   rB   r$   rE   
2019-12-31r:   )r|  r   ry  r   r   r   r   r1   r2   r   r    r    r!   #test_date_parser_multiindex_columns  s
    r  zparse_spec, col_namer|  r  )Za_bZ1_2)r  rz  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   rB   r}  r~  )r   3r:   r  )r4   Z
parse_specZcol_namerF   rG   r5   r6   r    r    r!   0test_date_parser_multiindex_columns_combine_cols  s    	r  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
    rB   r;   rA   )r$   rv  rD   rO   r   z20-09-2001 01:00:00r   r  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$   rJ   z
2015-09-08z
2015-09-09)r   r   )r   r   r   r   r1   r2   rO  r    r    r!   &test_parse_dates_and_keep_orgin_column5  s      r  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 5 Q R X t|| tjt| d tt|dgdddj}W 5 Q R X 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 5 Q R X t|	|
 tjt| d tt|dgdddj}W 5 Q R X t|	| tjt| d tt|dgdddj}W 5 Q R X t|	| tjt| d tt|dgd
ddj}W 5 Q R X t|	| d S )NzParsing dates in DD/MM/YYYY format when dayfirst=False \(the default\) was specified. This may lead to inconsistently parsed dates! Specify a format to ensure consistent parsing.zParsing dates in MM/DD/YYYY format when dayfirst=True was specified. This may lead to inconsistently parsed dates! Specify a format to ensure consistent parsing.zdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10rY  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   r0   r1   assert_index_equalr   r]  )Zwarning_msg_day_firstZwarning_msg_month_firstinputZexpected_consistentZexpected_inconsistentZres1Zres2Zres3Zres4r6   Zres5Zres6Zres7Zres8r    r    r!   test_dayfirst_warningsE  s                               r  zdate_string, dayfirstz	31/1/2014zsecond date is single-digit)idz	1/31/2014zfirst date is single-digitc              	   C   s^   d|  }t dgdd dd}tjtdd tt|dgd|dj}W 5 Q R X t|| d S )	Nzdate
z
2014-01-31rY  r   r  z'may lead to inconsistently parsed datesr   )r$   r&   r   )r   r1   r   r]  r   r   r0   r  )rV  r   initial_valuer6   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   ry  rO   r   r   r   r/   rN  r   r    r    r!    test_infer_first_column_as_index  s
    r  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-%dr6  r8  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"  r1   r2   r   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$   rz  r~  )r   r   r   )r   r   r   r   r   r1   r2   r   r    r    r!   !test_parse_dates_and_string_dtype  s    r  )s__doc__r   r   ior   rp  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_testingr1   Zpandas._testing._hypothesisr   Zpandas.core.indexes.datetimesr   Zpandas.io.date_convertersZdate_convertersconvZpandas.io.parsersr   r  ZusefixturesZxfail_pyarrowZskip_pyarrowr7   r8   rI   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  rI  r  r   r#  rK  r'  r/  r1  Zparse_date_fieldsr5  Zparse_all_fieldsr;  r=  rC  rL  rP  rQ  rU  rX  r[  r_  re  rg  rs  rx  r{  r  r  r  r  r  paramr  r  r  r  r    r    r    r!   <module>   s   
%
 
 
~/A
"
Y	

4



,+*`
\


"


  &
H



$	

	



^

	