
    !g                        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mZmZmZmZ d dlmZmZmZ d dlmZmZmZmZmZ  eedededededededi      Z G d	 d
eeee      Z  G d de       Z! G d de       Z" G d d      Z#y)    )date)gettext)JANFEBMARAPRMAYJUNSEPOCTDECMONTUEWEDTHUFRISATSUN)ChineseCalendarHolidaysInternationalHolidaysStaticHolidays)ObservedHolidayBaseObservedRuleSAT_TO_PREV_WORKDAYSUN_TO_NEXT_WORKDAYSAT_SUN_TO_NEXT_WORKDAY   c            	       j     e Zd ZdZdZ ed      ZdZdZdZ	 fdZ
	 dd	ee   d
ededdfdZd Z xZS )Taiwana  
    References:
        - https://en.wikipedia.org/wiki/Public_holidays_in_Taiwan
        - `2025 <https://www.dgpa.gov.tw/en/information?uid=353&pid=11979>`_
        - `2024 <https://www.dgpa.gov.tw/en/information?uid=353&pid=11402>`_
        - `2023 <https://www.dgpa.gov.tw/en/information?uid=353&pid=11016>`_
        - `2022 <https://www.dgpa.gov.tw/en/information?uid=353&pid=10659>`_
        - `2021 <https://www.dgpa.gov.tw/en/information?uid=353&pid=10181>`_
        - `2020 <https://www.dgpa.gov.tw/en/information?uid=353&pid=9724>`_
        - `2019 <https://www.dgpa.gov.tw/en/information?uid=353&pid=8178>`_
        - `2018 <https://www.dgpa.gov.tw/en/information?uid=353&pid=7730>`_
        - `2017 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6178>`_
        - `2016 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6180>`_
        - `2015 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6182>`_
        - `2014 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6183>`_
        - `2013 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6186>`_
        - `2012 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6187>`_
        - `2011 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6188>`_
        - `2010 <https://www.dgpa.gov.tw/en/information?uid=353&pid=6189>`_
    TWu   %s（慶祝）zh_TW)en_USthzh_CNr#   ix  c                     t        j                  |        t        j                  |        t        j                  | t               |j                  dt        t        z          t        |   |i | y )Nobserved_rule)	r   __init__r   r   TaiwanStaticHolidays
setdefaultr   r   super)selfargskwargs	__class__s      V/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/holidays/countries/taiwan.pyr)   zTaiwan.__init__K   sY    ((.&&t,&:;/+>AT+TU$)&)    Ndtsrulesincereturnc           	          | j                   |k  ry | j                  d      }t        |      D ]F  }| j                  |      }|D ].  }| j	                  ||||k(  rt        |      dkD  rt        n|       0 H y )N	   兒童節r   )_yeartrsortedget_list_add_observedlenCHILDRENS_DAY_RULE)r-   r3   r4   r5   childrens_daydtnamesnames           r1   _populate_observedzTaiwan._populate_observedR   s~     ::,+ 	BMM"%E ""*.-*?CJQRN&X\		r2   c                    t               }t               }t        d      }|j                  | j                  |             | j                  dk\  r| j                  | j                  |       |j                  | j                  t        d                   t        d      }|j                  | j                  |             |j                  | j                  |             |j                  | j                  |             | j                  dk\  r)|j                  | j                  t        d                   d| j                  cxk  rd	k  sn | j                  d
k\  r)|j                  | j                  t        d                   | j                  dk\  r)|j                  | j                  t        d                   |j                  | j                  t        d                   |j                  | j                  t        d                   |j                  | j!                  t        d                   | j"                  r*| j%                  |       | j%                  |t&        d       y y )Nu   中華民國開國紀念日  )rC   u   農曆除夕u   春節i  u   和平紀念日i  i  i  r8   i  u	   清明節u	   端午節u	   中秋節u   中華民國國慶日  )r4   r5   )setr:   add_add_new_years_dayr9   r=   _next_year_new_years_day_add_chinese_new_years_eve_add_chinese_new_years_day_add_chinese_new_years_day_two _add_chinese_new_years_day_three_add_holiday_feb_28_add_holiday_apr_4_add_qingming_festival_add_dragon_boat_festival_add_mid_autumn_festival_add_holiday_oct_10observedrD   r   )r-   dts_observeddts_observed_forwardrC   s       r1   _populate_public_holidaysz Taiwan._populate_public_holidaysc   s   u"u /00067::t<<4H 	  !@!@NAS!TU (|  !@!@!FG  !D!DT!JK  !F!Ft!LM::T55b9J6KLM4::%%t);T44R_EF::T88KIJ 	77;HI 	66r+GH 	11"5L2MNO==##L1##$8?V^b#c r2   )NrF   )__name__
__module____qualname____doc__countryr:   observed_labeldefault_languagesupported_languages
start_yearr)   rH   r   r   intrD   rY   __classcell__)r0   s   @r1   r!   r!   .   sf    * G()N;J* GKt9$0@C	"*dr2   r!   c                       e Zd Zy)r"   NrZ   r[   r\    r2   r1   r"   r"          r2   r"   c                       e Zd Zy)TWNNrf   rg   r2   r1   rj   rj      rh   r2   rj   c                      e Zd Z ed      Z ed      Z ed      Zededfededfede	dfe
d	e
d
ffededfededffede
ddfededfededfededffededfededfededffede	d	fe
d	e
d
ffededfe	dedfededffededfededfededffededfededffeded
fededfededfededfede	dfededfededffededfededfd Zd!edefiZy")#r*   z%Y-%m-%du   休息日（%s日起取代）r8                                       i        
            	      r                     )rG   i    rF   i  i  i  i  i  i  i  i  i  i  r   N)rZ   r[   r\   r:   substituted_date_formatsubstituted_labelr@   r   r   r   r   r   r
   r	   r   r   special_public_holidays special_public_holidays_observedrg   r2   r1   r*   r*      s    n:;{OM BQ"c1"c1"c2
 "c2"c2
 AsB%"c2"c1"c2
 "c2"c1!S"
 !S""c2

 !S"!S""c1
 "c2"c2!S"
 "c2"c2
 AsB"c1"c1"c2!S""c2!S"
 AsBBQe3l 	sA}%($r2   r*   N)$datetimer   r   r:   holidays.calendars.gregorianr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   holidays.groupsr   r   r   holidays.observed_holiday_baser   r   r   r   r   r?   r!   r"   rj   r*   rg   r2   r1   <module>r      s     !    $ [ Z  "3CS"c2sBPSUWY\^`"ab _d "9;PR` _dD	 		& 	? ?r2   