o
    5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h dcgddde ZPej*1dfddgej*1dgg dhdidj ZQe,dkdl ZRe,ej*1dmdnd@dEgieedodadpgdEgdqfdndddreedsgdEdtdufdvd@dEdwgieedodadpedxdydzggdEdwgdqfdvdddgdreejSedodadpedxdydzfgdEdwgd{dufgd|d} ZTe,ej*1d%e'j8e9gej:dgfd~d ZUe,ej*1d%e'j8e9gej:dgfej*1dmdddddgideedddbdddddgedddbdddddggg ddqfddddgddgddeedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddggg ddqfgdd 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dEg diddfgej*1d@ddgdd Z_dd Z`e-ej*1dg d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*1dg d͢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g dӢddAdBgdfg dӢ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-dd Zqe-dd 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_csvpyarrow_xfailpyarrow_skipc                 C   st   dd }t d}| j|dd|dd}g d}tjdd	 |D dd
}tg dg dg dd|d}t|| d S )Nc                 S   &   |  tj} |  tj} tj| ddS Nsunitastypenpfloat_int_pdto_timedeltatime r$   ]/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser4      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#   delim_whitespaceparse_datesdate_parser	index_col)iW  iX  iY  iZ  i[  c                 S   s   g | ]	}t j|d dqS )r   r   )r    r!   ).0ir$   r$   r%   
<listcomp>J   s    z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>name)g>٬Vgzr2   g1)禛 D*Ar3   g D*Ag D*Ar3   )St$Px@r4   Gx$Px@r5   g9#Px@)enhindex)r   r   r    TimedeltaIndexr   tmassert_frame_equalall_parsersr&   testdataresultr#   expectedr$   r$   r%   %test_read_csv_with_custom_date_parser1   s*   		rC   c                 C   sX   dd }t d}| j|dd|dd}tg ddd	}td
g di|d}t|| d S )Nc                 S   r   r   r   r"   r$   r$   r%   r&   Z   r'   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    `@r0   r6   )gzGqWg(\WgQXg(\WgGznXr9   )r   r   r   r   r<   r=   r>   r$   r$   r%   7test_read_csv_with_custom_date_parser_parse_dates_falseW   s"   	
rD   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   r<   r=   )r?   parserdatarB   dfr$   r$   r%   test_separator_date_conflictx   s   
rU   keep_date_colTFc                 C   s  d}| }dd }d |dddgddgd|d	}|j td
t|fi |}ttdddddtddddddddddddddgtdddddtddddddddddddddgtdddd dtdddddddd!d"d#dd$ddgtdddd dtdddd dddd!d%d&d'd(dd)gtdddd*dtdddd dddd+d,d#d-d.dd/gtdddd0dtdddd*dddd1d2d#d-d3ddggg d4d5}|s|jg d6dd7}||j }t|| d S )8N  KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
c                  W   s   t t | S )z
        Test date parser.

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

        Returns
        -------
        parsed : Series
        )r   try_parse_datesconcat_date_cols)	date_colsr$   r$   r%   r+      s   z2test_multiple_date_col_custom.<locals>.date_parserXrN   rG      actualnominal)rQ   r+   prefixr*   rV   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@)r^   r_   X0X1X2X3X4X5X6X7X8rJ   r   r   r   axis)	read_csv_check_warningsFutureWarningr   r   r   droprK   r<   r=   )r?   rV   rS   rR   r+   kwdsrA   rB   r$   r$   r%   test_multiple_date_col_custom   s   P`
r   	containerdimrN   rG   c                    sb   d}dt  fddt|D }tjt|d t| W d    d S 1 s*w   Y  d S )Nz0not all elements from date_cols are numpy arraysrh   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   rY   )r   r   msgrZ   r$   r   r%   test_concat_date_col_fail#  s   "r   c                 C   s  d}| }d dddgddgg|d}|j tdt|fi |}ttddd	d
dtddd	dddddddddddgtddd	ddtddd	d
ddddddddddgtddd	ddtddd	ddddddd dd!ddgtddd	ddtddd	dddddd"d#d$d%dd&gtddd	d'dtddd	ddddd(d)d d*d+dd,gtddd	d-dtddd	d'dddd.d/d d*d0ddggg d1d2}|s|jg d3dd4}t|| d S )5NrW   r[   rN   rG   r\   )rQ   r`   r*   rV   ra   rb   rc   rd   r   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   r   )X1_X2X1_X3r   r   r   r   r   r   r   r   r   rJ   r   r   )r   r   r   r   r   r   r<   r=   )r?   rV   rS   rR   r   rA   rB   r$   r$   r%   test_multiple_date_col/  s   P`r   c                 C   s   d}| }d ddgdd}|j tdt|fi |}ttddddd	tdddd
d	tddddd	tddddd	tddddd	gdd}tg dg dg dg dg dgg d|d}|jdkrntsnt	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
r[   rN   )rQ   r`   r*   r,   ra   rb   rc   rd   r   rp   rv   r   r   r0   )rg   rj   rk   rl   rm   rn   ro   )rg   rr   rs   rt   rm   rn   ru   )rg   rx   ry   rt   rz   rn   ro   )rg   r{   r|   r}   r~   rn   r   )rg   r   ry   r   r   rn   r   )r   r   r   r   r   r   r   rK   r:   pyarrow
1970-01-01r   )r   r   r   r   r   r   enginer	   r    to_datetimedtr#   r<   r=   )r?   rS   rR   r   rA   r:   rB   r$   r$   r%   test_date_col_as_index_col  s@   
r   zdate_parser, warningc           	      C   s8  d}ddgddgd}| }d d||d}|j tdt|fi |}ttd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddgtd	dd
ddtd	dd
ddddggg dd}||j }t|| d S )NKORD,19990127, 19:00:00, 18:56:00, 0.8100
KORD,19990127, 20:00:00, 19:56:00, 0.0100
KORD,19990127, 21:00:00, 20:56:00, -0.5900
KORD,19990127, 21:00:00, 21:18:00, -0.9900
KORD,19990127, 22:00:00, 21:56:00, -0.5900
KORD,19990127, 23:00:00, 22:56:00, -0.5900rN   rG   r\   r]   r[   )rQ   r`   r*   r+   ra   rb   rc   rd   r   re   rf   rg   rk   rp   rs   rv   ry   r|   r   r   )r^   r_   r   r   rJ   )r   r   r   r   r   rK   r<   r=   )	r?   r+   warningrS   r*   rR   r   rA   rB   r$   r$   r%    test_multiple_date_cols_int_cast  sX   ""
#r   c              	   C   sp   | }d}|j t|ddggd td}ttdddddtjdgtdddddtjdggg d	d
}t|| d S )Nz]05/31/2012,15:30:00.029,1306.25,1,E,0,,1306.25
05/31/2012,15:30:00.029,1306.25,8,E,0,,1306.25r   rN   )r*   rQ   r+   z05/31/2012, 15:30:00.029g     i@E   )0_1rG   r\         rF      rJ   )r   r   r   r   r   nanr<   r=   r?   rR   rS   rA   rB   r$   r$   r%   &test_multiple_date_col_timestamp_parse$  s4   
r   c                 C   s   | }d}|j t|dddgid}ttddddd	d
ddddddgtddddd	d
ddddddgtddddd	d
ddddddgtddddd	d
ddddddgtddddd	d
d dd!d"dd#gtdddd$d	d
d%dd!d&ddggg d'd(}t|| d S ))Na  ID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000r_   rN   rG   r*   rb   rc   rd   r   rg   rj   rk   rl   rm   rn   ro   rp   rr   rs   rt   ru   rv   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r_   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirrJ   )r   r   r   r   r<   r=   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   sJ   | }t jt|d |jt||d W d    d S 1 sw   Y  d S )Nr   r   )r   r   r   r   r   )r?   rS   r*   r   rR   r$   r$   r%   %test_multiple_date_col_name_collision  s   "r   c                 C   sZ   | }d}|j t|ddgdd d}tg dgg dttdgd	d
d}t|| d S )Nzposix_timestamp,elapsed,sys,user,queries,query_time,rows,accountid,userid,contactid,level,silo,method
1343103150,0.062353,0,4,6,0.01690,3,12345,1,-1,3,invoice_InvoiceResource,search
r   c                 S   s   t t| S r   )r   utcfromtimestampintxr$   r$   r%   <lambda>      z*test_date_parser_int_bug.<locals>.<lambda>)r,   r*   r+   )go?r   r   rF   gX5;N?r\   i90  rN   r\   invoice_InvoiceResourcesearch)elapsedsysuserqueries
query_timerows	accountiduserid	contactidlevelsilomethodz2012-07-24 04:12:30posix_timestampr0   r   )r   r   r   r   r   r<   r=   r   r$   r$   r%   test_date_parser_int_bug  s    !r   c                 C   s   | }t ttjdddtdd}tj|jddd d f< td}|	| |j
|d	d
gd}t|| W d    d S 1 sCw   Y  d S )N
   float64dtype20010101)ABr\   rF   z__nat_parse_.csvr   r   r,   r*   )r   dictr   aranger   r   ilocr<   ensure_cleanto_csvr   r=   )r?   rR   rT   pathrA   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   
  s    z(test_csv_custom_parser.<locals>.<lambda>)r+   Tr   r   r   r<   r=   r?   rS   rR   rA   rB   r$   r$   r%   test_csv_custom_parser  s   r   c                 C   s>   d}| }|j t|dd}|j t|ddd}t|| d S )Nr   Tr   r   r   r   r   r$   r$   r%   #test_parse_dates_implicit_first_col  s
   r   c                 C   sh   d}| }|j t|ddgd}tttddddd d}tg dg d	g d
d|d}t|| d S )Nz8date,A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r   r   z1/1/2009r\   )periods)r1   freqabc)rN   r\   r   )rG   r   r   r   r   Cr9   )r   r   r   listr   r   r<   r=   )r?   rS   rR   rA   r:   rB   r$   r$   r%   test_parse_dates_string  s   r  z#yearfirst is not surfaced in read_*reasonr*   r   r#   c              
   C   s   d}| }|j t|d|d}ttddddddtddd	dd
dtddddddgtdd}tg dg dd|d}t|| d S )Nz>date,time,B,C
090131,0010,1,2
090228,1020,3,4
090331,0830,5,6
r   r     rN      r   rG      rp   r\   r      	date_time)r   r1   )rN   r\   r   )rG   r   rF   r   r   r9   )r   r   r   r   objectr   r<   r=   )r?   r*   rS   rR   rA   r:   rB   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  rN   rG      r   r   r   r   T)r,   r*   dayfirst)r   r   	set_indexr   r   r<   r=   )r?   r*   rS   rR   rB   rA   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r*|d
d}tg dg dg dg dg dg dg dg dg dg	g d|d}|jt||dd}t|| d S )Nzindex1,index2,A,B,C
20090101,one,a,1,2
20090101,two,b,3,4
20090101,three,c,4,5
20090102,one,a,1,2
20090102,two,b,3,4
20090102,three,c,4,5
20090103,one,a,1,2
20090103,two,b,3,4
20090103,three,c,4,5
r  rN   rG   r\   )onetwothreeindex1index2namesr   )r   rN   rG   )r   r\   r   )r   r   r   r   r   Tr   )	r   from_productr   	swaplevelr   r   r   r<   r=   )r?   r,   rS   rR   r:   rB   rA   r$   r$   r%   test_multi_index_parse_dates\  s4    	r  kwargsr  	day_firstc                    s6  | }d}d v rL|j t|g d fddddddgd	}ttd
ddtd
ddtd
ddgdd}tg ddtjdgd|ddgd}t|| d S d}t	j
t|d< tt |j t|g d fdddgdddgd W d    n1 s|w   Y  W d    d S W d    d S 1 sw   Y  d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r  )r#   QNTUc                       t | fi  S r   du_parsedr  r$   r%   r         z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TNA)r  r+   rQ   r,   r*   	na_valuesr  rN   r  rG   r#   r0   )rN   rN   rN   )r  r  r  r  )r:   rK   z.got an unexpected keyword argument 'day_first'r   c                    r   r   r!  r#  r%  r$   r%   r     r&  )r  r+   skiprowsr,   r*   r(  )r   r   r   r   r   r   r   r<   r=   r   r   	TypeErrorassert_produces_warningr   )r?   r  rR   rS   rT   	exp_indexrB   r   r$   r%  r%   #test_parse_dates_custom_euro_format  sH   
	 
Pr-  c                 C   s   | }|j dkrtr|jtjjdd d}|jt|ddd}t	dd	git
td
gddd}t|| |jjtju s?J d S )Nr   zFails for pyarrow < 7.0r  zDate,x
2012-06-13T01:39:00Z,0.5r   Tr   r   g      ?z2012-06-13 01:39:00+00:00rI   r0   r9   )r   r
   node
add_markerr   markxfailr   r   r   r   r   r<   r=   r:   tzpytzutc)r?   requestrR   rS   rA   rB   r$   r$   r%   test_parse_tz_aware  s   r6  zparse_dates,index_colr_   c                 C   s  | }d}t tdddddddd	d
dddgtddddddddddddgtddddddddddddgtddddddddddddgtdddddd d!dd"d#dd$gtdddd%dd&d'dd"d(ddggg d)d*}|d+}t|tstd,|j_|jt|||d-}t	
|| d S ).Na  
ID,date,NominalTime,ActualTime,TDew,TAir,Windspeed,Precip,WindDir
KORD1,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD2,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD3,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD4,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD5,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD6,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
rb   rN   rc   rd   r   KORD1rj   rk   rl   rm   rn   ro   rp   KORD2rr   rs   rt   ru   rv   KORD3rx   ry   rz   KORD4r{   r|   r}   r~   r   r   KORD5r   r   r   r   r   KORD6r   r   r   rJ   r_   date_NominalTimer*   r,   )r   r   r  
isinstancer   r:   r1   r   r   r<   r=   )r?   r*   r,   rR   rS   rB   rA   r$   r$   r%   test_multiple_date_cols_index  s   	>
J

r@  c                 C   sh  | }d}t tdddddddd	d
dddgtddddddddddddgtddddddddddddgtddddddddddddgtdddddddddddd gtdddd!ddd"ddd#ddggg d$d%}|d&}|jt|d&dd'gid&d'd(}t|}W d    n1 sw   Y  t|d |d d'  t|d |d'd)  t|d' |d)d   d S )*N  ID,date,nominalTime,actualTime,A,B,C,D,E
KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
rb   rN   rc   rd   r   rg   rj   rk   rl   rm   rn   ro   rp   rr   rs   rt   ru   rv   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   )r_   r   
actualTimer   r   r   Dr   rJ   r_   rG   )r*   r,   	chunksizer   )r   r   r  r   r   r  r<   r=   )r?   rR   rS   rB   readerchunksr$   r$   r%   test_multiple_date_cols_chunked+  s   
>
A

rG  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 )	NrA  r_   rN   rG   r>  r   nominalTimer   r   )r?   rR   rS   with_indices
with_namesr$   r$   r%   )test_multiple_date_col_named_index_compat  s   

rK  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 )NrA  r_   r   rN   rG   r   r   )r   r   r  r<   r=   r   r$   r$   r%   ,test_multiple_date_col_multiple_index_compat  s   	rL  r   c                 C   sZ   | }d}d}t jt|d |jt|fddi| W d    d S 1 s&w   Y  d S )NSOnly booleans, lists, and dictionaries are accepted for the 'parse_dates' parameterA,B,C
    1,2,2003-11-1r   r*   r   r   r   r*  r   r   )r?   r  rR   r   rS   r$   r$   r%   *test_read_with_parse_dates_scalar_non_bool  s   "rP  rN   r   r   >   rN   r\   c                 C   sR   | }d}d}t jt|d |jt|dd W d    d S 1 s"w   Y  d S )NrM  rN  r   rQ  r   rO  )r?   r*   rR   r   rS   r$   r$   r%   'test_read_with_parse_dates_invalid_type  s   "rR  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)rQ   r  r*   infer_datetime_formatrS  )r   r   )r?   rS  r   rR   r   r$   r$   r%   test_bad_date_parse  s   
rY  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
,2rI   F)r*   	na_filteri  rN   rG   testrJ   )r   r   r   r   r    NaTr<   r=   r   r$   r$   r%   test_parse_dates_empty_string  s   r]  zdata,kwargs,expectedza
04.15.2016i  r  rJ   r>  z
2016-04-15r0   r9   za,b
04.15.2016,09.16.2013r   rE   	      r  c                 C   s.   | }|j t|fddi|}t|| d S )NrP   .r   )r?   rS   r  rB   rR   rA   r$   r$   r%   %test_parse_dates_no_convert_thousands  s   "ra  c                 C   s   d}| }t j|dd |jt|ddgdddgi|d}W d    n1 s'w   Y  tddd	d
ddddgtddddddddgg}t|g dd}t || d S )NzUD,T,A,B
date, time,a,b
2001-01-05, 09:00:00, 0.0, 10.
2001-01-06, 00:00:00, 1.0, 11.
Fcheck_stacklevelr   rN   r	  rQ   r*   r+     r   r^  rn         $@rF         ?      &@)r	  )r   r   )r   r   rJ   )r<   r+  r   r   r   r   r=   )r?   r+   r   rS   rR   rA   expected_datarB   r$   r$   r%   ,test_parse_date_time_multi_level_column_name  s   
	rj  zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r	  rQ   r*   re  r   rn   rg  rh  )r	  r   r   r   r\   r]   rb   rc   rd   re   rf   rg   rk   rp   rs   rv   ry   r|   r   r   )r^   r_   r   r   c                 C   sf   | }t j|dd |jt|fd|i|}W d    n1 s!w   Y  ||j }t || d S )NFrb  r+   )r<   r+  r   r   rK   r=   )r?   rS   r  rB   r+   r   rR   rA   r$   r$   r%   test_parse_date_time6  s   N
rl  c                 C   s   | }d}t j|dd |jt|ddg di|d}W d    n1 s%w   Y  ttdd	d
dgtddd	dggddgd}t || d S )N-year,month,day,a
2001,01,10,10.
2001,02,1,11.Frb  r   ymd)r   rN   rG   rd  re  rN   r   rf  rG   rh  r   rJ   r<   r+  r   r   r   r   r=   r?   r+   r   rR   rS   rA   rB   r$   r$   r%   test_parse_date_fields  s   
rq  c                 C      t j| ddS )Nz%Y %m %d %H %M %Sformatr    r   r   r$   r$   r%   r     r   r   c              	   C   s   | }d}t j|dd |jt|d|dg did}W d    n1 s%w   Y  ttdd	d
dddddgtdd	d
dddddggg dd}t || d S )NzZyear,month,day,hour,minute,second,a,b
2001,01,05,10,00,0,0.0,10.
2001,01,5,10,0,00,1.,11.
Frb  r   ymdHMSr   rN   rG   r\   r   r   rQ   r+   r*   re  rN   r   r   rn   rf  rg  rh  rv  r   r   rJ   ro  rp  r$   r$   r%   test_parse_date_all_fields  s"   	
rz  c                 C   rr  )Nz%Y %m %d %H %M %S.%frs  ru  r   r$   r$   r%   r     r   c                 C   s   | }d}t j|dd |jt|d|dg did}W d    n1 s%w   Y  ttdd	d
dddddddgtdd	d
dddddddggg dd}t || d S )Nzgyear,month,day,hour,minute,second,a,b
2001,01,05,10,00,0.123456,0.0,10.
2001,01,5,10,0,0.500000,1.,11.
Frb  r   rv  rw  rx  re  rN   r   r   i@ )microsecondrn   rf  i  rg  rh  ry  rJ   ro  rp  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 d    n1 s'w   Y  ttd
ddddgtd
ddddggg dd}t || d S )Nrm  Frb  r   ymrN   c                 S   s   t t| t|ddS )NrN   )yearmonthday)r   r   )ymr$   r$   r%   r         ztest_generic.<locals>.<lambda>rd  re  r   rf  rG   rh  )r}  r  r   rJ   )r<   r+  r   r   r   r   r   r=   r   r$   r$   r%   test_generic  s   
"r  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   sF   z| d | }W n t y   dd t| |D }Y nw 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#   arrr$   r$   r%   r+     s   z:test_date_parser_resolution_if_not_ns.<locals>.date_parserr   r   r#   prn)r+   r*   r,   z2013-11-03T19:00:00r\   r  r   rxstatus00E80000r   ~   rN   r   rG   rH   r  )rS   r:   )	r   r   r   r  r   r   from_tuplesr<   r=   )r?   rR   rS   r+   rA   	datetimesrB   r$   r$   r%   %test_date_parser_resolution_if_not_ns  s$   
 r  c                 C   sR   | }d}|j t|dgd}ddgddgddgg}t|d	dgd
}t|| d S )Nz+case,opdate
7,10/18/2006
7,10/18/2008
621, opdater   r   z
10/18/2006z
10/18/2008im   caserJ   r   r   r   r<   r=   r?   rR   rS   rA   ri  rB   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+0)l   g] l   y_"A i  c                 C   s&   | }|j t||d}t|| d S )Nr   r   )r?   rS   rB   r*   rR   rA   r$   r$   r%   test_parse_date_float)  s   r  c              	   C   sd   | }d}|j t|dgd}tttdddtddd d	}|g d
d}t|}t	|| d S )Nzdt,val
              2018-01-04 09:01:00+09:00,23350
              2018-01-04 09:02:00+09:00,23400
              2018-01-04 09:03:00+09:00,23400
              2018-01-04 09:04:00+09:00,23400
              2018-01-04 09:05:00+09:00,23400r   r   z2018-01-04 09:01:00z2018-01-04 09:05:001mini  )startendr   r2  )r   )i6[  h[  r  r  r  )r   val)
r   r   r   r  r   r3  FixedOffsetr   r<   r=   )r?   rR   rS   rA   dtiri  rB   r$   r$   r%   test_parse_timezoneB  s"   r  date_string)z
32/32/2019z
02/30/2019z
13/13/2019z13/2019z
a3/11/2018z
10/11/2o17c                 C   s<   | }t d|gidd}|jt|d dgd}t|| d S )Nr   r  r   rk  r   r   r   r<   r=   )r?   r  rR   rB   rA   r$   r$   r%   !test_invalid_parse_delimited_date^  s   r  zdate_string,dayfirst,expectedz
13/02/2019i  rH   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   rQ   r  r*   r  )r?   r  r  rB   rR   rA   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   r  r   -Specify a format to ensure consistent parsingr  )r   r   UserWarningr   r<   r=   )r?   r  r  rB   rR   warning_msgrA   r$   r$   r%   +test_parse_delimited_date_swap_with_warning  s   r  c                  C   s^   d} t jt| d}tg d W d    n1 sw   Y  tdd |D dks-J 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>  r  zItest_parse_multiple_delimited_dates_with_swap_warnings.<locals>.<setcomp>rN   )r<   r+  r  r    r   len)r  recordr$   r$   r%   6test_parse_multiple_delimited_dates_with_swap_warnings  s
   r  c              
   K   sV   d\}}z| |fi |}W ||fS  t y* } zt|}W Y d }~||fS d }~ww )N)NN)r   r  )callr  r  r   rA   err$   r$   r%   !_helper_hypothesis_delimited_date  s   
r  	delimiterz -./date_format)z%d %m %Yz%m %d %Y%m %Yz%Y %m %dz%y %m %dr   z%y%m%dc           
      C   s   |dkr|dkr| j tjjdd ||d|}t  tj	dt
d tt||d\}}W d    n1 s;w   Y  tt|td	d	d	|d
d\}}	||ksUJ ||	ks[J d S )Nr  r`  zRparse_datetime_string cannot reliably tell whether e.g. %m.%Y is a float or a dater  r  ignore)category)r  rN   F)defaultr  	yearfirst)r.  r/  r   r0  r1  strftimereplacewarningscatch_warningsfilterwarningsr  r  r   r"  r   )
r5  r  r  r  test_datetimer  except_out_dateutilrA   except_in_dateutilrB   r$   r$   r%   test_hypothesis_delimited_date  s,   


r  z)names, usecols, parse_dates, missing_colsr  z
date, time)date1time1temperaturer  r  c                 C   s`   | }t d}d| d}tjt|d |j|d|||d W d    d S 1 s)w   Y  d S )Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': ''r   ,)rO   r  usecolsr*   )r   r   r   r   r   )r?   r  r  r*   missing_colsrR   contentr   r$   r$   r%   &test_missing_parse_dates_column_raises  s   
"r  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  r  2r   1r9   )r   r   r   r<   r=   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   r  r   rN   r*   rQ   
2019-12-31rF   )r  r   r  r   r   r   r   r<   r=   r   r$   r$   r%   #test_date_parser_multiindex_columns  s
   r  zparse_spec, col_namer  r  )a_b1_2)rV  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   rN   r  r  )r   3rF   r  )r?   
parse_speccol_namerR   rS   rA   rB   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
    rN   rG   rM   )r*   r  rP   r\   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*   rV   z
2015-09-08z
2015-09-09)r   r   )r   r   r   r   r<   r=   r  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 d    n1 sJw   Y  t|| tjt| d tt|dgdddj}W d    n1 ssw   Y  t|| tt|dgd
ddj}t|| d}t ddgdd dd}	tjt|d tt|dgd
ddj}
W d    n1 sw   Y  t|	|
 tjt| d tt|dgdddj}W d    n1 sw   Y  t|	| tjt| d tt|dgdddj}W d    n	1 sw   Y  t|	| tjt| d tt|dgd
ddj}W d    n	1 s7w   Y  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-10r  r   r   r   r1   z
2011-10-03T)r*   r  r,   r   F)r*   rX  r,   zdate
31/12/2014
03/30/2011z
2011-03-30)r   r   r   r:   r<   assert_index_equalr+  r  )warning_msg_day_firstwarning_msg_month_firstinputexpected_consistentexpected_inconsistentres1res2res3res4rB   res5res6res7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   sr   d|  }t dgdd dd}tjtdd tt|dgd|dj}W d    n1 s,w   Y  t|| d S )	Nzdate
z
2014-01-31r  r   r  z'may lead to inconsistently parsed datesr   )r*   r,   r  )r   r<   r+  r  r   r   r:   r  )r  r  initial_valuerB   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  r\   r   r   r   r9   r  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
Test#rT  c                 S   rr  )Nz%Y-%m-%drs  ru  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\  r<   r=   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*   r  r  )r   r   r   )r   r   r   r   r   r<   r=   r   r$   r$   r%   !test_parse_dates_and_string_dtype  s   r  )s__doc__r   r   ior   r  dateutil.parserr   r"  
hypothesisr   numpyr   r   r3  pandas._libs.tslibsr   pandas._libs.tslibs.parsingr   pandas.compat.pyarrowr	   r
   pandasr    r   r   r   r   r   r   pandas._testing_testingr<   pandas._testing._hypothesisr   pandas.core.indexes.datetimesr   pandas.io.date_convertersdate_convertersconvpandas.io.parsersr   r0  usefixturesxfail_pyarrowskip_pyarrowrC   rD   rU   parametrizer   r  r   r   r   r   parse_date_timer   r   r   r   r   r   r   r   r   r   r  r1  r  r  r  r-  r6  r@  rG  rK  rL  rP  r  rR  rY  r]  r  ra  rj  rl  parse_date_fieldsrq  parse_all_fieldsrz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  paramr  r  r  r  r$   r$   r$   r%   <module>   s    
%
 
 
~/A
"
Y	

4



,+*`
\


 


&H



$	

	



^

	
