
    x7#h<                     D   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mZmZmZmZ d dl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)Optional)JANFEBMARAPRMAYJUNSEPOCTDECMONTUEWEDTHUFRISATSUN)
GOVERNMENTOPTIONALPUBLICSCHOOLWORKDAY)ChineseCalendarHolidaysInternationalHolidaysStaticHolidays)ObservedHolidayBaseObservedRuleSAT_TO_PREV_WORKDAYSUN_TO_NEXT_WORKDAYSAT_SUN_TO_NEXT_WORKDAY   c            	            e Zd ZdZdZ ed      ZdZee	e
eefZdZdZ fdZ	 dd	ee   d
ee   deddfdZd Zd Zd Zd Zd Z xZS )Taiwanu  Taiwan holidays.

    References:
        * <https://zh.wikipedia.org/wiki/中華民國節日與歲時列表>
        * <https://en.wikipedia.org/wiki/Public_holidays_in_Taiwan>

    Commemorative Day and Day Implementation Method Amendments:
        * [Ministry of Interior (87) Order No. 8706459](https://zh.wikisource.org/wiki/紀念日及節日實施辦法_(民國87年))
        * [Ministry of Interior (88) Order No. 8897074](https://zh.wikisource.org/wiki/紀念日及節日實施辦法_(民國88年))
        * [Ministry of Interior (89) Order No. 8972185](https://zh.wikisource.org/wiki/紀念日及節日實施辦法_(民國89年2月))
        * [Ministry of Interior (89) Order No. 8962562](https://zh.wikisource.org/wiki/紀念日及節日實施辦法_(民國89年12月))
        * [Ministry of Interior Order No. 0950045320](https://law.moj.gov.tw/LawClass/LawOldVer.aspx?pcode=D0020033&lnndate=20060309&lser=001)
        * [Ministry of Interior Order No. 0960110433](https://law.moj.gov.tw/LawClass/LawOldVer.aspx?pcode=D0020033&lnndate=20070711&lser=001)
        * [Ministry of Interior Order No. 0960131407](https://law.moj.gov.tw/LawClass/LawOldVer.aspx?pcode=D0020033&lnndate=20070711&lser=001)
        * [Ministry of Interior Order No. 0960155673](https://law.moj.gov.tw/LawClass/LawOldVer.aspx?pcode=D0020033&lnndate=20071003&lser=001)
        * [Ministry of Interior Order No. 0990212117](https://law.moj.gov.tw/LawClass/LawOldVer.aspx?pcode=D0020033&lnndate=20101102&lser=001)
        * [Ministry of Interior Order No. 1010307327 and 1030128812](https://law.moj.gov.tw/LawClass/LawOldVer.aspx?pcode=D0020033&lnndate=20120925&lser=001)
        * [Ministry of Interior Order No. 1030182404](https://law.moj.gov.tw/LawClass/LawAll.aspx?pcode=D0020033)

    Checked With:
        * [DGPA Work Calendar (1998-2025; Chinese)](https://www.dgpa.gov.tw/informationlist?uid=30)
        * [DGPA Work Calendar (2001-2025; English)](https://www.dgpa.gov.tw/en/informationlist?uid=353)
    TWu   %s（慶祝）zh_TW)en_USthzh_CNr)     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      Y/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/holidays/countries/taiwan.pyr0   zTaiwan.__init__R   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)ub  
        Taiwan's General Observance Rule first started in 2015 as per
        decreed in 內政部台內民字第1030182404號令.

        Children's Day Special Observance Rule first started in 2012 as per
        decreed in 內政部台內民字第1010307327號令 - as this doesn't affect 2011 ones,
        as such the logic is simplified.
        N	   兒童節r#   )_yeartrsortedget_list_add_observedlenCHILDRENS_DAY_RULE)r4   r:   r;   r<   childrens_daydtnamesnames           r8   _populate_observedzTaiwan._populate_observedY   sv     :: ,+BMM"%E""*.-*?CJQRN&X\	  r9   c                 x   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                  | j                  t        d                   | j                  dk\  r)|j                  | j                  t        d                   |j                  | j                  t        d	                   |j                  | j                  t        d
                   |j                  | j                  t        d                   |j                  | j!                  t        d                   | j"                  r*| j%                  |       | j%                  |t&        d       y y )N   中華民國開國紀念日  )rJ   u   農曆除夕   春節u   和平紀念日i  r?      民族掃墓節	   端午節u	   中秋節u	   國慶日i  )r;   r<   )setrA   add_add_new_years_dayr@   rD   _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observedrK   r"   )r4   dts_observeddts_observed_forwardrJ   s       r8   _populate_public_holidaysz Taiwan._populate_public_holidayss   s   u"u /00067::t<<4H 	  !@!@NAS!TU (|  !@!@!FG  !D!DT!JK  !F!Ft!LM 	11"5F2GHI::T44R_EF 	44R8I5JKL 	77;HI 	66r+GH 	11"[/BC==##L1 ##$8?V^b#c	 r9   c                 \   | j                   dk  r| j                  t        d             | j                  t        d             | j	                  t        d             | j                  t        d             | j                  t        d             | j                  t        d             y y )N  rM      孔子誕辰紀念日   臺灣光復節!   先總統　蔣公誕辰紀念日   國父誕辰紀念日   行憲紀念日)r@   _add_new_years_day_tworA   _add_holiday_sep_28_add_holiday_oct_25_add_holiday_oct_31_add_holiday_nov_12_add_holiday_dec_25r4   s    r8   _populate_school_holidaysz Taiwan._populate_school_holidays   s    ::''+H(IJ $$R(?%@A $$R(9%:; $$R(K%LM $$R(?%@A $$R(9%:;# r9   c                 x    | j                          | j                  dk  r| j                  t        d             y y )Nre      革命先烈紀念日)rr   r@   _add_holiday_mar_29rA   rq   s    r8   _populate_government_holidaysz$Taiwan._populate_government_holidays   s3    &&(::$$R(?%@A r9   c                 l    | j                  t        d             | j                  t        d             y )Nu	   勞動節	   軍人節)_add_labor_dayrA   _add_holiday_sep_3rq   s    r8   _populate_optional_holidaysz"Taiwan._populate_optional_holidays   s(    B{O, 	;0r9   c                    | j                  t        d             | j                  t        d             | j                  t        d             | j                  t        d             | j	                  t        d             | j                  t        d             | j                  dk  r| j                  t        d             | j                  d	k  r| j                  t        d
             | j                  dk\  r| j                  t        d             | j                  dk\  r| j                  t        d             | j                  t        d             | j                  t        d             | j                  t        d             | j	                  t        d             | j                  t        d             | j                  dk  r| j                  t        d             | j                  dk\  r| j                  t        d             | j                  dk\  r5| j                  t        d             | j!                  t        d             y y )Nu   國父逝世紀念日u	   植樹節u	   青年節u	   教師節u   中華文化復興節	   婦女節  u   先總統蔣公逝世紀念日  r?   re      佛陀誕辰紀念日  u	   道教節rt   rf   rg   ri   rj     rh   u   反侵略日i  u   解嚴紀念日u   臺灣聯合國日)_add_holiday_mar_12rA   ru   rl   ro   _add_womens_dayr@   r\   r[   _add_chinese_birthday_of_buddharW   rm   rp   rn   _add_holiday_mar_14_add_holiday_jul_15_add_united_nations_dayrq   s    r8   _populate_workday_holidaysz!Taiwan._populate_workday_holidays   s     $;!<= 	  K1 	  K1 	  K1 	  $;!<= 	R_-::''+K(LM::##B{O4::004K1LM::++B{O< $$R(?%@A $$R(?%@A $$R(9%:; $$R(?%@A $$R(9%:;zzT!((,O)PQ::$$R%78::$$R(9%:; ((,@)AB r9   )NrN   )__name__
__module____qualname____doc__countryrA   observed_labeldefault_languager   r   r   r   r   supported_categoriessupported_languages
start_yearr0   rR   r   r   r   intrK   rc   rr   rv   r{   r   __classcell__)r7   s   @r8   r'   r'   0   s    0 G()N&&&'J;J* QUt9$,\$:JM	4*dX<(B1?Cr9   r'   c                       e Zd Zy)r(   Nr   r   r    r9   r8   r(   r(         r9   r(   c                       e Zd Zy)TWNNr   r   r9   r8   r   r     r   r9   r   c            
       *   e Zd ZdZ ed      Z ed      Z ed      Z ed      Zi de	de	dfd	e
d
e
dfdededfdededfdededfe	de	dfededfededffde
de
dfe
de
dfededffdededfde
d ed!fed edfed"ed
ffd#ed$edfededffd%e
ded d&fd'ed(e
dfeded!fed)edffd*ed edfededfededffd+e	ded"fed"ed
ffd,ede
dfed-edfed.edffd/e
ded$fed0edfeded0ffd1ededfeded.ffd2ed!e
d
fe
de
dfe
d ed!fed edfe	ded3fededfededffededfe
d edfd4Ze	d!efe	d!effe	d!efe	d!effe	defe	defed! ed5      ffd6Ze
d" ed7      fe	d ed8      ffe
d ed9      fed ed:      ffed ed;      fe	defd<Zy=)>r1   aX  Taiwan special holidays.

    DGPA, Executive Yuan Work Calendars:
        * [1998](https://www.dgpa.gov.tw/information?uid=30&pid=4979)
        * [1999](https://www.dgpa.gov.tw/information?uid=30&pid=4978)
        * [2000](https://www.dgpa.gov.tw/information?uid=30&pid=4977)
        * [2001](https://www.dgpa.gov.tw/en/information?uid=353&pid=6199)
        * [2002](https://www.dgpa.gov.tw/en/information?uid=353&pid=6198)
        * [2003](https://www.dgpa.gov.tw/en/information?uid=353&pid=6197)
        * [2004](https://www.dgpa.gov.tw/en/information?uid=353&pid=6196)
        * [2005](https://www.dgpa.gov.tw/en/information?uid=353&pid=6195)
        * [2006](https://www.dgpa.gov.tw/en/information?uid=353&pid=6192)
        * [2007](https://www.dgpa.gov.tw/en/information?uid=353&pid=6194)
        * [2008](https://www.dgpa.gov.tw/en/information?uid=353&pid=6191)
        * [2009](https://www.dgpa.gov.tw/en/information?uid=353&pid=6190)
        * [2010](https://www.dgpa.gov.tw/en/information?uid=353&pid=6189)
        * [2011](https://www.dgpa.gov.tw/en/information?uid=353&pid=6188)
        * [2012](https://www.dgpa.gov.tw/en/information?uid=353&pid=6187)
        * [2013](https://www.dgpa.gov.tw/en/information?uid=353&pid=6186)
        * [2014](https://www.dgpa.gov.tw/en/information?uid=353&pid=6183)
        * [2015](https://www.dgpa.gov.tw/en/information?uid=353&pid=6182)
        * [2016](https://www.dgpa.gov.tw/en/information?uid=353&pid=6180)
        * [2017](https://www.dgpa.gov.tw/en/information?uid=353&pid=6178)
        * [2018](https://www.dgpa.gov.tw/en/information?uid=353&pid=7730)
        * [2019](https://www.dgpa.gov.tw/en/information?uid=353&pid=8178)
        * [2020](https://www.dgpa.gov.tw/en/information?uid=353&pid=9724)
        * [2021](https://www.dgpa.gov.tw/en/information?uid=353&pid=10181)
        * [2022](https://www.dgpa.gov.tw/en/information?uid=353&pid=10659)
        * [2023](https://www.dgpa.gov.tw/en/information?uid=353&pid=11016)
        * [2024](https://www.dgpa.gov.tw/en/information?uid=353&pid=11402)
        * [2025](https://www.dgpa.gov.tw/en/information?uid=353&pid=11979)
    z%Y-%m-%du   休息日（%s日起取代）r}   r?   re         r         i        r   	      r~                  i     
         r      i                rN   i  i        i  i  i  r#      i     i  i     )i  i  i  rx   )r-     re   rO   rP   rM   rQ   r   )r-   r   re   r   N)r   r   r   r   rA   substituted_date_formatsubstituted_label
womens_dayrG   r	   r   r   r   r   r   r   r
   r   special_public_holidays"special_optional_holidays_observed special_public_holidays_observedr   r9   r8   r1   r1     s   D !n :; KJ {OMBsAsABsBR B 	sAsAB 	sAsB	B
 	"c1!S""c2"c2	
B 	!S""c2"c1
B  	sBQ!B" 	"c1"c1"c2
#B, 	"c2"c2
-B4 	sAsB%5B6 	"c2"c1"c2
7B@ 	"c2"c1!S"
ABJ 	!S""c2
KBR 	!S"!S""c1
SB\ 	"c2"c2!S"
]Bf 	"c2"c2
gBn 	sAsBoBr "c1"c1"c2!S""c2!S"
 AsBBQCBN !]#!Z 

 !]#!Z 

 !]#!Z !R_%	
*&( "bl#!R)*+	
 !R567"bo&	
 B234A}%($r9   r1   N),datetimer   r   rA   typingr   holidays.calendars.gregorianr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   holidays.constantsr   r   r   r   r   holidays.groupsr   r   r   holidays.observed_holiday_baser   r   r    r!   r"   rF   r'   r(   r   r1   r   r9   r8   <module>r      s     !     $ M L Z Z  "3CS"c2sBPSUWY\^`"ab PC "9;PR` PCf	 		& 	T Tr9   