
    x7#hM                         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 d dlmZmZ d dlmZmZmZ d dlmZmZ  G d deeee      Z G d d	e      Z G d
 de      Z G d d      Zy)    )gettext)	JANFEBMARAPRMAYJUNSEPOCTDEC)HALF_DAYPUBLIC)ChineseCalendarHolidaysInternationalHolidaysStaticHolidays)ObservedHolidayBaseSAT_SUN_TO_NEXT_WORKDAYc                   V     e Zd ZdZdZ ed      ZeefZ	dZ
dZdZ fdZd Zd	 Z xZS )
ChinauH  China holidays.

    References:
        * <https://en.wikipedia.org/wiki/Public_holidays_in_China>
        * [Festivals and Public Holidays](https://zh.wikipedia.org/wiki/中华人民共和国节日与公众假期)
        * [2024 changes (Order #795)](https://www.gov.cn/zhengce/content/202411/content_6986380.htm)
        * [2025](https://www.gov.cn/zhengce/content/202411/content_6986382.htm)
        * [2024](https://www.gov.cn/zhengce/content/202310/content_6911527.htm)
        * [2023](https://www.gov.cn/gongbao/content/2023/content_5736714.htm)
        * [2022](https://www.gov.cn/gongbao/content/2021/content_5651728.htm)
        * [2021](https://www.gov.cn/gongbao/content/2020/content_5567750.htm)
        * [2020 Extensions](https://www.gov.cn/zhengce/zhengceku/2020-01/27/content_5472352.htm)
        * [2020](https://www.gov.cn/gongbao/content/2019/content_5459138.htm)
        * [2019](https://www.gov.cn/gongbao/content/2018/content_5350046.htm)
        * [2018](https://www.gov.cn/gongbao/content/2017/content_5248221.htm)
        * [2017](https://www.gov.cn/gongbao/content/2016/content_5148793.htm)
        * [2016](https://www.gov.cn/gongbao/content/2016/content_2979719.htm)
        * [2015](https://www.gov.cn/gongbao/content/2015/content_2799019.htm)
        * [2014](https://www.gov.cn/gongbao/content/2014/content_2561299.htm)
        * [2013](https://www.gov.cn/gongbao/content/2012/content_2292057.htm)
        * [2012](https://www.gov.cn/gongbao/content/2011/content_2020918.htm)
        * [2011](https://www.gov.cn/gongbao/content/2010/content_1765282.htm)
        * [2010](https://www.gov.cn/gongbao/content/2009/content_1487011.htm)
        * [2009](https://www.gov.cn/gongbao/content/2008/content_1175823.htm)
        * [2008](https://www.gov.cn/gongbao/content/2008/content_859870.htm)
        * [2007](https://www.gov.cn/gongbao/content/2007/content_503397.htm)
        * [2006](https://zh.wikisource.org/wiki/国务院办公厅关于2006年部分节假日安排的通知)
        * [2005](https://zh.wikisource.org/wiki/国务院办公厅关于2005年部分节假日安排的通知)
        * [2004](https://zh.wikisource.org/wiki/国务院办公厅关于2004年部分节假日安排的通知)
        * [2003](https://zh.wikisource.org/wiki/国务院办公厅关于2003年部分节假日休息安排的通知)
        * [2002](https://zh.wikisource.org/wiki/国务院办公厅关于2002年部分节假日休息安排的通知)
        * [2001](https://zh.wikisource.org/wiki/国务院办公厅关于2001年春节、“五一”、“十一”放假安排的通知)

    Checked With:
        * <https://www.officeholidays.com/countries/china/2023>
        * <https://www.china-briefing.com/news/china-public-holiday-2023-schedule/>
        * <https://www.timeanddate.com/calendar/?year=2023&country=41>
        * [2001-2010](https://m.wannianli.tianqi.com/fangjiaanpai/2001.html)

    Limitations:
        * Only checked with the official General Office of the State Council Notice from 2001
            onwards.
        * Due to its complexity, need yearly checks 3-weeks before year's end each year.
    CNu   %s（观察日）zh_CN)en_USthr   zh_TWi  c                     t        j                  |        t        j                  |        t        j                  | t               |j                  dt               |j                  dd       t        |   |i | y )N)clsobserved_ruleobserved_since  )r   __init__r   r   ChinaStaticHolidays
setdefaultr   super)selfargskwargs	__class__s      X/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/holidays/countries/china.pyr    zChina.__init__L   sd    ((.&&t,*=>/+BC*D1$)&)    c                    t               }|j                  | j                  t        d                   t        d      }t        d      }|j                  | j	                  |             |j                  | j                  |             d| j                  cxk  rdk  r$n n!|j                  | j                  |             n |j                  | j                  |             | j                  dk\  r |j                  | j                  |             t        d      }|j                  | j                  |             d| j                  cxk  rd	k  rDn nA|j                  | j                  |             |j                  | j                  |             n/| j                  dk\  r |j                  | j                  |             t        d
      }|j                  | j                  |             |j                  | j                  |             | j                  dk\  r |j                  | j                  |             | j                  dk\  r|j                  | j                  t        d                   | j!                  t        d            }| j                  dk7  r|j                  |       | j#                  t        d            }| j                  dk7  r|j                  |       | j$                  r| j'                  |d       y y )Nu   元旦   春节u   农历除夕      u	   劳动节r     u	   国庆节i  u	   清明节	   端午节  	   中秋节  T)multiple)setadd_add_new_years_daytr_add_chinese_new_years_day_add_chinese_new_years_day_two_year_add_chinese_new_years_eve _add_chinese_new_years_day_three_add_labor_day_add_labor_day_two_add_labor_day_three_add_holiday_oct_1_add_holiday_oct_2_add_holiday_oct_3_add_qingming_festival_add_dragon_boat_festival_add_mid_autumn_festivalobserved_populate_observed)r$   dts_observedchinese_new_yearchinese_new_years_eve	labor_daynational_daydragon_boat_festivalmid_autumn_festivals           r(   _populate_public_holidayszChina._populate_public_holidaysT   sz   u 	00H>? h< "> 2889IJK<<=MNO4::%%T<<=RSTTBBCSTU::T<<=RST {O	,,Y784::%%T44Y?@T66yABZZ4T44Y?@ +00>?00>?::T44\BC:: T88KIJ $(#A#A"[/#R zzT!  !56 #'"?"?;"PzzT!  !45==##L4#@ r)   c                     | j                  t        d             | j                  t        d             | j                  t        d             | j	                  t        d             y )Nu   国际妇女节u   五四青年节u   六一儿童节u	   建军节)_add_womens_dayr8   _add_holiday_may_4_add_childrens_day_add_holiday_aug_1)r$   s    r(   _populate_half_day_holidaysz!China._populate_half_day_holidays   sX     	R 123 	#4 56 	#4 56 	;0r)   )__name__
__module____qualname____doc__countryr8   observed_labelr   r   supported_categoriesdefault_languagesupported_languages
start_yearr    rP   rV   __classcell__)r'   s   @r(   r   r      sI    +Z G+,N"H-;J*dAL1r)   r   c                       e Zd Zy)r   NrW   rX   rY    r)   r(   r   r          r)   r   c                       e Zd Zy)CHNNrc   rd   r)   r(   rg   rg      re   r)   rg   c                      e Zd Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z	 ed      Z
i d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deded	dfeded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d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d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d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d!eded"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d#ededd!feded"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ed"ed	ff	d'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d*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d-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ededffd0e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d1eded"d0f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d2ededfededfed ed3f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eded	feded)ffd4e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d5ededfededfed+edfede
fededfededffd6ed(edfed)ed feded)fed3edfededfededffd7e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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eded	feded)ffed+ed.fed"efed,efede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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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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d3edfededfededfeded(fed3e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ededfeded(ffd8Zed$efede	fedefede	ffd9Zy:);r!   z%Y-%m-%du   休息日（%s日起取代）r+   u   春节延长假期r0   r2   uJ   中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日i                          i           	      
         i        i     i     i     r/            r,         i        i        i  r1   r-      i  r3   i  i  )i  i    i  i  i  i  r.   )r1   r3   r   N)rW   rX   rY   r8   substituted_date_formatsubstituted_labelrJ   chinese_new_year_extendedrN   rO   victory_70_anniversaryr   r   r   r   r
   r   r   r	   r   special_public_holidays special_public_holidays_observedrd   r)   r(   r!   r!      s	    n:; (| !##7 8 k? [/   lm["c2"c2!S"!S"!S"!S"
[ 	!S"d#!S"d#"c1"c2!S"!S"!S"!S"	
[& 	!S!!S!!S"!S"!S"!S"
'[6 	"c2"c2!S!!S!!S!!S"
7[F 	"c1"c1!S"!S!!S!!S!
G[V 	!S"d#!S"!S!!S"!S"!S"!S!
W[h 	!S"d#!S"d#"c2"c2!S"!S"!S"!S""c2

i[~ 	"c1"c1!S!"c2"c2
[L 	!S!"c2"c1"c2!S"!S"
M[\ 	"c2"c2"c2"c2"c2"c2!S"!S!	
][p 	!S"!S"!S!!S!!S!
q[~ 	!S"d#"c2"c2!S"!S!"c2!S"
[P 	!S!!S!"c2"c2!S!"c2"c2"c1"c1"c2!S"!S"
Q[l 	!S"!S!!S!!S"!S"
m[z 	!S!"c2"c2!+,!S!!S"
{[J 	"c1"c2"c2"c2!S!!S!
K[Z 	"c2!S!!S!"c2!S"
[[j "c2"c2!S!"c2!S"!S""c2
 !S!!S!!S"!S"	
 "c2"/0!./!./!S"!S!"c2!S"!S"
 "c1"c2!S"!S!"c2!S"!S!
 "c2!S"!S!!S"!S!!S!!S!
 "c2"c2!S"!S!"c2!S!!S!
 "c1"c2!S!!S"!S""c2!S"!S"	
 !S"!S!!S"!S"!S"
i[| B,-A*+"&'!()
($r)   r!   N)r   r8   holidays.calendars.gregorianr   r   r   r   r   r	   r
   r   r   holidays.constantsr   r   holidays.groupsr   r   r   holidays.observed_holiday_baser   r   r   r   rg   r!   rd   r)   r(   <module>r      s\    " T T T / Z Z Wr1!8:OQ_ r1j	 		% 	z zr)   