a
    Pfi                    @   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
ZddlZddl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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 Z.ej!*dddgdd  Z/d!d" Z0d#d$ Z1d%d& Z2e%d'd( Z3ej!*d)d*ddggd+fd,d-ddgid.fgd/d0 Z4d1d2 Z5e%d3d4 Z6e&d5d6 Z7e&d7d8 Z8e%d9d: Z9ej!j:d;d<ej!*d=d>d?ggddgggd@dA Z;e%ej!*d=ddgdBdCggdDdE Z<e%ej!*dFddgddggdGdH Z=e%ej!*dIdJdidKdigdLdM Z>dNdO Z?e%ej!*dPdQddgidQfdQddgidfddggdfgdRdS Z@e%dTdU ZAdVdW ZBdXdY ZCej!*dIi dFdZigd[d\ ZDej!*d=d]eEd^d_gdd`hgdadb ZFej!*dcddgej!*dddedfgdgdh ZGej!*dcddgej!*dddigdjdk ZHe%dldm ZIej!*dndodpgdqdr ZJej!*dndodpgdsdt ZKe%ej!*dudvd=dBgieedwd^dxgdBgdyfdvdddzeed{gdBd|g d}fd~d=dBdgieedwd^dxedddggdBdgdyfd~dddgdzeejLedwd^dxedddfgdBdgdg d}fgdd ZMe%dd ZNej!*dudddddgideeddd_dddddgeddd_dddddggg ddyfddddgdd`g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dyfgdd ZOdd ZPej!*dddd eQfdgdd ZRej!*dddd eQfdgdd ZSdd ZTe%dd ZUdd ZVej!*ddedBddgiddfdedBg diddfgej!*d=ddgdd ZWdd ZXe&ej!*dg dĢddƄ ZYej!*dddedddʃfddedddʃfddeddd^fgdd΄ ZZe&ej!*dddedddʃfddedddʃfgddЄ Z[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ڄ Z]e%dd܄ Z^e%ddބ Z_e%ej!*dddggdfdddgidfgdd Z`dd Zae%dd Zbdd Zcej!*dejdddddejdddddgdd Zee&dd Zfe%ej!*dddd eQfdgdd Zge%dd Zhdd Zidd Zjej!*d dddggfddddgifgdd Zke%dd Zldd Zme%d	d
 ZndS (  zO
Tests date parsing functionality for all of the
parsers defined in parsers.py
    )datedatetime	timedeltatimezone)StringIO)parseN)parsing)	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp)
date_range)start_caching_at)read_csvz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningZpyarrow_xfailZ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   s$   |  tj} |  t} tj| ddS Nsunitastypenpfloat64intpdto_timedeltatime r   `/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser/   s    
zCtest_read_csv_with_custom_date_parser.<locals>.__custom_date_parsera  time e n h
        41047.00 -98573.7297 871458.0640 389.0089
        41048.00 -98573.7299 871458.0640 389.0089
        41049.00 -98573.7300 871458.0642 389.0088
        41050.00 -98573.7299 871458.0643 389.0088
        41051.00 -98573.7302 871458.0640 389.0086
         Please use 'date_format' insteadTr   Zdelim_whitespaceparse_datesdate_parser	index_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>G       z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>name)g>٬Vgzr-   g1)禛 D*Ar.   g D*Ag D*Ar.   )St$Px@r/   Gx$Px@r0   g9#Px@)enhindex)r   read_csv_check_warningsFutureWarningr   ZTimedeltaIndexr	   tmassert_frame_equalall_parsersr!   Ztestdataresultr   expectedr   r   r    %test_read_csv_with_custom_date_parser,   s.    			r>   c              	   C   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   s$   |  tj} |  t} tj| ddS r   r   r   r   r   r    r!   W   s    
zUtest_read_csv_with_custom_date_parser_parse_dates_false.<locals>.__custom_date_parserztime e
        41047.00 -93.77
        41048.00 -95.79
        41049.00 -98.73
        41050.00 -93.99
        41051.00 -97.72
        r"   TFr   r#   )g    
@g     @g     @g    @@g    `@r+   r1   )gzGqWg(\WgQXg(\WgGznXr4   )r   r6   r7   r   r	   r8   r9   r:   r   r   r    7test_read_csv_with_custom_date_parser_parse_dates_falseT   s&    		
r?   c                 C   s   | }d}t tdddddddggddgd	}d
}tjt|dd0 |jt|dddddgid d}W d    n1 sv0    Y  t|| d S )Nz06-02-2013;13:00;1-000.215           r   gQA@DatecolumnsKSupport for nested sequences for 'parse_dates' in pd.read_csv is deprecatedFmatchZcheck_stacklevel;-   )sep	thousandsr$   header)r	   r   r8   assert_produces_warningr7   r   r   r9   )r;   parserdatar=   depr_msgdfr   r   r    test_separator_date_conflictw   s$    
$rU   keep_date_colTFc           
      C   s  d}| }|r.|j dkr.tjjdd}|| dd }d |ddgdd	gd
|g dd}|jtdt|fi |dd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d0d1d(d2d3dd4gt	dddd5dt	dddd/dddd6d7d(d2d8ddggg d9d:}	|s|	j
g d;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
        )rQ   )r   Ztry_parse_datesconcat_date_colsdu_parse)	date_colsr   r   r    r%      s    
z2test_multiple_date_col_custom.<locals>.date_parserrL   rB      actualnominal	X0X1X2X3X4X5X6X7X8)rO   r%   r$   rV   namesuse 'date_format' insteadraise_on_extra_warningsF        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@)ra   rb   rd   re   rf   rg   rh   ri   rj   rk   rl   rE   re   rf   rg   Zaxis)enginepytestmarkxfailapplymarkerr6   r7   r   r	   r   droprF   r8   r9   )
r;   rV   requestrR   rQ   r   r%   kwdsr<   r=   r   r   r    test_multiple_date_col_custom   s    
P`
r   	containerdimrL   rB   c                    s`   d}dt  fddt|D }tjt|d t| W d    n1 sR0    Y  d S )Nz0not all elements from date_cols are numpy arraysrv   c                 3   s   | ]} gV  qd S Nr   )r'   _r   valuer   r    	<genexpr>7  r*   z,test_concat_date_col_fail.<locals>.<genexpr>rI   )tupleranger   raises
ValueErrorr   r\   )r   r   msgr^   r   r   r    test_concat_date_col_fail1  s
    r   c           
      C   s  d}| }|r.|j dkr.tjjdd}|| d}d ddgddgg|g d	d
}tjttf|dd& |j	t
|fi |}W d    n1 s0    Y  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/d0dd1gtdddd2dtdddd,dddd3d4d%d/d5ddggg d6d7}	|s|	jg d8dd9}	t||	 d S ):NrW   rX   rY   rZ   8The 'keep_date_col' keyword in pd.read_csv is deprecatedrL   rB   r_   rc   )rO   r$   rV   rm   FrH   rp   rq   rr   r   rs   rt   ru   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   )ZX1_X2ZX1_X3rd   re   rf   rg   rh   ri   rj   rk   rl   rE   r   r   )r   r   r   r   r   r8   rP   DeprecationWarningr7   r   r   r	   r   r   r9   )
r;   rV   r   rR   rQ   r   rS   r   r<   r=   r   r   r    test_multiple_date_col=  s    

4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rt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
rL   )rd   re   rf   rg   rh   ri   rj   rk   )rO   r$   r&   rm   rp   rq   rr   r   r~   r   r   re   r+   )ru   rx   ry   rz   r{   r|   r}   )ru   r   r   r   r{   r|   r   )ru   r   r   r   r   r|   r}   )ru   r   r   r   r   r|   r   )ru   r   r   r   r   r|   r   )rd   rf   rg   rh   ri   rj   rk   rF   r5   rX   
1970-01-01rf   )r   r   r   r   r	   r   r   to_datetimedtr   r8   r9   )r;   rR   rQ   r   r<   r5   r=   r   r   r    test_date_col_as_index_col  s<    

r   c                 C   s@  d}ddgddgd}| }d |t jd}|jtdt|fi |dd	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.5900rL   rB   r_   r`   rO   r$   r%   rn   ro   Frp   rq   rr   r   rs   rt   ru   ry   r~   r   r   r   r   r   r   ra   rb   r      rE   )
r   r   r6   r7   r   r	   r   rF   r8   r9   )r;   rR   r$   rQ   r   r<   r=   r   r   r     test_multiple_date_cols_int_cast  sZ    ""#
r   c              	   C   sv   | }d}|j tdt|ddggd td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.25rn   r   rL   F)r$   rO   r%   ro   z05/31/2012, 15:30:00.029g     i@E   )Z0_1rB   r_   r      rA      rE   )	r6   r7   r   r   r	   r   nanr8   r9   r;   rQ   rR   r<   r=   r   r   r    &test_multiple_date_col_timestamp_parse2  s@    	
r   c                 C   s*  | }d}d}t jt|dd* |jt|dddgid}W d    n1 sL0    Y  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.0000rG   FrH   rb   rL   rB   r$   rp   rq   rr   r   ru   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   rb   IDZ
ActualTimeZTDewZTAirZ	WindspeedZPrecipZWindDirrE   )r8   rP   r7   r   r   r	   r   r9   r;   rQ   rR   rS   r<   r=   r   r   r    #test_multiple_date_cols_with_headerZ  s    
8>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   s   | }d}t jt|dV tjttf|dd" |jt||d W d    n1 sT0    Y  W d    n1 sr0    Y  d S )NrG   r   FrH   r   )	r   r   r   r8   rP   r7   r   r   r   )r;   rR   r$   r   rQ   rS   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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
rn   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>F)r&   r$   r%   ro   )go?r   r   rA   gX5;N?r_   i90  rL   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   )r6   r7   r   r	   r   r   r8   r9   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	8}|	| |j
|d
dgd}t|| W d    n1 s0    Y  d S )N
   r   dtypeZ20010101ns)ABr_   rA   z__nat_parse_.csvr   r   r&   r$   )r	   r   Zaranger   as_unitr   Zilocr8   Zensure_cleanZto_csvr   r9   )r;   rQ   rT   pathr<   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
rn   c                 S   s   t | dS )N%Y%m%d)r   strptimer   r   r   r    r   6  r*   z(test_csv_custom_parser.<locals>.<lambda>)r%   Tr   r   )date_format)r6   r7   r   r   r8   r9   r;   rR   rQ   r<   r=   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   r8   r9   r   r   r   r    #test_parse_dates_implicit_first_col>  s
    r   c                 C   sb   d}| }|j t|ddgd}t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_   )Zperiodsr,   abc)rL   r_   r   )rB   r   r   r   r   Cr4   )r   r   r   
_with_freqr	   r8   r9   )r;   rR   rQ   r<   r5   r=   r   r   r    test_parse_dates_stringL  s    r   z#yearfirst is not surfaced in read_*rZ   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     rL      r   rB      r~   r_   r      	date_timer   r,   )rL   r_   r   )rB   r   rA   r   r   r4   )	r6   UserWarningr   r
   r   objectr	   r8   r9   )r;   r$   rR   rQ   r<   r5   r=   r   r   r    test_yy_format_with_year_first`  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  rL   rB      r   r   r   r   T)r&   r$   dayfirst)r	   r   	set_indexr   r   r8   r9   )r;   r$   rR   rQ   r=   r<   r   r   r    test_parse_dates_column_list}  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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   rL   rB   r_   )onetwothreeZindex1index2rm   r   )r   rL   rB   )r   r_   r   )r   r   r   r   r   r   Tr   )
r   Zfrom_productr   Z	swaplevelr	   r6   r   r   r8   r9   )r;   r&   rR   rQ   r5   r=   r<   r   r   r    test_multi_index_parse_dates  s@     	r  kwargsr  Z	day_firstc                    s   | }d}d v r|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	|| nbd}t
jt|d@ |j tdt|g d fdddgddd	gd	 W d    n1 s0    Y  d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r  rn   )r   QNTUc                    s   t | fi  S r   r]   dr  r   r    r     r*   z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TZNA)rm   r%   rO   r&   r$   	na_valuesr  rL   r   rB   r   r+   )rL   rL   rL   )r  r  r  r  r5   rF   z.got an unexpected keyword argument 'day_first'r   c                    s   t | fi  S r   r  r  r  r   r    r     r*   )rm   r%   Zskiprowsr&   r$   r  )r6   r7   r   r   r   r	   r   r   r8   r9   r   r   	TypeError)r;   r  rQ   rR   rT   Z	exp_indexr=   r   r   r  r    #test_parse_dates_custom_euro_format  sJ    
 
r  c                 C   s   | }d}|j t|ddd}|jdkr4|jd|_tddgittd	gd
dd}|jdkrftj	}nt
j	}t|| |jj|u sJ d S )NzDate,x
2012-06-13T01:39:00Z,0.5r   Tr   rX   r   r   g      ?z2012-06-13 01:39:00+00:00rD   r+   r4   )r   r   r   r5   r   r	   r   r   pytzr   r   r8   r9   r   )r;   rQ   rR   r<   r=   Zexpected_tzr   r   r    test_parse_tz_aware  s    

r  zparse_dates,index_colrb   c                 C   sB  | }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sd,|j_d-}tjt	|d.d/$ |j
t|||d0}W d    n1 s(0    Y  t|| d S )1Na  
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
rp   rL   rq   rr   r   ZKORD1rx   ry   rz   r{   r|   r}   r~   ZKORD2r   r   r   r   r   ZKORD3r   r   r   ZKORD4r   r   r   r   r   r   ZKORD5r   r   r   r   r   ZKORD6r   r   r   rE   rb   Zdate_NominalTimerG   FrH   r$   r&   )r	   r   r  
isinstancedictr5   r,   r8   rP   r7   r   r   r9   )r;   r$   r&   rQ   rR   r=   rS   r<   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g d$d%}|d&}d'}tjt|d(d)X |jt|d&dd*gid&d*d+}t|}W d    n1 s*0    Y  W d    n1 sJ0    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
rp   rL   rq   rr   r   ru   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   )rb   r   Z
actualTimer   r   r   Dr   rE   rb   rG   FrH   rB   )r$   r&   	chunksizer   )
r	   r   r  r8   rP   r7   r   r   listr9   )r;   rQ   rR   r=   rS   readerchunksr   r   r    test_multiple_date_cols_chunkedp  s    
>A

Hr#  c                 C   s   | }d}d}t jttf|dd, |jt|dddgidd}W d    n1 sR0    Y  t jttf|dd, |jt|ddd	d
gid}W d    n1 s0    Y  t || d S )Nr  rG   FrH   rb   rL   rB   r  r   ZnominalTimer   )r8   rP   r7   r   r   r   r9   )r;   rQ   rR   rS   Zwith_indicesZ
with_namesr   r   r    )test_multiple_date_col_named_index_compat  s&    
$

$r$  c                 C   s   | }d}d}t jttf|dd0 |jt|ddgdddgid	}W d    n1 sV0    Y  t jttf|dd* |jt|dddgid
}W d    n1 s0    Y  |ddg}t || d S )Nr  rG   FrH   rb   r   rL   rB   r   r   )r8   rP   r7   r   r   r   r  r9   r   r   r   r    ,test_multiple_date_col_multiple_index_compat  s     

$
8r%  r   c                 C   sX   | }d}d}t jt|d* |jt|fddi| W d    n1 sJ0    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  rQ   r   rR   r   r   r    *test_read_with_parse_dates_scalar_non_bool  s    r)  rL   r   r   r_   c                 C   sP   | }d}d}t jt|d" |jt|dd W d    n1 sB0    Y  d S )Nr&  r'  r   r*  r   r(  )r;   r$   rQ   r   rR   r   r   r    'test_read_with_parse_dates_invalid_type   s    r+  cache_datesr   r    c                 C   s8   | }t | dtd  }|j|d ddgdg|d d S )N,
rL   foobar)rO   rm   r$   r,  )r   r   r   )r;   r,  r   rQ   r   r   r   r    test_bad_date_parse.  s    r1  0c              
   C   sX   | }t | dd }|jdkr&d }n|r0d }nt}|j|d|d ddgdg|dd d S )	Nr.  iP  rX   r   r/  r0  F)rO   rm   r$   r,  ro   )r   r   r   r6   )r;   r,  r   rQ   r   warnr   r   r     test_bad_date_parse_with_warning?  s"    
r4  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
,2rD   F)r$   Z	na_filteri  rL   rB   testrE   )r   r   r	   r   r   NaTr8   r9   r   r   r   r    test_parse_dates_empty_string_  s    r8  r!  r6   Zread_table_check_warningsc              	   C   s.   | }d}t ||tdt|dgdddd d S )Nr5  z2The argument 'infer_datetime_format' is deprecatedrD   T,F)r$   Zinfer_datetime_formatrM   ro   )getattrr7   r   )r;   r!  rQ   rR   r   r   r    .test_parse_dates_infer_datetime_format_warningl  s    r;  c              
   C   sb   | }d}d}t jt|d4 t||tdt|dgtjddd W d    n1 sT0    Y  d S )	Nr5  z/Cannot use both 'date_parser' and 'date_format'r   rn   rD   ZISO8601r9  )r$   r%   r   rM   )r   r   r  r:  r7   r   r   r   )r;   r!  rQ   rR   r   r   r   r    ,test_parse_dates_date_parser_and_date_format  s    r<  zdata,kwargs,expectedza
04.15.2016i  r  rE   r  z
2016-04-15r+   r  za,b
04.15.2016,09.16.2013r   r@   	      r
  c                 C   s.   | }|j t|fddi|}t|| d S )NrN   .r   r;   rR   r  r=   rQ   r<   r   r   r    %test_parse_dates_no_convert_thousands  s    #rA  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.
rn   r   rL   r   r     r   r=  r|         $@rA         ?      &@)r   )r   r   )r   r   rE   )	r6   r7   r   r   r   r   r	   r8   r9   )r;   rR   rQ   r<   expected_datar=   r   r   r    ,test_parse_date_time_multi_level_column_name  s    

rG  zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r   rO   r$   rB  r   r|   rD  rE  )r   r   r   r   r`   rp   rq   rr   rs   rt   ru   ry   r~   r   r   r   r   r   r   r   c                 C   sF   | }|j tdt|fdtji|ddi}||j }t|| d S )Nrn   r%   ro   F)r6   r7   r   r   r   rF   r8   r9   r@  r   r   r    test_parse_date_time  s    I
rI  c              	   C   sl   | }d}|j tdt|ddg did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.rn   r   Zymd)r   rL   rB   c                 S   s   | S r   r   r   r   r   r    r   9  r*   z(test_parse_date_fields.<locals>.<lambda>FrO   r$   r%   ro   rB  rL   r   rC  rB   rE  r   rE   )r6   r7   r   r	   r   r8   r9   r   r   r   r    test_parse_date_fields0  s     

rL  )keyr   r3  r%   c                 C   s   t j| ddS )N%Y %m %d %H %M %Sformatr   r   r   r   r   r    r   I  r*   r   )r   rN  Nc              	   C   s   | }d}|j |dt|fddg did||id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.
rn   r   ymdHMSr   rL   rB   r_   r   r   rH  ro   FrB  rL   r   r   r|   rC  rD  rE  rR  r   r   rE   r6   r   r	   r   r8   r9   r;   rM  r   r3  rQ   rR   r<   r=   r   r   r    test_parse_date_all_fieldsD  s*    
	rW  c                 C   s   t j| ddS )N%Y %m %d %H %M %S.%frO  rQ  r   r   r   r    r   n  r*   )r   rX  Nc                 C   s   | }d}|j |dt|fddg did||id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.
rn   r   rR  rS  rH  ro   FrB  rL   r   r   i@ )microsecondr|   rC  i  rD  rE  rT  rE   rU  rV  r   r   r     test_datetime_fractional_secondsi  s*    
	rZ  c              	   C   s   | }d}dd }|j tdt|ddddgi|d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 )NrJ  c                 S   s   dd t | |D S )Nc                 S   s&   g | ]\}}t t|t|d dqS )rL   )yearmonthday)r   r   )r'   ymr   r   r    r)     r*   z8test_generic.<locals>.parse_function.<locals>.<listcomp>)zip)yymmr   r   r    parse_function  s    z$test_generic.<locals>.parse_functionrn   r   ymrL   FrK  rB  r   rC  rB   rE  )rd  r]  r   rE   datetime64[ns])r6   r7   r   r	   r   r   r8   r9   )r;   rQ   rR   rc  r<   r=   r   r   r    test_generic  s$    
	"rf  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 y6   dd t| |D }Y n0 tj|ddS )NTc                 S   s   g | ]\}}t ||qS r   )r   combine)r'   r  tr   r   r    r)     r*   zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>datetime64[s]r   )r  r`  r   array)r   r   Zarrr   r   r    r%     s
    z:test_date_parser_resolution_if_not_ns.<locals>.date_parserrn   r   r   r   Zprn)r%   r$   r&   z2013-11-03T19:00:00r_   rj  r   ZrxstatusZ00E80000)~   r   rC   r
  )rR   r5   )
r6   r7   r   r   rk  r	   r   Zfrom_arraysr8   r9   )r;   rQ   rR   r%   r<   Z	datetimesr=   r   r   r    %test_date_parser_resolution_if_not_ns  s(    
	
rm  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   caserE   r   r   r	   r8   r9   )r;   rQ   rR   r<   rF  r=   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+0)l   g] l   y_"A i  c                 C   s&   | }|j t||d}t|| d S )Nr   r   )r;   rR   r=   r$   rQ   r<   r   r   r    test_parse_date_float  s    rr  c                 C   sb   | }d}|j t|dgd}tdddt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:00Z1mini  )minutes)startendfreqr   )i6[  h[  rw  rw  rw  )r   val)	r   r   r   r   r   r   r	   r8   r9   )r;   rQ   rR   r<   ZdtirF  r=   r   r   r    test_parse_timezone  s    ry  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   rH  )r	   r   r   r8   r9   )r;   rz  rQ   r=   r<   r   r   r    !test_invalid_parse_delimited_date  s    r{  zdate_string,dayfirst,expectedz
13/02/2019i  rC   z
02/13/2019z
04/02/2019c                 C   s   | }t d|gidd}|jdkr~|s0tjdd d}tjt|d( |jt|d |dgd	 W d    n1 sp0    Y  d S |jt|d |dgd	}t	|| d S )
Nr   re  r   rX   z,https://github.com/apache/arrow/issues/38676rZ   z@The 'dayfirst' option is not supported with the 'pyarrow' enginer   rO   r  r$   )
r	   r   r   skipr   r   r   r   r8   r9   )r;   rz  r  r=   r   rQ   r   r<   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   re  r   zParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.r|  )r	   r6   r   r   r8   r9   )r;   rz  r  r=   rQ   warning_msgr<   r   r   r    +test_parse_delimited_date_swap_with_warning:  s    r  c                   C   s@   t jtdd tg d W d    n1 s20    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_warningsX  s
    r  z)names, usecols, parse_dates, missing_colsrx  z
date, time)date1Ztime1temperaturer  r  c           
   	   C   s   | }t d}d| d}d}t}	t|tr@tdd |D r@d }	tjt|dT tj	|	|dd	$ |j
|d
|||d W d    n1 s0    Y  W d    n1 s0    Y  d S )Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': ''rG   c                 s   s   | ]}t |ttfV  qd S r   )r  r   str)r'   r   r   r   r    r     s   z9test_missing_parse_dates_column_raises.<locals>.<genexpr>r   FrH   r9  )rM   rm   usecolsr$   )r   r7   r  r   allr   r   r   r8   rP   r   )
r;   rm   r  r$   Zmissing_colsrQ   contentr   rS   r3  r   r   r    &test_missing_parse_dates_column_raisese  s    
r  c                 C   sb   | }t d}t}|jdkr"ttf}|j|d|dgdgd}tdddgidd	gd
}t|| d S )Nzx,y
1,2rX   r   r   )r$   rm   r^  2r   1r4   )r   r   r   r   r6   r	   r8   r9   )r;   rQ   rR   r3  r<   r=   r   r   r    test_date_parser_and_names  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   rL   r$   rO   
2019-12-31r   rA   )r  r   r  )r   r   r	   r   r   r8   r9   r   r   r   r    #test_date_parser_multiindex_columns  s    r  zparse_spec, col_namer  r  )a_bZ1_2)r/  r  c                 C   s   | }d}d}t jt|dd( |jt||ddgd}W d    n1 sJ0    Y  t|tdd	d
dgi}t || d S )Nza,b,c
1,2,3
2019-12,-31,6rG   FrH   r   rL   r  r  r   )r   3rA   )	r8   rP   r7   r   r   r	   r   r   r9   )r;   Z
parse_specZcol_namerQ   rR   rS   r<   r=   r   r   r    0test_date_parser_multiindex_columns_combine_cols  s     	$r  c                 C   s   d}| }|j dkrdd}tjt|d, |jt|dgddgdd W d    n1 sV0    Y  d S |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
    rX   zAThe 'thousands' option is not supported with the 'pyarrow' enginer   rL   rB   rK   )r$   r  rN   r   r_   r   z20-09-2001 01:00:00r   )r   r   r   r   r   r   r6   r   r	   r   r8   r9   )r;   rR   rQ   r   r<   r=   r   r   r    "test_date_parser_usecols_thousands  s,    
$r  c                 C   s   | }d}d}t jt|dd* |jt|ddgidd}W d    n1 sL0    Y  td	td
g}t||d}t || d S )NzA
20150908
20150909
r   FrH   r   r   T)r$   rV   z
2015-09-08z
2015-09-09)r   r   )r8   rP   r7   r   r   r   r	   r9   )r;   rQ   rR   rS   r<   rF  r=   r   r   r    )test_parse_dates_and_keep_original_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|0    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 s
0    Y  t|| d S )Nzdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10re  r   r   rv  r,   r  T)r$   r  r&   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r   r   )	r
   r   r   r5   r8   assert_index_equalrP   r   r   )inputr=   r  Zres1Zres2Zres5Zres6r   r   r    test_dayfirst_warnings  s4    &(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\0    Y  t|| d S )	Nzdate
z
2014-01-31re  r   r  r  r   )r$   r&   r  )r
   r8   rP   r   r   r   r5   r  )rz  r  initial_valuer=   r  resr   r   r    &test_dayfirst_warnings_no_leading_zero6  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   r4   rp  r   r   r   r     test_infer_first_column_as_indexY  s    r  c                 C   s   t j| ddS )N%Y-%m-%drO  rQ  r   r   r   r    r   j  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
rn   ZTest#r2  )r  r$   z
2012-10-01z
2015-05-15z
2017-09-09)r6   r   r	   r   r   r7  r8   r9   rV  r   r   r    &test_replace_nans_before_parsing_datesf  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   r8   r9   r   r   r   r    !test_parse_dates_and_string_dtype  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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,2rX   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:00re  z1when dayfirst=False \(the default\) was specifiedTr   F)r$   r&   ro   r   rL   rB   r4   )	r   r   r
   r   r6   r   r	   r8   r9   )r;   rQ   rR   Zexpected_indexr3  r   r<   r=   r   r   r    test_parse_dot_separated_dates  s4    
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   r8   r9   r   r   r   r    test_parse_dates_dict_format  s    r  zkey, parse_datesr  r/  c                 C   s   | }d}d}t jttf|dd( |jt||di|d}W d    n1 sN0    Y  t|tdtdgi}t || d S )	Nza,b
31-,12-2019
31-,12-2020rG   FrH   z	%d- %m-%Yr  r  r  )	r8   rP   r7   r   r   r   r	   r   r9   )r;   rM  r$   rQ   rR   rS   r<   r=   r   r   r    (test_parse_dates_dict_format_two_columns  s    
$r  c                 C   sZ   | }d}|j t|ddiddd}tddd	gittd
tdgddd}t|| d S )Nr  r   r  Tr   )r   r$   r&   r   z
31-12-2019z
31-12-2020r  r  r+   r4   )r   r   r	   r   r   r8   r9   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   rX   r   z2000-01-01 00:00:00z2000-01-01 00:00:01rL   r  )	r   r   r   r   r   r	   r   r8   r9   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   rL   )r,   r5   )r   r   r   r   r8   Zassert_series_equalr   r   r   r     test_from_csv_with_mixed_offsets	  s    r  )o__doc__r   r   r   r   ior   Zdateutil.parserr   r]   numpyr   r   r  Zpandas._libs.tslibsr   Zpandasr   r	   r
   r   r   r   r   Zpandas._testingZ_testingr8   Zpandas.core.indexes.datetimesr   Zpandas.core.tools.datetimesr   Zpandas.io.parsersr   r   filterwarningsZ
pytestmarkZusefixturesZxfail_pyarrowZskip_pyarrowr>   r?   rU   Zparametrizer   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)  rk  r+  r1  r4  r8  r;  r<  from_tuplesrA  rG  rI  rL  r7   rW  rZ  rf  rm  rq  rr  ry  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~   
'
"

 

 .@(
_	

;



2-*f
b!
 




 
&H



&
	

!
0

 
!&