
    ic                     p   d Z ddlmZmZmZ ddlm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j8                  j;                  d
      Zej8                  j?                  d      Z ej8                  j?                  d      Z!d Z"e d        Z#e!d        Z$e d        Z%e ej8                  jM                  dddgddgg      d               Z'e ej8                  jM                  dddgddgg      d               Z(d Z)ej8                  jM                  di ddig      d        Z*ej8                  jM                  dd ejV                  ddg      dd hg      d!        Z,ej8                  jM                  d"d#d$g      d%        Z-d& Z.d' Z/e ej8                  jM                  d(d)ddgi e ed*dd+      gdgd,-      fd)d.dd/ e ed0gd,d1      g 2      fd3ddd4gi e ed*dd+       ed5d6d7      ggd,dd4g8      fd3d.ddgd/ e ej`                   ed*dd+       ed5d6d7      fgdd4g9      g 2      fg      d:               Z1d; Z2ej8                  jM                  d<d=d>d?gfd@g dAfg      ej8                  jM                  dd.dBg      dC               Z3dD Z4e!ej8                  jM                  dEg dF      dG               Z5ej8                  jM                  dHdId. edJddK      fdLdB edJddK      fdMd. edJdd      fg      dN        Z6e!ej8                  jM                  dHdIdB edJddK      fdLd. edJddK      fg      dO               Z7dP Z8e!ej8                  jM                  dQddRgdSdTgdUfddRgddTgdTfg dVddSdTgdUfg dVdWdXgdWdTgdTfg      dY               Z9e dZ        Z:e d[        Z;d\ Z<d] Z=ej8                  jM                  d^ ej|                  d_dBd`a       ej|                  dbd.dca      g      dd        Z?e!de        Z@e df        ZAe dg        ZBdh ZCdi ZDe dj        ZEdk ZFe dl        ZGy)mzO
Tests date parsing functionality for all of the
parsers defined in parsers.py
    )datetime	timedeltatimezone)StringION)Pandas4Warning)	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}| }d dgdg dd} |j                   t        |      fi |}t        t        ddddd      t        dddd	d      t        dddd
d      t        dddd
d      t        ddddd      gdd      }t	        g dg dg dg dg dgg d|      }|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
   )X0X1X2X3X4X5X6X7)headerparse_dates	index_colnamesi        r            M8[us]r   dtypename)KORDz	 18:56:00gQ?g{Gz@@             q@)r*   z	 19:56:00g{Gz?Gz@r+   r,   g     @p@)r*   z	 20:56:00zGr.   g@r,   r-   )r*   z	 21:18:00gGzgGz @g@r,   g     p@)r*   z	 21:56:00r/   g\(\?gffffff@r,   g      r@)r   r   r   r   r   r   r   columnsindexpyarrow
1970-01-01r   )r   r   r
   r   r   enginepdto_datetimedttimetmassert_frame_equal)all_parsersdataparserkwdsresultr2   expecteds          d/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_parse_dates.pytest_date_col_as_index_colrC   )   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&(+    c                 "   | }t        t        j                  dd      t        d      d      }t        j                  |j
                  ddd d f<   |}|j                  |       |j                  |dd	g
      }t        j                  ||       y )N
   float64r(   20010101)AB      r   rK   r   r   )
r   nparanger   nanilocto_csvr   r:   r;   )r<   	temp_filer>   dfpathr@   s         rB   test_nat_parserW   X   s     F	2Y/:&	

B ffBGGAaCFODIIdO__TQSE_BF&"%rD   c                     d}| }|j                  t        |      d      }|j                  t        |      dd      }t        j                  ||       y )Nz3A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5
Tr   r   rN   r   r   r:   r;   )r<   r=   r>   r@   rA   s        rB   #test_parse_dates_implicit_first_colr[   k   sN    D
 F__Xd^_>Fx~MH&(+rD   c                     d}| }|j                  t        |      ddg      }t        d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
daterN   z1/1/2009rL   us)periodsr)   unitabc)r   rL      )   re      rJ   rK   Cr2   )r   r   r   
_with_freqr   r:   r;   )r<   r=   r>   r@   r2   rA   s         rB   test_parse_dates_stringrl   y   sn    D
 F__Xd^vF8_TFz16EPPQUVEII>eH &(+rD   r   rf   rb   rd   c           	      J   d}| }t        t        ddd      gdgt        ddd      gd      }|d   j                  d      |d<   |d	   j                  d      |d	<   |j                  dd
g      }|j	                  t        |      ddg|d      }t        j                  ||       y )Nza,b,c
01/01/2010,1,15/02/2010i  r   rf      ra   rb   r&   rd   rc   r   T)r   r   dayfirst)r   r   astype	set_indexr   r   r:   r;   )r<   r   r=   r>   rA   r@   s         rB   test_parse_dates_column_listrr      s     ,DFa#$A3htQ6K5LMH SM((2HSMSM((2HSM!!3*-H__1a&kD  F &(+rD   r   r   c                 Z   d}| }t        dddd      }t        j                  |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
z
2009-01-01rL   Dr^   )r_   freqr`   )onetwothreeindex1index2r    r   r   )rb   r   rf   )rc   rL   re   )rd   re   rg   rh   r0   Could not infer formatTrN   )
r   r   from_product	swaplevelr   read_csv_check_warningsUserWarningr   r:   r;   )r<   r   r=   r>   dtir2   rA   r@   s           rB   test_multi_index_parse_datesr      s    
D F
\13T
BC###	
 "E QF1%
	
  H ++  , F &(+rD   c                    | }d}|j                  t        |      dd      }t        ddgit        t	        d      gd	      
      }|j
                  dk(  rBt        j                  d      }|j                  }|j                  j                  d      |_	        nt        j                  }t        j                  ||       |j                  j                  |u sJ y )NzDate,x
2012-06-13T01:39:00Z,0.5r   TrN   xg      ?z2012-06-13 01:39:00+00:00Dater)   rj   r3   pytzs)r   r   r   r
   r   r5   pytestimportorskiputcr2   as_unitr   r:   r;   tz)r<   r>   r=   r@   rA   r   expected_tzs          rB   test_parse_tz_awarer      s    F-D__Xd^qd_KF	seE9-H#I"JQWXH }}	!""6*hh!//4ll&(+<<??k)))rD   kwargsri   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)NDOnly booleans and lists are accepted for the 'parse_dates' parameterA,B,C
    1,2,2003-11-1matchr   ri   r   raises	TypeErrorr   r   )r<   r   r>   msgr=   s        rB   *test_read_with_parse_dates_scalar_non_boolr      sZ     F
PCD 
y	, CBCB6BC C Cs   A

A)r   re   rg   rL   c                     | }d}d}t        j                  t        |      5  |j                  t	        |      |       d d d        y # 1 sw Y   y xY w)Nr   r   r   rY   r   )r<   r   r>   r   r=   s        rB   'test_read_with_parse_dates_invalid_typer      sP    F
PCD 
y	, AK@A A As   AAvaluerQ    c                 j    | }t        | dt        dz   z        }|j                  |d ddgdg|       y )Nz,
r   foobar)r   r    r   cache_dates)r   r   r   )r<   cacher   r>   r   s        rB   test_bad_date_parser      sJ     FUG3-$4q$89:A
OO	enG  rD   c           
          | }t        dt        dz   z        }|j                  dk(  rd }n|rd }nt        }|j	                  |d|d ddgdg|d       y )	Nz0,
r   r3   r|   r   r   F)r   r    r   r   raise_on_extra_warnings)r   r   r5   r   r   )r<   r   r>   r   warns        rB    test_bad_date_parse_with_warningr     sq     F&-123A}}	!
 	 
"" 	enG % # 	rD   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 )
NzDate,test
2012-01-01,1
,2r   F)r   	na_filteri  r   rf   testr1   )r   r   r   r   r6   NaTr:   r;   r<   r>   r=   r@   rA   s        rB   test_parse_dates_empty_stringr   +  sg    F(D__Xd^&U_SF
4A
	"RVVQK066:JH &(+rD   zdata,kwargs,expectedza
04.15.2016i  rn   r&   )r1   r(   T)r   r   z
2016-04-15r'   )r2   r1   za,b
04.15.2016,09.16.2013rc   i  	      )r(   r1   r{   c                 p    | } |j                   t        |      fddi|}t        j                  ||       y )N	thousands.rZ   )r<   r=   r   rA   r>   r@   s         rB   %test_parse_dates_no_convert_thousandsr   7  s8    \ FV__Xd^EsEfEF&(+rD   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, opdaterY      z
10/18/2006z
10/18/2008im   caser   r   r   r   r:   r;   )r<   r>   r=   r@   expected_datarA   s         rB   (test_parse_date_column_with_empty_stringr   k  s_    F;D__Xd^(_DF&L(9C:FM0BCH&(+rD   zdata,expectedz"a
135217135789158401
1352171357E+5l   0l    Hbk z%a
99999999999
123456789012345
1234E+0)l   g] l   y_"A i  Fc                     | }|j                  t        |      |      }t        d|id      }t        j                  ||       y )NrY   rb   rG   rH   r   )r<   r=   rA   r   r>   r@   s         rB   test_parse_date_floatr   v  s?    & F__Xd^_EF#x	:H&(+rD   c           
          | }d}|j                  t        |      dg      }t        dddt        t	        d            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,23400r8   rY   z2018-01-04 09:01:00z2018-01-04 09:05:001mini  )minutesr^   )startendru   r   r`   )i6[  h[  r   r   r   )r8   val)	r   r   r   r   r   rk   r   r:   r;   )r<   r>   r=   r@   r   r   rA   s          rB   test_parse_timezoner     s    F1D __Xd^$_@F
#!Ic*+ j  'JKM'H&(+rD   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   strrH   )r   r   )r   r   r   r:   r;   )r<   r   r>   rA   r@   s        rB   !test_invalid_parse_delimited_dater     sQ     F!k]+59H__C  F
 &(+rD   zdate_string,dayfirst,expectedz
13/02/2019i     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   datetime64[us]rH   r3   z,https://github.com/apache/arrow/issues/38676)reasonz@The 'dayfirst' option is not supported with the 'pyarrow' enginer   r   ro   r   )
r   r5   r   skipr   
ValueErrorr   r   r:   r;   )r<   r   ro   rA   requestr>   r   r@   s           rB   )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   rH   zParsing dates in .* format when dayfirst=.* was specified. Pass `dayfirst=.*` or specify a format to silence this warning.r   )r   r   r   r   r:   r;   )r<   r   ro   rA   r>   warning_msgr@   s          rB   +test_parse_delimited_date_swap_with_warningr     si     F!hZ0@AH	J  ++C , F &(+rD   c                      t        j                  t        d      5  t        j                  g d       d d d        y # 1 sw Y   y xY w)NzP^time data "31/05/2000" doesn\'t match format "%m/%d/%Y". You might want to try:r   )z
01/01/2000z
31/05/2000z
31/05/2001z
01/02/2000)r   r   r   r6   r7    rD   rB   6test_parse_multiple_delimited_dates_with_swap_warningsr     s>    	&
 Q 	OPQ Q Qs	   =Az)names, usecols, parse_dates, missing_colsr   r]   r9   z
date, time)date1time1temperaturer   r   c                     | }t        d      }d| d}t        j                  t        |      5  |j	                  |d|||       d d d        y # 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': ''r   ,)sepr    usecolsr   )r   r   r   r   r   )r<   r    r   r   missing_colsr>   contentr   s           rB   &test_missing_parse_dates_column_raisesr     sa    & F@AG7~Q
GC	z	- 
E7 	 	

 
 
s   AA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,2r3   r|   rK   )r   r    y2r   1rj   )r   r   r5   r   r   r   r:   r;   )r<   r>   r=   r   r@   rA   s         rB   test_date_parser_and_namesr   "  s     FN#DD}}	!^,++ Ee , F #Sz*3*=H&(+rD   c                     | }d}|j                  t        |      dgddg      }t        t        d      dgd      }t	        j
                  ||       y )	Nza,b
1,2
2019-12-31,6rb   r   r   r   )r   r   
2019-12-31rM   )r   )rc   r   r   r   r   r   r:   r;   r   s        rB   #test_date_parser_multiindex_columnsr   6  sU    FD __Xd^*qRSf_UFi&=A3OPH&(+rD   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
    r3   zAThe 'thousands' option is not supported with the 'pyarrow' enginer   r   rf   -)r   r   r   r|   rL   re   z20-09-2001 01:00:00)rK   ri   )r5   r   r   r   r   r   r   r   r   r   r:   r;   )r<   r=   r>   r   r@   rA   s         rB   "test_date_parser_usecols_thousandsr   A  s    D
 F}}	!Q]]:S1 	OOCA	  	 	++ CA , F 1vY7L-M,NQR,RSTH&(+%	 	s   "B77C 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(   ru   r)   r   T)r   ro   r   r   Fzdate
31/12/2014
03/30/2011z
31/12/2014z
03/30/2011r   r'   )	r	   r   r   r2   r:   assert_index_equalassert_produces_warningr   r
   )inputrA   r   res1res2res5res6s          rB   test_dayfirst_warningsr   b  se    +E	|$,<4fH	J  fXe 	 (D) 
	#	#K{	C UO&EV

% 	 (D) +ElL1VLH 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   ro   )r	   r:   r   r   r   r   r2   r   )r   ro   initial_valuerA   r   ress         rB   &test_dayfirst_warnings_no_leading_zeror    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,4rb   rY   r   rL   re   ra   r4   rj   r   r   s        rB    test_infer_first_column_as_indexr    sT     F$D__E  F s3L>JH&(+rD   c           
         | }d}|j                  t        |      dddgidgd      }t        dt        d      t        j
                  t        d      t        j
                  t        d	      gid
      }t        j                  ||       y )Nz*Test
2012-10-01
0
2015-05-15
#
2017-09-09
Test#0%Y-%m-%d)	na_valuesr   date_formatz
2012-10-01z
2015-05-15z
2017-09-09r&   rH   )r   r   r   r   r6   r   r:   r;   r   s        rB   &test_replace_nans_before_parsing_datesr    s     FD __C:&H	  F ,',','	
 H &(+rD   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
stringrc   )r(   r   r   r   rb   rc   rb   )r   r   r   r   rp   r:   r;   r   s        rB   !test_parse_dates_and_string_dtyper    sm     FD __Xd^8#_OFuIl,C+DEFHSM((2HSM&(+rD   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,2r3   z27.03.2003 14:55:00.000z03.08.2003 15:20:00.000r   rb   r'   z2003-03-27 14:55:00z2003-08-03 15:20:00r   z1when dayfirst=False \(the default\) was specifiedTr   F)r   r   r   rc   r   rf   rj   )	r5   r
   r	   r   r   r   r   r:   r;   )r<   r>   r=   expected_indexr   r   r@   rA   s           rB   test_parse_dot_separated_datesr    s    FD }}	!&(AB

 &"$9:"

 
>C++ % , F #1vn=H&(+rD   c                     | }d}|j                  t        |      dddddg      }t        t        d      t        d	      gt        d      t        d	      gdd
      }t	        j
                  ||       y )N/a,b
2019-12-31,31-12-2019
2020-12-31,31-12-2020r	  z%d-%m-%Yr  rb   rc   )r  r   r   
2020-12-31r&   rH   r   r   s        rB   test_parse_dates_dict_formatr    s    FD __$:6#J  F
 L)9\+BCL)9\+BC	
 H &(+rD   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  rb   r	  Tr   )r  r   r   rc   z
31-12-2019z
31-12-2020r   r  r   rj   )r   r   r   r
   r   r:   r;   r   s        rB   "test_parse_dates_dict_format_indexr  &  s     FD __S*$54ST  F ,-	
 Y|,i.EFSQ	H &(+rD   c                    | }d}|j                  t        |      dg      }t        t        d      t        d      gdd      }|j                  dk(  r|d   j                  d	      |d<   t        j                  ||       y )
Nz/a,b
2000-01-01 00:00:00,1
2000-01-01 00:00:01,1rb   rY   z2000-01-01 00:00:00z2000-01-01 00:00:01r   r  r3   zM8[s])r   r   r   r   r5   rp   r:   r;   r   s        rB   test_parse_dates_arrow_enginer  :  s    FD __Xd^#_?F /0/0 	
H }}	! ,,W5&(+rD   c                     | }d}|j                  t        |      dg      d   }t        ddgdddg      }t        j                  ||       y )	Nz5a
2020-01-01T00:00:00+01:00
2020-01-01T00:00:00+00:00rb   rY   z2020-01-01T00:00:00+01:00z2020-01-01T00:00:00+00:00r   r   )r)   r2   )r   r   r   r:   assert_series_equalr   s        rB    test_from_csv_with_mixed_offsetsr  P  s\    FDD__Xd^#_?DF''	
 !fH 68,rD   )H__doc__r   r   r   ior   numpyrO   r   pandas.errorsr   pandasr6   r   r	   r
   r   r   r   pandas._testing_testingr:   pandas.core.indexes.datetimesr   pandas.core.tools.datetimesr   pandas.io.parsersr   markfilterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowrC   rW   r[   rl   parametrizerr   r   r   r   arrayr   r   r   r   from_tuplesr   r   r   r   r   r   r   r   r   r   r   r   r   paramr  r  r  r  r  r  r  r  r  r   rD   rB   <module>r3     s  
 
    (    4 8 &[[''C
 ''8{{&&~6,,^ & &$ 
, 
, , ," !Q#s(<=, > ," 1v1v&670, 8 0,f*& Bc(:#;<C =C xrxxA/?!Q(HIA JA 5"+. /<	,  SE"xa,-uHM	
  q1#\N(M	
 )S#J'4B'$2)>?@c
	
 ) 1v6,j,, &dAr2%dAr2 * 	
/'*V,W* X,,  31	

 70	
	 u6	, 7	,,0 U,	 
, # 
tXdAr23	uhtQ34	tXdAq12
,
,. # 
uhtQ34	tXdAr23	, ,(	Q /	w(,7	wFV,	*D662BLQ-m$f		
	

 
 , ,& , ,,B-*` ,	

 	+	
))( 	, 	, , ,> 	, 	,,B,, , ,&,, - -rD   