o
    %j`                    @   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   $   |  tj} |  t} tj| ddS Nsunitastypenpfloat64intpdto_timedeltatime r    h/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parser/      
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   s    z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>name)g>٬Vgzr.   g1)禛 D*Ar/   g D*Ag D*Ar/   )St$Px@r0   Gx$Px@r1   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   r   r   r   r   r    r    r!   r"   W   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    `@r,   r2   )gzGqWg(\WgQXg(\WgGznXr5   )r   r7   r8   r   r	   r9   r:   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 |jt|dddddgid d}W d    n1 s;w   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   r9   assert_produces_warningr8   r   r   r:   )r<   parserdatar>   depr_msgdfr    r    r!   test_separator_date_conflictw   s&   

rV   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
        )rR   )r   Ztry_parse_datesconcat_date_colsdu_parse)	date_colsr    r    r!   r'      s   
z2test_multiple_date_col_custom.<locals>.date_parserrM   rC      actualnominal	X0X1X2X3X4X5X6X7X8)rP   r'   r&   rW   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@)rb   rc   re   rf   rg   rh   ri   rj   rk   rl   rm   rF   rf   rg   rh   Zaxis)enginepytestmarkxfailapplymarkerr7   r8   r   r	   r   droprG   r9   r:   )
r<   rW   requestrS   rR   r   r'   kwdsr=   r>   r    r    r!   test_multiple_date_col_custom   s   
P`
r   	containerdimrM   rC   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 arraysrw   c                 3   s    | ]} gV  qd S Nr    )r)   _r   valuer    r!   	<genexpr>7  s    z,test_concat_date_col_fail.<locals>.<genexpr>rJ   )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 sHw   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 ):NrX   rY   rZ   r[   8The 'keep_date_col' keyword in pd.read_csv is deprecatedrM   rC   r`   rd   )rP   r&   rW   rn   FrI   rq   rr   rs   r   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   r   )ZX1_X2ZX1_X3re   rf   rg   rh   ri   rj   rk   rl   rm   rF   r   r   )r   r   r   r   r   r9   rQ   DeprecationWarningr8   r   r   r	   r   r   r:   )
r<   rW   r   rS   rR   r   rT   r   r=   r>   r    r    r!   test_multiple_date_col=  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
rM   )re   rf   rg   rh   ri   rj   rk   rl   )rP   r&   r(   rn   rq   rr   rs   r   r   r   r   rf   r,   )rv   ry   rz   r{   r|   r}   r~   )rv   r   r   r   r|   r}   r   )rv   r   r   r   r   r}   r~   )rv   r   r   r   r   r}   r   )rv   r   r   r   r   r}   r   )re   rg   rh   ri   rj   rk   rl   rG   r6   rY   
1970-01-01rg   )r   r   r   r   r	   r   r   to_datetimedtr   r9   r:   )r<   rS   rR   r   r=   r6   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.5900rM   rC   r`   ra   rP   r&   r'   ro   rp   Frq   rr   rs   r   rt   ru   rv   rz   r   r   r   r   r   r   r   rb   rc   r      rF   )
r   r   r7   r8   r   r	   r   rG   r9   r:   )r<   rS   r&   rR   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.25ro   r   rM   F)r&   rP   r'   rp   z05/31/2012, 15:30:00.029g     i@E   )Z0_1rC   r`   r      rB      rF   )	r7   r8   r   r   r	   r   nanr9   r:   r<   rR   rS   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 s&w   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.0000rH   FrI   rc   rM   rC   r&   rq   rr   rs   r   rv   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   rc   IDZ
ActualTimeZTDewZTAirZ	WindspeedZPrecipZWindDirrF   )r9   rQ   r8   r   r   r	   r   r:   r<   rR   rS   rT   r=   r>   r    r    r!   #test_multiple_date_cols_with_headerZ  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   s   | }d}t jt|d4 tjttf|dd |jt||d W d    n1 s*w   Y  W d    d S W d    d S 1 sBw   Y  d S )NrH   r   FrI   r   )	r   r   r   r9   rQ   r8   r   r   r   )r<   rS   r&   r   rR   rT   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
ro   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'   rp   )go?r   r   rB   gX5;N?r`   i90  rM   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   )r7   r8   r   r	   r   r   r9   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   dtypeZ20010101ns)ABr`   rB   z__nat_parse_.csvr   r   r(   r&   )r	   r   Zaranger   as_unitr   Zilocr9   Zensure_cleanZto_csvr   r:   )r<   rR   rU   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
ro   c                 S   s   t | dS )N%Y%m%d)r   strptimer   r    r    r!   r   6  s    z(test_csv_custom_parser.<locals>.<lambda>)r'   Tr   r   )date_format)r7   r8   r   r   r9   r:   r<   rS   rR   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   r9   r:   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)rM   r`   r   )rC   r   r   r   r   Cr5   )r   r   r   
_with_freqr	   r9   r:   )r<   rS   rR   r=   r6   r>   r    r    r!   test_parse_dates_stringL  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     rM      r   rC      r   r`   r      	date_timer   r-   )rM   r`   r   )rC   r   rB   r   r   r5   )	r7   UserWarningr   r
   r   objectr	   r9   r:   )r<   r&   rS   rR   r=   r6   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  rM   rC      r   r   r   r   T)r(   r&   dayfirst)r	   r   	set_indexr   r   r9   r:   )r<   r&   rS   rR   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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   rM   rC   r`   )onetwothreeZindex1index2rn   r   )r   rM   rC   )r   r`   r   )r   r   r   r   r   r   Tr   )
r   Zfrom_productr   Z	swaplevelr	   r7   r   r   r9   r:   )r<   r(   rS   rR   r6   r>   r=   r    r    r!   test_multi_index_parse_dates  s@    	r  kwargsr  Z	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  ro   )r   QNTUc                       t | fi  S r   r^   dr  r    r!   r         z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TZNA)rn   r'   rP   r(   r&   	na_valuesr  rM   r   rC   r   r,   )rM   rM   rM   )r  r  r  r  r6   rG   z.got an unexpected keyword argument 'day_first'r   c                    r  r   r  r  r  r    r!   r     r  )rn   r'   Zskiprowsr(   r&   r  )r7   r8   r   r   r   r	   r   r   r9   r:   r   r   	TypeError)r<   r  rR   rS   rU   Z	exp_indexr>   r   r    r  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}|jdkr3tj	}nt
j	}t|| |jj|u sDJ d S )NzDate,x
2012-06-13T01:39:00Z,0.5r   Tr   rY   r   r   g      ?z2012-06-13 01:39:00+00:00rE   r,   r5   )r   r   r   r6   r   r	   r   r   pytzr   r   r9   r:   r   )r<   rR   rS   r=   r>   Zexpected_tzr    r    r!   test_parse_tz_aware  s   

r  zparse_dates,index_colrc   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_d-}tjt	|d.d/ |j
t|||d0}W d    n1 sw   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
rq   rM   rr   rs   r   ZKORD1ry   rz   r{   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   rF   rc   Zdate_NominalTimerH   FrI   r&   r(   )r	   r   r  
isinstancedictr6   r-   r9   rQ   r8   r   r   r:   )r<   r&   r(   rR   rS   r>   rT   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)+ |jt|d&dd*gid&d*d+}t|}W d    n1 sw   Y  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
rq   rM   rr   rs   r   rv   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   )rc   r   Z
actualTimer   r   r   Dr   rF   rc   rH   FrI   rC   )r&   r(   	chunksizer   )
r	   r   r  r9   rQ   r8   r   r   listr:   )r<   rR   rS   r>   rT   readerchunksr    r    r!   test_multiple_date_cols_chunkedp  s   
>
A

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 s)w   Y  t jttf|dd |jt|ddd	d
gid}W d    n1 sQw   Y  t || d S )Nr   rH   FrI   rc   rM   rC   r  r   ZnominalTimer   )r9   rQ   r8   r   r   r   r:   )r<   rR   rS   rT   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 |jt|ddgdddgid	}W d    n1 s+w   Y  t jttf|dd |jt|dddgid
}W d    n1 sRw   Y  |ddg}t || d S )Nr   rH   FrI   rc   r   rM   rC   r   r   )r9   rQ   r8   r   r   r   r  r:   r   r    r    r!   ,test_multiple_date_col_multiple_index_compat  s$   


r(  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   "r,  rM   r   r   r`   c                 C   sR   | }d}d}t jt|d |jt|dd W d    d S 1 s"w   Y  d S )Nr)  r*  r   r-  r   r+  )r<   r&   rR   r   rS   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,
rM   foobar)rP   rn   r&   r/  )r   r   r   )r<   r/  r   rR   r   r    r    r!   test_bad_date_parse.  s   
r4  0c              
   C   sX   | }t | dd }|jdkrd }n|rd }nt}|j|d|d ddgdg|dd d S )	Nr1  iP  rY   r   r2  r3  F)rP   rn   r&   r/  rp   )r   r   r   r7   )r<   r/  r   rR   r   warnr    r    r!    test_bad_date_parse_with_warning?  s"   

r7  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
,2rE   F)r&   Z	na_filteri  rM   rC   testrF   )r   r   r	   r   r   NaTr9   r:   r   r    r    r!   test_parse_dates_empty_string_  s   r;  r$  r7   Zread_table_check_warningsc              	   C   s.   | }d}t ||tdt|dgdddd d S )Nr8  z2The argument 'infer_datetime_format' is deprecatedrE   T,F)r&   Zinfer_datetime_formatrN   rp   )getattrr8   r   )r<   r$  rR   rS   r    r    r!   .test_parse_dates_infer_datetime_format_warningl  s   
r>  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 )	Nr8  z/Cannot use both 'date_parser' and 'date_format'r   ro   rE   ZISO8601r<  )r&   r'   r   rN   )r   r   r  r=  r8   r   r   r   )r<   r$  rR   rS   r   r    r    r!   ,test_parse_dates_date_parser_and_date_format  s   "r?  zdata,kwargs,expectedza
04.15.2016i  r  rF   r  z
2016-04-15r,   r  za,b
04.15.2016,09.16.2013r   rA   	      r  c                 C   s.   | }|j t|fddi|}t|| d S )NrO   .r   r<   rS   r  r>   rR   r=   r    r    r!   %test_parse_dates_no_convert_thousands  s   #rD  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.
ro   r   rM   r   r     r   r@  r}         $@rB         ?      &@)r   )r   r   )r   r   rF   )	r7   r8   r   r   r   r   r	   r9   r:   )r<   rS   rR   r=   expected_datar>   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   rP   r&   rE  r   r}   rG  rH  )r   r   r   r   ra   rq   rr   rs   rt   ru   rv   rz   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 )Nro   r'   rp   F)r7   r8   r   r   r   rG   r9   r:   rC  r    r    r!   test_parse_date_time  s   I
rL  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.ro   r   Zymd)r   rM   rC   c                 S   s   | S r   r    r   r    r    r!   r   9  s    z(test_parse_date_fields.<locals>.<lambda>FrP   r&   r'   rp   rE  rM   r   rF  rC   rH  r   rF   )r7   r8   r   r	   r   r9   r:   r   r    r    r!   test_parse_date_fields0  s    

rO  )keyr   r6  r'   c                 C      t j| ddS )N%Y %m %d %H %M %Sformatr   r   r   r    r    r!   r   I      r   )r   rR  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.
ro   r   ymdHMSr   rM   rC   r`   r   r   rK  rp   FrE  rM   r   r   r}   rF  rG  rH  rW  r   r   rF   r7   r   r	   r   r9   r:   r<   rP  r   r6  rR   rS   r=   r>   r    r    r!   test_parse_date_all_fieldsD  s*   
	r\  c                 C   rQ  )N%Y %m %d %H %M %S.%frS  rU  r   r    r    r!   r   n  rV  )r   r]  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.
ro   r   rW  rX  rK  rp   FrE  rM   r   r   i@ )microsecondr}   rF  i  rG  rH  rY  rF   rZ  r[  r    r    r!    test_datetime_fractional_secondsi  s*   
	r_  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 )NrM  c                 S   s   dd t | |D S )Nc                 S   s&   g | ]\}}t t|t|d dqS )rM   )yearmonthday)r   r   )r)   ymr    r    r!   r+     s   & z8test_generic.<locals>.parse_function.<locals>.<listcomp>)zip)yymmr    r    r!   parse_function  s   z$test_generic.<locals>.parse_functionro   r   ymrM   FrN  rE  r   rF  rC   rH  )ri  rb  r   rF   datetime64[ns])r7   r8   r   r	   r   r   r9   r:   )r<   rR   rS   rh  r=   r>   r    r    r!   test_generic  s$   
	"rk  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)   r  tr    r    r!   r+     s    zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>datetime64[s]r   )r  re  r   array)r   r   Zarrr    r    r!   r'     s   z:test_date_parser_resolution_if_not_ns.<locals>.date_parserro   r   r   r   Zprn)r'   r&   r(   z2013-11-03T19:00:00r`   ro  r   ZrxstatusZ00E80000)~   r   rD   r  )rS   r6   )
r7   r8   r   r   rp  r	   r   Zfrom_arraysr9   r:   )r<   rR   rS   r'   r=   Z	datetimesr>   r    r    r!   %test_date_parser_resolution_if_not_ns  s(   
	
rr  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   caserF   r   r   r	   r9   r:   )r<   rR   rS   r=   rI  r>   r    r    r!   (test_parse_date_column_with_empty_string  s   rv  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   r>   r&   rR   r=   r    r    r!   test_parse_date_float  s   rw  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[  r|  r|  r|  )r   val)	r   r   r   r   r   r   r	   r9   r:   )r<   rR   rS   r=   ZdtirI  r>   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   strr   rK  )r	   r   r   r9   r:   )r<   r  rR   r>   r=   r    r    r!   !test_invalid_parse_delimited_date  s   r  zdate_string,dayfirst,expectedz
13/02/2019i  rD   z
02/13/2019z
04/02/2019c                 C   s   | }t d|gidd}|jdkr@|stjdd d}tjt|d |jt|d |dgd	 W d    d S 1 s9w   Y  d S |jt|d |dgd	}t	|| d S )
Nr   rj  r   rY   z,https://github.com/apache/arrow/issues/38676r[   z@The 'dayfirst' option is not supported with the 'pyarrow' enginer   rP   r  r&   )
r	   r   r   skipr   r   r   r   r9   r:   )r<   r  r  r>   r   rR   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   rj  r   zParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.r  )r	   r7   r   r   r9   r:   )r<   r  r  r>   rR   warning_msgr=   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_warningsX  s   "r  z)names, usecols, parse_dates, missing_colsr}  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3 tj	|	|dd	 |j
|d
|||d W d    n1 sEw   Y  W d    d S 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': ''rH   c                 s   s    | ]
}t |ttfV  qd S r   )r  r   r  )r)   r   r    r    r!   r     s    
z9test_missing_parse_dates_column_raises.<locals>.<genexpr>r   FrI   r<  )rN   rn   usecolsr&   )r   r8   r  r#  allr   r   r   r9   rQ   r   )
r<   rn   r  r&   Zmissing_colsrR   contentr   rT   r6  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,2rY   r   r   )r&   rn   rc  2r   1r5   )r   r   r   r   r7   r	   r9   r:   )r<   rR   rS   r6  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   rM   r&   rP   
2019-12-31r   rB   )r  r   r  )r   r   r	   r   r   r9   r:   r   r    r    r!   #test_date_parser_multiindex_columns  s   r  zparse_spec, col_namer  r  )a_bZ1_2)r2  r  c                 C   s   | }d}d}t jt|dd |jt||ddgd}W d    n1 s%w   Y  t|tdd	d
dgi}t || d S )Nza,b,c
1,2,3
2019-12,-31,6rH   FrI   r   rM   r  r  r   )r   3rB   )	r9   rQ   r8   r   r   r	   r   r   r:   )r<   Z
parse_specZcol_namerR   rS   rT   r=   r>   r    r    r!   0test_date_parser_multiindex_columns_combine_cols  s"   	r  c                 C   s   d}| }|j dkr3d}tjt|d |jt|dgddgdd W d    d S 1 s,w   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
    rY   zAThe 'thousands' option is not supported with the 'pyarrow' enginer   rM   rC   rL   )r&   r  rO   r   r`   r   z20-09-2001 01:00:00r   )r   r   r   r   r   r   r7   r   r	   r   r9   r:   )r<   rS   rR   r   r=   r>   r    r    r!   "test_date_parser_usecols_thousands  s2   

r  c                 C   s   | }d}d}t jt|dd |jt|ddgidd}W d    n1 s&w   Y  td	td
g}t||d}t || d S )NzA
20150908
20150909
r   FrI   r   r   T)r&   rW   z
2015-09-08z
2015-09-09)r   r   )r9   rQ   r8   r   r   r   r	   r:   )r<   rR   rS   rT   r=   rI  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>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-10rj  r   r   r{  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   r6   r9   assert_index_equalrQ   r   r   )inputr>   r  Zres1Zres2Zres5Z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-31rj  r   r  r  r   )r&   r(   r  )r
   r9   rQ   r   r   r   r6   r  )r  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   r5   ru  r   r    r    r!    test_infer_first_column_as_indexY  s   r  c                 C   rQ  )N%Y-%m-%drS  rU  r   r    r    r!   r   j  rV  )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
ro   ZTest#r5  )r  r&   z
2012-10-01z
2015-05-15z
2017-09-09)r7   r   r	   r   r   r:  r9   r:   r[  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   r9   r:   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,2rY   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:00rj  z1when dayfirst=False \(the default\) was specifiedTr   F)r&   r(   rp   r   rM   rC   r5   )	r   r   r
   r   r7   r   r	   r9   r:   )r<   rR   rS   Zexpected_indexr6  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   r9   r:   r   r    r    r!   test_parse_dates_dict_format  s   r  zkey, parse_datesr  r2  c                 C   s   | }d}d}t jttf|d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-2020rH   FrI   z	%d- %m-%Yr  r  r  )	r9   rQ   r8   r   r   r   r	   r   r:   )r<   rP  r&   rR   rS   rT   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,   r5   )r   r   r	   r   r   r9   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   rY   r   z2000-01-01 00:00:00z2000-01-01 00:00:01rM   r  )	r   r   r   r   r   r	   r   r9   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   rM   )r-   r6   )r   r   r   r   r9   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_testingr9   Zpandas.core.indexes.datetimesr   Zpandas.core.tools.datetimesr   Zpandas.io.parsersr   r   filterwarningsZ
pytestmarkZusefixturesZxfail_pyarrowZskip_pyarrowr?   r@   rV   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,  rp  r.  r4  r7  r;  r>  r?  from_tuplesrD  rJ  rL  rO  r8   r\  r_  rk  rr  rv  rw  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    
'
"

 

 .@(
_	

;



2-*f
b!
 




 
&
H


&
	

!
0

 
!&