o
    ҷhQ                    @   s
  d Z ddlmZmZmZmZ ddlmZ ddlmZ	 ddl
mZ ddlZddlZddlZddlmZ ddlmZ ddlZdd	lmZmZmZmZmZmZ ddlmZ dd
lm Z  ddl!m"Z" ddl#m$Z$ ej%&dZ'ej%&dZ(e'dd Z)e'dd Z*e'dd Z+ej%,dddgdd Z-ej%,de.e/eegej%,dddgdd Z0ej%,dddgd d! Z1d"d# Z2d$d% Z3d&d' Z4e'd(d) Z5ej%,d*d+ddggd,fd-d.ddgid/fgd0d1 Z6d2d3 Z7e'd4d5 Z8e'd6d7 Z9e'd8d9 Z:e'd:d; Z;ej%j<d<d=ej%,d>d?d@ggddgggdAdB Z=e'ej%,d>ddgdCdDggdEdF Z>e'ej%,dGddgddggdHdI Z?e'ej%,dJdKdidLdigdMdN Z@dOdP ZAe'ej%,dQdRddgidRfdRddgidfddggdfgdSdT ZBe'dUdV ZCdWdX ZDdYdZ ZEej%,dJi dGd[igd\d] ZFej%,d>d^eGd_d`gddahgdbdc ZHej%,ddddgej%,dedfdggdhdi ZIej%,ddddgej%,dedjgdkdl ZJe'dmdn ZKej%,dodpdqgdrds ZLej%,dodpdqgdtdu ZMe'ej%,dvdwd>dCgieedxd_dygdCgdzfdwddd{eed|gdCd}g d~fdd>dCdgieedxd_dyedddggdCdgdzfddddgd{eejNedxd_dyedddfgdCdgdg d~fgdd ZOe'dd ZPej%,dvdddddgideeddd`dddddgeddd`dddddggg ddzfddddgddagddeedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddgedddddedddddddggg ddzfgdd ZQdd ZRej%,dddd eSfdgdd ZTej%,dddd eSfdgdd ZUdd ZVe'dd ZWdd ZXej%,ddedCddgiddfdedCg diddfgej%,d>ddgdd ZYddÄ ZZe(ej%,dg dŢddǄ Z[e(ej%,dddeddd˃fddeddd˃fddeddd_fgddτ Z\e(ej%,dddeddd˃fddeddd˃fgddф Z]ddӄ Z^ddՄ Z_e(ee ej%,de.d׃ej%,dKddgej%,dg d٢ddۄ Z`e(ej%,dddgd?d@gdfddgdd@gd@fddgd?d@ggdfddgdd@ggd@fddgd?dd@gid@fddgd?d?d@gidfddgd?d@gd?gdfg dߢdd?d@gdfg dߢddgdd@gd@fg	dd Zae(dd Zbe(dd Zce(ej%,dddggdfdddgidfgdd Zde(dd Zee(dd Zfdd Zgej%,dejhddddejhddddgdd Zie(dd Zje(ej%,dddd eSfd gdd Zke(dd Zldd Zmdd Zne(ej%,d	d
ddggfddddgifgdd Zoe(dd Zpdd Zqe'dd ZrdS (  zO
Tests date parsing functionality for all of the
parsers defined in parsers.py
    )datedatetime	timedeltatimezone)StringIO)parse)givenN)parsing)py_parse_datetime_string)	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp)DATETIME_NO_TZ)
date_range)read_csvpyarrow_xfailpyarrow_skipc              	   C   sx   dd }t d}| jtd|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} tj| ddS Nsunitastypenpfloat64intpdto_timedeltatime r$   Z/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser0      
zCtest_read_csv_with_custom_date_parser.<locals>.__custom_date_parsera  time e n h
        41047.00 -98573.7297 871458.0640 389.0089
        41048.00 -98573.7299 871458.0640 389.0089
        41049.00 -98573.7300 871458.0642 389.0088
        41050.00 -98573.7299 871458.0643 389.0088
        41051.00 -98573.7302 871458.0640 389.0086
         Please use 'date_format' insteadTr#   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>H   s    z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>name)g>٬Vgzr3   g1)禛 D*Ar4   g D*Ag D*Ar4   )St$Px@r5   Gx$Px@r6   g9#Px@)enhindex)r   read_csv_check_warningsFutureWarningr    TimedeltaIndexr   tmassert_frame_equalall_parsersr&   testdataresultr#   expectedr$   r$   r%   %test_read_csv_with_custom_date_parser-   s.   			rF   c              	   C   s\   dd }t d}| jtd|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&   X   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
        r(   TFr#   r)   )g    
@g     @g     @g    @@g    `@r1   r7   )gzGqWg(\WgQXg(\WgGznXr:   )r   r<   r=   r   r   r?   r@   rA   r$   r$   r%   7test_read_csv_with_custom_date_parser_parse_dates_falseU   s&   		
rG   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@   )rB   parserdatarE   dfr$   r$   r%   test_separator_date_conflictx   s   
rX   keep_date_colTFc           
      C   s  d}| }|r|j dkrtjjdd}|j| dd }d |ddgdd	g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&d0d1dd2gt
dddd3dt
dddd-dddd4d5d&d0d6ddggg d7d8}	|s|	jg d9dd:}	||	j }t||	 d S );N  KORD,19990127, 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127, 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127, 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127, 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127, 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
KORD,19990127, 23:00:00, 22:56:00, -0.5900, 1.7100, 4.6000, 0.0000, 280.0000
pyarrowCpyarrow doesn't support disabling auto-inference on column numbers.reasonc                  W   s   t jt | tdS )z
        Test date parser.

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

        Returns
        -------
        parsed : Series
        )rU   )r	   try_parse_datesconcat_date_colsdu_parse)	date_colsr$   r$   r%   r,      s   
z2test_multiple_date_col_custom.<locals>.date_parserrQ   rJ      actualnominal	X0X1X2X3X4X5X6X7X8)rT   r,   r+   rY   namesuse 'date_format' instead        r      8   KORD19990127	 19:00:00	 18:56:00Q?{Gz@@             q@   	 20:00:00	 19:56:00{Gz?Gz@     @p@   	 21:00:00	 20:56:00zG@	 21:18:00GzGz @@     p@   	 22:00:00	 21:56:00\(\?ffffff@      r@   	 23:00:00	 22:56:00ffffff@)re   rf   rh   ri   rj   rk   rl   rm   rn   ro   rp   rM   ri   rj   rk   axis)enginepytestmarkxfailnode
add_markerr<   r=   r   r   r   droprN   r?   r@   )
rB   rY   requestrV   rU   r   r,   kwdsrD   rE   r$   r$   r%   test_multiple_date_col_custom   s   P`
r   	containerdimrQ   rJ   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 arraysry   c                 3   s    | ]} gV  qd S Nr$   )r.   _r   valuer$   r%   	<genexpr>1  s    z,test_concat_date_col_fail.<locals>.<genexpr>match)tupleranger   raises
ValueErrorr	   r`   )r   r   msgrb   r$   r   r%   test_concat_date_col_fail+  s   "r   c           	      C   s  d}| }|r|j dkrtjjdd}|j| d ddgddgg|g dd	}|j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d0d1d"d,d2ddggg d3d4}|s|j
g d5dd6}t|| d S )7NrZ   r[   r\   r]   rQ   rJ   rc   rg   )rT   r+   rY   rq   rs   rt   ru   r   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )X1_X2X1_X3rh   ri   rj   rk   rl   rm   rn   ro   rp   rM   r   r   )r   r   r   r   r   r   r   r   r   r   r   r?   r@   )	rB   rY   r   rV   rU   r   r   rD   rE   r$   r$   r%   test_multiple_date_col7  s   P`r   c                 C   s   d}| }d dgdg dd}|j 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rltd|d  jj	|d< t
|| d S )Naz  KORD,19990127 19:00:00, 18:56:00, 0.8100, 2.8100, 7.2000, 0.0000, 280.0000
KORD,19990127 20:00:00, 19:56:00, 0.0100, 2.2100, 7.2000, 0.0000, 260.0000
KORD,19990127 21:00:00, 20:56:00, -0.5900, 2.2100, 5.7000, 0.0000, 280.0000
KORD,19990127 21:00:00, 21:18:00, -0.9900, 2.0100, 3.6000, 0.0000, 270.0000
KORD,19990127 22:00:00, 21:56:00, -0.5900, 1.7100, 5.1000, 0.0000, 290.0000
rQ   )rh   ri   rj   rk   rl   rm   rn   ro   )rT   r+   r-   rq   rs   rt   ru   r   r   r   r   ri   r1   )rx   r{   r|   r}   r~   r   r   )rx   r   r   r   r~   r   r   )rx   r   r   r   r   r   r   )rx   r   r   r   r   r   r   )rx   r   r   r   r   r   r   )rh   rj   rk   rl   rm   rn   ro   rN   r;   r[   
1970-01-01rj   )r   r   r   r   r   r   r    to_datetimedtr#   r?   r@   )rB   rV   rU   r   rD   r;   rE   r$   r$   r%   test_date_col_as_index_col  s<   

r   c                 C   s8  d}ddgddgd}| }d |t jd}|jtdt|f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.5900rQ   rJ   rc   rd   rT   r+   r,   rr   rs   rt   ru   r   rv   rw   rx   r|   r   r   r   r   r   r   r   re   rf   r      rM   )
r    r   r<   r=   r   r   r   rN   r?   r@   )rB   rV   r+   rU   r   rD   rE   r$   r$   r%    test_multiple_date_cols_int_cast  sR   
""
#r   c              	   C   st   | }d}|j tdt|ddggd td}ttdddddtjdgtddd	ddtjdgg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.25rr   r   rQ   )r+   rT   r,   z05/31/2012, 15:30:00.029g     i@E   )0_1rJ   rc   r      rI      rM   )	r<   r=   r   r   r   r   nanr?   r@   rB   rU   rV   rD   rE   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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.0000rf   rQ   rJ   r+   rs   rt   ru   r   rx   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirrM   )r   r   r   r   r?   r@   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   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   )rB   rV   r+   r   rU   r$   r$   r%   %test_multiple_date_col_name_collision  s   "r   c                 C   s^   | }d}|j tdt|ddgdd d}t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
rr   r   c                 S   s   t jt| tjdjd dS )N)tz)tzinfo)r   fromtimestampr   r   utcreplacexr$   r$   r%   <lambda>  s    z*test_date_parser_int_bug.<locals>.<lambda>)r-   r+   r,   )go?r   r   rI   gX5;N?rc   i90  rQ   rc   invoice_InvoiceResourcesearch)elapsedsysuserqueries
query_timerows	accountiduserid	contactidlevelsilomethodz2012-07-24 04:12:30posix_timestampr1   r   )r<   r=   r   r   r   r   r?   r@   r   r$   r$   r%   test_date_parser_int_bug  s$   !r   c                 C   s   | }t tjdddtddd}tj|jddd d f< td	}|	| |j
|d
dgd}t|| W d    d S 1 sDw   Y  d S )N
   r   dtype20010101ns)ABrc   rI   z__nat_parse_.csvr   r   r-   r+   )r   r   aranger   as_unitr   ilocr?   ensure_cleanto_csvr   r@   )rB   rU   rW   pathrD   r$   r$   r%   test_nat_parse  s   
"r   c                 C   sb   d}| }|j tdt|dd d}|jt|dd}t|| |jt|dd	}t|| d S )
N3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
rr   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   )date_format)r<   r=   r   r   r?   r@   rB   rV   rU   rD   rE   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  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/2009rc   )periods)r2   freqabc)rQ   rc   r   )rJ   r   r   r   r   Cr:   )r   r   r   listr   r   r?   r@   )rB   rV   rU   rD   r;   rE   r$   r$   r%   test_parse_dates_string/  s   r  z#yearfirst is not surfaced in read_*r]   r+   r   r#   c              
   C   s   d}| }|j tdt|d|d}ttddddddtdd	d
dddtddddddgtdd}t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
Could not infer formatr   r     rQ      r   rJ      r   rc   r      	date_timer   r2   )rQ   rc   r   )rJ   r   rI   r   r  r:   )	r<   UserWarningr   r   r   objectr   r?   r@   )rB   r+   rV   rU   rD   r;   rE   r$   r$   r%   test_yy_format_with_year_firstE  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  rQ   rJ      r	  r
  r  r   T)r-   r+   dayfirst)r   r   	set_indexr   r   r?   r@   )rB   r+   rV   rU   rE   rD   r$   r$   r%   test_parse_dates_column_listb  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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  rQ   rJ   rc   )onetwothreeindex1index2rq   r   )r
  rQ   rJ   )r  rc   r   )r  r   r   r  r   r  Tr   )
r   from_productr   	swaplevelr   r<   r  r   r?   r@   )rB   r-   rV   rU   r;   rE   rD   r$   r$   r%   test_multi_index_parse_datess  s@    	r)  kwargsr  	day_firstc                    s  | }d}d v rN|j td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! |j tdt|g d fdddgddd	gd	 W d    d S 1 s{w   Y  d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r  rr   )r#   QNTUc                       t | fi  S r   ra   dr*  r$   r%   r         z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TNA)rq   r,   rT   r-   r+   	na_valuesr  rQ   r  rJ   r#   r1   )rQ   rQ   rQ   )r,  r-  r,  r-  r;   rN   z.got an unexpected keyword argument 'day_first'r   c                    r.  r   r/  r0  r2  r$   r%   r     r3  )rq   r,   skiprowsr-   r+   r5  )r<   r=   r   r   r   r   r   r   r?   r@   r   r   	TypeError)rB   r*  rU   rV   rW   	exp_indexrE   r   r$   r2  r%   #test_parse_dates_custom_euro_format  sL   
 
"r:  c                 C   s   | }d}|j t|ddd}|jdkr|jd|_tddgittd	gd
dd}t	|| |jdkr9t
j}ntj}|jj|u sDJ d S )NzDate,x
2012-06-13T01:39:00Z,0.5r   Tr   r[   r   r   g      ?z2012-06-13 01:39:00+00:00rL   r1   r:   )r   r   r   r;   r   r   r   r   r?   r@   pytzr   r   r   )rB   rU   rV   rD   rE   expected_tzr$   r$   r%   test_parse_tz_aware  s   

r=  zparse_dates,index_colrf   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
rs   rQ   rt   ru   r   KORD1r{   r|   r}   r~   r   r   r   KORD2r   r   r   r   r   KORD3r   r   r   KORD4r   r   r   r   r   r   KORD5r   r   r   r   r   KORD6r   r   r   rM   rf   date_NominalTimer+   r-   )r   r   r  
isinstancedictr;   r2   r   r   r?   r@   )rB   r+   r-   rU   rV   rE   rD   r$   r$   r%   test_multiple_date_cols_index  s   	>
J

rH  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
rs   rQ   rt   ru   r   rx   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rf   r   
actualTimer   r   r  Dr   rM   rf   rJ   )r+   r-   	chunksizer   )r   r   r  r   r   r  r?   r@   )rB   rU   rV   rE   readerchunksr$   r$   r%   test_multiple_date_cols_chunkedO  s   
>
A

rO  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 )	NrI  rf   rQ   rJ   rE  r   nominalTimer   r  )rB   rU   rV   with_indices
with_namesr$   r$   r%   )test_multiple_date_col_named_index_compat  s   

rS  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 )NrI  rf   r   rQ   rJ   r   r   )r   r   r  r?   r@   r   r$   r$   r%   ,test_multiple_date_col_multiple_index_compat  s   	rT  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   r8  r   r   )rB   r*  rU   r   rV   r$   r$   r%   *test_read_with_parse_dates_scalar_non_bool  s   "rX  rQ   r   r   rc   c                 C   sR   | }d}d}t jt|d |jt|dd W d    d S 1 s"w   Y  d S )NrU  rV  r   rY  r   rW  )rB   r+   rU   r   rV   r$   r$   r%   'test_read_with_parse_dates_invalid_type  s   "rZ  cache_datesr   r    c                 C   s4   | }t | dd }|j|d ddgdg|d d S )N,
P  foobarrT   rq   r+   r[  )r   r   )rB   r[  r   rU   r   r$   r$   r%   test_bad_date_parse  s   
rb  0c              	   C   sV   | }t | dd }|jdkrd }n|rd }nt}|j|d|d ddgdg|d d S )Nr]  r^  r[   r  r_  r`  ra  )r   r   r  r<   )rB   r[  r   rU   r   warnr$   r$   r%    test_bad_date_parse_with_warning  s    

re  c                 C   sT   | }d}|j t|dgdd}ttddddgtjdggddgd	}t|| d S )
NDate,test
2012-01-01,1
,2rL   F)r+   	na_filteri  rQ   rJ   testrM   )r   r   r   r   r    NaTr?   r@   r   r$   r$   r%   test_parse_dates_empty_string$  s   rj  rM  r<   read_table_check_warningsc                 C   s,   | }d}t ||tdt|dgddd d S )Nrf  z2The argument 'infer_datetime_format' is deprecatedrL   T,)r+   infer_datetime_formatrR   )getattrr=   r   )rB   rM  rU   rV   r$   r$   r%   .test_parse_dates_infer_datetime_format_warning1  s   
ro  c              
   C   sd   | }d}d}t jt|d t||tdt|dgtjddd W d    d S 1 s+w   Y  d S )	Nrf  z/Cannot use both 'date_parser' and 'date_format'r   rr   rL   ISO8601rl  )r+   r,   r  rR   )r   r   r8  rn  r=   r   r    r   )rB   rM  rU   rV   r   r$   r$   r%   ,test_parse_dates_date_parser_and_date_formatC  s   "rq  zdata,kwargs,expectedza
04.15.2016i  r  rM   rE  z
2016-04-15r1   r6  za,b
04.15.2016,09.16.2013r  rH   	      r&  c                 C   s.   | }|j t|fddi|}t|| d S )NrS   .r  rB   rV   r*  rE   rU   rD   r$   r$   r%   %test_parse_dates_no_convert_thousandsW  s   #rv  c                 C   s   d}| }|j tdt|ddgdddgitjd}tdddd	ddd
dgtddddddddgg}t|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.
rr   r   rQ   r  r     r   rr  r         $@rI         ?      &@)r  )r   r
  )r   r  rM   )	r<   r=   r   r    r   r   r   r?   r@   )rB   rV   rU   rD   expected_datarE   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  rT   r+   rw  r   r   ry  rz  )r  r
  r  r   rd   rs   rt   ru   rv   rw   rx   r|   r   r   r   r   r   r   r   r   c                 C   s>   | }|j tdt|fdtji|}||j }t|| d S )Nrr   r,   )r<   r=   r   r    r   rN   r?   r@   ru  r$   r$   r%   test_parse_date_time  s   I
r~  c                 C   sj   | }d}|j tdt|ddg didd d}ttd	d
ddgtd	dd
dggddgd}t|| d S )N-year,month,day,a
2001,01,10,10.
2001,02,1,11.rr   r   ymd)r   rQ   rJ   c                 S   s   | S r   r$   r   r$   r$   r%   r     s    z(test_parse_date_fields.<locals>.<lambda>r   rw  rQ   r   rx  rJ   rz  r
  rM   )r<   r=   r   r   r   r?   r@   r   r$   r$   r%   test_parse_date_fields  s   
	r  )keyr   rd  r,   c                 C      t j| ddS )N%Y %m %d %H %M %Sformatr    r   r   r$   r$   r%   r         r   )r  r  Nc              	   C   s   | }d}|j |dt|fddg did||i}ttddd	d
ddddgtddd	d
ddddgg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.
rr   r   ymdHMSr   rQ   rJ   rc   r   r   r}  rw  rQ   r   r   r   rx  ry  rz  r  r
  r  rM   r<   r   r   r   r?   r@   rB   r  r   rd  rU   rV   rD   rE   r$   r$   r%   test_parse_date_all_fields  s&   
r  c                 C   r  )N%Y %m %d %H %M %S.%fr  r  r   r$   r$   r%   r   /  r  )r  r  Nc                 C   s   | }d}|j |dt|fddg did||i}ttddd	d
ddddddgtddd	d
ddddddgg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.
rr   r   r  r  r}  rw  rQ   r   r   i@ )microsecondr   rx  i  ry  rz  r  rM   r  r  r$   r$   r%    test_datetime_fractional_seconds*  s&   
r  c                 C   s   | }d}dd }|j tdt|ddddgi|d}ttd	ddd
dgtd	ddddggg dd}|d d|d< t|| d S )Nr  c                 S   s   dd t | |D S )Nc                 S   s&   g | ]\}}t t|t|d dqS )rQ   )yearmonthday)r   r   )r.   ymr$   r$   r%   r0   S  s   & z8test_generic.<locals>.parse_function.<locals>.<listcomp>)zip)yymmr$   r$   r%   parse_functionR  s   z$test_generic.<locals>.parse_functionrr   r   ymrQ   r   rw  r   rx  rJ   rz  )r  r  r
  rM   datetime64[ns])r<   r=   r   r   r   r   r?   r@   )rB   rU   rV   r  rD   rE   r$   r$   r%   test_genericN  s"   
"r  c                 C   s   | }d}dd }|j tdt||dddgiddgd	}tjd
gd dd}tddgd itj|g d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.   r1  tr$   r$   r%   r0   u  s    zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>datetime64[s]r   )r8  r  r   array)r   r#   arrr$   r$   r%   r,   p  s   z:test_date_parser_resolution_if_not_ns.<locals>.date_parserrr   r   r   r#   prn)r,   r+   r-   z2013-11-03T19:00:00rc   r  r   rxstatus00E80000)~   r   rK   r&  )rV   r;   )
r<   r=   r   r   r  r   r   from_arraysr?   r@   )rB   rU   rV   r,   rD   	datetimesrE   r$   r$   r%   %test_date_parser_resolution_if_not_nse  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   caserM   r   r   r   r?   r@   rB   rU   rV   rD   r{  rE   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  )rB   rV   rE   r+   rU   rD   r$   r$   r%   test_parse_date_float  s   r  c              
   C   sh   | }d}|j t|dgd}tttdddttd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  )minutes)startendr  r   )r  )i6[  h[  r  r  r  )r   val)
r   r   r   r  r   r   r   r   r?   r@   )rB   rU   rV   rD   dtir{  rE   r$   r$   r%   test_parse_timezone  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   r}  r   r   r   r?   r@   )rB   r  rU   rE   rD   r$   r$   r%   !test_invalid_parse_delimited_date  s   r  zdate_string,dayfirst,expectedz
13/02/2019i  rK   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   r  r   rT   r  r+   r  )rB   r  r  rE   rU   rD   r$   r$   r%   )test_parse_delimited_date_swap_no_warning  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   zParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.r  )r   r<   r  r   r?   r@   )rB   r  r  rE   rU   warning_msgrD   r$   r$   r%   +test_parse_delimited_date_swap_with_warning  s   r  c                   C   sB   t jtdd tg d W d    d S 1 sw   Y  d S )Nz_^time data "31/05/2000" doesn\'t match format "%m/%d/%Y", at position 1. You might want to try:r   )z
01/01/2000z
31/05/2000z
31/05/2001z
01/02/2000)r   r   r   r    r   r$   r$   r$   r%   6test_parse_multiple_delimited_dates_with_swap_warnings  s   "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   str)callr  r*  r   rD   err$   r$   r%   !_helper_hypothesis_delimited_date  s   r  	delimiterz -./r  )z%d %m %Yz%m %d %Y%m %Yz%Y %m %dz%y %m %dr   z%y%m%dc           
      C   s   |dkr|dkr| j tjjdd ||d|}tt||d\}}tt	|t
ddd|dd	\}}	||ks:J ||	ks@J d S )
Nr  rt  zRparse_datetime_string cannot reliably tell whether e.g. %m.%Y is a float or a dater]   r  )r  rQ   F)defaultr  	yearfirst)r   r   r   r   r   strftimer   r  r
   ra   r   )
r   r  r  r  test_datetimer  except_out_dateutilrD   except_in_dateutilrE   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   rl  )rR   rq   usecolsr+   )r   r   r   r   r   )rB   rq   r  r+   missing_colsrU   contentr   r$   r$   r%   &test_missing_parse_dates_column_raisesI  s   
"r  c                 C   sL   | }t d}|jtd|dgdgd}tdddgiddgd	}t|| d S )
Nzx,y
1,2r  r   )r+   rq   r  2r   1r:   )r   r<   r  r   r?   r@   r   r$   r$   r%   test_date_parser_and_namesj  s   r  c                 C   sL   | }d}|j t|dgddgd}ttdddgd	}t|| d S )
Nza,b
1,2
2019-12-31,6r
  r  r   rQ   r+   rT   
2019-12-31r   rI   )r  r  r  r   r   r   r   r   r?   r@   r   r$   r$   r%   #test_date_parser_multiindex_columnsz  s   r  zparse_spec, col_namer  r  )a_b1_2)r_  r  c                 C   sL   | }d}|j t||ddgd}t|tddddgi}t|| d S )	Nza,b,c
1,2,3
2019-12,-31,6r   rQ   r  r  r   )r  3rI   r  )rB   
parse_speccol_namerU   rV   rD   rE   r$   r$   r%   0test_date_parser_multiindex_columns_combine_cols  s   	r  c                 C   sT   d}| }|j tdt|dgddgdd}tddgtd	gd d
}t|| d S )Nz2A,B,C
    1,3,20-09-01-01
    2,4,20-09-01-01
    r  rQ   rJ   rP   )r+   r  rS   rc   r   z20-09-2001 01:00:00r  )r<   r  r   r   r   r?   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+   rY   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_column  s   r  c                  C   s"  d} t ddgdd dd}d}tt| dgddd	j}t|| tjt|d
 tt| dgddd	j}W d    n1 s>w   Y  t|| d} tddgddd}tt| dgddd	j}t|| tjt|d
 tt| dgddd	j}W d    n1 sw   Y  t|| d S )Nzdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10r  r   r   r  r2   r  T)r+   r  r-   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r  r  )	r   r   r   r;   r?   assert_index_equalassert_produces_warningr  r   )inputrE   r  res1res2res5res6r$   r$   r%   test_dayfirst_warnings  sH   r  zdate_string, dayfirstz	31/1/2014zsecond date is single-digit)idz	1/31/2014zfirst date is single-digitc                 C   sv   d|  }t dgdd dd}d}tjt|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  r  r   )r+   r-   r  )r   r?   r  r  r   r   r;   r  )r  r  initial_valuerE   r  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  rc   r   r	  r   r:   r  r   r$   r$   r%    test_infer_first_column_as_index  s   r  c                 C   r  )N%Y-%m-%dr  r  r   r$   r$   r%   r   (  r  )r  r  Nc                 C   sl   | }d}|j |dt|fdddgidgd||i}tdtdtjtdtjtd	gi}t|| d S )
Nz*Test
2012-10-01
0
2015-05-15
#
2017-09-09
rr   Test#rc  )r5  r+   z
2012-10-01z
2015-05-15z
2017-09-09)r<   r   r   r   r    ri  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_dtypeL  s   r  c                 C   s   | }d}|j dkrtddgddd}d }ntdd	gd
dd}t}d}|j||t|ddd}tdddgi|d}t|| d S )Nz7a,b
27.03.2003 14:55:00.000,1
03.08.2003 15:20:00.000,2r[   z27.03.2003 14:55:00.000z03.08.2003 15:20:00.000r  r
  r  z2003-03-27 14:55:00z2003-08-03 15:20:00r  z1when dayfirst=False \(the default\) was specifiedTr   rE  r  rQ   rJ   r:   )	r   r   r   r  r<   r   r   r?   r@   )rB   rU   rV   expected_indexrd  r   rD   rE   r$   r$   r%   test_parse_dot_separated_datesY  s*   
r  c                 C   s\   | }d}|j t|dddddgd}ttdtd	gtdtd	gd}t|| d S )
N/a,b
2019-12-31,31-12-2019
2020-12-31,31-12-2020r  z%d-%m-%Yr  r
  r  r  r+   r  
2020-12-31)r   r   r   r   r?   r@   r   r$   r$   r%   test_parse_dates_dict_formatu  s   r  zkey, parse_datesr  r_  c                 C   sr   | }d}t d  |jt||di|d}W d    n1 s w   Y  t|tdtdgi}t || d S )Nza,b
31-,12-2019
31-,12-2020z	%d- %m-%Yr  r  r  )r?   r  r   r   r   r   r@   )rB   r  r+   rU   rV   rD   rE   r$   r$   r%   (test_parse_dates_dict_format_two_columns  s   r  c                 C   sZ   | }d}|j t|ddiddd}tddd	gittd
tdgddd}t|| d S )Nr   r
  r  Tr   )r  r+   r-   r  z
31-12-2019z
31-12-2020r  r  r1   r:   )r   r   r   r   r   r?   r@   r   r$   r$   r%   "test_parse_dates_dict_format_index  s   r  c                 C   sd   | }d}|j t|dgd}|jdkr|d jd|d< ttdtdgdd	}t|| d S )
Nz/a,b
2000-01-01 00:00:00,1
2000-01-01 00:00:01,1r
  r   r[   r   z2000-01-01 00:00:00z2000-01-01 00:00:01rQ   r  )	r   r   r   r   r   r   r   r?   r@   r   r$   r$   r%   test_parse_dates_arrow_engine  s   
	r  c                 C   sN   | }d}|j t|dgdd }ttdtdgdddgd}t|| d S )	Nz5a
2020-01-01T00:00:00+01:00
2020-01-01T00:00:00+00:00r
  r   z2020-01-01 00:00:00+01:00z2020-01-01 00:00:00+00:00r   rQ   )r2   r;   )r   r   r   r   r?   assert_series_equalr   r$   r$   r%    test_from_csv_with_mixed_offsets  s   r  )s__doc__r   r   r   r   ior   dateutil.parserr   ra   
hypothesisr   numpyr   r   r;  pandas._libs.tslibsr	   pandas._libs.tslibs.parsingr
   pandasr    r   r   r   r   r   r   pandas._testing_testingr?   pandas._testing._hypothesisr   pandas.core.indexes.datetimesr   pandas.io.parsersr   r   usefixturesxfail_pyarrowskip_pyarrowrF   rG   rX   parametrizer   r  r   r   r   r   r   r   r   r   r   r   r  r  r  r   r  r   r)  r:  r=  rH  rO  rS  rT  rX  r  rZ  rb  re  rj  ro  rq  from_tuplesrv  r|  r~  r  r=   r  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  r  r  r$   r$   r$   r%   <module>   s    
'
"

 

 .<'
Y	

:



2-*`
\
 




 
&
H


&		



0

 &