
    Owgi                       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jB                  jE                  d      Z#ejB                  jI                  d      Z%ejB                  jI                  d      Z&e%d        Z'e%d        Z(e%d        Z)ejB                  jU                  dddg      d        Z+ejB                  jU                  de,e-eeg      ejB                  jU                  dddg      d               Z.ejB                  jU                  dddg      d        Z/d Z0d Z1d Z2e%d        Z3ejB                  jU                  dd ddggd!fd"d#ddgid$fg      d%        Z4d& Z5e%d'        Z6e&d(        Z7e&d)        Z8e%d*        Z9ejB                  ju                  d+,      ejB                  jU                  d-d.d/ggddggg      d0               Z;e%ejB                  jU                  d-ddgd1d2gg      d3               Z<e%ejB                  jU                  d4ddgddgg      d5               Z=e%ejB                  jU                  d6d7did8dig      d9               Z>d: Z?e%ejB                  jU                  d;d<ddgid<fd<ddgidfddggdfg      d=               Z@e%d>        ZAd? ZBd@ ZCejB                  jU                  d6i d4dAig      dB        ZDejB                  jU                  d-dC ej                  dDdEg      ddFhg      dG        ZFejB                  jU                  dHddg      ejB                  jU                  dIdJdKg      dL               ZGejB                  jU                  dHddg      ejB                  jU                  dIdMg      dN               ZHe%dO        ZIejB                  jU                  dPdQdRg      dS        ZJejB                  jU                  dPdQdRg      dT        ZKe%ejB                  jU                  dUdVd-d1gi e edWdDdX      gd1gY      fdVdddZ e ed[gd1\      g ]      fd^d-d1d_gi e edWdDdX       ed`dadb      ggd1d_gY      fd^dddgdZ e ej                   edWdDdX       ed`dadb      fgd1d_gc      g ]      fg      dd               ZMe%de        ZNejB                  jU                  dUdfddgddgidh e ediddEdjdd      dkdjg ediddEddd      dldmggg dnY      fdodddgddFgdpdh e edqddrdsd       edqddrdtdu      dvdwg edqddrdxd       edqddrdsdu      dvdyg edqddrdzd       edqddrdxdu      dvd{g edqddrdzd       edqddrdzdt      dvd|g edqddrd}d       edqddrdzdu      dvd{g edqddrd~d       edqddrd}du      dvd{ggg dY      fg      d        ZOd ZPejB                  jU                  ddd eQfdg      d        ZRejB                  jU                  ddd eQfdg      d        ZSd ZTe%d        ZUd ZVejB                  jU                  dd ed1ddgid      fd ed1g did      fg      ejB                  jU                  d-ddg      d               ZWd ZXe&ejB                  jU                  dg d      d               ZYejB                  jU                  ddd eddd      fdd eddd      fdd edddD      fg      d        ZZe&ejB                  jU                  ddd eddd      fdd eddd      fg      d               Z[d Z\e&ejB                  jU                  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	      d               Z]e%d        Z^e%d        Z_e%ejB                  jU                  dddggdfdddgidfg      d               Z`d Zae%d        Zbd ZcejB                  jU                  d ej                  ddd       ej                  ddd      g      d        Zee&d        Zfe%ejB                  jU                  ddd eQfdg      d               Zge%d        Zhd Zid ZjejB                  jU                  ddddggfddddgifg      dƄ        Zke%dǄ        ZldȄ Zme%dɄ        Zny)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           	      8   d }t        d      }| j                  t        d|dd|d      }g d}t        j                  |D cg c]  }t        j
                  |d	       c}d
      }t        g dg dg dd|      }t        j                  ||       y c c}w )Nc                     | j                  t        j                        } | j                  t              } t	        j
                  | d      S Nsunitastypenpfloat64intpdto_timedeltatimes    ^/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parserzCtest_read_csv_with_custom_date_parser.<locals>.__custom_date_parser/   3    {{2::&{{3t#..    a  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[  r   r   name)g>٬Vgzr0   g1)禛 D*Ar1   g D*Ag D*Ar1   )St$Px@r2   Gx$Px@r3   g9#Px@)enhindex)	r   read_csv_check_warningsFutureWarningr    TimedeltaIndexr!   r
   tmassert_frame_equal)all_parsersr%   testdataresultr#   iexpecteds          r$   %test_read_csv_with_custom_date_parserrC   ,   s    /
 	H 00*( 1 F /DDIqbooac:IPVWDRRC	

 H &(+ Js   Bc           	          d }t        d      }| j                  t        d|dd|d      }t        g dd	      }t	        d
g di|      }t        j                  ||       y )Nc                     | j                  t        j                        } | j                  t              } t	        j
                  | d      S r   r   r"   s    r$   r%   zUtest_read_csv_with_custom_date_parser_parse_dates_false.<locals>.__custom_date_parserW   r&   r'   ztime 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.   r4   )gzGqWg(\WgQXg(\WgGznXr7   )r   r9   r:   r   r
   r<   r=   )r>   r%   r?   r@   r#   rB   s         r$   7test_read_csv_with_custom_date_parser_parse_dates_falserF   T   s{    /
 	H 00*( 1 F D6RD	67H
 &(+r'   c           
      $   | }d}t        t        dddddd      dggddg	      }d
}t        j                  t        |d      5  |j                  t        |      dddddgid       }d d d        t        j                  |       y # 1 sw Y    xY w)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datarB   depr_msgdfs         r$   test_separator_date_conflictr^   w   s     F'D
4Ar1a
((	34vqkH
 	V  
	#	#X
 	
 __TN!Q(  
	
 "h'	
 	
s   $BBkeep_date_colTFc                 b   d}| }|r@|j                   dk(  r1t        j                  j                  d      }|j	                  |       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d/d0d'd1d2dd3gt        dddd4d      t        dddd.d      ddd5d6d'd1d7ddggg d89      }	|s|	j                  g d:d;      }	||	j                     }t        j                  ||	       y )<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                  ^    t        j                  t        j                  |       t              S )z
        Test date parser.

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

        Returns
        -------
        parsed : Series
        )rZ   )r	   try_parse_datesconcat_date_colsdu_parse)	date_colss    r$   r,   z2test_multiple_date_col_custom.<locals>.date_parser   s'     &&$$Y/
 	
r'   rU   rJ      actualnominal	X0X1X2X3X4X5X6X7X8)rX   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@)rm   rn   rp   rq   rr   rs   rt   ru   rv   rw   rx   rM   rq   rr   rs   axis)enginepytestmarkxfailapplymarkerr9   r:   r   r
   r   droprN   r<   r=   )
r>   r_   requestr[   rZ   r   r,   kwdsr@   rB   s
             r$   test_multiple_date_col_customr      s   D F)3 {{  X ! 
 	D!
$ "#$a&aV<&GD ,V++# 	
 !&F  q"b!,q"b"- q"b!,q"b"- q"b!,q"b"- q"b!,q"b"- q"b!,q"b"- q"b!,q"b"-EO	
`
c^H@ ==!3!=<
 H$$%F&(+r'   	containerdimrU   rJ   c                      d}dt         fdt        |      D              }t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nz0not all elements from date_cols are numpy arraysr   c              3   0   K   | ]  } g        y wN ).0_r   values     r$   	<genexpr>z,test_concat_date_col_fail.<locals>.<genexpr>7  s     =Qi(=s   rQ   )tupleranger   raises
ValueErrorr	   rh   )r   r   msgrj   r   s   `   @r$   test_concat_date_col_failr   1  sT     =CE=%*==I	z	- ,  +, , ,s    AA(c                    d}| }|r@|j                   dk(  r1t        j                  j                  d      }|j	                  |       d}d ddgddgg|g d	d
}t        j                  t        t        f|d      5   |j                  t        |      fi |}d d d        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7      }	|s|	j                  g d8d9      }	t        j                  |	       y # 1 sw Y   +xY w):Nra   rb   rc   rd   8The 'keep_date_col' keyword in pd.read_csv is deprecatedrU   rJ   rk   ro   )rX   r+   r_   ry   FrP   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   r   r   r   )X1_X2X1_X3rp   rq   rr   rs   rt   ru   rv   rw   rx   rM   r   r   )r   r   r   r   r   r<   rY   DeprecationWarningr:   r   r   r
   r   r   r=   )
r>   r_   r   r[   rZ   r   r\   r   r@   rB   s
             r$   test_multiple_date_colr   =  s   D F)3 {{  X ! 
 	D!IH AA'&G	D 
	#	#	]+8e
 9 !$8489
  q"b!,q"b"- q"b!,q"b"- q"b!,q"b"- q"b!,q"b"- q"b!,q"b"- q"b!,q"b"-EO	
`
c^H@ ==!3!=<&(+Q9 9s   :G  G
c                    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      }t	        g dg dg dg dg dgg d|      }|j
                  dk(  r2t        j                  d|d   z         j                  j                  |d<   t        j                  ||       y )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
rU   )rp   rq   rr   rs   rt   ru   rv   rw   )rX   r+   r-   ry   r|   r}   r~   r   r   r   r   rq   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   )rp   rr   rs   rt   ru   rv   rw   rN   r8   rb   
1970-01-01rr   )r   r   r   r   r
   r   r    to_datetimedtr#   r<   r=   )r>   r[   rZ   r   r@   r8   rB   s          r$   test_date_col_as_index_colr     s   D FsA	D V__Xd^4t4FT1b"a(T1b"a(T1b"a(T1b"a(T1b"a(	
 	E >>???	
 ;
H }}	! x~(EFIINN&(+r'   c                 n   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      }||j                     }t        j                  ||       y )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.5900rU   rJ   rk   rl   rX   r+   r,   rz   r{   Fr|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   rm   rn   r      rM   )
r    r   r9   r:   r   r
   r   rN   r<   r=   )r>   r[   r+   rZ   r   r@   rB   s          r$    test_multiple_date_cols_int_castr     s   	5 	  VA7KF "~~D
 ,V++# 	
 !&F dAr2q)8D!RR+H&RVWdAr2q)8D!RR+H&RVWq"b!,q"b"-	 q"b!,q"b"-	 q"b!,q"b"-	 q"b!,q"b"-	+	
8 ,;HF H$$%F&(+r'   c           
      *   | }d}|j                  t        dt        |      ddggd t        d      }t	        t        d      ddd	dt
        j                  dgt        d      dd
d	dt
        j                  dggg d      }t        j                  ||       y )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.25rz   r   rU   F)r+   rX   r,   r{   z05/31/2012, 15:30:00.029g     i@E   )0_1rJ   rk   r      rI      rM   )	r9   r:   r   r   r
   r   nanr<   r=   r>   rZ   r[   r@   rB   s        r$   &test_multiple_date_col_timestamp_parser   2  s    F2D ++#VH % , F  45 45	
( *+H. &(+r'   c                    | }d}d}t        j                  t        |d      5  |j                  t	        |      dddgi      }d d 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*+      }t        j                  |       y # 1 sw Y   xY w),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.0000rO   FrP   rn   rU   rJ   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   rn   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirrM   )r<   rY   r:   r   r   r
   r   r=   r>   rZ   r[   r\   r@   rB   s         r$   #test_multiple_date_cols_with_headerr   Z  s   FPD 	V  
	#	#X
 R $i!Q=PQR  q"b!,	 q"b!,	 q"b!,	 q"b!,	 q"b!,	 q"b!,	g=	
|	
IHT &(+]R Rs   !C66C?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                    | }d}t        j                  t        |      5  t        j                  t
        t        f|d      5  |j                  t        |      |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrO   r   FrP   r   )	r   r   r   r<   rY   r:   r   r   r   )r>   r[   r+   r   rZ   r\   s         r$   %test_multiple_date_col_name_collisionr     s    , F 	V  
z	- E''./xRW
 	E OOHTNOD	EE E	E 	EE Es#   #A=A1 A=1A:	6A==Bc           	          | }d}|j                  t        dt        |      ddgd d      }t        g dgg dt	        t        d	      gd
            }t        j                  ||       y )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
rz   r   c                 ~    t        j                  t        |       t        j                        j                  d       S )N)tz)tzinfo)r   fromtimestampr   r   utcreplacexs    r$   <lambda>z*test_date_parser_int_bug.<locals>.<lambda>  s/    h44SVMUU V 
 r'   F)r-   r+   r,   r{   )go?r   r   rI   gX5;N?rk   i90  rU   rk   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   )r9   r:   r   r
   r   r   r<   r=   r   s        r$   test_date_parser_int_bugr    s    F	8 	 ++#C
 !& , F 	
 
 Y456=NO? HB &(+r'   c                    | }t        t        j                  dd      t        d      j	                  d      d      }t        j
                  |j                  ddd d f<   t        j                  d	      5 }|j                  |       |j                  |d
dg      }t        j                  ||       d d d        y # 1 sw Y   y xY w)N
   r   dtype20010101ns)ABrk   rI   z__nat_parse_.csvr   r  r-   r+   )r
   r   aranger   as_unitr   ilocr<   ensure_cleanto_csvr   r=   )r>   rZ   r]   pathr@   s        r$   test_nat_parser    s     F	2Y/:&..t4	

B ffBGGAaCFO	+	, *
		$F
fb)	* * *s   6=B<<Cc                    d}| }|j                  t        dt        |      d       }|j                  t        |      d      }t	        j
                  ||       |j                  t        |      d      }t	        j
                  ||       y )	N3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
rz   c                 .    t        j                  | d      S )N%Y%m%d)r   strptimer   s    r$   r   z(test_csv_custom_parser.<locals>.<lambda>6  s    h//8< r'   )r,   Tr   r  )date_format)r9   r:   r   r   r<   r=   r>   r[   rZ   r@   rB   s        r$   test_csv_custom_parserr  *  s    D
 F++#<	 , F x~4@H&(+__Xd^_BF&(+r'   c                     d}| }|j                  t        |      d      }|j                  t        |      dd      }t        j                  ||       y )Nr  Tr   r   r  r   r   r<   r=   r  s        r$   #test_parse_dates_implicit_first_colr  >  sN    D
 F__Xd^_>Fx~MH&(+r'   c                     d}| }|j                  t        |      ddg      }t        ddd      j                  d       }t	        g dg dg d	d
|      }t        j                  ||       y )Nz8date,A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r   r  z1/1/2009rk   )periodsr/   abc)rU   rk   r   )rJ   r   r   r  r  Cr7   )r   r   r   
_with_freqr
   r<   r=   )r>   r[   rZ   r@   r8   rB   s         r$   test_parse_dates_stringr)  L  sk    D
 F__Xd^vF8_TFz16:EEdKEII>eH &(+r'   z#yearfirst is not surfaced in read_*rd   r+   r   r#   c                 $   d}| }|j                  t        dt        |      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      }t        g dg dd|      }t        j                  ||       y )Nz>date,time,B,C
090131,0010,1,2
090228,1020,3,4
090331,0830,5,6
Could not infer formatr   r    rU      r  rJ      r   rk   r      	date_timer  r/   )rU   rk   r   )rJ   r   rI   r  r'  r7   )	r9   UserWarningr   r   r   objectr
   r<   r=   )r>   r+   r[   rZ   r@   r8   rB   s          r$   test_yy_format_with_year_firstr5  `  s    D
 F++  , F T1b!R+T1b"b!,T1b!R+	

 E yy9GH&(+r'   r#  r%  c           	          d}| }t        t        ddd      gdgt        ddd      gd      }|j                  ddg      }|j                  t	        |      d	dg|d
      }t        j                  ||       y )Nza,b,c
01/01/2010,1,15/02/2010  rU   rJ      r"  r#  r$  r   T)r-   r+   dayfirst)r
   r   	set_indexr   r   r<   r=   )r>   r+   r[   rZ   rB   r@   s         r$   test_parse_dates_column_listr;  }  s     ,DFa#$A3htQ6K5LMH !!3*-H__1a&kD  F &(+r'   r-   c                    d}| }t        j                  t        ddd      t        ddd      t        ddd      fdgddg	      }|dd
gk(  r|j                  d
d      }t	        g dg dg dg dg dg dg dg dg dg	g d|      }|j                  t        dt        |      |d      }t        j                  ||       y )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,  rU   rJ   rk   )onetwothreeindex1index2ry   r   )r#  rU   rJ   )r$  rk   r   )r%  r   r   r&  r   r+  Tr  )
r   from_productr   	swaplevelr
   r9   r3  r   r<   r=   )r>   r-   r[   rZ   r8   rB   r@   s          r$   test_multi_index_parse_datesrE    s    
D F##dAq!8D!Q#7$19MN#	
 "E QF1%
	
  H ++  , F &(+r'   kwargsr9  	day_firstc                    | }d}dv r|j                  t        dt        |      g dfdddddg		      }t        t	        d
dd      t	        d
dd      t	        d
dd      gd      }t        g ddt        j                  dgd|ddg      }t        j                  ||       y d}t        j                  t        |      5  |j                  t        dt        |      g dfddgdddg	       d d d        y # 1 sw Y   y xY w)Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r9  rz   )r#   QNTUc                     t        | fi S r   ri   drF  s    r$   r   z5test_parse_dates_custom_euro_format.<locals>.<lambda>  s    (1"7"7 r'   r   TNA)ry   r,   rX   r-   r+   	na_valuesr7  rU   r-  rJ   r#   r.   )rU   rU   rU   )rI  rJ  rI  rJ  r8   rN   z.got an unexpected keyword argument 'day_first'r   c                     t        | fi S r   rL  rM  s    r$   r   z5test_parse_dates_custom_euro_format.<locals>.<lambda>  s    hq&;F&; r'   )ry   r,   skiprowsr-   r+   rP  )r9   r:   r   r   r   r
   r   r   r<   r=   r   r   	TypeError)r>   rF  rZ   r[   r]   	exp_indexrB   r   s    `      r$   #test_parse_dates_custom_euro_formatrV    s    FD
 V++'TN&7f , 

 dAr"HT1a$8(4A:NO
	 QN3%L

 	b(+>]]9C0 	**+*; & + 
	 	 	s   /C::Dc                    | }d}|j                  t        |      dd      }|j                  dk(  r |j                  j	                  d      |_        t        ddgit        t        d	      gd
            }|j                  dk(  rt        j                  }nt        j                  }t        j                  ||       |j                  j                  |u sJ y )NzDate,x
2012-06-13T01:39:00Z,0.5r   Tr  rb   r
  r   g      ?z2012-06-13 01:39:00+00:00rL   r.   r7   )r   r   r   r8   r  r
   r   r   pytzr   r   r<   r=   r   )r>   rZ   r[   r@   rB   expected_tzs         r$   test_parse_tz_awarerZ    s    F-D__Xd^qd_KF}}	!||++D1	seE9-H#I"JQWXH }}	!hhll&(+<<??k)))r'   zparse_dates,index_colrn   c                 b   | }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)*      }|j                  d+      }t        |t              sd,|j
                  _        d-}t        j                  t        |d./      5  |j                  t        |      ||0      }d d d        t        j                  |       y # 1 sw Y    xY w)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
r|   rU   r}   r~   r   KORD1r   r   r   r   r   r   r   KORD2r   r   r   r   r   KORD3r   r   r   KORD4r   r   r   r   r   r   KORD5r   r   r   r   r   KORD6r   r   r   rM   rn   date_NominalTimerO   FrP   r+   r-   )r
   r   r:  
isinstancedictr8   r/   r<   rY   r:   r   r   r=   )r>   r+   r-   rZ   r[   rB   r\   r@   s           r$   test_multiple_date_cols_indexrf    s    FD  q"b!,	 q"b!,	 q"b!,	 q"b!,	 q"b!,	 q"b!,	g=	
|	
IHT !!),Hk4(0 	V  
	#	#X
 
 TNy ! 

 &(+
 
s   (D%%D.c                    | }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$%      }|j                  d&      }d'}t        j                  t
        |d()      5  |j                  t        |      d&dd*gid&d*+      5 }t        |      }d d d        d d d        t        j                  d   |d d*        t        j                  |d   |d*d,        t        j                  |d*   |d,d         y # 1 sw Y   fxY w# 1 sw Y   jxY w)-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
r|   rU   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   )rn   r   
actualTimer  r  r'  Dr   rM   rn   rO   FrP   rJ   )r+   r-   	chunksizer   )
r
   r   r:  r<   rY   r:   r   r   listr=   )r>   rZ   r[   rB   r\   readerchunkss          r$   test_multiple_date_cols_chunkedro  p  s   FD  q"b!,	 q"b!,	 q"b!,	 q"b!,	 q"b!,	 q"b!,	g=	
| I@HB !!),H 	V  
	#	#X
 	" __TN"QF+	  
 	"
 &\F	"	" &)Xbq\2&)Xa]3&)Xab\2	" 	"	" 	"s$   #E'*E6E'E$	 E''E0c                    | }d}d}t        j                  t        t        f|d      5  |j	                  t        |      dddgid      }d d d        t        j                  t        t        f|d      5  |j	                  t        |      ddd	d
gi      }d d d        t        j                         y # 1 sw Y   lxY w# 1 sw Y   ,xY w)Nrh  rO   FrP   rn   rU   rJ   rc  r   nominalTimer  )r<   rY   r:   r   r   r   r=   )r>   rZ   r[   r\   with_indices
with_namess         r$   )test_multiple_date_col_named_index_compatrt    s    FD 	V  
	#	#	*+8e
 
 TNQF(;y ' 

 
	#	#	*+8e
 
 __TN"V]$;< % 


 ,
3
 

 
s   "B65"C6B?Cc                    | }d}d}t        j                  t        t        f|d      5  |j	                  t        |      ddgdddgi	      }d d d        t        j                  t        t        f|d      5  |j	                  t        |      dddgi
      }d d d        j                  ddg      }t        j                  |       y # 1 sw Y   ~xY w# 1 sw Y   ?xY w)Nrh  rO   FrP   rn   r   rU   rJ   r  r   )r<   rY   r:   r   r   r   r:  r=   r   s         r$   ,test_multiple_date_col_multiple_index_compatrv    s    FD 	V  
	#	#	*+8e
 
 TNy$&7iRSUVQWEX ! 

 
	#	#	*+8e
 T ??8D>	Aq6?R?ST
 !!9d"34H&(+
 
T Ts   $C
7!C
CCr'  c                     | }d}d}t        j                  t        |      5   |j                  t	        |      fddi| d d d        y # 1 sw Y   y xY w)NSOnly booleans, lists, and dictionaries are accepted for the 'parse_dates' parameterA,B,C
    1,2,2003-11-1r   r+   r'  r   r   rT  r   r   )r>   rF  rZ   r   r[   s        r$   *test_read_with_parse_dates_scalar_non_boolr{    s_     F	7 D 
y	, CBCB6BC C Cs   A

ArU   r   r   rk   c                     | }d}d}t        j                  t        |      5  |j                  t	        |      d       d d d        y # 1 sw Y   y xY w)Nrx  ry  r   r|  r   rz  )r>   r+   rZ   r   r[   s        r$   'test_read_with_parse_dates_invalid_typer~     sQ    F	7 D 
y	, :D9: : :s   AAcache_datesr   r    c                 j    | }t        | dt        dz   z        }|j                  |d ddgdg|       y )N,
rU   foobar)rX   ry   r+   r  )r   r   r   )r>   r  r   rZ   r   s        r$   test_bad_date_parser  .  sJ    
 FUG3-$4q$89:A
OO	enG  r'   0c           
          | }t        | ddz        }|j                  dk(  rd }n|rd }nt        }|j                  |d|d ddgdg|d       y )	Nr  iP  rb   r+  r  r  F)rX   ry   r+   r  r{   )r   r   r3  r9   )r>   r  r   rZ   r   warns         r$    test_bad_date_parse_with_warningr  ?  sq    
 FUG3-5()A}}	!
 	 
"" 	enG % # 	r'   c                     | }d}|j                  t        |      dgd      }t        t        ddd      dgt        j
                  dggddg	      }t        j                  ||       y )
NDate,test
2012-01-01,1
,2rL   F)r+   	na_filteri  rU   rJ   testrM   )r   r   r
   r   r    NaTr<   r=   r   s        r$   test_parse_dates_empty_stringr  _  si     F(D__Xd^&U_SF
4A
	"RVVQK066:JH &(+r'   rm  r9   read_table_check_warningsc           	      Z    | }d} t        ||      t        dt        |      dgddd       y )Nr  z2The argument 'infer_datetime_format' is deprecatedrL   T,F)r+   infer_datetime_formatrV   r{   )getattrr:   r   )r>   rm  rZ   r[   s       r$   .test_parse_dates_infer_datetime_format_warningr  l  s:    
 F(DGFF<H" %r'   c           
          | }d}d}t        j                  t        |      5   t        ||      t        dt        |      dgt        j                  dd       d d d        y # 1 sw Y   y xY w)	Nr  z/Cannot use both 'date_parser' and 'date_format'r   rz   rL   ISO8601r  )r+   r,   r  rV   )r   r   rT  r  r:   r   r    r   )r>   rm  rZ   r[   r   s        r$   ,test_parse_dates_date_parser_and_date_formatr    sf    
 F(D
;C	y	, 	
'TN!	
	
 	
 	
s   6A!!A*zdata,kwargs,expectedza
04.15.2016i  r8  rM   rc  z
2016-04-15r.   rQ  za,b
04.15.2016,09.16.2013r$  rH   	      rB  c                 p    | } |j                   t        |      fddi|}t        j                  ||       y )NrW   .r  r>   r[   rF  rB   rZ   r@   s         r$   %test_parse_dates_no_convert_thousandsr    s8    F FV__Xd^EsEfEF&(+r'   c           	         d}| }|j                  t        dt        |      ddgdddgit        j                        }t        dddd	dd      d
dgt        dddddd      ddgg}t        |g d      }t        j                  ||       y )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.
rz   r   rU   r0  r     r   r  r         $@rI         ?      &@)r0  )r  r#  )r  r$  rM   )	r9   r:   r   r    r   r   r
   r<   r=   )r>   r[   rZ   r@   expected_datarB   s         r$   ,test_parse_date_time_multi_level_column_namer    s    D F++#1v 1a&)NN , F 
$1aA	&T2	$1aA	&T2M 0UVH&(+r'   zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r0  rX   r+   r  r  r   r  r  )r0  r#  r$  r   rl   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   c                     | } |j                   t        dt        |      fdt        j                  i|ddi}||j
                     }t        j                  ||       y )Nrz   r,   r{   F)r9   r:   r   r    r   rN   r<   r=   r  s         r$   test_parse_date_timer    sm    R F+V++# NN	
  !&F H$$%F&(+r'   c           	          | }d}|j                  t        dt        |      ddg did d      }t        t	        d	d
d      dgt	        d	dd
      dggddg      }t        j                  ||       y )N-year,month,day,a
2001,01,10,10.
2001,02,1,11.rz   r   ymd)r   rU   rJ   c                     | S r   r   r   s    r$   r   z(test_parse_date_fields.<locals>.<lambda>9  s    a r'   FrX   r+   r,   r{   r  rU   r  r  rJ   r  r#  rM   )r9   r:   r   r
   r   r<   r=   r   s        r$   test_parse_date_fieldsr  0  s    F<D++#I& % , F 
4B
	&$1)=t(DEH &(+r'   )keyr   r  r,   c                 0    t        j                  | d      S )N%Y %m %d %H %M %Sformatr    r   r   s    r$   r   r   I  s    bnnQ/BC r'   )r  r  Nc                     | }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      }t	        j
                  ||       y )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.
rz   r   ymdHMSr   rU   rJ   rk   r   r   r  r{   Fr  rU   r   r  r   r  r  r  r  r#  r$  rM   r9   r   r
   r   r<   r=   r>   r  r   r  rZ   r[   r@   rB   s           r$   test_parse_date_all_fieldsr  D  s     FD
 ,V++# 12 , !&F dAq"a+S$7dAq"a+S$7	
 %H &(+r'   c                 0    t        j                  | d      S )N%Y %m %d %H %M %S.%fr  r  r   s    r$   r   r   n  s    bnnQ/EF r'   )r  r  Nc                     | }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gt        d	d
ddddd      ddggg d      }t	        j
                  ||       y )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.
rz   r   r  r  r  r{   Fr  rU   r   r  i@ )microsecondr   r  i  r  r  r  rM   r  r  s           r$    test_datetime_fractional_secondsr  i  s     FD
 ,V++# 12 , !&F dAq"a?dKdAq"a?dK	
 %H &(+r'   c           	         | }d}d }|j                  t        dt        |      ddddgi|d      }t        t	        d	dd      d
dgt	        d	dd      ddggg d      }|d   j                  d      |d<   t        j                  ||       y )Nr  c           
          t        | |      D cg c]%  \  }}t        t        |      t        |      d      ' c}}S c c}}w )NrU   )yearmonthday)zipr   r   )yymmyms       r$   parse_functionz$test_generic.<locals>.parse_function  s1    CFr2;O41a#a&AA6OOOs   *>rz   r   ymrU   Fr  r  r  r  rJ   r  )r  r  r#  rM   datetime64[ns])r9   r:   r   r
   r   r   r<   r=   )r>   rZ   r[   r  r@   rB   s         r$   test_genericr    s    F<DP ++#Aq6N" % , F 
tQ
B	%T1a(8!T'BC"H d^**+;<HTN&(+r'   c           	      $   | }d}d }|j                  t        dt        |      |dddgiddg      }t        j                  d	gd
z  d      }t        ddgd
z  it        j                  |g dgddg            }t        j                  ||       y )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           	          	 | dz   |z   }t	        j
                  |d      S # t         $ r< t        | |      D cg c]  \  }}t        j                  ||       nc c}}w }}}Y [w xY w)NTdatetime64[s]r  )rT  r  r   combiner   array)r   r#   arrrN  ts        r$   r,   z:test_date_parser_resolution_if_not_ns.<locals>.date_parser  sh    	Es(T/C xx?33  	E69"dmDda8##Aq)DDCD	Es   ! A& A
A&%A&rz   r   r   r#   prn)r,   r+   r-   z2013-11-03T19:00:00rk   r  r  rxstatus00E80000)~   r   rK   rB  )r[   r8   )
r9   r:   r   r   r  r
   r   from_arraysr<   r=   )r>   rZ   r[   r,   r@   	datetimesrB   s          r$   %test_date_parser_resolution_if_not_nsr    s     FD4 ++#&&!12u% , F /014OLI:,*+$$&u%
H &(+r'   c                     | }d}|j                  t        |      dg      }ddgddgddgg}t        |d	dg
      }t        j                  ||       y )Nz+case,opdate
7,10/18/2006
7,10/18/2008
621, opdater   r   z
10/18/2006z
10/18/2008im   caserM   r   r   r
   r<   r=   )r>   rZ   r[   r@   r  rB   s         r$   (test_parse_date_column_with_empty_stringr    s_    F;D__Xd^(_DF&L(9C:FM0BCH&(+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                 l    | }|j                  t        |      |      }t        j                  ||       y )Nr   r  )r>   r[   rB   r+   rZ   r@   s         r$   test_parse_date_floatr    s/    & F__Xd^_EF&(+r'   c           
          | }d}|j                  t        |      dg      }t        dddt        t	        d            	      j                  d       }|g d
d}t        |      }t        j                  ||       y )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>   rZ   r[   r@   dtir  rB   s          r$   test_parse_timezoner    s~    F1D __Xd^$_@F
#!Ic*+	
 j  'JKM'H&(+r'   date_string)z
32/32/2019z
02/30/2019z
13/13/2019z13/2019z
a3/11/2018z
10/11/2o17c                     | }t        d|gid      }|j                  t        |      d dg      }t        j                  ||       y )Nr   r4  r  r  )r
   r   r   r<   r=   )r>   r  rZ   rB   r@   s        r$   !test_invalid_parse_delimited_dater    sQ     F!k]+8<H__C  F
 &(+r'   zdate_string,dayfirst,expectedz
13/02/2019i  rK   z
02/13/2019z
04/02/2019c                    | }t        d|gid      }|j                  dk(  r^|st        j                  d       d}t        j                  t
        |      5  |j                  t        |      d |dg	       d d d        y |j                  t        |      d |dg	      }t        j                  ||       y # 1 sw Y   y xY w)
Nr   r  r  rb   z,https://github.com/apache/arrow/issues/38676rd   z@The 'dayfirst' option is not supported with the 'pyarrow' enginer   rX   r9  r+   )
r
   r   r   skipr   r   r   r   r<   r=   )r>   r  r9  rB   r   rZ   r   r@   s           r$   )test_parse_delimited_date_swap_no_warningr    s     F!hZ0@AH}}	!KKMNP]]:S1 	OO%dXTUSV  	 	__dXA3  F &(+	 	s    B66B?c                     | }t        d|gid      }d}|j                  t        |t        |      d |dg      }t	        j
                  ||       y )Nr   r  r  zParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.r  )r
   r9   r3  r   r<   r=   )r>   r  r9  rB   rZ   warning_msgr@   s          r$   +test_parse_delimited_date_swap_with_warningr  :  si     F!hZ0@AH	J  ++C , F &(+r'   c                      t        j                  t        d      5  t        j                  g d       d d d        y # 1 sw Y   y xY w)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$   6test_parse_multiple_delimited_dates_with_swap_warningsr  X  s>    	5
 Q 	OPQ Q Qs	   =Az)names, usecols, parse_dates, missing_colsr  z
date, time)date1time1temperaturer  r  c           	      h   | }t        d      }d| d}d}t        }	t        |t              rt	        d |D              rd }	t        j                  t        |      5  t        j                  |	|d      5  |j                  |d	|||
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': ''rO   c              3   H   K   | ]  }t        |t        t        f        y wr   )rd  r   str)r   r   s     r$   r   z9test_missing_parse_dates_column_raises.<locals>.<genexpr>  s       -&'
1sCj!-s    "r   FrP   r  )rV   ry   usecolsr+   )r   r:   rd  rl  allr   r   r   r<   rY   r   )
r>   ry   r  r+   missing_colsrZ   contentr   r\   r  s
             r$   &test_missing_parse_dates_column_raisesr  e  s    0 F@AG7~Q
GC 	V  D+t$ -+6- * 	z	- ''HuU 	OOSwK  	 	 	 s$   B(4BB(B%	!B((B1c                     | }t        d      }t        }|j                  dk(  rt        t        f}|j	                  |d|dgdg      }t        dddgidd	g
      }t        j                  ||       y )Nzx,y
1,2rb   r+  r  )r+   ry   r  2r   1r7   )r   r3  r   r   r9   r
   r<   r=   )r>   rZ   r[   r  r@   rB   s         r$   test_date_parser_and_namesr    s     FN#DD}}	!/0++ Ee , F #Sz*3*=H&(+r'   c                     | }d}|j                  t        |      dgddg      }t        t        d      j	                  d      dgd	      }t        j                  ||       y )
Nza,b
1,2
2019-12-31,6r#  r  r   rU   r+   rX   
2019-12-31r
  rI   )r  r$  r
  )r   r   r
   r   r  r<   r=   r   s        r$   #test_date_parser_multiindex_columnsr    se    FD __Xd^*qRSf_UF|,44T:LH &(+r'   zparse_spec, col_namer  r  )a_b1_2)r  r  c                 ,   | }d}d}t        j                  t        |d      5  |j                  t	        |      |ddg      }d d d        t        |t        d      j                  d	      d
dgi      }t        j                  |       y # 1 sw Y   HxY w)Nza,b,c
1,2,3
2019-12,-31,6rO   FrP   r   rU   r  r  r
  )r%  3rI   )	r<   rY   r:   r   r   r
   r   r  r=   )r>   
parse_speccol_namerZ   r[   r\   r@   rB   s           r$   0test_date_parser_multiindex_columns_combine_colsr    s     FD
 	V  
	#	#X
 
 TN"q6 ! 

 	9\*2248*qcJH &(+
 
s    B

Bc                    d}| }|j                   dk(  rHd}t        j                  t        |      5  |j	                  t        |      dgddgd       d d d        y |j                  t        d	t        |      dgddgd      }t        d
dgt        d      gdz  d      }t        j                  ||       y # 1 sw Y   y xY w)Nz2A,B,C
    1,3,20-09-01-01
    2,4,20-09-01-01
    rb   zAThe 'thousands' option is not supported with the 'pyarrow' enginer   rU   rJ   rT   )r+   r  rW   r+  rk   r   z20-09-2001 01:00:00r2  )r   r   r   r   r   r   r9   r3  r
   r   r<   r=   )r>   r[   rZ   r   r@   rB   s         r$   "test_date_parser_usecols_thousandsr    s    D
 F}}	!Q]]:S1 	OOCA	  	 	++ CA , F 1vY7L-M,NQR,RSTH&(+%	 	s   "B77C c                 &   | }d}d}t        j                  t        |d      5  |j                  t	        |      ddgid      }d d d        t        d	      t        d
      g}t        ||d      }t        j                  |       y # 1 sw Y   DxY w)NzA
20150908
20150909
r   FrP   r   r  T)r+   r_   z
2015-09-08z
2015-09-09)r   r  )r<   rY   r:   r   r   r   r
   r=   )r>   rZ   r[   r\   r@   r  rB   s          r$   )test_parse_dates_and_keep_original_columnr    s     FD JH		#	#X
 
 TN#t ! 

 |,i.EFM-mDEH&(+
 
s   !BBc                     d} t        ddgdd d      }d}t        t        |       dgdd	      j                  }t	        j
                  ||       t	        j                  t        |
      5  t        t        |       dgdd	      j                  }d d d        t	        j
                  |       d} t        ddgdd      }t        t        |       dgdd	      j                  }t	        j
                  ||       t	        j                  t        |
      5  t        t        |       dgdd	      j                  }d d d        t	        j
                  |       y # 1 sw Y   xY w# 1 sw Y   ,xY w)Nzdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10r  r   r  r  r/   r  T)r+   r9  r-   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r4  r1  )	r   r   r   r8   r<   assert_index_equalrY   r3  r   )inputrB   r  res1res2res5res6s          r$   test_dayfirst_warningsr&    se    +E	|$,<4fH	J  fXe 	 (D) 
	#	#K{	C UO&EV

% 	 (D) +ElL1OH fXe 	 (D) 
	#	#K{	C UO&EV

% 	 (D)3 * s   *$E$E!E!E*zdate_string, dayfirstz	31/1/2014zsecond date is single-digit)idz	1/31/2014zfirst date is single-digitc                    d|  }t        dgdd d      }d}t        j                  t        |      5  t	        t        |      dgd|      j                  }d d d        t        j                  |       y # 1 sw Y    xY w)	Nzdate
z
2014-01-31r  r   r  r  r   )r+   r-   r9  )r   r<   rY   r3  r   r   r8   r   )r  r9  initial_valuerB   r  ress         r$   &test_dayfirst_warnings_no_leading_zeror+  6  s    " [M*M	.TH	J  
	#	#K{	C ]#	

 % 	 (C( s   $A66A?c                     | }d}|j                  t        |      dg      }t        dddddg	      }t        j                  ||       y )
Nza,b,c
1970-01-01,2,3,4r#  r   r
  rk   r   r"  r   r7   r  r   s        r$    test_infer_first_column_as_indexr-  Y  sT     F$D__E  F s3L>JH&(+r'   c                 0    t        j                  | d      S )N%Y-%m-%dr  r  r   s    r$   r   r   j  s    "..:"F r'   )r  r/  Nc           
         | }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        j                  ||       y )
Nz*Test
2012-10-01
0
2015-05-15
#
2017-09-09
rz   Test#r  )rP  r+   z
2012-10-01z
2015-05-15z
2017-09-09)r9   r   r
   r   r    r  r<   r=   r  s           r$   &test_replace_nans_before_parsing_datesr3  f  s     FD ,V++# C:&H ,F ,',','	

H &(+r'   c                     | }d}|j                  t        |      ddg      }t        dgt        d      gd      }|d   j	                  d      |d<   t        j                  ||       y )	Nza,b
1,2019-12-31
stringr$  )r  r+   r  r  r#  r$  r#  )r   r   r
   r   r   r<   r=   r   s        r$   !test_parse_dates_and_string_dtyper7    sm     FD __Xd^8#_OFuIl,C+DEFHSM((2HSM&(+r'   c                    | }d}|j                   dk(  rt        ddgdd      }d }nt        dd	gd
d      }t        }d}|j	                  ||t        |      ddd      }t        dddgi|      }t        j                  ||       y )Nz7a,b
27.03.2003 14:55:00.000,1
03.08.2003 15:20:00.000,2rb   z27.03.2003 14:55:00.000z03.08.2003 15:20:00.000r4  r#  r1  z2003-03-27 14:55:00z2003-08-03 15:20:00r  z1when dayfirst=False \(the default\) was specifiedTr   F)r+   r-   r{   r$  rU   rJ   r7   )	r   r   r   r3  r9   r   r
   r<   r=   )r>   rZ   r[   expected_indexr  r   r@   rB   s           r$   test_parse_dot_separated_datesr:    s    FD }}	!&(AB

 &"$9:"

 
>C++ % , F #1vn=H&(+r'   c                     | }d}|j                  t        |      dddddg      }t        t        d      t        d	      gt        d      t        d	      gd      }t	        j
                  ||       y )
N/a,b
2019-12-31,31-12-2019
2020-12-31,31-12-2020r/  z%d-%m-%Yr6  r#  r$  r  r+   r  
2020-12-31)r   r   r
   r   r<   r=   r   s        r$   test_parse_dates_dict_formatr?    s    FD __$:6#J  F
 L)9\+BCL)9\+BC	
H &(+r'   zkey, parse_datesr  r  c                 *   | }d}d}t        j                  t        t        f|d      5  |j	                  t        |      |di|      }d d d        t        |t        d      t        d      gi      }t        j                  |       y # 1 sw Y   AxY w)	Nza,b
31-,12-2019
31-,12-2020rO   FrP   z	%d- %m-%Yr=  r  r>  )	r<   rY   r:   r   r   r   r
   r   r=   )r>   r  r+   rZ   r[   r\   r@   rB   s           r$   (test_parse_dates_dict_format_two_columnsrA    s    
 FD
 	V  
	#	#	*+8e
 
 TNk(: ! 

 )L)9\+BC	
H
 &(+
 
s    B		Bc           	          | }d}|j                  t        |      ddidd      }t        ddd	git        t	        d
      t	        d      gd            }t        j                  ||       y )Nr<  r#  r/  Tr   )r  r+   r-   r$  z
31-12-2019z
31-12-2020r  r>  r.   r7   )r   r   r
   r   r   r<   r=   r   s        r$   "test_parse_dates_dict_format_indexrC    s     FD __S*$54ST  F ,-	
 Y|,i.EFSQ	H &(+r'   c                    | }d}|j                  t        |      dg      }|j                  dk(  r!|d   j                  j	                  d      |d<   t        t        d      t        d      gdd	      }t        j                  ||       y )
Nz/a,b
2000-01-01 00:00:00,1
2000-01-01 00:00:01,1r#  r   rb   r
  z2000-01-01 00:00:00z2000-01-01 00:00:01rU   r6  )	r   r   r   r   r  r
   r   r<   r=   r   s        r$   test_parse_dates_arrow_enginerE   	  s    FD __Xd^#_?F}}	!Sknn,,T2s /0/0 	
H &(+r'   c                     | }d}|j                  t        |      dg      d   }t        t        d      t        d      gdddg      }t	        j
                  ||       y )	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   rU   )r/   r8   )r   r   r   r   r<   assert_series_equalr   s        r$    test_from_csv_with_mixed_offsetsrH  	  sh    FDD__Xd^#_?DF1212	
 !fH 68,r'   )o__doc__r   r   r   r   ior   dateutil.parserr   ri   numpyr   r   rX  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_pyarrowrC   rF   r^   parametrizer   rl  r   r   r   r   r   r   r   r   r  r  r  r  r)  r   r5  r;  rE  rV  rZ  rf  ro  rt  rv  r{  r  r~  r  r  r  r  r  from_tuplesr  r  r  r  r:   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  paramr+  r-  r3  r7  r:  r?  rA  rC  rE  rH  r   r'   r$   <module>r\     sB  
   -    '    4 8 &[[''C
 ''8{{&&~6 $, $,N , ,D ( (6 4-8Z, 9Z,z tUE6&BCA', ( D, 4-8C, 9C,L+,\=,@%,P \, \,~  VH?	
 Aq6N,	
*
E+*
E8,v * *$ , ,& 
, 
, , ,& ?@66*:);q!fX(FG, H A,6 !Q#s(<=, > , 1v1v&67/, 8 /,d Z$6d8K#LM* N *Z*( 1a&9%QF(;Q'?Aq6(AOc,	 
c,L _3 _3D4B,: Bc(:#;<C =C xrxxA/?!Q(HI
: J
: u65"+. / 7 u63%( ) 7< 	, 	, (*EF  (*EF

"  SE"xa,-u=	
  q1M<.sCRP	
 )S#J'4B'$2)>?@3PS*	
 ) 1v6,j,,tQ+XdAr-BCDSRUJ 			
%@,A B, , ,2 
 +1v)>?dAq"a3S"=dAq!Q2C> 0	
"= 1v1a&,QR !q"b!4 q"b"5	 !q"b!4 q"b"5	 !q"b!4 q"b"5	 !q"b!4 q"b"5	 !q"b!4 q"b"5	 !q"b!4 q"b"5	?%L 4O(3	
!DGP,QGP,$,(  C	

 	3
,
,4  F	

 	6
,
,4,0 #, #,L,  3s/AB)T	

 7s@AS	
	 u6, 7,,. U,	 
, # 
tXdAr23	uhtQ34	tXdAq12
,
,. # 
uhtQ34	tXdAr23	, ,(	Q /	w(,7	wFV,	w&&)*L9	w!Vv.	w!V-v6	w&&!12LA	w&&)62LA	*D662BLQ-m$f		
&' (0 , ,& 	, 	, z
"	#^4
Z0	1<@, ,.,B , ,&-*` ,	

 	+	
))( 	, 	, 	FV), ,@ 	, 	,,B,* %1a&*UUQFO,DE,,0 , ,&,. - -r'   