+
    ŜiO                      a  0 t $ ^ RIHt ^ RIHtHt ^ RIHtHtHt ^ RI	t	^ RI
HtHtHtHtHtHtHt ^ RIt^ RIHt ^ RIHt ^ RIHtHtHtHtHtHt ^ R	IH t H!t! ]'       d   ^ R
I"H#t# R R lt$R R lt%R R lt&R R lt'R R lt(R R lt)R R lt*R R lt+R R lt,R R lt- ! R R 4      t./ t/R!]0R"&   R# R$ lt1R% R& lt2 ! R' R(]34      t4 ! R) R*]4R+7      t5].! R,^^]! ]! R<4      R-7      R.7      t6].! R/^	^]! ]! ^4      R-7      R.7      t7].! R0^
^]! ]! ^4      R-7      R.7      t8].! R1^^]! ]! ^4      R-7      R.7      t9].! R2]! R3^^4      ^^]! ]! ^4      R-7      R47      t:].! R5^^]! ]! ^4      R-7      R.7      t;].! R6^^]!! 4       ] ! R=4      .R.7      t<].! R7^^]!! 4       ] ! ^4      .R.7      t= ! R8 R9]54      t>]53R: R; llt?. R>Ot@R# )?    )annotations)datetime	timedelta)TYPE_CHECKINGLiteraloverloadN)FRMOSASUTHTUWE)
BaseOffset)PerformanceWarning)
DateOffsetDatetimeIndexSeries	Timestampconcat
date_range)DayEaster)Callablec                    V ^8  d   QhRRRR/#    dtr   return )formats   "_/Users/mibo/.openclaw/workspace/.venv-ak/lib/python3.14/site-packages/pandas/tseries/holiday.py__annotate__r#   .   s     	 	H 	 	    c                    V P                  4       ^8X  d   V \        ^4      ,           # V P                  4       ^8X  d   V \        ^4      ,           # V # )zl
If holiday falls on Saturday, use following Monday instead;
if holiday falls on Sunday, use Monday instead
weekdayr   r   s   &r"   next_mondayr)   .   C    
 
zz|qIaL  		IaL  Ir$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#   :   s      x H r$   c                    V P                  4       pVR9   d   V \        ^4      ,           # V^ 8X  d   V \        ^4      ,           # V # )z
For second holiday of two adjacent ones!
If holiday falls on Saturday, use following Monday instead;
if holiday falls on Sunday or Monday, use following Tuesday instead
(because Monday is already taken by adjacent holiday on the day before)
)      r&   )r   dows   & r"   next_monday_or_tuesdayr0   :   s@     **,C
f}IaL  
axIaL  Ir$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#   I   s       X r$   c                    V P                  4       ^8X  d   V \        ^4      ,
          # V P                  4       ^8X  d   V \        ^4      ,
          # V # )zF
If holiday falls on Saturday or Sunday, use previous Friday instead.
r&   r(   s   &r"   previous_fridayr3   I   sC     
zz|qIaL  		IaL  Ir$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#   T   s       h r$   c                T    V P                  4       ^8X  d   V \        ^4      ,           # V # )zB
If holiday falls on Sunday, use day thereafter (Monday) instead.
r&   r(   s   &r"   sunday_to_mondayr6   T   s&     
zz|qIaL  Ir$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#   ]   s     
 
( 
x 
r$   c                    V P                  4       ^8X  d   V \        ^4      ,           # V P                  4       ^8X  d   V \        ^4      ,           # V # )z
If holiday falls on Sunday or Saturday,
use day thereafter (Monday) instead.
Needed for holidays such as Christmas observation in Europe
r&   r(   s   &r"   weekend_to_mondayr9   ]   sC     
zz|qIaL  		IaL  Ir$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#   j   s     	 	 	X 	r$   c                    V P                  4       ^8X  d   V \        ^4      ,
          # V P                  4       ^8X  d   V \        ^4      ,           # V # )z
If holiday falls on Saturday, use day before (Friday) instead;
if holiday falls on Sunday, use day thereafter (Monday) instead.
r&   r(   s   &r"   nearest_workdayr<   j   r*   r$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#   v   s      X ( r$   c                    V \        ^R7      ,          p V P                  4       ^8  d   V \        ^R7      ,          p K*  V # )z+
returns next workday used for observances
daysr   r'   r(   s   &r"   next_workdayrB   v   5     )
B
**,

iQIr$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#      s       h r$   c                    V \        ^R7      ,          p V P                  4       ^8  d   V \        ^R7      ,          p K*  V # )z/
returns previous workday used for observances
r?   rA   r(   s   &r"   previous_workdayrF      rC   r$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#      s     1 1x 1H 1r$   c                *    \        \        V 4      4      # )z1
returns previous workday before nearest workday
)rF   r<   r(   s   &r"   before_nearest_workdayrI      s     OB/00r$   c                    V ^8  d   QhRRRR/# r   r    )r!   s   "r"   r#   r#      s     - -h -8 -r$   c                *    \        \        V 4      4      # )zc
returns next workday after nearest workday
needed for Boxing day or multiple holidays in a series
)rB   r<   r(   s   &r"   after_nearest_workdayrL      s    
 +,,r$   c                      ] tR t^t$ RtR]R&   R]R&   R]R&   RR R	 lltR
 R lt]R R l4       t	]R R l4       t	]R R l4       t	RR R llt	R R lt
R R ltRtR# )HolidayzM
Class that defines a holiday with start/end dates and rules
for observance.
zTimestamp | None
start_dateend_dateztuple[int, ...] | Nonedays_of_weekNc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   namestroffsetz$BaseOffset | list[BaseOffset] | None
observancezCallable | NonerQ   ztuple | Noneexclude_dateszDatetimeIndex | Noner   Noner    )r!   s   "r"   r#   Holiday.__annotate__   sN     j+ j+j+ 5j+ $j+ #j+ ,j+ 
j+r$   c                Z   Ve   Ve   \        R4      h\        V\        4      '       g\   \        V\        4      '       d;   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        R4      hWn        W n        W0n        W@n	        WPn
        Ve   \        V4      MTV n        Ve   \        V4      MTV n        W`n        V	e"   \        V	\        4      '       g   \        R4      hWn        V
e"   \        V
\"        4      '       g   \        R4      hWn        R# )	a  
Parameters
----------
name : str
    Name of the holiday , defaults to class name
year : int, default None
    Year of the holiday
month : int, default None
    Month of the holiday
day : int, default None
    Day of the holiday
offset : list of pandas.tseries.offsets or
        class from pandas.tseries.offsets, default None
    Computes offset from date
observance : function, default None
    Computes when holiday is given a pandas Timestamp
start_date : datetime-like, default None
    First date the holiday is observed
end_date : datetime-like, default None
    Last date the holiday is observed
days_of_week : tuple of int or dateutil.relativedelta weekday strs, default None
    Provide a tuple of days e.g  (0,1,2,3,) for Monday through Thursday
    Monday=0,..,Sunday=6
    Only instances of the holiday included in days_of_week will be computed
exclude_dates : DatetimeIndex or default None
    Specific dates to exclude e.g. skipping a specific year's holiday

Examples
--------
>>> from dateutil.relativedelta import MO

>>> USMemorialDay = pd.tseries.holiday.Holiday(
...     "Memorial Day", month=5, day=31, offset=pd.DateOffset(weekday=MO(-1))
... )
>>> USMemorialDay
Holiday: Memorial Day (month=5, day=31, offset=<DateOffset: weekday=MO(-1)>)

>>> USLaborDay = pd.tseries.holiday.Holiday(
...     "Labor Day", month=9, day=1, offset=pd.DateOffset(weekday=MO(1))
... )
>>> USLaborDay
Holiday: Labor Day (month=9, day=1, offset=<DateOffset: weekday=MO(+1)>)

>>> July3rd = pd.tseries.holiday.Holiday("July 3rd", month=7, day=3)
>>> July3rd
Holiday: July 3rd (month=7, day=3, )

>>> NewYears = pd.tseries.holiday.Holiday(
...     "New Years Day",
...     month=1,
...     day=1,
...     observance=pd.tseries.holiday.nearest_workday,
... )
>>> NewYears  # doctest: +SKIP
Holiday: New Years Day (
    month=1, day=1, observance=<function nearest_workday at 0x66545e9bc440>
)

>>> July3rd = pd.tseries.holiday.Holiday(
...     "July 3rd", month=7, day=3, days_of_week=(0, 1, 2, 3)
... )
>>> July3rd
Holiday: July 3rd (month=7, day=3, )
Nz&Cannot use both offset and observance.c              3  B   "   T F  p\        V\        4      x  K  	  R # 5iN)
isinstancer   ).0offs   & r"   	<genexpr>#Holiday.__init__.<locals>.<genexpr>   s     J6CJsJ776s   FTzAOnly BaseOffsets and flat lists of them are supported for offset.z#days_of_week must be None or tuple.z4exclude_dates must be None or of type DatetimeIndex.)NotImplementedErrorr]   r   listall
ValueErrorrS   yearmonthdayrU   r   rO   rP   rV   tuplerQ   r   rW   )selfrS   rf   rg   rh   rU   rV   rO   rP   rQ   rW   s   &&&&&&&&&&&r"   __init__Holiday.__init__   s    Z %)*RSS6:..vt,,J6JJ6JJJ !W  		
%/%;Ij! 	 08/C	(+$$
<(G(GBCC(%M=)Q)QSTT*r$   c                   V ^8  d   QhRR/# )r   r   rT   r    )r!   s   "r"   r#   rY     s      # r$   c                	R   R pV P                   e   VRV P                    R2,          pVRV P                   RV P                   R2,          pV P                  e   VRV P                   2,          pV P                  e   VRV P                   2,          pRV P
                   RV R	2pV# )
 zyear=z, zmonth=z, day=zoffset=zobservance=z	Holiday: z ())rf   rg   rh   rU   rV   rS   )rj   inforeprs   &  r"   __repr__Holiday.__repr__  s    99 eDII;b))D&F488*B77;;"gdkk]++D??&k$//!233D499+RvQ/r$   c                    V ^8  d   QhRRRR/# )r   return_namezLiteral[True]r   r   r    )r!   s   "r"   r#   rY   !  s    TT}TTr$   c                	    R # r\   r    rj   rO   rP   rv   s   &&&&r"   datesHoliday.dates   s    QTr$   c                    V ^8  d   QhRRRR/# )r   rv   zLiteral[False]r   r   r    )r!   s   "r"   r#   rY   $  s      1?	r$   c                	    R # r\   r    rx   s   &&&&r"   ry   rz   #  s     r$   c                   V ^8  d   QhRR/# )r   r   r   r    )r!   s   "r"   r#   rY   )  s    ??]?r$   c                	    R # r\   r    )rj   rO   rP   s   &&&r"   ry   rz   (  s    <?r$   c                    V ^8  d   QhRRRR/# )r   rv   boolr   zSeries | DatetimeIndexr    )r!   s   "r"   r#   rY   +  s     < <15<	<r$   c                   \        V4      p\        V4      pTpTpV P                  eb   \        \        V P                  V P                  V P                  4      4      p\        V.4      pV'       d   \        V P                  VR7      # V# V P                  W4      pV P                  V4      p	V P                  eA   V	\        P                  ! V	P                  V P                  4      P                  4       ,          p	V P                  e0   \!        V P                  P#                  VP$                  4      V4      pV P&                  e0   \)        V P&                  P#                  VP$                  4      V4      pV	W8  W8*  ,          ,          p	V P*                  e   V	P-                  V P*                  4      p	V'       d   \        V P                  V	R7      # V	# )a  
Calculate holidays observed between start date and end date

Parameters
----------
start_date : starting date, datetime-like, optional
end_date : ending date, datetime-like, optional
return_name : bool, optional, default=False
    If True, return a series that has dates and holiday names.
    False will only return dates.

Returns
-------
Series or DatetimeIndex
    Series if return_name is True
)index)r   rf   r   rg   rh   r   r   rS   _reference_dates_apply_rulerQ   npisin	dayofweekravelrO   maxtz_localizetzrP   minrW   
difference)
rj   rO   rP   rv   filter_start_datefilter_end_dater   dtiry   holiday_datess
   &&&&      r"   ry   rz   +  s   & z*
X&&"99 8DIItzz488DEB%Cdiis33
%%j;((/()!++%% %'M ??& #++,=,@,@ACT! ==$!))/*<*<=O &/M4TU
 ))44T5G5GHM$))=99r$   c               $    V ^8  d   QhRRRRRR/# )r   rO   r   rP   r   r   r    )r!   s   "r"   r#   rY   i  s$     ! !#!/8!	!r$   c                   V P                   e&   V P                   P                  VP                  4      pV P                  e&   V P                  P                  VP                  4      p\	        ^R7      p\        \        VP                  ^,
          V P                  V P                  4      4      p\        \        VP                  ^,           V P                  V P                  4      4      p\        VVVVP                  R7      pV# )a   
Get reference dates for the holiday.

Return reference dates for the holiday also returning the year
prior to the start_date and year following the end_date.  This ensures
that any offsets to be applied will yield the holidays within
the passed in dates.
)years)startendfreqr   )rO   r   r   rP   r   r   r   rf   rg   rh   r   )rj   rO   rP   year_offsetreference_start_datereference_end_datery   s   &&&    r"   r   Holiday._reference_datesi  s     ??&44Z]]CJ==$}}00?H q)(Z__q($**dhh? 
 'X]]Q&

DHH=
 &"}}	
 r$   c                    V ^8  d   QhRRRR/# )r   ry   r   r   r    )r!   s   "r"   r#   rY     s       = r$   c                  a  VP                   '       d   VP                  4       # S P                  e   VP                  V 3R l4      # S P                  e   \        S P                  \        4      '       g   S P                  .pMS P                  pV FL  p\        P                  ! 4       ;_uu_ 4        \        P                  ! R\        4       W,          pRRR4       KN  	  V#   + '       g   i     Kc  ; i)z
Apply the given offset/observance to a DatetimeIndex of dates.

Parameters
----------
dates : DatetimeIndex
    Dates to apply the given offset/observance rule

Returns
-------
Dates with rules applied
Nc                &   < SP                  V 4      # r\   )rV   )drj   s   &r"   <lambda>%Holiday._apply_rule.<locals>.<lambda>  s    tq'9r$   ignore)emptycopyrV   maprU   r]   rc   warningscatch_warningssimplefilterr   )rj   ry   offsetsrU   s   f&  r"   r   Holiday._apply_rule  s     ;;;::<??&999::;;"dkk400;;-++! ,,..))(4FGOE /. "  /..s   1$C##C4)
rh   rQ   rP   rW   rg   rS   rV   rU   rO   rf   )	NNNNNNNNNF)__name__
__module____qualname____firstlineno____doc____annotations__rk   rs   r   ry   r   r   __static_attributes__r    r$   r"   rN   rN      so    
 ! ((j+X T T  ? ?<|!F r$   rN   z(dict[str, type[AbstractHolidayCalendar]]holiday_calendarsc                   V ^8  d   QhRR/# )r   r   rX   r    )r!   s   "r"   r#   r#     s     " "T "r$   c                l     V P                   pV \        V&   R #   \         d    T P                  p L$i ; ir\   )rS   AttributeErrorr   r   )clsrS   s   & r"   registerr     s7    xx "d  ||s    33c                    V ^8  d   QhRRRR/# )r   rS   rT   r   AbstractHolidayCalendarr    )r!   s   "r"   r#   r#     s     	% 	%s 	%6 	%r$   c                &    \         V ,          ! 4       # )z
Return an instance of a calendar based on its name.

Parameters
----------
name : str
    Calendar name to return an instance of
)r   )rS   s   &r"   get_calendarr     s     T"$$r$   c                  .   a  ] tR tRtR V 3R lltRtV ;t# )HolidayCalendarMetaClassi  c                   V ^8  d   QhRR/# )r   clsnamerT   r    )r!   s   "r"   r#   %HolidayCalendarMetaClass.__annotate__  s      c r$   c                	>   < \         SV `  WW#4      p\        V4       V# r\   )super__new__r   )r   r   basesattrscalendar_class	__class__s   &&&& r"   r    HolidayCalendarMetaClass.__new__  s!    uD r$   r    )r   r   r   r   r   r   __classcell__r   s   @r"   r   r     s     r$   r   c                     a  ] tR tRt$ Rt. tR]R&   ]! ]! R^^4      4      t	]! ]! R^^4      4      t
RtR]R	&   RR
 V 3R llltR R ltRR R llt]R 4       tRR R lltRtV ;t# )r   i  z@
Abstract interface to create holidays following certain rules.
zlist[Holiday]rulesi  i  Nz*tuple[Timestamp, Timestamp, Series] | None_cachec                    V ^8  d   QhRRRR/# )r   rS   rT   r   rX   r    )r!   s   "r"   r#   $AbstractHolidayCalendar.__annotate__  s      S d r$   c                   < \         SV `  4        V'       g   \        V 4      P                  pWn        Ve	   W n        R# R# )a  
Initializes holiday object with a given set a rules.  Normally
classes just have the rules defined within them.

Parameters
----------
name : str
    Name of the holiday calendar, defaults to class name
rules : array of Holiday objects
    A set of rules used to create the holidays.
N)r   rk   typer   rS   r   )rj   rS   r   r   s   &&&r"   rk    AbstractHolidayCalendar.__init__  s7     	:&&D	J r$   c                    V ^8  d   QhRRRR/# )r   rS   rT   r   zHoliday | Noner    )r!   s   "r"   r#   r     s      3 > r$   c                	V    V P                    F  pVP                  V8X  g   K  Vu # 	  R # r\   r   rS   )rj   rS   rules   && r"   rule_from_name&AbstractHolidayCalendar.rule_from_name  s&    JJDyyD   r$   c                    V ^8  d   QhRRRR/# )r   rv   r   r   zDatetimeIndex | Seriesr    )r!   s   "r"   r#   r     s     3" 3"153"	3"r$   c           	        V P                   f   \        RV P                   R24      hVf   \        P                  pVf   \        P
                  p\        V4      p\        V4      pV P                  e/   WP                  ^ ,          8  g   W P                  ^,          8  dq   V P                    Uu. uF  qDP                  WRR7      NK  	  ppV'       d   \        V4      pM\        \        . 4      \        R7      pWVP                  4       3V n        V P                  ^,          pWaV pV'       d   V# VP                  # u upi )ap  
Returns a curve with holidays between start_date and end_date

Parameters
----------
start : starting date, datetime-like, optional
end : ending date, datetime-like, optional
return_name : bool, optional
    If True, return a series that has dates and holiday names.
    False will only return a DatetimeIndex of dates.

Returns
-------
    DatetimeIndex of holidays
zHoliday Calendar z" does not have any rules specifiedT)rv   )r   dtype)r   	ExceptionrS   r   rO   rP   r   r   ry   r   r   r   object
sort_indexr   )rj   r   r   rv   r   pre_holidaysholidayss   &&&&   r"   r    AbstractHolidayCalendar.holidays  s   $ ::#DII;.PQ  =+66E;)22C% n ;;%++a."8C++a.<PEIZZEOT

54
8Z   !,/!b(9H x':':'<=DK;;q>#&O>>!!s   0D?c                    VP                   p\        V\        4      '       g   V.pV Uu/ uF  q"P                  VbK  	  pp V P                   p \        V \        4      '       g   V .p V  Uu/ uF  q"P                  VbK  	  ppVP                  V4       \        VP                  4       4      #   \         d     Li ; iu upi   \         d     Li ; iu upi )a?  
Merge holiday calendars together. The base calendar
will take precedence to other. The merge will be done
based on each holiday's name.

Parameters
----------
base : AbstractHolidayCalendar
  instance/subclass or array of Holiday objects
other : AbstractHolidayCalendar
  instance/subclass or array of Holiday objects
)r   r   r]   rc   rS   updatevalues)baseotherholidayother_holidaysbase_holidayss   &&   r"   merge_class#AbstractHolidayCalendar.merge_class%  s    	KKE %&&GE?DEuG,,/uE	::D $%%6D>BCd7w.dCm,N))+,,#  		
 F  		
 Ds.   B- B>C ,C-B;:B;CCc                   V ^8  d   QhRR/# )r   inplacer   r    )r!   s   "r"   r#   r   H  s      D r$   c                H    V P                  W4      pV'       d	   W0n        R# V# )a  
Merge holiday calendars together.  The caller's class
rules take precedence.  The merge will be done
based on each holiday's name.

Parameters
----------
other : holiday calendar
inplace : bool (default=False)
    If True set rule_table to holidays, else return array of Holidays
N)r   r   )rj   r   r   r   s   &&& r"   mergeAbstractHolidayCalendar.mergeH  s!     ##D0!JOr$   )r   rS   r   )ro   N)NNFr   )r   r   r   r   r   r   r   r   r   rO   rP   r   rk   r   r   staticmethodr   r   r   r   r   s   @r"   r   r     sy     E=8D!Q/0J$B/0H9=F6= (3"j  -  -D r$   r   )	metaclasszMemorial Day)r'   )rg   rh   rU   z	Labor DayzColumbus DayzThanksgiving Dayz#Birthday of Martin Luther King, Jr.i  )rO   rg   rh   rU   zWashington's BirthdayzGood FridayzEaster Mondayc                      ] tR tRtRt]! R^^]R7      ]]]	]! R^^R]R7      ]! R^^]R7      ]
]]! R	^^]R7      ]]! R
^^]R7      .tRtR# )USFederalHolidayCalendarit  z
US Federal Government Holiday Calendar based on rules specified by:
https://www.opm.gov/policy-data-oversight/pay-leave/federal-holidays/
zNew Year's Day)rg   rh   rV   z$Juneteenth National Independence Dayz
2021-06-18)rg   rh   rO   rV   zIndependence DayzVeterans DayzChristmas Dayr    N)r   r   r   r   r   rN   r<   USMartinLutherKingJrUSPresidentsDayUSMemorialDay
USLaborDayUSColumbusDayUSThanksgivingDayr   r   r    r$   r"   r   r   t  su     	 q_M2#&	
 	"!Obb_MrroN#Er$   r   c                   V ^8  d   QhRR/# )r   rS   rT   r    )r!   s   "r"   r#   r#     s       r$   c                R    \         P                  W4      p\        W3R VRV /4      pV# r   )r   r   r   )rS   r   r   
base_classr   r   s   &&&&  r"   HolidayCalendarFactoryr     s/    #//<E$/MNNr$   )r	   r
   r   r   r   r   r   r   rL   rI   r   r<   r)   r0   rB   r3   rF   r   r6   r9   )A__conditional_annotations__
__future__r   r   r   typingr   r   r   r   dateutil.relativedeltar	   r
   r   r   r   r   r   numpyr   pandas._libs.tslibs.offsetsr   pandas.errorsr   pandasr   r   r   r   r   r   pandas.tseries.offsetsr   r   collections.abcr   r)   r0   r3   r6   r9   r<   rB   rF   rI   rL   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   
GoodFridayEasterMondayr   r   __all__)r  s   @r"   <module>r     s   " " 
     2 , 
 (	
	1-O Od ?A ; @"	%t M(@ M` !Jr"v,F [qBqE9RS
"!Jr!u,E ba
2a50I  )a#
	be$  1!Jr!u4M ]!FHc"g;NO
aQ#a&?QR6 6 ?V r$   