
    .iS                       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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.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 g dZ6dfdZ7 ejp                  ejr                  D  cg c]*  }  e: e;e|       ejx                        r| dk7  r	 e;e|       , c}       d        Z= ejp                  ejr                  D  cg c]  } | dvs e;e|        c}       d        Z>ejp                  d        Z?ejp                  d        Z@ G d d      ZA G d d      ZB G d d      ZCd ZDd ZE G d d      ZFd  ZG G d! d"      ZHd# ZIej                  j                  d$ eLej                              d%        ZNd& ZOej                  j                  d$ eLej                              d'        ZPej                  j                  d$ eLej                              d(        ZQd) ZRd* ZSd+ ZTej                  j                  d,d-did.fd-d/id0fd-d1id2fd3did4fd3d1id5fd6did7fd6d1id8fd9did:fd9d1id;fd<did=fd<d1id>fd?did@fd?d1idAfdBdidCfdBd1idDfdEdidFfdEd1idGfdHdidIfdHd1idJfg      dK        ZUdL ZVej                  j                  dMg dN      dO        ZWdP ZXej                  j                  dQg dR      dS        ZYej                  j                  dT e,dUdVW       edX      f e,dYZ       ed[      fg      d\        ZZej                  j                  d]g d^      d_        Z[d` Z\da Z]db Z^ej                  j                  dc e,d       e2d      g      ej                  j                  dd e,d       e2d      g      de               Z_yc c} w c c} w )gz!
Tests of pandas.tseries.offsets
    )annotations)datetime	timedeltaN)NaT	Timedelta	Timestamp
conversion	timezones)_get_offset_offset_map	to_offset)INVALID_FREQ_ERR_MSG)	DataFrameDatetimeIndexSeries
date_range)WeekDay)offsets)FY5253BDay	BMonthEndBusinessHourCustomBusinessDayCustomBusinessHourCustomBusinessMonthBeginCustomBusinessMonthEnd
DateOffsetDayEasterFY5253QuarterLastWeekOfMonth
MonthBeginNanoTickWeekWeekOfMonth)	yearsmonthsweeksdayshoursminutessecondsmillisecondsmicroseconds   c                    | t         u r | |ddd|      } | S | t        u r | |dddd|      } | S | t        u r | |d|      } | S | t        u r | |dd|      } | S | t        u r | |d|      } | S | t
        u r | ||      } | S  | ||	      } | S )
Nr0   last)nstartingMonthweekday	variation	normalize)r3   r4   r5   qtr_with_extra_weekr6   r7      )r3   r5   r7   )r3   weekr5   r7   )r*   r7   r7   )r   r    r!   r&   r%   r   )klassvaluer7   s      g/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/tseries/offsets/test_offsets.py_create_offsetr?   J   s    
4 L' 
-	 !
$ L 
/	!qI> L 
+	AqIF L 
$qI>
 L	 
*	5I6 L ey1L    MonthOffset)paramsc                    | j                   S )zO
    Fixture for month based datetime offsets available for a time series.
    paramrequests    r>   month_classesrH   j   s     ==r@   )r$   
BaseOffsetc                    | j                   S )zK
    Fixture for all the datetime offsets available for a time series.
    rD   rF   s    r>   offset_typesrK   y   s     ==r@   c                 .    t        t        ddd            S )N  r0      )r   r    r@   r>   dtrP      s    XdAq)**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      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)      d0t        d1      d2t        d3      d4t        d5      t        d6      t        d7      t        d8      t        d9      d:S );Nr   z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BQuarterEndHalfYearBeginz2011-07-01 09:00:00HalfYearEndz2011-06-30 09:00:00BHalfYearBeginBHalfYearEndr   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:00z2011-01-01 09:00:01z2011-01-01 09:00:00.001000z2011-01-01 09:00:00.000001z2011-01-01T09:00:00.000000001)SecondMilliMicror#   )r   rO   r@   r>   	expectedsrj      s   
'y./'i 56' 	y!67' 	Y'<=	'
 	!),A"B' 	#I.C$D' 	i 56' 	i(=>' 	I34' 		"78' 	)$9:' 	I&;<' 	Y45' 	i 56' 	923'  	I34!'" 		"78#'$ 	#89%'& 	i 56''( 	y!67)'* 	#89+', 	y!67-'. 	)$9:/'0 		"781'2 		"783'4 	i(=>5'6 	y!677'8 	9%:;9': 	#89;'< 	)12='> 		/0?'@ 	)12A'B 		/0C'D 	)12E'F 1278789:M' '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(                  j+                  d      ej(                  j-                  dg d      d               Zy)
TestCommonc                    t        |      }d}t        j                  t        |      5  d|_        d d d        t        j                  t        |      5  d|_        d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nz8objects is not writable|DateOffset objects are immutablematchT[   )r?   pytestraisesAttributeErrorr7   r3   )selfrK   offsetmsgs       r>   test_immutablezTestCommon.test_immutable   sk    -H]]>5 	$#F	$]]>5 	FH	 		$ 	$	 	s   A%A1%A.1A:c                    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 | j	                  t              t        u sJ y )N20080101)r?   r   
isinstancer   _apply)rt   rK   ru   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 y )Nr0      )r?   r3   )rt   rK   ru   
neg_offset
mul_offsets        r>   test_offset_nzTestCommon.test_offset_n   sR    -xx1}}b[
||r!!!aZ
||q   r@   c                    t        |      }t        j                  dd      }t        j                  t
        d      5   t        |      dd|i|j                   d d d        y # 1 sw Y   y xY w)Ni  sargument must be an integerrn   r3   rO   )r?   nptimedelta64rq   rr   	TypeErrortypekwds)rt   rK   offtd64s       r>   test_offset_timedelta64_argz&TestCommon.test_offset_timedelta64_arg   s\     \*~~dC(]]9,IJ 	*DI)))	* 	* 	*s   A$$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                  ||       y )NrN   r      r0   )r?   r   arraytmassert_numpy_array_equal)rt   rK   r   expectedr|   s        r>   test_offset_mul_ndarrayz"TestCommon.test_offset_mul_ndarray   s    \*88c37^cAgsQw-?@AAq6Aq6*+c1
##FH5rxx!Q!Q 011
##FH5r@   c                t    t        |      }|j                  }|dvrt        |      }|j                  |k(  sJ y y )N)z<Easter: method=3>z<DateOffset: days=1>zLWOM-SAT)r?   freqstrr   	rule_code)rt   rK   ru   r   codes        r>   test_offset_freqstrzTestCommon.test_offset_freqstr   sB    -..TTw'D##t+++ Ur@   c                @   |rt        |t        t        f      ry t        ||      }t	        ||      } ||      }t        |t              sJ ||k(  sJ  |t        |            }t        |t              sJ ||k(  sJ t        |      t        d      z   }	t        j                  d       5   ||	      }d d d        t        |t              sJ |du r||t        d      z   k(  s	J ||k(  sJ t        |t        j                        ry dD ]  }
|j                  |
      }t        j                  |
      }t        j                   ||      } ||      }t        |t              sJ ||k(  sJ  |t        ||
            }t        |t              sJ ||k(  sJ t        ||
      t        d      z   }	t        j                  d       5   ||	      }d d d        t        |t              sJ |du r||t        d      z   k(  rJ ||k(  rJ  y # 1 sw Y   VxY w# 1 sw Y   JxY w)Nr;   r9   F)NUTCz
Asia/Tokyoz
US/Easternzdateutil/Asia/Tokyozdateutil/US/Pacifictz)
issubclassr$   r   r?   getattrrz   r   r#   r   assert_produces_warningr   
datetime64tz_localizer
   maybe_get_tzr	   localize_pydatetime)rt   ru   funcnamerP   r   r7   offset_sfuncr|   tsr   expected_localizetz_objdt_tzs                 r>   _check_offsetfunc_worksz"TestCommon._check_offsetfunc_works   s1   FT3K8!&I>x*b&),,,!!!im$&),,,!!! r]T!W$''- 	"XF	 &),,,XQ////X%%%b"--(
 	3B !) 4 4R 8++B/F222v>E%[Ffi000....)B2./Ffi000.... 2"%Q/B++D1 "b"fi000E!!2T!W!<<<<!2222;	3	 	H" "s   *	H	HHH	c                   t        ddddd      }t        j                  d      }||j                     }t	        |j                               }||fD ],  }| j                  |d||       | j                  |d||d       . y )	N  r0   	   r   2011-01-01 09:00r{   Tr;   )r   r   r   __name__r   dater   )rt   rK   rj   sdtndtr   expected_normrP   s           r>   
test_applyzTestCommon.test_apply6  s    tQ1a(mm./\223!(--/2* 	B((xXN((hMT ) 	r@   c                   |j                         }g d}|D ]  }t        d      ||<    t        d      |d<   t        d      |d<   |j                         }|D ]!  }t        ||   j                               ||<   # t        d      t        d      t        d      t        d      t        d	      t        d
      t        d      t        d      t        d      t        d      t        d      t        d      d}|j                  |       t	        ddddd      }t        j                  d      }	||	fD ]J  }
||j                     }| j                  |d|
|       ||j                     }| j                  |d|
|d       L y )Nr   r"   rW   rY   ra   r%   re   rf   rg   rh   ri   r#   r   2011/01/01 09:00rS   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-07-01 00:00:00z2011-01-08 00:00:00z2011-01-01 00:00:00)r   r   r"   rW   rY   ra   r%   re   rf   rg   rh   ri   r   r0   r   r   r   rollforwardTr;   )	copyr   r   updater   r   r   r   r   )rt   rK   rj   
no_changesr3   norm_expectedk
normalizedr   r   rP   r   s               r>   test_rollforwardzTestCommon.test_rollforwardD  s   NN$	

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

 	Z(tQ1a(mm./* 	B !6!67H((}b(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      t        d      t        d      t        d      t        d      d	}dD ]  }t        d      ||<    |j                         }|D ]!  }t        ||   j                               ||<   # t        dd d d!d"      }t	        j
                  d#      }||fD ]J  }||j                     }	| j                  |d$||	       ||j                     }	| j                  |d$||	d%&       L y )'NrR   z2010-12-31 09:00:00r   r   r   z2010-12-01 09:00:00rT   rU   rV   rX   rZ   z2010-01-01 09:00:00r[   r\   r]   r^   r_   r`   ra   z2010-07-01 09:00:00rb   z2010-12-31 17:00:00z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)	rc   rd   r   r   r&   r!   r    r   r   r   r   r   r0   r   r   r   rollbackTr;   )r   r   r   r   r   r   r   r   )
rt   rK   rj   r3   r   r   r   r   rP   r   s
             r>   test_rollbackzTestCommon.test_rollback}  su   
9%:;
+@!A
 %i0E&F
 '	2G(H	

 !),A"B
 	"78
 I&;<
 	*? @
 )$9:
 y!67
 	"78
 I&;<
 Y'<=
 )$9:
 9%:;
  Y'<=!
" 9%:;#
$ ((=>%&;<%&;<"+,A"B$%:;()>?&'<= 56 565
	<
 	9A %%78IaL	9$ "( 	BA(q)9)>)>)@AM!	B tQ1a(mm./* 	B !6!67H((z2xP$\%:%:;H((j"h$ ) 	r@   c                f   ||j                      }t        |      }|j                  |      sJ t        |t        t
        f      ry t        |d      }|j                  |      rJ |t        t        fv ry t        |j                  |j                  |j                        }|j                  |      sJ y )NTr;   )r   r?   is_on_offsetr   r$   r   r   r   r   yearmonthday)rt   rK   rj   rP   r   offset_nr   s          r>   test_is_on_offsetzTestCommon.test_is_on_offset  s    |,,-!,/$$R((( lT3K0!,$?((,,,L*<== 2662$$T***r@   c                   |}t        ddddd      }t        |      }||j                     }||z   }t        |      |z   }	||	fD ]  }
t	        |
t              sJ |
|k(  rJ  |j                  |      }t        ||      |z   }
t	        |
t              sJ |
|k(  sJ t        |t        t        f      ry t        |d      }t        |j                               }||z   }t        |      |z   }	||	fD ]  }
t	        |
t              sJ |
|k(  rJ  |j                  |      }t        ||      |z   }
t	        |
t              sJ |
|k(  sJ y )Nr   r0   r   r   r   Tr;   )
r   r?   r   r   rz   r   r   r$   r   r   )rt   rK   tz_naive_fixturerj   r   rP   r   r   	result_dt	result_tsr|   r   s               r>   test_addzTestCommon.test_add  sz   dAq!Q'!,/\223M	bMH,	 ), 	&Ffi000X%%%	& %0042"%0&),,,**** lT3K0!,$?X]]_-M	bMH,	 ), 	&Ffi000X%%%	& %0042"%0&),,,****r@   c                *   t        |      }t        g |      j                  d      }t        |t        t
        t        t        t        t        t        t        t        t        f
      sd}|d u }t        j                  ||      5  ||z   }d d d        t        j                   |       t        j                  ||      5  ||z   }d d d        t        j                   ||       |j"                  }t        j                  ||      5  ||z   }d d d        t        j$                  ||       t        j                  ||      5  ||z   }d d d        t        j$                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   DxY w)Nr   nsF)check_stacklevel)r?   r   as_unitrz   r   r&   r!   r   r   r   r   r   r   r    r   r   assert_index_equal_dataassert_equal)	rt   performance_warningrK   r   r   dtir   r|   dtas	            r>   test_add_empty_datetimeindexz'TestCommon.test_add_empty_datetimeindex  s    ",/B#34<<TB!"(&
  #( ,t3''2B
 	$ 8^F	$ 	fc*''2B
 	$ ^F	$ 	fc*ii''2B
 	$ 8^F	$ 	$''2B
 	$ ^F	$ 	$+	$ 	$
	$ 	$	$ 	$
	$ 	$s0   E%>E1E= F	%E.1E:=F	Fc                    t        |      }t        j                  ||      }||k(  sJ t        |      t        ur3|j
                  D ]#  }|dk(  r	t        ||      t        ||      k(  r#J  y y )Ncalendar)r?   r   round_trip_pickler   r   _attributesr   )rt   rK   	temp_filer   resattrs         r>   test_pickle_roundtripz TestCommon.test_pickle_roundtrip(  sy    \*""3	2czz9J& @:% sD)WS$-????@ 'r@   c                    t        d      }t        j                  ||      }||k(  sJ t        ddd      }||z   ||z   k(  sJ y )N   r(   i  r0   )r   r   r   r   )rt   r   r   r   base_dts        r>   !test_pickle_dateoffset_odd_inputsz,TestCommon.test_pickle_dateoffset_odd_inputs5  sN    #""3	2czz4A&}#---r@   c                4    t        |      }t        |      J y N)r?   hash)rt   rK   r   s      r>   test_offsets_hashablez TestCommon.test_offsets_hashable>  s    \*Cy$$$r@   zIignore:Non-vectorized DateOffset being applied to Series or DatetimeIndexunit)r   msusc                   t        |      }t        ddd|      }||z   j                  d       }|}t        |t              r8|j
                  |j                  j
                  kD  rt        |      j                  }t        |D cg c]  }||z   	 c}      j                  |      }t        j                  ||       y c c}w )Nz
2016-01-01#   D)periodsfreqr   )r?   r   
_with_freqrz   r$   _cresor   r   r   r   r   r   r   )	rt   rK   r   r   r   r|   exp_unitxr   s	            r>   test_add_dt64_ndarray_non_nanoz)TestCommon.test_add_dt64_ndarray_non_nanoD  s     \*r$G)''-c4 SZZ#))2B2B%B ~**H 3!7a!c'!78@@J
fh/ "8s   B;N)F)r   
__module____qualname__rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   markfilterwarningsparametrizer   rO   r@   r>   rl   rl      s    ,!*	6,=3~7r?B+&!+F2%h@.% [[S [[V%670 80r@   rl   c                     e Zd Zd Zd Zd Zej                  j                  d e	e
j                              d        Zd Zd Zej                  j                  d eeg d	d
            d        Zej                  j                  d eeg dd
            d        Zej                  j                  d ee edd      g dd
            d        Zej                  j                  d ee edd      g dd
            d        Zd Zd Zej                  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y+),TestDateOffsetc                ,    t        j                          y r   r   clearrt   s    r>   setup_methodzTestDateOffset.setup_method[      r@   c                    t        t                      t        t        d             t        dt               z         t        dt        d      z         y )NrN   r   )reprr   r  s    r>   	test_reprzTestDateOffset.test_repr^  s9    Z\Z]QQ1%%&r@   c                t    t        d      dt        d      z  k(  sJ t        d      t        d      dz  k(  sJ y )NrN   r0   r   r  s    r>   test_mulzTestDateOffset.test_muld  s8    !}JqM 1111!}
1 1111r@   kwdc                    |dk(  r4|j                  t        j                  j                  t        d             t        di |di}|j                  |dik(  sJ t        ||      dk(  sJ y )NmillisecondGConstructing DateOffset object with `millisecond` is not yet supported.rr   reasonrN   rO   )applymarkerrq   r   xfailNotImplementedErrorr   r   r   )rt   r  rG   ru   s       r>   test_constructorzTestDateOffset.test_constructorh  su    -!!.% "  'sAh'{{sAh&&&vs#q(((r@   c                @    |t        d      z   t        ddd      k(  sJ y )NrN   rM   r0   r   )r   r   )rt   rP   s     r>   test_default_constructorz'TestDateOffset.test_default_constructorv  s"    Z]"xa';;;;r@   c                    t        d      j                         t        d      k(  sJ t        d      j                         t        d      k(  sJ y )NrN   r   r0   r.   )r   r   r  s    r>   	test_copyzTestDateOffset.test_copyy  sD    #((*j.BBBBq)..0JA4N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.000001000T)strictc                |    t        di |di|z   t        |      k(  sJ |t        di |diz   t        |      k(  sJ y Nr0   rO   r   r   rt   arithmatic_offset_typer   rP   s       r>   r   zTestDateOffset.test_add}  sP    & 83Q782=8ATTTTJ="8!!<==8AT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        y # 1 sw Y   y xY w)Nr0   z$Cannot subtract datetime from offsetrn   rO   )r   r   rq   rr   r   r"  s       r>   test_subzTestDateOffset.test_sub  sd    & J="8!!<==8ATTTT]]9,RS 	;50!45:	; 	; 	;s   AAz#arithmatic_offset_type, n, expectedr0   
   )	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 y r   r!  rt   r#  r3   r   rP   s        r>   test_mul_addzTestDateOffset.test_mul_add  s    ( 83Q781<rAYxEXXXX:<!7 ;<<rAYxEXXXXJ="8!!<=AAYxEXXXXA
A&<a%@AAAYxEX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 y r   r!  r)  s        r>   test_mul_subzTestDateOffset.test_mul_sub  sZ    ( J="8!!<=AAYxEXXXXA
A&<a%@AAAYxEXXXXr@   c                \    t        ddd      }|t        d      z   t        ddd      k(  sJ y )NrM   r0      r   rN      )r   r   )rt   ds     r>   test_leap_yearzTestDateOffset.test_leap_year  s1    T1b!Ja((XdAr-BBBBr@   c                x    t        d      }t        d      }||k7  sJ t        d      t        d      k7  sJ y )Nr0   )r*   im  r   r     r  )rt   offset1offset2s      r>   test_eqzTestDateOffset.test_eq  s<    !$#&'!!!q)ZQ-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        di |}t        d      }||z   }t        |      }||k(  sJ y )N
2022-01-01rO   r!  )rt   offset_kwargsexpected_argru   r   r|   r   s          r>   test_milliseconds_combinationz,TestDateOffset.test_milliseconds_combination  s<     ,m,|$f\*!!!r@   c                    d}t        j                  t        |      5  t        d       d d d        y # 1 sw Y   y xY w)Nz3^Invalid argument/s or bad combination of argumentsrn   r0   )picoseconds)rq   rr   
ValueErrorr   )rt   rv   s     r>   test_offset_invalid_argumentsz,TestDateOffset.test_offset_invalid_arguments  s2    C]]:S1 	&1%	& 	& 	&s   4=N)r   r   r   r  r
  r  rq   r   r   sorted
liboffsets_relativedelta_kwdsr  r  r  zip_ARITHMETIC_DATE_OFFSETr   r&  ranger*  r,  r1  r6  r<  r@  rO   r@   r>   r  r  Z  s   '2 [[UF:+I+I$JK) L)<O [[*#
 	
$U%$U [[*#
 	
$;%$;
 [[-#!RL
 	
&Y'&Y [[-#!RL
 	
&Y'&YCH [[%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y)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 y )NBrN   2BBMEr   r5   W-MONr0   W-TUEW-WEDr   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    v~~$$$Aw$&&&{""e+++A&&'111A&&'111A&&'111A&&'111A&&'111w{{3;;zIIIr@   N)r   r   r   rT  rO   r@   r>   rH  rH    s    
Jr@   rH  c            
        t        j                  t        t              5  t	        d       d d d        t        j                  t        t              5  t	        d       d d d        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 ]&  \  }}t	        |      }||k(  rJ d|d|d|d        y # 1 sw Y   xY w# 1 sw Y   xY w)Nrn   	gibberishzQS-JAN-BrJ  rL  rN  r   rM  rO  r0   rP  rN   rQ  r   rR  r   z	Expected z
 to yield z
 (actual: ))rq   rr   r?  r   r   r   r   r%   )pairsnamer   ru   s       r>   test_get_offsetrZ    s    	z)=	> !K !	z)=	>  J  
df			$q/"	$q/"	$q/"	$q/"	$q/"E   
hT"! 	
xz(ZzK	
!
! !   s   C,C8,C58Dc                     dt        d      fg} | D ]8  \  }}t        j                  t        t              5  t        |       d d d        : y # 1 sw Y   ExY w)Nzw@Satr9   rM  rn   )r%   rq   rr   r?  r   r   )rX  rY  r   s      r>   test_get_offset_legacyr\  '  sW    tA'(E h]]:-AB 		 		 	s   AA	c                      e Zd Zd Zd Zd Zy)TestOffsetAliasesc                ,    t        j                          y r   r  r  s    r>   r  zTestOffsetAliases.setup_method/  r  r@   c                l    t        j                         D ]  \  }}|	||j                         k(  rJ  y r   )r   itemsr   )rt   r   vs      r>   test_alias_equalityz%TestOffsetAliases.test_alias_equality2  s8    %%' 	!DAqy= =	!r@   c                
   g d}|D ]C  }|t        |      j                  k(  sJ |t        v sJ |t        |      dz  j                  k(  rCJ  g d}d}|D ]L  }dj                  ||g      }|t        |      j                  k(  sJ |t        |      dz  j                  k(  rLJ  g d}g d}|D ]S  }|D ]L  }dj                  ||g      }|t        |      j                  k(  sJ |t        |      dz  j                  k(  rLJ  U y )	N)MEMSrL  BMSr   rJ  hminr   r   r   r   MONTUEWEDTHUFRISATrS  W-r9   JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC)YEYSBYEBYSQEQSBQEBQSHYEHYSBHYEBHYS)r   r   r   join)rt   lstr   
suffix_lstbaserb  aliasbase_lsts           r>   test_rule_codez TestOffsetAliases.test_rule_code8  s9   O 	7AA00000###Q!+66666		7 G
 	?AHHdAY'EK.88888[/!3>>>>>	?



  	CD C$+E 2 < <<<<U!3a!7 B BBBBC	Cr@   N)r   r   r   r  rc  r  rO   r@   r>   r^  r^  .  s    !/Cr@   r^  c                     t        dt        dd            } | j                  dk(  sJ t        dt        dd            } | j                  dk(  sJ y )Nr0   r   i  )ru   zB+30MinizB-30Min)r   r   r   )r   s    r>   test_freq_offsetsr  j  sL    
q1d+
,C;;)###
q1e,
-C;;)###r@   c                      e Zd Zd Zy)TestReprNamesc                P   g d}|D cg c]  }dD ]
  }|dz   |z     }}}g d}||D cg c]  }d|z   	 c}z  }|dD cg c]  }|D ]
  }d|z   |z     c}}z  }t        j                          |D ]  }t        |      }	|	j                  |k(  rJ  y c c}}w c c}w c c}}w )N)r  r  r  r  r  r  r  r  r  r  r  r  rs  rr  rj  zW-)1234zWOM-)r   r  r   r   )
rt   month_prefixesprefixr   namesr*   r   r:   rY  ru   s
             r>   test_str_for_named_is_namez(TestReprNames.test_str_for_named_is_names  s    
  )

  SL5 
 
 
$ A-$*--2FW$RVW3&4-#%W%WW 	*D &F>>T)))	*-
& .Ws   BBB"N)r   r   r   r  rO   r@   r>   r  r  r  s    (*r@   r  c                    | } |        y r   rO   rK   clss     r>   test_valid_default_argumentsr    s     CEr@   r  c                    |}d|  d}t        j                  t        |      5   |di | di d d d        y # 1 sw Y   y xY wNz1__init__\(\) got an unexpected keyword argument ''rn   r   rO   rq   rr   r   )r  rH   r  rv   s       r>   test_valid_month_attributesr    sG     C>se1
EC	y	, sAh  	   8Ac                Z     | d      } | d      }|j                   |j                   k(  sJ y )Nr0   rN   )rY  )rH   objobj2s      r>   test_month_offset_namer    s,    

CD99   r@   c                    | dk(  r4|j                  t        j                  j                  t        d             t        di | di y )Nr  r  r  r0   rO   )r  rq   r   r  r  r   )r  rG   s     r>   test_valid_relativedelta_kwargsr    sH    
mKK*!  	
 #qr@   c                    |}d|  d}t        j                  t        |      5   |di | di d d d        y # 1 sw Y   y xY wr  r  )r  tick_classesr  rv   s       r>   test_valid_tick_attributesr    sG     C>se1
EC	y	, sAh  r  c                    t        j                  t        d      5  t        d       d d d        t        j                  t        d      5  t	        t        d             d d d        t        j                  t        d      5  t        t        j                  ddgt        j                               d d d        y # 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   rn   zDoh!r3   r0   rN   )dtype)
rq   rr   r   r   r"   r   r   r   r   int64rO   r@   r>   test_validate_n_errorr    s    	y(E	F V 
y(E	F #Yq\"# 
y(E	F 1rxxAbhh/01 1 # #1 1s#   C C2C C	CC!c                z    | }t        j                  t        d      5   |d       d d d        y # 1 sw Y   y xY w)Nr   rn   g      ?r  rq   rr   r?  r  s     r>   test_require_integersr    s2    
C	z)F	G c
  s   
1:c                    | }d}t        j                  t        |      5   |dd       d d d        y # 1 sw Y   y xY w)Nz2Tick offset with `normalize=True` are not allowed.rn   r   T)r3   r7   r  )r  r  rv   s      r>   test_tick_normalize_raisesr    s;     C
>C	z	- !a4 ! ! !s   4=r7  nanosecondsz1970-01-01 00:00:00.000000001r9   z1970-01-01 00:00:00.000000005r   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 y )Nr   rO   r!  )r:  r;  ru   r   r|   r   s         r>   test_dateoffset_add_subr    sh    2 (-(F	1B&[F&HX
fFR<<b[FXr@   c                 L   t        dd      } t        d      }|| z   }t        d      }||k(  sJ || z  }||k(  sJ | |z   }||k(  sJ t        ddd      }|j                  sJ t        j                  d       5  ||z   }d d d        t        d      }|k(  sJ y # 1 sw Y   xY w)	NrN   r   r,   r  r   z1970-01-01 00:02:00.000000013r0   )r,   r  hourz1970-01-01 01:02:00.000000013)r   r   _use_relativedeltar   r   )ru   r   r|   r   r5  result2	expected2s          r>   +test_dateoffset_add_sub_timestamp_with_nanor    s    q1F	1B&[F89HX
fFR<<b[FX:G%%%%		#	#D	) w, 9:Ii	 s   9BB#	attribute)r+   r*   r)   r(   r'   c                    t        di | di}d}t        j                  t        |      5  t	        || d       d d d        y # 1 sw Y   y xY w)Nr   z DateOffset objects are immutablern   r9   rO   )r   rq   rr   rs   setattr)r  ru   rv   s      r>   test_dateoffset_immutabler  $  sI     )9a.)F
,C	~S	1 &	1%& & &s   AAc                     t        j                  dd      } | j                   t        j                  d      dk(  rJ y )NrN   r   )r(   r*   r   )r   r   r   )osets    r>   test_dateoffset_miscr  5  s7    QQ/DLL!!+q0000r@   r3   )r   r0   r   c                    t        |       }|j                  t        d      k(  sJ t        ddd      |z   }t        ddd| z         }||k(  sJ y )Nr0   i  rN   )r   _offsetr   r   )r3   ru   r|   r   s       r>   -test_construct_int_arg_no_kwargs_assumed_daysr  =  sV     ]F>>Yq\)))tQ"V+Fq!a%(HXr@   zoffset, expectedr3     r  z2022-01-01 00:07:00.000000018r   )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 y )Nr9  r   )r   r   )ru   r   
start_time	teststamp
testseriess        r>   2test_dateoffset_add_sub_timestamp_series_with_nanor  G  ss     <(JI%Jf$Ja=H$$$&Ja=I%%%*$Ja=H$$$r@   z=n_months, scaling_factor, start_timestamp, expected_timestamp))r0   rN   
2020-01-30
2020-03-30)rN   r0   r  r  )r0   r   r  r  )rN   r   r  r  )r0   r   r  z
2019-12-30)rN   r   r  z
2019-11-30c                    t        |       }t        |      }t        |g      }|||z  z   }|||z  z   }t        |      }	t        |	g      }
||	k(  sJ t        j                  ||
       y )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  ^  sx     H
%CO,K&J#"67Ln 45K12NN+,M>)));6r@   c                     t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)NzDid you mean hrn   z
2012-01-01r   H)r   r   )rq   rr   r?  r   rO   r@   r>   test_offset_deprecated_errorr  |  s2    	z)9	: 6<56 6 6s   4=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                  |       5  |d   d|d   z  z   }d d d        |d	   |k(  sJ d	   |k(  sJ y # 1 sw Y   xY w)
Nz
2019-04-30r0   r   )Tr   r     r   z
2021-06-30r   )r   r   r   r   r   )r   dfframeresult1df2expecteddateframeresult2s         r>   (test_dateoffset_operations_on_dataframesr    s    	)L12*A:N9OP	QBc7R"S'\)L
L)9\+BCA&
!(<=	
C \*L		#	#$7	8 03x"s3x-/0 ?l***?l***	0 0s   
B66B?c                    t        d      } t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }g | j                  t        d            d	f|j                  t        d            d
f| j                  t        d            d
f|j                  t        d            d	f|j                  t        d            d	f|j	                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	f|j	                  t        d            d
f|j                  t        d            d
f|j                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	f|j                  t        d            d
f|j	                  t        d            d
f|j                  t        d            d
f|j                  t        d            d	f|j	                  t        d            d	f|j                  t        d            d
f|j                  t        d            d
f|j	                  t        d            d
f|j                  t        d            d
f|j                  t        d            d	f|j	                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	f|j                  t        d            d	ft        d      j                  dft        d      j                  df}|D ]  \  }}	||	k(  rJ  y )Nre  rL  zQE-FEBzQS-FEBr  zBQS-APRzYS-NOVz
2013-06-01r0   r   z
2013-06-03z
2013-02-28z
2013-03-01z
2013-03-31z
2013-02-01z
2013-06-30z
2013-06-28z
2013-03-29z
2013-11-01z
2013-10-31z
2012-02-01r/     )	r   is_month_startr   is_month_endis_quarter_endis_year_endis_quarter_startis_year_startdays_in_month)
freq_mbmqfebqsfebbqbqs_apras_novtestsr   r=   s
             r>   test_is_yqm_start_endr    s<   t_F	5	BXDhE	5	B	"Gx F!			y6	7;!			9\2	3Q7! 
		y6	7;! 
		9\2	3Q7	!
 
		9\2	3Q7! 
		Y|4	5q9! 
		)L1	2A6! 
		Y|4	5q9! 
		y6	7;! 
		Il3	4a8! 
		Il3	4a8! 
		i5	6:! 
		9\2	3Q7! 
		i5	6:! 
			, 7	8!<!  
		Y|4	5q9!!" 
<0	115#!$ 
		9\2	3Q7%!& 
	,/	0!4'!( 
<0	115)!* 
		9\2	3Q7+!, 
	,/	0!4-!. 
		i5	6:/!0 
			, 7	8!<1!2 
		Y|4	5q93!4 
		i5	6:5!6 
			, 7	8!<7!8 
		Y|4	5q99!: 
		i5	6:;!< 
		Il3	4a8=!> 
<	 	.	.3?!@ 
<	 	.	.3A!EF  	EU{{r@   leftrightc                n    t        j                  t        d      5  | |z   d d d        y # 1 sw Y   y xY w)NzCannot multiplyrn   r  )r  r  s     r>   "test_multiply_dateoffset_typeerrorr    s/     
y(9	: u  s   +4)r0   F)`__doc__
__future__r   r   r   numpyr   rq   pandas._libs.tslibsr   r   r   r	   r
   pandas._libs.tslibs.offsets_libstslibsr   rB  r   r   r   pandas._libs.tslibs.periodr   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%   r&   rE  r?   fixture__all__r   r   rA   rH   rK   rP   rj   rl   r  rH  rZ  r\  r^  r  r  r  r   r   rA  rC  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )os   0r>   <module>r     s   #
    1 0 
 <   7 "    *
 @  ggq):+A+AB 	 %,__ !AW8W

 + + + +\^0 ^0Be& e&PJ J
.9C 9Cx$)* )*^
 z'E'E FG H! z'E'E FG H z'E'E FG H1! !
	<=
	<=
	=>
!	:;
"	;<
Q./
R/0
Q./
R/0
1,-
2-.
!+,
",-
1,-
2-.
A-.
B./
1,-
2-.'0	10	 ( 	&	&1 j) *  qb156	
 
	"I.M$NO	
%	
% C
7
7&6
+$-` *Q-a!9::a=$q'":; < ;u"s   +/O	OO