
    Egi                       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             Z'e%d             Z(e%d             Z)ej!        *                    dddg          d             Z+ej!        *                    de,e-eeg          ej!        *                    dddg          d                         Z.ej!        *                    dddg          d             Z/d Z0d Z1d Z2e%d             Z3ej!        *                    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j!        :                    d+,          ej!        *                    d-d.d/ggddggg          d0                         Z;e%ej!        *                    d-ddgd1d2gg          d3                         Z<e%ej!        *                    d4ddgddgg          d5                         Z=e%ej!        *                    d6d7did8dig          d9                         Z>d: Z?e%ej!        *                    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j!        *                    d6i d4dAig          dB             ZDej!        *                    d-dC ejE        dDdEg          ddFhg          dG             ZFej!        *                    dHddg          ej!        *                    dIdJdKg          dL                         ZGej!        *                    dHddg          ej!        *                    dIdMg          dN                         ZHe%dO             ZIej!        *                    dPdQdRg          dS             ZJej!        *                    dPdQdRg          dT             ZKe%ej!        *                    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jL         edWdDdX           ed`dadb          fgd1d_gc          g ]          fg          dd                         ZMe%de             ZNej!        *                    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j!        *                    ddd eQfdg          d             ZRej!        *                    ddd eQfdg          d             ZSd ZTe%d             ZUd ZVej!        *                    dd ed1ddgid          fd ed1g did          fg          ej!        *                    d-ddg          d                         ZWd ZXe&ej!        *                    dg d          d                         ZYej!        *                    ddd eddd          fdd eddd          fdd edddD          fg          d             ZZe&ej!        *                    ddd eddd          fdd eddd          fg          d                         Z[d 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	          d                         Z]e%d             Z^e%d             Z_e%ej!        *                    dddggdfdddgidfg          d                         Z`d Zae%d             Zbd Zcej!        *                    d ejd        ddd           ejd        ddd          g          d             Zee&d             Zfe%ej!        *                    ddd eQfdg          d                         Zge%d             Zhd Zid Zjej!        *                    ddddggfddddgifg          dƄ             Zke%dǄ             ZldȄ Zme%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           	         d }t          d          }|                     t          d|dd|d          }g d}t          j        d |D             d	          }t          g d
g dg dd|          }t          j        ||           d S )Nc                     |                      t          j                  } |                      t                    } t	          j        | d          S Nsunitastypenpfloat64intpdto_timedeltatimes    \/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/io/parser/test_parse_dates.py__custom_date_parserzCtest_read_csv_with_custom_date_parser.<locals>.__custom_date_parser/   ;    {{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[  c                 :    g | ]}t          j        |d           S )r   r   )r    r!   ).0is     r$   
<listcomp>z9test_read_csv_with_custom_date_parser.<locals>.<listcomp>G   s'    IIIqboac:::IIIr'   name)g>٬Vgzr4   g1)禛 D*Ar5   g D*Ag D*Ar5   )St$Px@r6   Gx$Px@r7   g9#Px@)enhindex)r   read_csv_check_warningsFutureWarningr    TimedeltaIndexr
   tmassert_frame_equalall_parsersr%   testdataresultr#   expecteds         r$   %test_read_csv_with_custom_date_parserrG   ,   s    / / /
 	 H 00*( 1  F /..DIIDIIIPVWWWDRRRRRRCCC	
 	

   H &(+++++r'   c           	          d }t          d          }|                     t          d|dd|d          }t          g dd	          }t	          d
g di|          }t          j        ||           d S )Nc                     |                      t          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    `@r2   r8   )gzGqWg(\WgQXg(\WgGznXr;   )r   r=   r>   r   r
   r@   rA   rB   s         r$   7test_read_csv_with_custom_date_parser_parse_dates_falserJ   T   s    / / /
 	 H 00*( 1  F DDD6RRRD	6667  H
 &(+++++r'   c           
      J   | }d}t          t          dddddd          dggddg	          }d
}t          j        t          |d          5  |                    t          |          dddddgid           }d d d            n# 1 swxY w Y   t          j        ||           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   rA   )rC   parserdatarF   depr_msgdfs         r$   test_separator_date_conflictrb   w   s    F'D
4Ar1a
(
((	34vqk  H
 	V  
	#X
 
 
 	
 	
 __TNN!Q(  
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 "h'''''s   ,BB
Bkeep_date_colTFc                    d}| }|r@|j         dk    r5t          j                            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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|	
                    g d:d;          }	||	j                 }t          j        ||	           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                  \    t          j        t          j        |           t                    S )z
        Test date parser.

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

        Returns
        -------
        parsed : Series
        )r^   )r	   try_parse_datesconcat_date_colsdu_parse)	date_colss    r$   r,   z2test_multiple_date_col_custom.<locals>.date_parser   s.     &$Y//
 
 
 	
r'   rY   rN      actualnominal	X0X1X2X3X4X5X6X7X8)r\   r,   r+   rc   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@)rq   rr   rt   ru   rv   rw   rx   ry   rz   r{   r|   rQ   ru   rv   rw   axis)enginepytestmarkxfailapplymarkerr=   r>   r   r
   r   droprR   r@   rA   )
rC   rc   requestr_   r^   r   r,   kwdsrE   rF   s
             r$   test_multiple_date_col_customr      s   D F ")33 {  X ! 
 
 	D!!!
 
 
$ "#$a&aV<<&GG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!3!3!=<<
 H$%F&(+++++r'   	containerdimrY   rN   c                      d}dt           fdt          |          D                       }t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nz0not all elements from date_cols are numpy arraysr   c              3   0   K   | ]} g          V  d S N )r/   _r   values     r$   	<genexpr>z,test_concat_date_col_fail.<locals>.<genexpr>7  s/      ==Qii((======r'   rU   )tupleranger   raises
ValueErrorr	   rl   )r   r   msgrn   r   s   `   @r$   test_concat_date_col_failr   1  s     =CE=====%**=====I	z	-	-	- , , +++, , , , , , , , , , , , , , , , , ,s   A--A14A1c                    d}| }|r@|j         dk    r5t          j                            d          }|                    |           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            n# 1 swxY w 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7          }	|s|	                    g d8d9          }	t          j        ||	           d S ):Nre   rf   rg   rh   8The 'keep_date_col' keyword in pd.read_csv is deprecatedrY   rN   ro   rs   )r\   r+   rc   r}   FrT   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_X3rt   ru   rv   rw   rx   ry   rz   r{   r|   rQ   r   r   )r   r   r   r   r   r@   r]   DeprecationWarningr>   r   r   r
   r   r   rA   )
rC   rc   r   r_   r^   r   r`   r   rE   rF   s
             r$   test_multiple_date_colr   =  sJ   D F ")33 {  X ! 
 
 	D!!!IH AA'&GGG	 D 
	#	]+8e
 
 
 9 9 !$884889 9 9 9 9 9 9 9 9 9 9 9 9 9 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!3!3!=<<&(+++++s   ;B##B'*B'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    r*t          j        d|d         z             j        j	        |d<   t          j        ||           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
rY   )rt   ru   rv   rw   rx   ry   rz   r{   )r\   r+   r-   r}   r   r   r   r   r   r   r   ru   r2   )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   )rt   rv   rw   rx   ry   rz   r{   rR   r<   rf   
1970-01-01rv   )r   r   r   r   r
   r   r    to_datetimedtr#   r@   rA   )rC   r_   r^   r   rE   r<   rF   s          r$   test_date_col_as_index_colr     sp   D FsAAA	 D V_Xd^^44t44FT1b"a((T1b"a((T1b"a((T1b"a((T1b"a((	
 	 	 	E >>>>>>?????????	
 ;::
 
 
H }	!! x~(EFFIN&(+++++r'   c                    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	        ||           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.5900rY   rN   ro   rp   r\   r+   r,   r~   r   Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rr   r      rQ   )
r    r   r=   r>   r   r
   r   rR   r@   rA   )rC   r_   r+   r^   r   rE   rF   s          r$    test_multiple_date_cols_int_castr     s   	5 	  VA77KF "~ D
 ,V+#  	 
 !&  F dAr2q))8D!RR+H+H&RVWdAr2q))8D!RR+H+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           
      F   | }d}|                     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        ||           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.25r~   r   rY   F)r+   r\   r,   r   z05/31/2012, 15:30:00.029g     i@E   )0_1rN   ro   r      rM      rQ   )	r=   r>   r   r   r
   r   nanr@   rA   rC   r^   r_   rE   rF   s        r$   &test_multiple_date_col_timestamp_parser   2  s    F2D ++#VH % ,  F  455 455	
( *))+  H. &(+++++r'   c                 R   | }d}d}t          j        t          |d          5  |                    t	          |          dddgi          }d d d            n# 1 swxY 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*+          }t          j        ||           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.0000rS   FrT   rr   rY   rN   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   rr   ID
ActualTimeTDewTAir	WindspeedPrecipWindDirrQ   )r@   r]   r>   r   r   r
   r   rA   rC   r^   r_   r`   rE   rF   s         r$   #test_multiple_date_cols_with_headerr   Z  s-   FPD 	V  
	#X
 
 
 R R $i!Q=PQQR R R R R R R R R R R R R R R  q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	g=	
|	
 	
 	
I I IHT &(+++++   )AAA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                 4   | }d}t          j        t          |          5  t          j        t
          t          f|d          5  |                    t          |          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrS   r   FrT   r   )	r   r   r   r@   r]   r>   r   r   r   )rC   r_   r+   r   r^   r`   s         r$   %test_multiple_date_col_name_collisionr     sM   , F 	V  
z	-	-	- E E'./xRW
 
 
 	E 	E OOHTNNODDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EE E E E E E E E E E E E E E E E E Es5   $B%A5)B5A9	9B<A9	=BBBc           	          | }d}|                     t          dt          |          ddgd d          }t          g dgg dt	          t          d	          gd
                    }t          j        ||           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
r~   r   c                     t          j        t          |           t          j                                      d           S )N)tz)tzinfo)r   fromtimestampr   r   utcreplacexs    r$   <lambda>z*test_date_parser_int_bug.<locals>.<lambda>  s7    h4SVVMMMUU V 
 
 r'   F)r-   r+   r,   r   )go?r   r   rM   gX5;N?ro   i90  rY   ro   invoice_InvoiceResourcesearch)elapsedsysuserqueries
query_timerows	accountiduserid	contactidlevelsilomethodz2012-07-24 04:12:30posix_timestampr2   r   )r=   r>   r   r
   r   r   r@   rA   r   s        r$   test_date_parser_int_bugr    s    F	8 	 ++#C
 
 !& ,  F   	
 
 
 
 Y4556=NOOO?     HB &(+++++r'   c                    | }t          t          j        dd          t          d                              d          d          }t          j        |j        ddd d f<   t          j        d	          5 }|	                    |           |
                    |d
dg          }t          j        ||           d d d            d S # 1 swxY w Y   d S )N
   r   dtype20010101ns)ABro   rM   z__nat_parse_.csvr   r  r-   r+   )r
   r   aranger   as_unitr   ilocr@   ensure_cleanto_csvr   rA   )rC   r^   ra   pathrE   s        r$   test_nat_parser    s    F	2Y///:&&..t44	
 	

 
B fBGAaCFO	+	,	, *
		$FF
fb)))	* * * * * * * * * * * * * * * * * *s   7ACCCc                 J   d}| }|                     t          dt          |          d           }|                    t          |          d          }t	          j        ||           |                    t          |          d          }t	          j        ||           d S )	N3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r~   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)r=   r>   r   r   r@   rA   rC   r_   r^   rE   rF   s        r$   test_csv_custom_parserr   *  s    D
 F++#<<	 ,  F x~~4@@H&(+++__Xd^^_BBF&(+++++r'   c                     d}| }|                     t          |          d          }|                     t          |          dd          }t          j        ||           d S )Nr  Tr   r   r  r   r   r@   rA   r  s        r$   #test_parse_dates_implicit_first_colr#  >  sa    D
 F__Xd^^_>>Fx~~MMH&(+++++r'   c                    d}| }|                     t          |          ddg          }t          ddd                              d           }t	          g dg dg d	d
|          }t          j        ||           d S )Nz8date,A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
r   r  z1/1/2009ro   )periodsr3   abc)rY   ro   r   )rN   r   r   r  r  Cr;   )r   r   r   
_with_freqr
   r@   rA   )rC   r_   r^   rE   r<   rF   s         r$   test_parse_dates_stringr-  L  s    D
 F__Xd^^vF8_TTFz16:::EEdKKEooIIIIII>>e  H &(+++++r'   z#yearfirst is not surfaced in read_*rh   r+   r   r#   c                 `   d}| }|                     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        ||           d S )Nz>date,time,B,C
090131,0010,1,2
090228,1020,3,4
090331,0830,5,6
Could not infer formatr   r    rY      r
  rN      r   ro   r      	date_timer  r3   )rY   ro   r   )rN   r   rM   r  r+  r;   )	r=   UserWarningr   r   r   objectr
   r@   rA   )rC   r+   r_   r^   rE   r<   rF   s          r$   test_yy_format_with_year_firstr9  `  s    D
 F++  ,  F T1b!R++T1b"b!,,T1b!R++	

   E yyyyyy99GGGH&(+++++r'   r'  r)  c           	         d}| }t          t          ddd          gdgt          ddd          gd          }|                    ddg          }|                    t	          |          d	dg|d
          }t          j        ||           d S )Nza,b,c
01/01/2010,1,15/02/2010  rY   rN      r&  r'  r(  r   T)r-   r+   dayfirst)r
   r   	set_indexr   r   r@   rA   )rC   r+   r_   r^   rF   rE   s         r$   test_parse_dates_column_listr?  }  s     ,DFa##$A3htQ6K6K5LM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|                    d
d          }t	          g dg dg dg dg dg dg dg dg dg	g d|          }|                    t          dt          |          |d          }t          j	        ||           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
r0  rY   rN   ro   )onetwothreeindex1index2r}   r   )r'  rY   rN   )r(  ro   r   )r)  r   r   r*  r   r/  Tr  )
r   from_productr   	swaplevelr
   r=   r7  r   r@   rA   )rC   r-   r_   r^   r<   rF   rE   s          r$   test_multi_index_parse_datesrI    s;   
D F#dAq!!8D!Q#7#7$19M9MN#	
 "  E QF1%%KKKKKKKKKKKKKKKKKK
	
    H ++  ,  F &(+++++r'   kwargsr=  	day_firstc                 Z   | }d}dv r|                     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	        ||           d S d}t          j        t          |          5  |                     t          dt          |          g dfddgdddg	  	         d d d            d S # 1 swxY w Y   d S )Nz:foo,bar,baz
31/01/2010,1,2
01/02/2010,1,NA
02/02/2010,1,2
r=  r~   )r#   QNTUc                     t          | fi S r   rm   drJ  s    r$   r   z5test_parse_dates_custom_euro_format.<locals>.<lambda>  s    (1"7"7"7"7 r'   r   TNA)r}   r,   r\   r-   r+   	na_valuesr;  rY   r1  rN   r#   r2   )rY   rY   rY   )rM  rN  rM  rN  r<   rR   z.got an unexpected keyword argument 'day_first'r   c                     t          | fi S r   rP  rQ  s    r$   r   z5test_parse_dates_custom_euro_format.<locals>.<lambda>  s    hq&;&;F&;&; r'   )r}   r,   skiprowsr-   r+   rT  )r=   r>   r   r   r   r
   r   r   r@   rA   r   r   	TypeError)rC   rJ  r^   r_   ra   	exp_indexrF   r   s    `      r$   #test_parse_dates_custom_euro_formatrZ    s    FD
 V++'TNN&&&7777f , 

 

 dAr""HT1a$8$8(4A:N:NO
 
 
	 ))QN33%L
 
 

 	b(+++++>]9C000 	 	**+***;;;; & + 
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8D  D$'D$c                    | }d}|                     t          |          dd          }|j        dk    r|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 d S )NzDate,x
2012-06-13T01:39:00Z,0.5r   Tr  rf   r  r   g      ?z2012-06-13 01:39:00+00:00rP   r2   r;   )r   r   r   r<   r  r
   r   r   pytzr   r   r@   rA   r   )rC   r^   r_   rE   rF   expected_tzs         r$   test_parse_tz_awarer^    s    F-D__Xd^^qd_KKF}	!!|++D11	seE9-H#I#I"JQWXXX  H }	!!hl&(+++<?k))))))r'   zparse_dates,index_colrr   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)*          }|                    d+          }t          |t                    sd,|j        _        d-}t          j        t          |d./          5  |
                    t          |          ||0          }d d d            n# 1 swxY w Y   t          j        ||           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
r   rY   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   rQ   rr   date_NominalTimerS   FrT   r+   r-   )r
   r   r>  
isinstancedictr<   r3   r@   r]   r>   r   r   rA   )rC   r+   r-   r^   r_   rF   r`   rE   s           r$   test_multiple_date_cols_indexrj    sO    FD  q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	g=	
|	
 	
 	
I I IHT !!),,Hk4(( 10 	V  
	#X
 
 
 
 
 TNNy ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &(+++++s   &D::D>D>c                 v   | }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          j        t
          |d()          5  |                    t          |          d&dd*gid&d*+          5 }t          |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j	        |d         |d d*                    t          j	        |d         |d*d,                    t          j	        |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
r   rY   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   )rr   r   
actualTimer  r  r+  Dr   rQ   rr   rS   FrT   rN   )r+   r-   	chunksizer   )
r
   r   r>  r@   r]   r>   r   r   listrA   )rC   r^   r_   rF   r`   readerchunkss          r$   test_multiple_date_cols_chunkedrs  p  s   FD  q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	 q"b!,,	g=	
| IHH@ @ @HB !!),,H 	V  
	#X
 
 
 	" 	" __TNN"QF+	  
 
 	"
 &\\F	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" &)Xbqb\222&)Xac]333&)Xabb\22222s6   '+ED."E.D2	2E5D2	6EE	E	c                    | }d}d}t          j        t          t          f|d          5  |                    t          |          dddgid          }d d d            n# 1 swxY w Y   t          j        t          t          f|d          5  |                    t          |          ddd	d
gi          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nrl  rS   FrT   rr   rY   rN   rg  r   nominalTimer  )r@   r]   r>   r   r   r   rA   )rC   r^   r_   r`   with_indices
with_namess         r$   )test_multiple_date_col_named_index_compatrx    s   FD 	V  
	#	*+8e
 
 
 
 
 TNNQF(;y ' 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	#	*+8e
 
 
 
 
 __TNN"V]$;< % 
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ,
33333s#   *A  A$'A$*CCCc                    | }d}d}t          j        t          t          f|d          5  |                    t          |          ddgdddgi	          }d d d            n# 1 swxY w Y   t          j        t          t          f|d          5  |                    t          |          dddgi
          }d d d            n# 1 swxY w Y   |                    ddg          }t          j        ||           d S )Nrl  rS   FrT   rr   r   rY   rN   r  r   )r@   r]   r>   r   r   r   r>  rA   r   s         r$   ,test_multiple_date_col_multiple_index_compatrz    s   FD 	V  
	#	*+8e
 
 
 
 
 TNNy$&7iRSUVQWEX ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	#	*+8e
 
 
 T T ??8D>>	Aq6?R?SST T T T T T T T T T T T T T T
 !!9d"344H&(+++++s#   ,A""A&)A&)CC	C	r+  c                     | }d}d}t          j        t          |          5   |j        t	          |          fddi| d d d            d S # 1 swxY 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   rX  r   r   )rC   rJ  r^   r   r_   s        r$   *test_read_with_parse_dates_scalar_non_boolr    s     F	7 D 
y	,	,	, C CBBCB6BBBC C C C C C C C C C C C C C C C C Cs   AAArY   r   r   ro   c                     | }d}d}t          j        t          |          5  |                    t	          |          d           d d d            d S # 1 swxY w Y   d S )Nr|  r}  r   r  r   r~  )rC   r+   r^   r   r_   s        r$   'test_read_with_parse_dates_invalid_typer     s    F	7 D 
y	,	,	, : :D999: : : : : : : : : : : : : : : : : :s   %AAAcache_datesr   r    c                 ~    | }t          | dt          dz   z            }|                    |d ddgdg|           d S )N,
rY   foobar)r\   r}   r+   r  )r   r   r   )rC   r  r   r^   r   s        r$   test_bad_date_parser  .  sa    
 FU---$4q$89::A
OO	enG      r'   0c           
          | }t          | ddz            }|j        dk    rd }n|rd }nt          }|                    |d|d ddgdg|d           d S )	Nr  iP  rf   r/  r  r  F)r\   r}   r+   r  r   )r   r   r7  r=   )rC   r  r   r^   r   warns         r$    test_bad_date_parse_with_warningr  ?  s    
 FU---5())A}	!!
 	  
"" 	enG % # 	 	 	 	 	r'   c                     | }d}|                     t          |          dgd          }t          t          ddd          dgt          j        dggddg	          }t          j        ||           d S )
NDate,test
2012-01-01,1
,2rP   F)r+   	na_filteri  rY   rN   testrQ   )r   r   r
   r   r    NaTr@   rA   r   s        r$   test_parse_dates_empty_stringr  _  s     F(D__Xd^^&U_SSF
4A

	"RVQK066:J  H &(+++++r'   rq  r=   read_table_check_warningsc           	      t    | }d} t          ||          t          dt          |          dgddd           d S )Nr  z2The argument 'infer_datetime_format' is deprecatedrP   T,F)r+   infer_datetime_formatrZ   r   )getattrr>   r   )rC   rq  r^   r_   s       r$   .test_parse_dates_infer_datetime_format_warningr  l  sX    
 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            d S # 1 swxY w Y   d S )	Nr  z/Cannot use both 'date_parser' and 'date_format'r   r~   rP   ISO8601r  )r+   r,   r  rZ   )r   r   rX  r  r>   r   r    r   )rC   rq  r^   r_   r   s        r$   ,test_parse_dates_date_parser_and_date_formatr    s    
 F(D
;C	y	,	,	, 	
 	
'TNN!	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
s   >A--A14A1zdata,kwargs,expectedza
04.15.2016i  r<  rQ   rg  z
2016-04-15r2   rU  za,b
04.15.2016,09.16.2013r(  rL   	      rF  c                 n    | } |j         t          |          fddi|}t          j        ||           d S )Nr[   .r"  rC   r_   rJ  rF   r^   rE   s         r$   %test_parse_dates_no_convert_thousandsr    sG    F FV_Xd^^EEsEfEEF&(+++++r'   c           	      4   d}| }|                     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        ||           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.
r~   r   rY   r4  r     r   r  r         $@rM         ?      &@)r4  )r  r'  )r  r(  rQ   )	r=   r>   r   r    r   r   r
   r@   rA   )rC   r_   r^   rE   expected_datarF   s         r$   ,test_parse_date_time_multi_level_column_namer    s    D F++#1v 1a&)N ,  F 
$1aA	&	&T2	$1aA	&	&T2M 0U0U0UVVVH&(+++++r'   zKdate,time,a,b
2001-01-05, 10:00:00, 0.0, 10.
2001-01-05, 00:00:00, 1., 11.
r4  r\   r+   r  r
  r   r  r  )r4  r'  r(  r   rp   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        ||           d S )Nr~   r,   r   F)r=   r>   r   r    r   rR   r@   rA   r  s         r$   test_parse_date_timer    s    R F+V+#  N	
   !&  F H$%F&(+++++r'   c           	         | }d}|                     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        ||           d S )N-year,month,day,a
2001,01,10,10.
2001,02,1,11.r~   r   ymd)r   rY   rN   c                     | S r   r   r   s    r$   r   z(test_parse_date_fields.<locals>.<lambda>9  s    a r'   Fr\   r+   r,   r   r  rY   r
  r  rN   r  r'  rQ   )r=   r>   r   r
   r   r@   rA   r   s        r$   test_parse_date_fieldsr  0  s    F<D++#III&K % ,  F 
4B

	&$1)=)=t(DE  H &(+++++r'   )keyr   r  r,   c                 .    t          j        | d          S )N%Y %m %d %H %M %Sformatr    r   r   s    r$   r   r   I  s    bnQ/BCC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        ||           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.
r~   r   ymdHMSr   rY   rN   ro   r   r   r  r   Fr  rY   r   r
  r   r  r  r  r  r'  r(  rQ   r=   r   r
   r   r@   rA   rC   r  r   r  r^   r_   rE   rF   s           r$   test_parse_date_all_fieldsr  D  s     FD
 ,V+# 1112  ,  !&  F dAq"a++S$7dAq"a++S$7	
 %$$  H &(+++++r'   c                 .    t          j        | d          S )N%Y %m %d %H %M %S.%fr  r  r   s    r$   r   r   n  s    bnQ/EFF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        ||           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.
r~   r   r  r  r  r   Fr  rY   r   r
  i@ )microsecondr   r  i  r  r  r  rQ   r  r  s           r$    test_datetime_fractional_secondsr  i  s     FD
 ,V+# 1112  ,  !&  F dAq"a???dKdAq"a???dK	
 %$$  H &(+++++r'   c           	      P   | }d}d }|                     t          dt          |          ddddgi|d          }t          t	          d	dd          d
dgt	          d	dd          ddggg d          }|d                             d          |d<   t          j        ||           d S )Nr  c                 6    d t          | |          D             S )Nc                 l    g | ]1\  }}t          t          |          t          |          d           2S )rY   )yearmonthday)r   r   )r/   yms      r$   r1   z8test_generic.<locals>.parse_function.<locals>.<listcomp>  s7    OOO41a#a&&AA666OOOr'   )zip)yymms     r$   parse_functionz$test_generic.<locals>.parse_function  s    OO3r2;;OOOOr'   r~   r   ymrY   Fr  r  r
  r  rN   r  )r  r  r'  rQ   datetime64[ns])r=   r>   r   r
   r   r   r@   rA   )rC   r^   r_   r  rE   rF   s         r$   test_genericr    s    F<DP P P ++#Aq6N" % ,  F 
tQ

B	%T1a(8(8!T'BC"""  H d^**+;<<HTN&(+++++r'   c           	      :   | }d}d }|                     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	        ||           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                     	 | dz   |z   }n*# t           $ r d t          | |          D             }Y nw xY wt          j        |d          S )NTc                 >    g | ]\  }}t          j        ||          S r   )r   combine)r/   rR  ts      r$   r1   zNtest_date_parser_resolution_if_not_ns.<locals>.date_parser.<locals>.<listcomp>  s)    DDDda8#Aq))DDDr'   datetime64[s]r  )rX  r  r   array)r   r#   arrs      r$   r,   z:test_date_parser_resolution_if_not_ns.<locals>.date_parser  sl    	Es(T/CC 	E 	E 	EDDc"dmmDDDCCC	E x?3333s    $22r~   r   r   r#   prn)r,   r+   r-   z2013-11-03T19:00:00ro   r  r  rxstatus00E80000)~   r   rO   rF  )r_   r<   )
r=   r>   r   r   r  r
   r   from_arraysr@   rA   )rC   r^   r_   r,   rE   	datetimesrF   s          r$   %test_date_parser_resolution_if_not_nsr    s     FD4 4 4 ++#&&!12u% ,  F /014OLLLI:,*+$&u%
 
 
  H &(+++++r'   c                     | }d}|                     t          |          dg          }ddgddgddgg}t          |d	dg
          }t          j        ||           d S )Nz+case,opdate
7,10/18/2006
7,10/18/2008
621, opdater   r   z
10/18/2006z
10/18/2008im   caserQ   r   r   r
   r@   rA   )rC   r^   r_   rE   r  rF   s         r$   (test_parse_date_column_with_empty_stringr    ss    F;D__Xd^^(_DDF&L(9C:FM0BCC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                 |    | }|                     t          |          |          }t          j        ||           d S )Nr   r"  )rC   r_   rF   r+   r^   rE   s         r$   test_parse_date_floatr    s=    & F__Xd^^_EEF&(+++++r'   c           
      0   | }d}|                     t          |          dg          }t          dddt          t	          d                    	                              d           }|g d
d}t          |          }t          j        ||           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@   rA   )rC   r^   r_   rE   dtir  rF   s          r$   test_parse_timezoner    s    F1D __Xd^^$_@@F
#!Ic***++	  
 j  'J'J'JK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          }|                    t          |          d dg          }t          j        ||           d S )Nr   r8  r  r  )r
   r   r   r@   rA   )rC   r  r^   rF   rE   s        r$   !test_invalid_parse_delimited_dater    sh     F!k]+8<<<H__C   F
 &(+++++r'   zdate_string,dayfirst,expectedz
13/02/2019i  rO   z
02/13/2019z
04/02/2019c                    | }t          d|gid          }|j        dk    ru|st          j        d           d}t          j        t
          |          5  |                    t          |          d |dg	           d d d            n# 1 swxY w Y   d S |                    t          |          d |dg	          }t          j	        ||           d S )
Nr   r  r  rf   z,https://github.com/apache/arrow/issues/38676rh   z@The 'dayfirst' option is not supported with the 'pyarrow' enginer   r\   r=  r+   )
r
   r   r   skipr   r   r   r   r@   rA   )rC   r  r=  rF   r   r^   r   rE   s           r$   )test_parse_delimited_date_swap_no_warningr    s8    F!hZ0@AAAH}	!! 	OKMNNNNP]:S111 	 	OO%%dXTUSV    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	__dXA3   F &(+++++s   (B

BBc                     | }t          d|gid          }d}|                    t          |t          |          d |dg          }t	          j        ||           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=   r7  r   r@   rA   )rC   r  r=  rF   r^   warning_msgrE   s          r$   +test_parse_delimited_date_swap_with_warningr   :  s     F!hZ0@AAAH	J  ++C ,  F &(+++++r'   c                      t          j        t          d          5  t          j        g d           d d d            d S # 1 swxY 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$   6test_parse_multiple_delimited_dates_with_swap_warningsr  X  s    	5
 
 
 Q Q 	OOOPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   A  AAz)names, usecols, parse_dates, missing_colsr  z
date, time)date1time1temperaturer  r  c           	         | }t          d          }d| d}d}t          }	t          |t                    rt	          d |D                       rd }	t          j        t          |          5  t          j	        |	|d          5  |
                    |d	|||
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz%date,time,val
2020-01-31,04:20:32,32
z+Missing column provided to 'parse_dates': ''rS   c              3   N   K   | ] }t          |t          t          f          V  !d S r   )rh  r   str)r/   r   s     r$   r   z9test_missing_parse_dates_column_raises.<locals>.<genexpr>  sA       - -&'
1sCj!!- - - - - -r'   r   FrT   r  )rZ   r}   usecolsr+   )r   r>   rh  rp  allr   r   r   r@   r]   r   )
rC   r}   r
  r+   missing_colsr^   contentr   r`   r  s
             r$   &test_missing_parse_dates_column_raisesr  e  s   0 F@AAG
G
G
G
GC 	V  D+t$$  - -+6- - - * *  	z	-	-	-  'HuUUU 	 	OOSwK    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s6   ,CB+C+B/	/C2B/	3CC
Cc                     | }t          d          }t          }|j        dk    rt          t          f}|                    |d|dgdg          }t          dddgidd	g
          }t          j        ||           d S )Nzx,y
1,2rf   r/  r  )r+   r}   r  2r   1r;   )r   r7  r   r   r=   r
   r@   rA   )rC   r^   r_   r  rE   rF   s         r$   test_date_parser_and_namesr    s     FN##DD}	!!/0++ Ee ,  F #Sz*3*===H&(+++++r'   c                     | }d}|                     t          |          dgddg          }t          t          d                              d          dgd	          }t          j        ||           d S )
Nza,b
1,2
2019-12-31,6r'  r  r   rY   r+   r\   
2019-12-31r  rM   )r  r(  r  )r   r   r
   r   r  r@   rA   r   s        r$   #test_date_parser_multiindex_columnsr    s    FD __Xd^^*qRSf_UUF|,,44T::LL H &(+++++r'   zparse_spec, col_namer  r  )a_b1_2)r  r  c                 Z   | }d}d}t          j        t          |d          5  |                    t	          |          |ddg          }d d d            n# 1 swxY w Y   t          |t          d                              d	          d
dgi          }t          j        ||           d S )Nza,b,c
1,2,3
2019-12,-31,6rS   FrT   r   rY   r  r  r  )r)  3rM   )	r@   r]   r>   r   r   r
   r   r  rA   )rC   
parse_speccol_namer^   r_   r`   rE   rF   s           r$   0test_date_parser_multiindex_columns_combine_colsr    s    FD
 	V  
	#X
 
 
 
 
 TNN"q6 ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 	9\**22488*qcJ H &(+++++s   (AAAc                    d}| }|j         dk    r`d}t          j        t          |          5  |                    t          |          dgddgd           d d d            n# 1 swxY w Y   d S |                    t          d	t          |          dgddgd          }t          d
dgt          d          gdz  d          }t          j        ||           d S )Nz2A,B,C
    1,3,20-09-01-01
    2,4,20-09-01-01
    rf   zAThe 'thousands' option is not supported with the 'pyarrow' enginer   rY   rN   rX   )r+   r
  r[   r/  ro   r   z20-09-2001 01:00:00r6  )r   r   r   r   r   r   r=   r7  r
   r   r@   rA   )rC   r_   r^   r   rE   rF   s         r$   "test_date_parser_usecols_thousandsr!    sD   D
 F}	!!Q]:S111 	 	OOCA	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	++ CA ,  F 1vY7L-M-M,NQR,RSSTTH&(+++++s   *A##A'*A'c                 T   | }d}d}t          j        t          |d          5  |                    t	          |          ddgid          }d d d            n# 1 swxY w Y   t          d	          t          d
          g}t          ||d          }t          j        ||           d S )NzA
20150908
20150909
r   FrT   r   r  T)r+   rc   z
2015-09-08z
2015-09-09)r   r  )r@   r]   r>   r   r   r   r
   rA   )rC   r^   r_   r`   rE   r  rF   s          r$   )test_parse_dates_and_keep_original_columnr#    s    FD JH		#X
 
 
 
 
 TNN#t ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |,,i.E.EFM-mDDEEH&(+++++r   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            n# 1 swxY w Y   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            n# 1 swxY w Y   t	          j        ||           d S )Nzdate
31/12/2014
10/03/2011z
2014-12-31z
2011-03-10r  r   r  r  r3   r  T)r+   r=  r-   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r8  r5  )	r   r   r   r<   r@   assert_index_equalr]   r7  r   )inputrF   r  res1res2res5res6s          r$   test_dayfirst_warningsr,    s;    +E	|$,<4f  H	J  fX   	 (D))) 
	#K{	C	C	C  UOO&EV
 
 

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

 	               (D)))))s$   0'B##B'*B'/'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            n# 1 swxY w Y   t          j        ||           d S )	Nzdate
z
2014-01-31r  r   r%  r  r   )r+   r-   r=  )r   r@   r]   r7  r   r   r<   r&  )r  r=  initial_valuerF   r  ress         r$   &test_dayfirst_warnings_no_leading_zeror1  6  s    " +[**M	.T  H	J  
	#K{	C	C	C  ]##	
 
 

  	               (C(((((s   'A**A.1A.c                     | }d}|                     t          |          dg          }t          dddddg	          }t          j        ||           d S )
Nza,b,c
1970-01-01,2,3,4r'  r   r  ro   r   r&  r   r;   r  r   s        r$    test_infer_first_column_as_indexr3  Y  sm     F$D__E   F s33L>JJJH&(+++++r'   c                 .    t          j        | d          S )N%Y-%m-%dr  r  r   s    r$   r   r   j  s    ".:"F"F"F r'   )r  r5  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        ||           d S )
Nz*Test
2012-10-01
0
2015-05-15
#
2017-09-09
r~   Test#r  )rT  r+   z
2012-10-01z
2015-05-15z
2017-09-09)r=   r   r
   r   r    r  r@   rA   r  s           r$   &test_replace_nans_before_parsing_datesr9  f  s     FD ,V+# C:&H  , F ,'','',''	

 
H &(+++++r'   c                    | }d}|                     t          |          ddg          }t          dgt          d          gd          }|d                             d          |d<   t          j        ||           d S )	Nza,b
1,2019-12-31
stringr(  )r  r+   r  r  r'  r(  r'  )r   r   r
   r   r   r@   rA   r   s        r$   !test_parse_dates_and_string_dtyper=    s     FD __Xd^^8#_OOFuIl,C,C+DEEFFHSM((22HSM&(+++++r'   c                 0   | }d}|j         dk    rt          ddgdd          }d }nt          dd	gd
d          }t          }d}|                    ||t          |          ddd          }t          dddgi|          }t          j        ||           d S )Nz7a,b
27.03.2003 14:55:00.000,1
03.08.2003 15:20:00.000,2rf   z27.03.2003 14:55:00.000z03.08.2003 15:20:00.000r8  r'  r5  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(  rY   rN   r;   )	r   r   r   r7  r=   r   r
   r@   rA   )rC   r^   r_   expected_indexr  r   rE   rF   s           r$   test_parse_dot_separated_datesr@    s    FD }	!!&(AB
 
 

 &"$9:"
 
 

 
>C++ % ,  F #1vn===H&(+++++r'   c                     | }d}|                     t          |          dddddg          }t          t          d          t          d	          gt          d          t          d	          gd          }t	          j        ||           d S )
N/a,b
2019-12-31,31-12-2019
2020-12-31,31-12-2020r5  z%d-%m-%Yr<  r'  r(  r  r+   r  
2020-12-31)r   r   r
   r   r@   rA   r   s        r$   test_parse_dates_dict_formatrE    s    FD __$:66#J   F
 L))9\+B+BCL))9\+B+BC	
 	
 H &(+++++r'   zkey, parse_datesr  r  c                 Z   | }d}d}t          j        t          t          f|d          5  |                    t          |          |di|          }d d d            n# 1 swxY w Y   t          |t          d          t          d          gi          }t          j        ||           d S )	Nza,b
31-,12-2019
31-,12-2020rS   FrT   z	%d- %m-%YrC  r  rD  )	r@   r]   r>   r   r   r   r
   r   rA   )rC   r  r+   r^   r_   r`   rE   rF   s           r$   (test_parse_dates_dict_format_two_columnsrG    s   
 FD
 	V  
	#	*+8e
 
 
 
 
 TNNk(: ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 )L))9\+B+BC	
 H
 &(+++++s   (AA"%A"c           	         | }d}|                     t          |          ddidd          }t          ddd	git          t	          d
          t	          d          gd                    }t          j        ||           d S )NrB  r'  r5  Tr   )r  r+   r-   r(  z
31-12-2019z
31-12-2020r  rD  r2   r;   )r   r   r
   r   r   r@   rA   r   s        r$   "test_parse_dates_dict_format_indexrI    s     FD __S*$54ST   F ,-	
 Y|,,i.E.EFSQQQ	  H &(+++++r'   c                 :   | }d}|                     t          |          dg          }|j        dk    r#|d         j                            d          |d<   t          t          d          t          d          gdd	          }t          j        ||           d S )
Nz/a,b
2000-01-01 00:00:00,1
2000-01-01 00:00:01,1r'  r   rf   r  z2000-01-01 00:00:00z2000-01-01 00:00:01rY   r<  )	r   r   r   r   r  r
   r   r@   rA   r   s        r$   test_parse_dates_arrow_enginerK   	  s    FD __Xd^^#_??F}	!!Skn,,T22s /00/00 	
 	
 H &(+++++r'   c                     | }d}|                     t          |          dg          d         }t          t          d          t          d          gdddg          }t	          j        ||           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   rY   )r3   r<   )r   r   r   r   r@   assert_series_equalr   s        r$    test_from_csv_with_mixed_offsetsrN  	  s    FDD__Xd^^#_??DF122122	
 !f  H 68,,,,,r'   )o__doc__r   r   r   r   ior   dateutil.parserr   rm   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_pyarrowrG   rJ   rb   parametrizer   rp  r   r   r   r   r   r   r   r   r  r  r   r#  r-  r   r9  r?  rI  rZ  r^  rj  rs  rx  rz  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,  paramr1  r3  r9  r=  r@  rE  rG  rI  rK  rN  r   r'   r$   <module>rb     s   
                  - - - - - -       ' ' ' ' ' '                          4 4 4 4 4 4 8 8 8 8 8 8 & & & & & &[''C 
 ''88{&&~66 $, $, $,N , , ,D ( ( (6 4-88Z, Z, 98Z,z tUE6&BCCA'', , (' DC, 4-88C, C, 98C,L+, +, +,\=, =, =,@%, %, %,P \, \, \,~  VH?	
 Aq6N,	
 *
E 
E+ *
E8, 8, 8,v * * *$ , , ,& 
, 
, 
, , , ,& ?@@66*:);q!fX(FGG, , HG A@,6 !Q#s(<==, , >= , 1v1v&677/, /, 87 /,d Z$6d8K#LMM* * NM *Z* * *( 1a&9%QF(;Q'?Aq6(AO c, c,	  
c,L _3 _3 _3D4 4 4B, , ,: Bc(:#;<<C C =<C xrxA/?/?!Q(HII
: 
: JI
: u665"+..  /. 76 u663%((  )( 76< 	, 	, 	, (*EF     (*EF 
 
 
"  SE"Ixxa,,-u===	
  q11IMM<.sCCCRPPP	
 )S#J'I(4B''$2)>)>?@3PS*  	
 ) 1v66I,j,htQ++XXdAr-B-BCDSRUJ   	  		
% @, ,A  B, , , ,2 
 +1v)>??IXdAq"a33S"=XdAq!Q22C> 0//  	
"= 1v1a&,Q,QRRI !q"b!44 q"b"55	 !q"b!44 q"b"55	 !q"b!44 q"b"55	 !q"b!44 q"b"55	 !q"b!44 q"b"55	 !q"b!44 q"b"55	?%L 433O( ( (3	
!DG GP, ,QG GP,$, , ,(  CC	

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

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

 7Is@@@ASSS	
	  u66, , 76 ,, , ,. UUU , ,	  
, # 
tXXdAr223	uhhtQ334	tXXdAq112
 
, ,
 
,. # 
uhhtQ334	tXXdAr223	 , ,  ,(	Q 	Q 	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FV) , ,  ,@ 	, 	, 	,, , ,B, , ,* %1a&*UUQFO,DE , , ,0 , , ,&, , ,. - - - - -r'   