
    o[we                       d Z ddlmZ ddlmZmZ ddlZddlZddlm	Z	m
Z
mZmZmZ ddlmc mc mZ ddlmZmZ ddlmZ ddlm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#mZ ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 g dZ6d^dZ7ej8        d             Z9ej8        d             Z: G d d          Z; G d d          Z< G d d          Z=d Z>d Z? G d d          Z@d ZA G d d          ZBd  ZCejD        E                    d! eFejG                            d"             ZHd# ZIejD        E                    d! eFejG                            d$             ZJejD        E                    d! eFejG                            d%             ZKd& ZLd' ZMd( ZNejD        E                    d)d*did+fd*d,id-fd*d.id/fd0did1fd0d.id2fd3did4fd3d.id5fd6did7fd6d.id8fd9did:fd9d.id;fd<did=fd<d.id>fd?did@fd?d.idAfdBdidCfdBd.idDfdEdidFfdEd.idGfg          dH             ZOdI ZPejD        E                    dJg dK          dL             ZQdM ZRejD        E                    dNg dO          dP             ZSejD        E                    dQ e-dRdST           edU          f e-dVW           edX          fg          dY             ZTejD        E                    dZg d[          d\             ZUd] ZVdS )_z!
Tests of pandas.tseries.offsets
    )annotations)datetime	timedeltaN)NaT	Timedelta	Timestamp
conversion	timezones)_get_offset_offset_map)INVALID_FREQ_ERR_MSG)PerformanceWarning)	DataFrameDatetimeIndexSeries
date_range)WeekDay)offsets)FY5253BDay	BMonthEndBusinessHourCustomBusinessDayCustomBusinessHourCustomBusinessMonthBeginCustomBusinessMonthEnd
DateOffsetEasterFY5253QuarterLastWeekOfMonth
MonthBeginNanoTickWeekWeekOfMonth)	yearsmonthsweeksdayshoursminutessecondsmillisecondsmicroseconds   Fc                J   | t           u r | |ddd|          } n| t          u r | |dddd|          } nm| t          u r | |d|          } nU| t          u r | |dd|          } n<| t          u r | |d|          } n$| t
          u r | ||          } n | ||	          } | S )
Nr/   last)nstartingMonthweekday	variation	normalize)r2   r3   r4   qtr_with_extra_weekr5   r6      )r2   r4   r6   )r2   weekr4   r6   )r)   r6   r6   )r   r   r    r%   r$   r   )klassvaluer6   s      Ilib/python3.11/site-packages/pandas/tests/tseries/offsets/test_offsets.py_create_offsetr>   H   s   
 
 
 
-		 !
 
 
 
/	!	!qI>>>	+		AqIFFF	$qI>>>	*		5I666ey111L    c                 >    t          t          ddd                    S )N  r/      )r   r    r?   r=   dtrD   h   s    XdAq))***r?   c                 J   i dt          d          dt          d          dt          d          dt          d          dt          d          d	t          d          d
t          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          i dt          d          dt          d          dt          d          dt          d           d!t          d           d"t          d#          d$t          d%          d&t          d'          d(t          d'          d)t          d#          d*t          d+          d,t          d-          d.t          d/          d0t          d1          d2t          d3          d4t          d5          d6t          d7          S )8NDayz2011-01-02 09:00:00r   BusinessDay2011-01-03 09:00:00r   r   z2011-01-31 09:00:00r   r!   z2011-02-01 09:00:00BusinessMonthBeginMonthEndSemiMonthEndz2011-01-15 09:00:00SemiMonthBeginBusinessMonthEnd	YearBeginz2012-01-01 09:00:00
BYearBeginYearEndz2011-12-31 09:00:00BYearEndz2011-12-30 09:00:00QuarterBeginz2011-03-01 09:00:00BQuarterBegin
QuarterEndz2011-03-31 09:00:00BQuarterEndr   z2011-01-03 10:00:00r   r%   z2011-01-08 09:00:00r    z2011-01-29 09:00:00r   z2011-01-25 09:00:00r   r$   r   z2011-04-24 09:00:00Hourz2011-01-01 10:00:00Minutez2011-01-01 09:01:00Secondz2011-01-01 09:00:01Milliz2011-01-01 09:00:00.001000Microz2011-01-01 09:00:00.000001r"   z2011-01-01T09:00:00.000000001)r   rC   r?   r=   	expectedsr[   m   s   
#y.//#i 566# 	y!677# 	Y'<==	#
 	!),A"B"B# 	#I.C$D$D# 	i 566# 	i(=>># 	I344# 		"788# 	)$9::# 	I&;<<# 	Y455# 	i 566# 	9233#  	I344!#" 		"788## #$ 	#899%#& 	i 566'#( 	y!677)#* 		"788+#, 	i(=>>-#. 	y!677/#0 	9%:;;1#2 	#8993#4 	)1225#6 		/007#8 	)1229#: 		/00;#< 	)122=#> 	)122?#@ 	788A#B 	788C#D 		9::E# # #r?   c                      e Zd Zd Zd Zd Zd Zd Zd ZddZ	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zej                            d          ej                            dg d          d                         ZdS )
TestCommonc                   t          |          }d}t          j        t          |          5  d|_        d d d            n# 1 swxY w Y   t          j        t          |          5  d|_        d d d            d S # 1 swxY w Y   d S )Nz8objects is not writable|DateOffset objects are immutablematchT[   )r>   pytestraisesAttributeErrorr6   r2   )selfoffset_typesoffsetmsgs       r=   test_immutablezTestCommon.test_immutable   s   --H]>555 	$ 	$#F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]>555 	 	FH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA'A<<B B c                0   t          |          }t          d          |z   }t          |t                    sJ t          |z   t          u sJ |t          z   t          u sJ t          |z
  t          u sJ |                     t                    t          u sJ d S )N20080101)r>   r   
isinstancer   _apply)re   rf   rg   results       r=   test_return_typezTestCommon.test_return_type   s    -- :&&/&),,,,, V|s""""|s""""V|s""""$$++++++r?   c                    t          |          }|j        dk    sJ |dz  }|j        dk    sJ |dz  }|j        dk    sJ d S )Nr/      )r>   r2   )re   rf   rg   
neg_offset
mul_offsets        r=   test_offset_nzTestCommon.test_offset_n   s\    --x1}}}}b[
|r!!!!aZ
|q      r?   c                    t          |          }t          j        dd          }t          j        t
          d          5   t          |          dd|i|j         d d d            d S # 1 swxY w Y   d S )Ni  sargument must be an integerr_   r2   rC   )r>   nptimedelta64rb   rc   	TypeErrortypekwds)re   rf   offtd64s       r=   test_offset_timedelta64_argz&TestCommon.test_offset_timedelta64_arg   s     \**~dC((]9,IJJJ 	* 	*DII))))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s    A**A.1A.c                2   t          |          }t          j        ||dz  g|dz  |dz  gg          }t          j        ddgddgg          |z  }t          j        ||           |t          j        ddgddgg          z  }t          j        ||           d S )NrB   rr      r/   )r>   ry   arraytmassert_numpy_array_equal)re   rf   r~   expectedrn   s        r=   test_offset_mul_ndarrayz"TestCommon.test_offset_mul_ndarray   s    \**8c37^cAgsQw-?@AAAq6Aq6*++c1
#FH555rx!Q!Q 0111
#FH55555r?   c                v    t          |          }|j        }|dvrt          |          }|j        |k    sJ d S d S )N)z<Easter>z<DateOffset: days=1>zLWOM-SAT)r>   freqstrr   	rule_code)re   rf   rg   r   codes        r=   test_offset_freqstrzTestCommon.test_offset_freqstr   sR    --.JJJw''D#t++++ KJ++r?   Fc                   |rt          |t                    rd S t          ||          }t          ||          } ||          }t	          |t
                    sJ ||k    sJ  |t          |                    }t	          |t
                    sJ ||k    sJ d }	t          |          t          d          z   }
t          |          j        dk    r|dv s|r|
j	        dk    rt          }	t          j        |	          5   ||
          }d d d            n# 1 swxY w Y   t	          |t
                    sJ |du r||t          d          z   k    sJ n||k    sJ t	          |t          j                  rd S dD ]k}|                    |          }t!          j        |          }t%          j        ||          } ||          }t	          |t
                    sJ ||k    sJ  |t          ||                    }t	          |t
                    sJ ||k    sJ d }	t          ||          t          d          z   }
t          |          j        dk    r|dv s|r|
j	        dk    rt          }	t          j        |	          5   ||
          }d d d            n# 1 swxY w Y   t	          |t
                    sJ |du r||t          d          z   k    sJ c||k    sJ md S )	Nr:   r8   r   )applyrm   r   F)NUTCz
Asia/Tokyoz
US/Easternzdateutil/Asia/Tokyozdateutil/US/Pacifictz)
issubclassr#   r>   getattrrl   r   r"   r|   __name__
nanosecondUserWarningr   assert_produces_warningry   
datetime64tz_localizer
   maybe_get_tzr	   localize_pydatetime)re   rg   funcnamerD   r   r6   offset_sfuncrn   exp_warningtsr   expected_localizetz_objdt_tzs                  r=   _check_offsetfunc_worksz"TestCommon._check_offsetfunc_works   s    	FD11 	F!&I>>>x**b&),,,,,!!!!imm$$&),,,,,!!!! r]]T!WW$ NN#|33000I0!!%K '44 	 	T"XXF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &),,,,,XQ//////X%%%%b"-(( 	F
 &	3 &	3B !) 4 4R 8 8+B//F22v>>ET%[[Ffi00000.....T)B2...//Ffi00000..... K2"%%%Q/B X'<77!444	4MA%%) +K88 " "b" " " " " " " " " " " " " " "fi00000E!!!2T!WW!<<<<<<!222222M&	3 &	3s$   DD D	J!!J%	(J%	c                "   t          ddddd          }t          j        d          }||j                 }t	          |                                          }||fD ]4}|                     |d||           |                     |d||d           5d S )	N  r/   	   r   2011-01-01 09:00rm   Tr:   )r   ry   r   r   r   dater   )re   rf   r[   sdtndtr   expected_normrD   s           r=   
test_applyzTestCommon.test_apply'  s    tQ1a((m.//\23!(--//22* 	 	B((xXNNN((hMT )    	 	r?   c                   |                                 }g d}|D ]}t          d          ||<   t          d          |d<   t          d          |d<   |                                 }|D ],}t          ||                                                   ||<   -t          d          t          d          t          d          t          d          t          d	          t          d
          t          d          t          d          t          d          t          d          t          d          d}|                    |           t	          ddddd          }t          j        d          }	||	fD ]N}
||j                 }|                     |d|
|           ||j                 }|                     |d|
|d           Od S )NrF   r!   rL   rN   r$   rV   rW   rX   rY   rZ   r"   r   2011/01/01 09:00rH   r   r   z2011-01-02 00:00:00z2011-02-01 00:00:00z2011-01-15 00:00:00z2012-01-01 00:00:00z2011-01-08 00:00:002011-01-01 00:00:00rF   r   r!   rL   rN   r$   rV   rW   rX   rY   rZ   r   r/   r   r   r   rollforwardTr:   )	copyr   r   updater   ry   r   r   r   )re   rf   r[   
no_changesr2   norm_expectedk
normalizedr   r   rD   r   s               r=   test_rollforwardzTestCommon.test_rollforward5  s   NN$$	
 
 

  	9 	9A$%788IaLL$-.C$D$D	.!*34I*J*J	&' "(( 	B 	BA(q)9)>)>)@)@AAM! 233#$9::#$9::'(=>>"#899344344 566 566455455
 

 	Z(((tQ1a((m.//* 	 	B !67H((}b(SSS$\%:;H((mRT )    		 	r?   c                   i dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          d	t          d          d
t          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          dt          d          t          d          t          d          t          d          t          d          t          d          d}dD ]}t          d          ||<   |                                }|D ],}t          ||                                                   ||<   -t          d          t          d          t          d          t          d           t          d!          t          d"          t          d#          t          d#          t          d#          t          d#          t          d#          d$}|                    |           t	          d%d&d&d'd(          }t          j        d)          }||fD ]N}	||j                 }
|                     |d*|	|
           ||j                 }
|                     |d*|	|
d+,           Od S )-NrG   z2010-12-31 09:00:00r   r   r   z2010-12-01 09:00:00rI   rJ   rK   rM   rO   z2010-01-01 09:00:00rP   rQ   rR   rS   rT   rU   r   z2010-12-31 17:00:00r   z2010-12-11 09:00:00z2010-12-25 09:00:00z2010-10-26 09:00:00z2010-01-26 09:00:00z2010-04-04 09:00:00)r%   r    r   r   r   r   r   z2010-12-31 00:00:00z2010-12-01 00:00:00z2010-12-15 00:00:00z2010-01-01 00:00:00z2010-12-25 00:00:00r   r   r   r/   r   r   r   rollbackTr:   )	r   r   r   r   r   ry   r   r   r   )re   rf   r[   r2   r   r   r   r   r   rD   r   s              r=   test_rollbackzTestCommon.test_rollbackl  sq   
9%:;;
+@!A!A
 %i0E&F&F
 '	2G(H(H	

 !),A"B"B
 	"788
 I&;<<
 	*? @ @
 )$9::
 y!677
 	"788
 I&;<<
 Y'<==
 )$9::
 9%:;;
  I&;<<!
" !),A"B"B#
$ %%:;;()>??&'<== 566 566-
 
 
	4
 	9 	9A %%788IaLL "(( 	B 	BA(q)9)>)>)@)@AAM! 233#$9::#$9::'(=>>"#899344344 566 566455455
 

 	Z(((tQ1a((m.//* 	 	B !67H((z2xPPP$\%:;H((j"h$ )    	 	r?   c                |   ||j                  }t          |          }|                    |          sJ t          |t                    rd S t          |d          }|                    |          rJ |t
          t          fv rd S t          |j        |j	        |j
                  }|                    |          sJ d S )NTr:   )r   r>   is_on_offsetr   r#   r   r   r   yearmonthday)re   rf   r[   rD   r   offset_nr   s          r=   test_is_on_offsetzTestCommon.test_is_on_offset  s    |,-!,//$$R((((( lD)) 	F!,$???((,,,,,L*<=== F2622$$T*******r?   c                   |}t          ddddd          }t          |          }||j                 }||z   }t          |          |z   }	||	fD ]!}
t	          |
t                    sJ |
|k    sJ "|                    |          }t          ||          |z   }
t	          |
t                    sJ |
|k    sJ t          |t                    rd S t          |d          }t          |                                          }||z   }t          |          |z   }	||	fD ]!}
t	          |
t                    sJ |
|k    sJ "|                    |          }t          ||          |z   }
t	          |
t                    sJ |
|k    sJ d S )Nr   r/   r   r   r   Tr:   )	r   r>   r   r   rl   r   r   r#   r   )re   rf   tz_naive_fixturer[   r   rD   r   r   	result_dt	result_tsrn   r   s               r=   test_addzTestCommon.test_add  s   dAq!Q''!,//\23M	bMMH,	 ), 	& 	&Ffi00000X%%%%%$00442"%%%0&),,,,,***** lD)) 	F!,$???X]]__--M	bMMH,	 ), 	& 	&Ffi00000X%%%%%$00442"%%%0&),,,,,*******r?   c                F   t          |          }t          g |          }d }t          |t          t          t
          t          t          t          t          t          t          t          f
          rt          }|d u }t          j        ||          5  ||z   }d d d            n# 1 swxY w Y   t          j        ||           t          j        ||          5  ||z   }d d d            n# 1 swxY w Y   t          j        ||           |j        }t          j        ||          5  ||z   }d d d            n# 1 swxY w Y   t          j        ||           t          j        ||          5  ||z   }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   )check_stacklevel)r>   r   rl   r   r%   r    r   r   r   r   r   r   r   r   r   r   assert_index_equal_dataassert_equal)	re   rf   r   r   dtiwarnr   rn   dtas	            r=   test_add_empty_datetimeindexz'TestCommon.test_add_empty_datetimeindex  s   !,//B#3444!"(&
 
 	&  &D ,t3'?OPPP 	$ 	$8^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
fc***'?OPPP 	$ 	$^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
fc***i'?OPPP 	$ 	$8^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
$$$'?OPPP 	$ 	$^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
$$$$$sH   B""B&)B&C**C.1C.'D99D= D=/FFFc                    t          |          }t          j        |          }||k    sJ t          |          t          ur5|j        D ]/}|dk    r	t          ||          t          ||          k    sJ .d S d S )Ncalendar)r>   r   round_trip_pickler|   r   _attributesr   )re   rf   r~   resattrs        r=   test_pickle_roundtripz TestCommon.test_pickle_roundtrip  s    \**"3''czzzz99J&& @ @:%% sD))WS$-?-?????? '&@ @r?   c                    t          d          }t          j        |          }||k    sJ t          ddd          }||z   ||z   k    sJ d S )N   r'   i  r/   )r   r   r   r   )re   r~   r   base_dts       r=   !test_pickle_dateoffset_odd_inputsz,TestCommon.test_pickle_dateoffset_odd_inputs%  s_    ###"3''czzzz4A&&}#------r?   c                F    t          |          }t          |          J d S N)r>   hash)re   rf   r~   s      r=   test_offsets_hashablez TestCommon.test_offsets_hashable.  s'    \**Cyy$$$$$r?   zIignore:Non-vectorized DateOffset being applied to Series or DatetimeIndexunit)rw   msusc                   t          |          }t          ddd          }|j        j                            d| d          }t          |j                                      ||j                  }|j        |z   }||z   }	|}
t          |t                    r$|j
        |j
        k    rt          |          j        }
|                    |
          }t          j        |	j        |j                   d S )Nz
2016-01-01#   D)periodsfreqzM8[]dtype)r>   r   r   _ndarrayastyper|   _simple_newr   rl   r#   _cresor   r   as_unitr   r   )re   rf   r   requestr~   r   arrr   r   rn   exp_units              r=   test_add_dt64_ndarray_non_nanoz)TestCommon.test_add_dt64_ndarray_non_nano3  s     \**r<<<i ''d6639oo))#SY)??9s?sc4   	+SZ#*%<%< ~~*H##H--
#FOX5FGGGGGr?   N)F)r   
__module____qualname__ri   ro   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   markfilterwarningsparametrizer   rC   r?   r=   r]   r]      sv         , , ,! ! !* * *	6 	6 	6, , ,O3 O3 O3 O3b  5 5 5nI I IV+ + +&!+ !+ !+F)% )% )%V@ @ @. . .% % %
 [S  [V%6%6%677H H 87 H H Hr?   r]   c                     e Zd Zd Zd Zd Zej                            d e	e
j                            d             Zd Zd Zd Zej                            d	 eeg d
                    d             Zej                            d	 eeg d                    d             Zej                            d ee edd          g d                    d             Zej                            d ee edd          g d                    d             Zd Zd Zej                            dddddfddddfddddfddddfddd d!fddd"d#fddd$d%fddd&d'fg          d(             Zd) Zd*S )+TestDateOffsetc                ,    t          j                     d S r   r   clearre   s    r=   setup_methodzTestDateOffset.setup_methodM      r?   c                    t          t                                 t          t          d                     t          dt                      z             t          dt          d          z             d S )NrB   r   )reprr   r  s    r=   	test_reprzTestDateOffset.test_reprP  sc    Z\\Z]]QQ1%%%%&&&&&r?   c                    t          d          dt          d          z  k    sJ t          d          t          d          dz  k    sJ d S NrB   r/   r   r  s    r=   test_mulzTestDateOffset.test_mulV  sL    !}}JqMM 11111!}}
1 1111111r?   kwdc                    |dk    r>|j                             t          j                            t
          d                     t          di |di}|j        |dik    sJ t          ||          dk    sJ d S )NmillisecondGConstructing DateOffset object with `millisecond` is not yet supported.rc   reasonrB   rC   )	node
add_markerrb   r   xfailNotImplementedErrorr   r}   r   )re   r  r   rg   s       r=   test_constructorzTestDateOffset.test_constructorZ  s    -L##!!.% "     ''sAh''{sAh&&&&vs##q((((((r?   c                T    |t          d          z   t          ddd          k    sJ d S )NrB   rA   r/   r   )r   r   )re   rD   s     r=   test_default_constructorz'TestDateOffset.test_default_constructorh  s0    Z]]"xa';';;;;;;;r?   c                    t          d                                          rJ t          d                                          sJ d S r  )r   is_anchoredr  s    r=   test_is_anchoredzTestDateOffset.test_is_anchoredk  sD    a==,,.....!}}((*******r?   c                    t          d                                          t          d          k    sJ t          d                                          t          d          k    sJ d S )NrB   r   r/   r-   )r   r   r  s    r=   	test_copyzTestDateOffset.test_copyo  sn    ###((**j.B.B.BBBBBq)))..00JA4N4N4NNNNNNNr?   z arithmatic_offset_type, expected)	
2009-01-02z
2008-02-02z
2008-01-09z
2008-01-03z2008-01-02 01:00:00z2008-01-02 00:01:00z2008-01-02 00:00:01z2008-01-02 00:00:00.001000000z2008-01-02 00:00:00.000001000c                    t          di |di|z   t          |          k    sJ |t          di |diz   t          |          k    sJ d S Nr/   rC   r   r   re   arithmatic_offset_typer   rD   s       r=   r   zTestDateOffset.test_adds  sn    $ 883Q7882=8ATATTTTTJ=="8!!<===8ATATTTTTTTr?   )	
2007-01-02z
2007-12-02z
2007-12-26z
2008-01-01z2008-01-01 23:00:00z2008-01-01 23:59:00z2008-01-01 23:59:59z2008-01-01 23:59:59.999000000z2008-01-01 23:59:59.999999000c                    |t          di |diz
  t          |          k    sJ t          j        t          d          5  t          di |di|z
   d d d            d S # 1 swxY w Y   d S )Nr/   z$Cannot subtract datetime from offsetr_   rC   )r   r   rb   rc   r{   r"  s       r=   test_subzTestDateOffset.test_sub  s    $ J=="8!!<===8ATATTTTT]9,RSSS 	; 	;550!455::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s    AA#&A#z#arithmatic_offset_type, n, expectedr/   
   )	r  z
2008-03-02z
2008-01-23z
2008-01-06z2008-01-02 05:00:00z2008-01-02 00:06:00z2008-01-02 00:00:07z2008-01-02 00:00:00.008000000z2008-01-02 00:00:00.000009000c                >   t          di |di|z  |z   t          |          k    sJ |t          di |diz  |z   t          |          k    sJ |t          di |di|z  z   t          |          k    sJ ||t          di |diz  z   t          |          k    sJ d S r   r!  re   r#  r2   r   rD   s        r=   test_mul_addzTestDateOffset.test_mul_add  s    & 883Q7881<rAYxEXEXXXXX:<<!7 ;<<<rAYxEXEXXXXXJ=="8!!<==AAYxEXEXXXXXA
AA&<a%@AAAAYxEXEXXXXXXXr?   )	r$  z
2007-11-02z
2007-12-12z
2007-12-29z2008-01-01 19:00:00z2008-01-01 23:54:00z2008-01-01 23:59:53z2008-01-01 23:59:59.992000000z2008-01-01 23:59:59.999991000c                    |t          di |di|z  z
  t          |          k    sJ ||t          di |diz  z
  t          |          k    sJ d S r   r!  r)  s        r=   test_mul_subzTestDateOffset.test_mul_sub  sx    & J=="8!!<==AAYxEXEXXXXXA
AA&<a%@AAAAYxEXEXXXXXXXr?   c                x    t          ddd          }|t          d          z   t          ddd          k    sJ d S )NrA   r/      r   rB      )r   r   )re   ds     r=   test_leap_yearzTestDateOffset.test_leap_year  sF    T1b!!Ja((((XdAr-B-BBBBBBBr?   c                    t          d          }t          d          }||k    sJ t          d          t          d          k    sJ d S )Nr/   )r)   im  rr   r     r	  )re   offset1offset2s      r=   test_eqzTestDateOffset.test_eq  s`    !$$$#&&&'!!!!q)))ZQ-G-G-GGGGGGGr?   offset_kwargs, expected_arg)r.   r-   z2022-01-01 00:00:00.001001)r,   r-   z2022-01-01 00:00:01.001)r+   r-   z2022-01-01 00:01:00.001)r*   r-   z2022-01-01 01:00:00.001)r)   r-   z2022-01-02 00:00:00.001)r(   r-   z2022-01-08 00:00:00.001)r'   r-   z2022-02-01 00:00:00.001)r&   r-   z2023-01-01 00:00:00.001c                t    t          di |}t          d          }||z   }t          |          }||k    sJ d S )N
2022-01-01rC   r!  )re   offset_kwargsexpected_argrg   r   rn   r   s          r=   test_milliseconds_combinationz,TestDateOffset.test_milliseconds_combination  sQ     ,,m,,|$$f\**!!!!!!r?   c                    d}t          j        t          |          5  t          d           d d d            d S # 1 swxY w Y   d S )Nz3^Invalid argument/s or bad combination of argumentsr_   r/   )picoseconds)rb   rc   
ValueErrorr   )re   rh   s     r=   test_offset_invalid_argumentsz,TestDateOffset.test_offset_invalid_arguments  s    C]:S111 	& 	&1%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   <A A N)r   r   r   r  r  r
  rb   r   r   sorted
liboffsets_relativedelta_kwdsr  r  r  r  zip_ARITHMETIC_DATE_OFFSETr   r&  ranger*  r,  r1  r6  r<  r@  rC   r?   r=   r   r   L  s         ' ' '2 2 2 [UFF:+I$J$JKK) ) LK)< < <+ + +O O O [*#
 
 
	
 	
 "U U# "U [*#
 
 
	
 	
 "; ;# ";
 [-#E!RLL
 
 
	
 	
 $Y Y% $Y [-#E!RLL
 
 
	
 	
 $Y Y% $YC C CH H H [%335QRA..0IJA..0IJ!,,.GH++-FG!,,.GH1--/HI!,,.GH		
 " " "& & & & &r?   r   c                      e Zd Zd ZdS )TestOffsetNamesc                   t                      j        dk    sJ t          d          j        dk    sJ t                      j        dk    sJ t          d          j        dk    sJ t          d          j        d	k    sJ t          d          j        d
k    sJ t          d          j        dk    sJ t          d          j        dk    sJ t	          t
          j                  j        dk    sJ d S )NBrB   2BBMr   r4   W-MONr/   W-TUEW-WEDrr   W-THUr   W-FRIzLWOM-SUN)r   r   r   r$   r    r   SUNr  s    r=   test_get_offset_namez$TestOffsetNames.test_get_offset_name  s    vv~$$$$Aww$&&&&{{"d****A&'1111A&'1111A&'1111A&'1111A&'1111w{333;zIIIIIIr?   N)r   r   r   rT  rC   r?   r=   rH  rH    s(        
J 
J 
J 
J 
Jr?   rH  c                    t          j        t          t                    5  t	          d           d d d            n# 1 swxY w Y   t          j        t          t                    5  t	          d           d d d            n# 1 swxY w Y   dt                      fdt                      fdt                      fdt                      fdt          d	
          fdt          d
          fdt          d
          fdt          d
          fdt          d
          fg	} | D ]U\  }}t	          |          }||k    s;J dt          |           dt          |           dt          |           d            Vd S )Nr_   	gibberishzQS-JAN-BrJ  bbmBmrN  r   rM  rO  r/   rP  rB   rQ  rr   rR  r   z	Expected z
 to yield z
 (actual: ))	rb   rc   r?  r   r   r   r   r$   r  )pairsnamer   rg   s       r=   test_get_offsetr]    s   	z)=	>	>	> ! !K   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	z)=	>	>	>    J                              
dff	dff	y{{	y{{	$q///"	$q///"	$q///"	$q///"	$q///"
E   
 
hT""!!!(T

 ( (d8nn ( (V( ( ( "!!!
 
s!   =AA(BBBc                     dt          d          fg} | D ]L\  }}t          j        t          t                    5  t          |           d d d            n# 1 swxY w Y   Md S )Nzw@Satr8   rM  r_   )r$   rb   rc   r?  r   r   )r[  r\  r   s      r=   test_get_offset_legacyr_    s    tA'(E  h]:-ABBB 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   AA	A	c                       e Zd Zd Zd Zd ZdS )TestOffsetAliasesc                ,    t          j                     d S r   r   r  s    r=   r  zTestOffsetAliases.setup_method$  r  r?   c                r    t          j                    D ]"\  }}|||                                k    sJ #d S r   )r   itemsr   )re   r   vs      r=   test_alias_equalityz%TestOffsetAliases.test_alias_equality'  sG    %'' 	! 	!DAqy=====	! 	!r?   c                   g d}|D ]D}|t          |          j        k    sJ |t          v sJ |t          |          dz  j        k    sJ Eg d}d}|D ]P}d                    ||g          }|t          |          j        k    sJ |t          |          dz  j        k    sJ Qg d}g d}|D ]U}|D ]P}d                    ||g          }|t          |          j        k    sJ |t          |          dz  j        k    sJ QVd S )	N)MMSrL  BMSr   rJ  HTSLUrr   MONTUEWEDTHUFRISATrS  W-r8   JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC)AASBABASQQSBQBQS)r   r   r   join)re   lstr   
suffix_lstbasere  aliasbase_lsts           r=   test_rule_codez TestOffsetAliases.test_rule_code-  s   III 	7 	7AA00000####Q!+666666FFF
 	? 	?AHHdAY''EK..88888[//!3>>>>>>
 
 

 DCC 	C 	CD C C$++E 2 2 <<<<<U!3!3a!7 BBBBBBC	C 	Cr?   N)r   r   r   r  rf  r  rC   r?   r=   ra  ra  #  sF          ! ! !"C "C "C "C "Cr?   ra  c                     t          dt          dd                    } | j        dk    sJ t          dt          dd                    } | j        dk    sJ d S )Nr/   r   i  )rg   zB+30MinizB-30Min)r   r   r   )r~   s    r=   test_freq_offsetsr  R  sf    
q1d++
,
,
,C;)####
q1e,,
-
-
-C;)######r?   c                      e Zd Zd ZdS )TestReprNamesc                    g d}d |D             }g d|d D             z  }|fddD             z  }t          j                     |D ]}t          |          }|j        |k    sJ d S )N)r  r  r  r  r  r  r  r  c                (    g | ]}d D ]
}|dz   |z   S )ry  rx  rC   ).0prefixr   s      r=   
<listcomp>z<TestReprNames.test_str_for_named_is_name.<locals>.<listcomp>^  sJ     
 
 

 
  SL5 
 
 
 
r?   rp  c                    g | ]}d |z   S )zW-rC   )r  r   s     r=   r  z<TestReprNames.test_str_for_named_is_name.<locals>.<listcomp>q  s    ---$*---r?   c                *    g | ]}D ]
}d |z   |z   S )zWOM-rC   )r  r9   r   r)   s      r=   r  z<TestReprNames.test_str_for_named_is_name.<locals>.<listcomp>r  s0    WWW$RVWW3&4-#%WWWWr?   )1234)r   r   r   r   )re   month_prefixesnamesr\  rg   r)   s        @r=   test_str_for_named_is_namez(TestReprNames.test_str_for_named_is_name[  s    III
 
(
 
 
$ A@@------WWWW2FWWWW 	* 	*D &&F>T)))))	* 	*r?   N)r   r   r   r  rC   r?   r=   r  r  Z  s#        * * * * *r?   r  c                    | } |             d S r   rC   rf   clss     r=   test_valid_default_argumentsr  |  s     CCEEEEEr?   r  c                    |}d|  d}t          j        t          |          5   |di | di d d d            d S # 1 swxY w Y   d S Nz1__init__\(\) got an unexpected keyword argument ''r_   rr   rC   rb   rc   r{   )r  month_classesr  rh   s       r=   test_valid_month_attributesr    s     C
Es
E
E
EC	y	,	,	,  sAh                    <A A c                V     | d          } | d          }|j         |j         k    sJ d S )Nr/   rB   )r\  )r  objobj2s      r=   test_month_offset_namer    s;    
-

C=D9      r?   c                    | dk    r>|j                             t          j                            t
          d                     t          di | di d S )Nr  r  r  r/   rC   )r  r  rb   r   r  r  r   )r  r   s     r=   test_valid_relativedelta_kwargsr    si    
mK*!   	
 	
 	
 #qr?   c                    |}d|  d}t          j        t          |          5   |di | di d d d            d S # 1 swxY w Y   d S r  r  )r  tick_classesr  rh   s       r=   test_valid_tick_attributesr    s     C
Es
E
E
EC	y	,	,	,  sAh                 r  c                    t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          t          d                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          t          j        ddgt          j	                             d d d            d S # 1 swxY w Y   d S )Nrx   r_   zDoh!r2   r/   rB   r   )
rb   rc   r{   r   r!   r   r   ry   r   int64rC   r?   r=   test_validate_n_errorr    s   	y(E	F	F	F  V               
y(E	F	F	F # #Yq\\""""# # # # # # # # # # # # # # # 
y(E	F	F	F 1 1rxAbh///00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s1   9= =B		BB/1C--C14C1c                    | }t          j        t          d          5   |d           d d d            d S # 1 swxY w Y   d S )Nrx   r_   g      ?r  rb   rc   r?  r  s     r=   test_require_integersr    s    
C	z)F	G	G	G  c



                 s   8<<c                    | }d}t          j        t          |          5   |dd           d d d            d S # 1 swxY w Y   d S )Nz2Tick offset with `normalize=True` are not allowed.r_   rr   T)r2   r6   r  )r  r  rh   s      r=   test_tick_normalize_raisesr    s     C
>C	z	-	-	- ! !a4    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   ;??r7  nanosecondsz1970-01-01 00:00:00.000000001r8   z1970-01-01 00:00:00.000000005rq   z1969-12-31 23:59:59.999999999r.   z1970-01-01 00:00:00.000001z1969-12-31 23:59:59.999999r,   z1970-01-01 00:00:01z1969-12-31 23:59:59r+   z1970-01-01 00:01:00z1969-12-31 23:59:00r*   z1970-01-01 01:00:00z1969-12-31 23:00:00r)   z1970-01-02 00:00:00z1969-12-31 00:00:00r(   z1970-01-08 00:00:00z1969-12-25 00:00:00r'   z1970-02-01 00:00:00z1969-12-01 00:00:00r&   z1971-01-01 00:00:00z1969-01-01 00:00:00c                    t          di | }t          d          }||z   }t          |          }||k    sJ ||z  }||k    sJ ||z   }||k    sJ d S )Nr   rC   r!  )r:  r;  rg   r   rn   r   s         r=   test_dateoffset_add_subr    s    2 ((-((F	1B&[F&&HX
fFR<<<<b[FXr?   c                     t          dd          } t          d          }|| z   }t          d          }||k    sJ || z  }||k    sJ | |z   }||k    sJ d S )NrB   r   r+   r  r   z1970-01-01 00:02:00.000000013r!  )rg   r   rn   r   s       r=   +test_dateoffset_add_sub_timestamp_with_nanor    s~    q111F	1B&[F899HX
fFR<<<<b[FXr?   	attribute)r*   r)   r(   r'   r&   c                    t          di | di}d}t          j        t          |          5  t	          || d           d d d            d S # 1 swxY w Y   d S )Nr   z DateOffset objects are immutabler_   r8   rC   )r   rb   rc   rd   setattr)r  rg   rh   s      r=   test_dateoffset_immutabler    s     ))9a.))F
,C	~S	1	1	1 & &	1%%%& & & & & & & & & & & & & & & & & &s   AAAc                 v    t          j        dd          } | j         t          j        d          dk    rJ d S )NrB   r   )r'   r)   r   )r   r   r   )osets    r=   test_dateoffset_miscr    sC    QQ///DLL!+++q000000r?   r2   )rq   r/   rr   c                    t          |           }|j        t          d          k    sJ t          ddd          |z   }t          ddd| z             }||k    sJ d S )Nr/   i  rB   )r   _offsetr   r   )r2   rg   rn   r   s       r=   -test_construct_int_arg_no_kwargs_assumed_daysr    sj     ]]F>Yq\\))))tQ""V+Fq!a%((HXr?   zoffset, expectedr3     r  z2022-01-01 00:07:00.000000018rr   )r  z2022-01-01 00:00:00.000000003c                    t          d          }|}t          |g          }|| z   }|d         |k    sJ || z  }|d         |k    sJ | |z   }|d         |k    sJ d S )Nr9  r   )r   r   )rg   r   
start_time	teststamp
testseriess        r=   2test_dateoffset_add_sub_timestamp_series_with_nanor    s     <((JI%%Jf$Ja=H$$$$&Ja=I%%%%*$Ja=H$$$$$$r?   z=n_months, scaling_factor, start_timestamp, expected_timestamp))r/   rB   
2020-01-30
2020-03-30)rB   r/   r  r  )r/   r   r  r  )rB   r   r  r  )r/   rq   r  z
2019-12-30)rB   rq   r  z
2019-11-30c                    t          |           }t          |          }t          |g          }|||z  z   }|||z  z   }t          |          }	t          |	g          }
||	k    sJ t          j        ||
           d S )Nr   )r   r   r   r   assert_series_equal)n_monthsscaling_factorstart_timestampexpected_timestampmo1startscalar
startarrayresultscalarresultarrayexpectedscalarexpectedarrays              r=   test_offset_multiplicationr  1  s     H
%
%
%CO,,K&&J#"67Ln 45K122NN+,,M>))));66666r?   c                    t          t          d          gt          d          gd          } | d         d| d         z  z   }t          t          d          t          d          gt          d          t          d          gd          }t          d          }t          j        t
                    5  |d         d|d         z  z   }d d d            n# 1 swxY w Y   |d	         |k    sJ |d	         |k    sJ d S )
Nz
2019-04-30r/   r   )rl  r   rl     r   z
2021-06-30r   )r   r   r   r   r   r   )dfframeresult1df2expecteddateframeresult2s        r=   (test_dateoffset_operations_on_dataframesr  O  sS   	)L112*A:N:N:N9OPP	Q	QBc7R"S'\)L
L))9\+B+BCA&&&
!(<(<(<=	
 	
 C \**L		#$6	7	7 0 03x"s3x-/0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ?l****?l******s   8CC C)r/   F)W__doc__
__future__r   r   r   numpyry   rb   pandas._libs.tslibsr   r   r   r	   r
   pandas._libs.tslibs.offsets_libstslibsr   rB  r   r   pandas._libs.tslibs.periodr   pandas.errorsr   pandasr   r   r   r   pandas._testing_testingr   #pandas.tests.tseries.offsets.commonr   pandas.tseriespandas.tseries.offsetsr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   rE  r>   fixturerD   r[   r]   r   rH  r]  r_  ra  r  r  r  r   r   rA  rC  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r?   r=   <module>r     sr    # " " " " "       
                   1 0 0 0 0 0 0 0 0 0 0 0        < ; ; ; ; ; , , , , , ,                  7 7 7 7 7 7 " " " " " "                                     (
 
 
    @ + + + ' ' 'TqH qH qH qH qH qH qH qHhe& e& e& e& e& e& e& e&PJ J J J J J J J
 
 
4  ,C ,C ,C ,C ,C ,C ,C ,C^$ $ $* * * * * * * *D
 
 
 z'E F FGG  HG! ! ! z'E F FGG  HG z'E F FGG  HG1 1 1  ! ! ! !
	<=
	<=
	=>
!	:;
"	;<
Q./
R/0
Q./
R/0
1,-
2-.
!+,
",-
1,-
2-.
A-.
B./
1,-
2-.' 0	 	1 0		 	 	   	 	& &	 	&1 1 1 jjj))  *)  Jqb111I566	
 
	"	"	"II.M$N$NO	 	
% 
%	 	
% C  
 
7 7
 
7&+ + + + +r?   