o
    ŀgi                    @   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:DeprecationWarning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"   [/var/www/html/myenv/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!   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r1   g1)禛 D*Ar2   g D*Ag D*Ar2   )St$Px@r3   Gx$Px@r4   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.   			rD   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/   r5   )gzGqWg(\WgQXg(\WgGznXr8   )r   r:   r;   r   r	   r=   r>   r?   r"   r"   r#   7test_read_csv_with_custom_date_parser_parse_dates_falseT   s&   		
rE   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matchcheck_stacklevel;-   )sep	thousandsr)   header)r	   r   r=   assert_produces_warningr;   r   r   r>   )r@   parserdatarC   depr_msgdfr"   r"   r#   test_separator_date_conflictw   s&   

r\   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
        )rX   )r   try_parse_datesconcat_date_colsdu_parse)	date_colsr"   r"   r#   r*      s   
z2test_multiple_date_col_custom.<locals>.date_parserrS   rH      actualnominal	X0X1X2X3X4X5X6X7X8)rV   r*   r)   r]   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@)ri   rj   rl   rm   rn   ro   rp   rq   rr   rs   rt   rK   rm   rn   ro   axis)enginepytestmarkxfailapplymarkerr:   r;   r   r	   r   droprL   r=   r>   )
r@   r]   requestrY   rX   r   r*   kwdsrB   rC   r"   r"   r#   test_multiple_date_col_custom   s   
P`
r   	containerdimrS   rH   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 arraysr~   c                 3   s    | ]} gV  qd S Nr"   )r,   _r   valuer"   r#   	<genexpr>7  s    z,test_concat_date_col_fail.<locals>.<genexpr>rO   )tupleranger   raises
ValueErrorr   rd   )r   r   msgrf   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 ):Nr^   r_   r`   ra   8The 'keep_date_col' keyword in pd.read_csv is deprecatedrS   rH   rg   rk   )rV   r)   r]   ru   FrN   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   r   r   r   r   r   r   )X1_X2X1_X3rl   rm   rn   ro   rp   rq   rr   rs   rt   rK   r   r   )r   r   r   r   r   r=   rW   DeprecationWarningr;   r   r   r	   r   r   r>   )
r@   r]   r   rY   rX   r   rZ   r   rB   rC   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
rS   )rl   rm   rn   ro   rp   rq   rr   rs   )rV   r)   r+   ru   rx   ry   rz   r   r   r   r   rm   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   r   r   r   r   )rl   rn   ro   rp   rq   rr   rs   rL   r9   r_   
1970-01-01rn   )r   r   r   r   r	   r   r   to_datetimedtr!   r=   r>   )r@   rY   rX   r   rB   r9   rC   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.5900rS   rH   rg   rh   rV   r)   r*   rv   rw   Frx   ry   rz   r   r{   r|   r}   r   r   r   r   r   r   r   r   ri   rj   r      rK   )
r   r   r:   r;   r   r	   r   rL   r=   r>   )r@   rY   r)   rX   r   rB   rC   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.25rv   r   rS   F)r)   rV   r*   rw   z05/31/2012, 15:30:00.029g     i@E   )0_1rH   rg   r      rG      rK   )	r:   r;   r   r   r	   r   nanr=   r>   r@   rX   rY   rB   rC   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.0000rM   FrN   rj   rS   rH   r)   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   rj   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirrK   )r=   rW   r;   r   r   r	   r   r>   r@   rX   rY   rZ   rB   rC   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 )NrM   r   FrN   r   )	r   r   r   r=   rW   r;   r   r   r   )r@   rY   r)   r   rX   rZ   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
rv   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*   rw   )go?r   r   rG   gX5;N?rg   i90  rS   rg   invoice_InvoiceResourcesearch)elapsedsysuserqueries
query_timerows	accountiduserid	contactidlevelsilomethodz2012-07-24 04:12:30posix_timestampr/   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Brg   rG   z__nat_parse_.csvr   r   r+   r)   )r	   r   aranger   as_unitr   ilocr=   ensure_cleanto_csvr   r>   )r@   rX   r[   pathrB   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
rv   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)r:   r;   r   r   r=   r>   r@   rY   rX   rB   rC   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   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/2009rg   )periodsr0   abc)rS   rg   r   )rH   r   r   r   r   Cr8   )r   r   r   
_with_freqr	   r=   r>   )r@   rY   rX   rB   r9   rC   r"   r"   r#   test_parse_dates_stringL  s   r  z#yearfirst is not surfaced in read_*ra   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     rS      r   rH      r   rg   r      	date_timer   r0   )rS   rg   r   )rH   r   rG   r   r  r8   )	r:   UserWarningr   r
   r   objectr	   r=   r>   )r@   r)   rY   rX   rB   r9   rC   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  rS   rH      r  r  r  r   T)r+   r)   dayfirst)r	   r   	set_indexr   r   r=   r>   )r@   r)   rY   rX   rC   rB   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  rS   rH   rg   )onetwothreeindex1index2ru   r   )r  rS   rH   )r  rg   r   )r  r   r   r  r   r  Tr   )
r   from_productr   	swaplevelr	   r:   r  r   r=   r>   )r@   r+   rY   rX   r9   rC   rB   r"   r"   r#   test_multi_index_parse_dates  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#  rv   )r!   QNTUc                       t | fi  S r   re   dr/  r"   r#   r         z5test_parse_dates_custom_euro_format.<locals>.<lambda>r   TNA)ru   r*   rV   r+   r)   	na_valuesr!  rS   r  rH   r!   r/   )rS   rS   rS   )r1  r2  r1  r2  r9   rL   z.got an unexpected keyword argument 'day_first'r   c                    r3  r   r4  r5  r7  r"   r#   r     r8  )ru   r*   skiprowsr+   r)   r:  )r:   r;   r   r   r   r	   r   r   r=   r>   r   r   	TypeError)r@   r/  rX   rY   r[   	exp_indexrC   r   r"   r7  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   r_   r   r   g      ?z2012-06-13 01:39:00+00:00rJ   r/   r8   )r   r   r   r9   r   r	   r   r   pytzr   r   r=   r>   r   )r@   rX   rY   rB   rC   expected_tzr"   r"   r#   test_parse_tz_aware  s   

rB  zparse_dates,index_colrj   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
rx   rS   ry   rz   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   rK   rj   date_NominalTimerM   FrN   r)   r+   )r	   r   r$  
isinstancedictr9   r0   r=   rW   r;   r   r   r>   )r@   r)   r+   rX   rY   rC   rZ   rB   r"   r"   r#   test_multiple_date_cols_index  s   	>
J

rM  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
rx   rS   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   )rj   r   
actualTimer   r   r  Dr   rK   rj   rM   FrN   rH   )r)   r+   	chunksizer   )
r	   r   r$  r=   rW   r;   r   r   listr>   )r@   rX   rY   rC   rZ   readerchunksr"   r"   r#   test_multiple_date_cols_chunkedp  s   
>
A

rU  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 )NrN  rM   FrN   rj   rS   rH   rJ  r   nominalTimer   )r=   rW   r;   r   r   r   r>   )r@   rX   rY   rZ   with_indices
with_namesr"   r"   r#   )test_multiple_date_col_named_index_compat  s*   


rY  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 )NrN  rM   FrN   rj   r   rS   rH   r   r   )r=   rW   r;   r   r   r   r$  r>   r   r"   r"   r#   ,test_multiple_date_col_multiple_index_compat  s$   


rZ  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/  rX   r   rY   r"   r"   r#   *test_read_with_parse_dates_scalar_non_bool  s   "r^  rS   r   r   rg   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)   rX   r   rY   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,
rS   foobar)rV   ru   r)   ra  )r   r   r   )r@   ra  r   rX   r   r"   r"   r#   test_bad_date_parse.  s   
rf  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 )	Nrc  iP  r_   r  rd  re  F)rV   ru   r)   ra  rw   )r   r   r  r:   )r@   ra  r   rX   r   warnr"   r"   r#    test_bad_date_parse_with_warning?  s"   

ri  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
,2rJ   F)r)   	na_filteri  rS   rH   testrK   )r   r   r	   r   r   NaTr=   r>   r   r"   r"   r#   test_parse_dates_empty_string_  s   rn  rS  r:   read_table_check_warningsc              	   C   s.   | }d}t ||tdt|dgdddd d S )Nrj  z2The argument 'infer_datetime_format' is deprecatedrJ   T,F)r)   infer_datetime_formatrT   rw   )getattrr;   r   )r@   rS  rX   rY   r"   r"   r#   .test_parse_dates_infer_datetime_format_warningl  s   
rs  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 )	Nrj  z/Cannot use both 'date_parser' and 'date_format'r   rv   rJ   ISO8601rp  )r)   r*   r  rT   )r   r   r=  rr  r;   r   r   r   )r@   rS  rX   rY   r   r"   r"   r#   ,test_parse_dates_date_parser_and_date_format  s   "ru  zdata,kwargs,expectedza
04.15.2016i  r"  rK   rJ  z
2016-04-15r/   r;  za,b
04.15.2016,09.16.2013r  rF   	      r+  c                 C   s.   | }|j t|fddi|}t|| d S )NrU   .r  r@   rY   r/  rC   rX   rB   r"   r"   r#   %test_parse_dates_no_convert_thousands  s   #rz  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.
rv   r   rS   r  r     r   rv  r         $@rG         ?      &@)r  )r   r  )r   r  rK   )	r:   r;   r   r   r   r   r	   r=   r>   )r@   rY   rX   rB   expected_datarC   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  rV   r)   r{  r   r   r}  r~  )r  r  r  r   rh   rx   ry   rz   r{   r|   r}   r   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 )Nrv   r*   rw   F)r:   r;   r   r   r   rL   r=   r>   ry  r"   r"   r#   test_parse_date_time  s   I
r  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.rv   r   ymd)r   rS   rH   c                 S   s   | S r   r"   r   r"   r"   r#   r   9  s    z(test_parse_date_fields.<locals>.<lambda>FrV   r)   r*   rw   r{  rS   r   r|  rH   r~  r  rK   )r:   r;   r   r	   r   r=   r>   r   r"   r"   r#   test_parse_date_fields0  s    

r  )keyr   rh  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  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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.
rv   r   ymdHMSr   rS   rH   rg   r   r   r  rw   Fr{  rS   r   r   r   r|  r}  r~  r  r  r  rK   r:   r   r	   r   r=   r>   r@   r  r   rh  rX   rY   rB   rC   r"   r"   r#   test_parse_date_all_fieldsD  s*   
	r  c                 C   r  )N%Y %m %d %H %M %S.%fr  r  r   r"   r"   r#   r   n  r  )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.
rv   r   r  r  r  rw   Fr{  rS   r   r   i@ )microsecondr   r|  i  r}  r~  r  rK   r  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 )Nr  c                 S   s   dd t | |D S )Nc                 S   s&   g | ]\}}t t|t|d dqS )rS   )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_functionrv   r   ymrS   Fr  r{  r   r|  rH   r~  )r  r  r  rK   datetime64[ns])r:   r;   r   r	   r   r   r=   r>   )r@   rX   rY   r  rB   rC   r"   r"   r#   test_generic  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,   r6  tr"   r"   r#   r.     s    zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>datetime64[s]r   )r=  r  r   array)r   r!   arrr"   r"   r#   r*     s   z:test_date_parser_resolution_if_not_ns.<locals>.date_parserrv   r   r   r!   prn)r*   r)   r+   z2013-11-03T19:00:00rg   r  r   rxstatus00E80000)~   r   rI   r+  )rY   r9   )
r:   r;   r   r   r  r	   r   from_arraysr=   r>   )r@   rX   rY   r*   rB   	datetimesrC   r"   r"   r#   %test_date_parser_resolution_if_not_ns  s(   
	
r  c                 C   sR   | }d}|j t|dgd}ddgddgddgg}t|d	dgd
}t|| d S )Nz+case,opdate
7,10/18/2006
7,10/18/2008
621, opdater   r   z
10/18/2006z
10/18/2008im   caserK   r   r   r	   r=   r>   )r@   rX   rY   rB   r  rC   r"   r"   r#   (test_parse_date_column_with_empty_string  s   r  zdata,expectedz"a
135217135789158401
1352171357E+5l   0l    Hbk r   r   z%a
99999999999
123456789012345
1234E+0)l   g] l   y_"A i  c                 C   s&   | }|j t||d}t|| d S )Nr   r  )r@   rY   rC   r)   rX   rB   r"   r"   r#   test_parse_date_float  s   r  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:001mini  )minutes)startendfreqr   )i6[  h[  r  r  r  )r   val)	r   r   r   r   r   r  r	   r=   r>   )r@   rX   rY   rB   dtir  rC   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>   )r@   r  rX   rC   rB   r"   r"   r#   !test_invalid_parse_delimited_date  s   r  zdate_string,dayfirst,expectedz
13/02/2019i  rI   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   r  r   r_   z,https://github.com/apache/arrow/issues/38676ra   z@The 'dayfirst' option is not supported with the 'pyarrow' enginer   rV   r#  r)   )
r	   r   r   skipr   r   r   r   r=   r>   )r@   r  r#  rC   r   rX   r   rB   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>   )r@   r  r#  rC   rX   warning_msgrB   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)date1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': ''rM   c                 s   s    | ]
}t |ttfV  qd S r   )rK  r   str)r,   r   r"   r"   r#   r     s    
z9test_missing_parse_dates_column_raises.<locals>.<genexpr>r   FrN   rp  )rT   ru   usecolsr)   )r   r;   rK  rR  allr   r   r   r=   rW   r   )
r@   ru   r  r)   missing_colsrX   contentr   rZ   rh  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,2r_   r  r   )r)   ru   r  2r   1r8   )r   r  r   r   r:   r	   r=   r>   )r@   rX   rY   rh  rB   rC   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   rS   r)   rV   
2019-12-31r   rG   )r  r  r  )r   r   r	   r   r   r=   r>   r   r"   r"   r#   #test_date_parser_multiindex_columns  s   r  zparse_spec, col_namer  r  )a_b1_2)rd  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,6rM   FrN   r   rS   r  r  r   )r  3rG   )	r=   rW   r;   r   r   r	   r   r   r>   )r@   
parse_speccol_namerX   rY   rZ   rB   rC   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
    r_   zAThe 'thousands' option is not supported with the 'pyarrow' enginer   rS   rH   rR   )r)   r  rU   r  rg   r   z20-09-2001 01:00:00r  )r   r   r   r   r   r   r:   r  r	   r   r=   r>   )r@   rY   rX   r   rB   rC   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   FrN   r   r   T)r)   r]   z
2015-09-08z
2015-09-09)r   r   )r=   rW   r;   r   r   r   r	   r>   )r@   rX   rY   rZ   rB   r  rC   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-10r  r   r   r  r0   r  T)r)   r#  r+   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r  r  )	r
   r   r   r9   r=   assert_index_equalrW   r  r   )inputrC   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=   rW   r  r   r   r9   r  )r  r#  initial_valuerC   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  rg   r   r  r   r8   r  r   r"   r"   r#    test_infer_first_column_as_indexY  s   r  c                 C   r  )N%Y-%m-%dr  r  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
rv   Test#rg  )r:  r)   z
2012-10-01z
2015-05-15z
2017-09-09)r:   r   r	   r   r   rm  r=   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   r=   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,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   F)r)   r+   rw   r  rS   rH   r8   )	r   r   r
   r  r:   r   r	   r=   r>   )r@   rX   rY   expected_indexrh  r   rB   rC   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   r=   r>   r   r"   r"   r#   test_parse_dates_dict_format  s   r  zkey, parse_datesr  rd  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-2020rM   FrN   z	%d- %m-%Yr  r  r  )	r=   rW   r;   r   r   r   r	   r   r>   )r@   r  r)   rX   rY   rZ   rB   rC   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/   r8   )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:01rS   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   rS   )r0   r9   )r   r   r   r   r=   assert_series_equalr   r"   r"   r#    test_from_csv_with_mixed_offsets	  s   r   )o__doc__r   r   r   r   ior   dateutil.parserr   re   numpyr   r   r@  pandas._libs.tslibsr   pandasr   r	   r
   r   r   r   r   pandas._testing_testingr=   pandas.core.indexes.datetimesr   pandas.core.tools.datetimesr   pandas.io.parsersr   r   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowrD   rE   r\   parametrizer   rR  r   r   r   r   r   r   r   r   r   r  r
  r  r  r   r   r%  r.  r?  rB  rM  rU  rY  rZ  r^  r  r`  rf  ri  rn  rs  ru  from_tuplesrz  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    
'
"

 

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