U
    +ifW                     @   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ddcdchgddde ZQej*2dfddgej*2dgdhdidjgdkdl ZRe,dmdn ZSe,ej*2dodpd@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jTedqdadredzd{d|fgdEdygd}dwfgd~d ZUe,ej*2d%e'j9e:gej;dgfdd ZVe,ej*2d%e'j9e:gej;dgfej*2dodd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 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dEdddgiddfgej*2d@ddgdd Z`dd Zae-ej*2dddddddg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*2ddddddddg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dddgddAdBgdfdddg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   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!   Z/home/mars/bis/venv/lib/python3.8/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_coliW  iX  iY  iZ  i[  c                 S   s   g | ]}t j|d dqS )r   r   )r   r   ).0ir!   r!   r"   
<listcomp>M   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_parser4   s*    		r8   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#   ]   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nXr0   )r   r   r   r   r2   r3   r4   r!   r!   r"   7test_read_csv_with_custom_date_parser_parse_dates_falseZ   s"    	r9   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   r2   r3   )r5   parserdatar7   dfr!   r!   r"   test_separator_date_conflict{   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Xr   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@   r2   r3   )r5   rJ   rG   rF   r&   kwdsr6   r7   r!   r!   r"   test_multiple_date_col_custom   s    Q`
r   	containerdimr<   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   r   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   r2   r3   )r5   rJ   rG   rF   r   r6   r7   r!   r!   r"   test_multiple_date_col2  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   r   )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@   r1   pyarrow
1970-01-01)r   r   r   r   r   r   enginer	   r   to_datetimedtr    r2   r3   )r5   rG   rF   r   r6   r1   r7   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.5900r   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@   r2   r3   )	r5   r&   warningrG   r%   rF   r   r6   r7   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   r   )r%   rE   r&   z05/31/2012, 15:30:00.029g     i@E   Z0_1r<   rO         r;      r?   )r   r   r   r   r   nanr2   r3   r5   rF   rG   r6   r7   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   r   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   r2   r3   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   s4   | }t jt|d |jt||d W 5 Q R X d S )Nr   r   )r   r   r   r   r   )r5   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  r   Zinvoice_InvoiceResourcesearchelapsedsysuserZqueriesZ
query_timerowsZ	accountidZuseridZ	contactidlevelZsilomethodz2012-07-24 04:12:30Zposix_timestampr+   r   )r   r   r   r   r   r2   r3   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ilocr2   Zensure_cleanZto_csvr   r3   )r5   rF   rH   pathr6   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   r2   r3   r5   rG   rF   r6   r7   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cr   r   r<   r   )r   r   Cr0   )r   r   r   listr   r   r2   r3   )r5   rG   rF   r6   r1   r7   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     r      r   r<      rc   rO   r      	date_time)r   r,   r   r   r;   r   r   r0   )r   r   r   r   objectr   r2   r3   )r5   r%   rG   rF   r6   r1   r7   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   r   r   T)r'   r%   dayfirst)r   r   	set_indexr   r   r2   r3   )r5   r%   rG   rF   r7   r6   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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<   rO   )onetwothreeZindex1index2namesr   r   r   r   r   r   r   r   r   r   Tr   )	r   Zfrom_productr   Z	swaplevelr   r   r   r2   r3   )r5   r'   rG   rF   r1   r7   r6   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   r   r   r<   r+   )r   r   )r1   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   r2   r3   r   r   	TypeErrorassert_produces_warningr   )r5   r   rF   rG   rH   Z	exp_indexr7   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+   r0   )r   r
   nodeZ
add_markerr   markxfailr   r   r   r   r   r2   r3   r1   tzpytzutcAssertionError)r5   requestrF   rG   r6   r7   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   r   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   r1   r,   r   r   r2   r3   )r5   r%   r'   rF   rG   r7   r6   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   r   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   r2   r3   )r5   rF   rG   r7   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   r   r<   r  r   ZnominalTimer   r   )r5   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   r   r<   r   r   )r   r   r   r2   r3   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   )r5   r   rF   r   rG   r!   r!   r"   *test_read_with_parse_dates_scalar_non_bool  s    r  r   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  )r5   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   )r5   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  r   r<   testr?   )r   r   r   r   r   NaTr2   r3   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+   r0   za,b
04.15.2016,09.16.2013r   r:   	      r   c                 C   s.   | }|j t|fddi|}t|| d S )NrD   .r   )r5   rG   r   r7   rF   r6   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   r   r   rE   r%   r&     r   r'  ra         $@r;         ?      &@)r   r   )r   r   r?   )r2   r  r   r   r   r   r3   )r5   r&   r   rG   rF   r6   expected_datar7   r!   r!   r"   ,test_parse_date_time_multi_level_column_name  s    
r2  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/  r0  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&   )r2   r  r   r   r@   r3   )r5   rG   r   r7   r&   r   rF   r6   r!   r!   r"   test_parse_date_time9  s
    N$
r4  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ymdr   r<   r,  r-  r   r.  r0  r   r?   r2   r  r   r   r   r   r3   r5   r&   r   rF   rG   r6   r7   r!   r!   r"   test_parse_date_fields  s    r8  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   ymdHMSr   r<   rO   r   r   rE   r&   r%   r-  r   ra   r.  r/  r0  r   r   r?   r6  r7  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.%fr9  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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   r<  r   r<   rO   r   r   r=  r-  r   i@ )microsecondra   r.  i  r/  r0  r   r   r?   r6  r7  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 )Nr5  Fr+  r   Zymr   c                 S   s   t t| t|ddS )Nr   )yearmonthday)r   r   )ymr!   r!   r"   r     r   ztest_generic.<locals>.<lambda>r,  r-  r   r.  r<   r0  rC  r   r?   )r2   r  r   r   r   r   r   r3   r   r!   r!   r"   test_generic  s    
"rF  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:00rO   rH  r   ZrxstatusZ00E80000r   ~   r   ry   r<   r=   r   )rG   r1   )	r   r   r   rI  r   r   from_tuplesr2   r3   )r5   rF   rG   r&   r6   Z	datetimesr7   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   caser?   r   r   r   r2   r3   r5   rF   rG   r6   r1  r7   r!   r!   r"   (test_parse_date_column_with_empty_string  s    rQ  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   )r5   rG   r7   r%   rF   r6   r!   r!   r"   test_parse_date_float'  s    rR  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   r2   r3   )r5   rF   rG   r6   Zdtir1  r7   r!   r!   r"   test_parse_timezone@  s"    rV  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   r3  r   r   r   r2   r3   )r5   rW  rF   r7   r6   r!   r!   r"   !test_invalid_parse_delimited_date\  s    rY  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%   rX  )r5   rW  r   r7   rF   r6   r!   r!   r"   )test_parse_delimited_date_swap_no_warningh  s       r\  c              	   C   s\   | }t d|gidd}d}tjt|d |jt|d |dgd}W 5 Q R X t|| d S )Nr   rZ  r   zKProvide format or specify infer_datetime_format=True for consistent parsingr   r[  )r   r2   r  UserWarningr   r   r3   )r5   rW  r   r7   rF   Zwarning_msgr6   r!   r!   r"   +test_parse_delimited_date_swap_with_warning  s       r^  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)callrW  r   r   r6   Zerr!   r!   r"   !_helper_hypothesis_delimited_date  s    rb  	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t d d\}}d\}}|| d|}t & tjdtd tt	||d\}}W 5 Q R X tt
|t|d	d
\}}||kst||kstd S )Nre  r)  zcparse_datetime_string cannot reliably tell whether e.g. %m.%Y is a float or a date, thus we skip itr_  rM  ignore)category)r   F)defaultr   Z	yearfirst)r   skipstrftimereplacewarningscatch_warningsfilterwarningsr]  rb  r   r   _DEFAULT_DATETIMEr	  )	rd  r   rc  Ztest_datetimer6   r7   Zexcept_in_dateutilZexcept_out_dateutilrW  r!   r!   r"   test_hypothesis_delimited_date  s.    	
  
rp  z)names, usecols, parse_dates, missing_colsrU  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   )r5   r   rs  r%   Zmissing_colsrF   contentr   r!   r!   r"   &test_missing_parse_dates_column_raises  s        ru  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   rD  2r   1r0   )r   r   r   r2   r3   r   r!   r!   r"   test_date_parser_and_names  s
    rx  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   rw  r   r   r%   rE   
2019-12-31r;   )ry  r   rv  r   r   r   r   r2   r3   r   r!   r!   r"   #test_date_parser_multiindex_columns  s
    r~  zparse_spec, col_namery  r|  )Za_bZ1_2)r   rw  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   rz  r{  )r   3r;   r}  )r5   Z
parse_specZcol_namerF   rG   r6   r7   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
    r   r<   rB   )r%   rs  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   r2   r3   rP  r!   r!   r"   &test_parse_dates_and_keep_orgin_column$  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 )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-10rZ  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   r1   r2   Zassert_index_equalr  r]  )Zwarning_msg_day_firstZwarning_msg_month_firstinputZexpected_consistentZexpected_inconsistentZres1Zres2Zres3Zres4r7   Zres5Zres6Zres7Zres8r!   r!   r"   test_dayfirst_warnings4  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   rv  rO   r   r   r   r0   rO  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-%dr9  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%  r2   r3   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%   rw  r{  )r   r   r   )r   r   r   r   r   r2   r3   r   r!   r!   r"   !test_parse_dates_and_string_dtype  s    r  )q__doc__r   r   ior   rl  Zdateutil.parserr   r   Z
hypothesisr   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_testingr2   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_pyarrowro  r8   r9   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*  r2  r4  Zparse_date_fieldsr8  Zparse_all_fieldsr>  r@  rF  rL  rQ  rR  rV  rY  r\  r^  rb  rp  ru  rx  r~  r  r  r  r  r  r  r  r!   r!   r!   r"   <module>   sn   
%
 
 
~/A
"
Y	

4



,+*`
\


"


  &
H



	

	

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