
    !gE              
           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 d dlmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZ  G d deeeeee      Z G d	 d
e      Z G d de      Z  G d d      Z!y)    )date)JANMAYJUNJULAUGSEPOCTDECSUN
_timedelta	CHRISTMASWINTER_SOLSTICE)OPTIONALPUBLIC)ChineseCalendarHolidaysChristianHolidaysInternationalHolidaysStaticHolidays)PreferredDiscretionaryHolidays)ObservedHolidayBaseSAT_SUN_TO_NEXT_WORKDAYSUN_TO_NEXT_WORKDAYWORKDAY_TO_NEXT_WORKDAYc                        e Zd ZdZdZefZdZee	fZ
ehZdZ fdZdefdZdefd	Zd
 Zd Zedeeef   fd       Z xZS )HongKongu  
    References:
        - `English Wikipedia <https://en.wikipedia.org/wiki/Public_holidays_in_Hong_Kong>`_
        - `Chinese Wikipedia <https://zh.wikipedia.org/wiki/香港節日與公眾假期>`_
    Statutory Holidays:
        - `Section 39 of Cap. 57 Employment Ordinance <https://www.elegislation.gov.hk/hk/cap57!en-zh-Hant-HK?INDEX_CS=N&xpid=ID_1438403463460_002>`_
        - `Holidays for 2010-2024 <https://www.labour.gov.hk/eng/news/holidays_list.htm>`_
    General Holidays:
        - `Cap. 149 General Holidays Ordinance <https://www.elegislation.gov.hk/hk/cap149!en-zh-Hant-HK?INDEX_CS=N>`_
        - `Holidays for 2007–2024 <https://www.gov.hk/en/about/abouthk/holiday/index.htm>`_
    HKz%s (observed)i  c                 N   t        j                  |        t        j                  |        t        j                  |        t	        j                  | |j                  dd              t        j                  | t               |j                  dt               t        |   |i | y )N preferred_discretionary_holidaysobserved_rule)r   __init__r   r   r   popr   HongKongStaticHolidays
setdefaultr   super)selfargskwargs	__class__s      X/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/holidays/countries/hongkong.pyr!   zHongKong.__init__J   s    ((.""4(&&t,&//&**?F	
 	&<=/+>?$)&)    returnc                 T   | j                   }| j                  dk\  rt        |d      }d}d}nd}d}| j                  |      rTd| j                  cxk  rdk  r!n n| j	                  dt        |d             |S | j	                  |t        |d             |S | j	                  ||       |S )	N     z1The day following the Chinese Mid-Autumn Festivalz8The second day following the Chinese Mid-Autumn FestivalzChinese Mid-Autumn Festival  i  )_mid_autumn_festival_yearr   
_is_sunday_add_holiday)r&   mid_autumn_datenamesecond_names       r*   _add_mid_autumnzHongKong._add_mid_autumnU   s     33::("=OFDTK 1DMK???+tzz)T)!!"?O]_A`a
  !!+z/2/NO  dO4r+   day_three_start_yearc                 n   d}d}d}d}d}| j                   }| j                  dk\  r| j                  |      s"| j                  |      s| j	                  |      r2| j                  dk\  r| j                  |       n| j                  |       | j	                  |      s| j                  |       | j                  |      s| j                  |       | j                  |      s| j                  |       y y | j                  |       | j                  |       | j                  |k\  r| j                  |       y y )NzLunar New Year's Dayz&The day preceding Lunar New Year's Dayz The second day of Lunar New YearzThe third day of Lunar New Yearz The fourth day of Lunar New Yearr0   i  )
_chinese_new_yearr3   
_is_friday_is_saturdayr4   _add_chinese_new_years_day_four_add_chinese_new_years_eve_add_chinese_new_years_day_add_chinese_new_years_day_two _add_chinese_new_years_day_three)r&   r:   r7   preceding_day_lunarsecond_day_lunarthird_day_lunarfourth_day_lunardt_lunar_new_years           r*   _add_lunar_new_yearzHongKong._add_lunar_new_yearm   s#    &F=;= 22:: 12$$%67??#45::%889IJ334GH??#45//5$$%67334DE??#4555oF 6 ++D1//0@Azz1155oF 2r+   c                 b   | j                   dk  ry | j                   dk\  r | j                  | j                  d             | j                  d       | j                   dk\  r| j	                  d       | j                   dk\  r| j                  d       | j                   d	k\  r| j                  d
       | j                  | j                  d             | j                   dk\  r | j                  | j                  d             | j                   dk\  r | j                  | j                  d             | j                  | j                  d             | j                   dk\  r | j                  | j                  d             | j                         }| j                   dk\  r"| j                  d      }| j                  |       | j                   dk\  rBd}| j                  |      }| j                  ||||k(  s|k(  rt        t         z   nt"               t$        | j&                  v r+| j                  | j)                  d| j*                               | j                   dk\  r | j                  | j-                  d             t.        | j&                  v r!| j                  | j1                  d             y y )Ni  i  The first day of Januaryr:   i  Good Fridayi  The day following Good Fridayi  Easter MondayChing Ming Festivali  The Birthday of the Buddha  
Labour DayTuen Ng Festival  9Hong Kong Special Administrative Region Establishment DayChung Yeung FestivalNational Day)r7   rulez Chinese Winter Solstice Festivali  %The first weekday after Christmas DayChristmas Day)r3   _add_observed_add_new_years_dayrI   _add_good_friday_add_holy_saturday_add_easter_monday_add_qingming_festival_add_chinese_birthday_of_buddha_add_labor_day_add_dragon_boat_festival_add_holiday_jul_1r9   _add_double_ninth_festival_add_holiday_oct_1r   r   r   r   r   r5   _winter_solstice_date_add_christmas_day_twor   _add_christmas_day)r&   r6   dt_double_ninthr7   oct_1s        r*   _populate_public_holidaysz"HongKong._populate_public_holidays   sy    :: ::t667QRS  d ; ::!!-0 ::##$CD ::##O4 	4667LMN ::tCCD`ab ::t22<@A 	499:LMN ::''O ..0 ::"==>TUO/ ::!D++D1EO+u/G -/FF(   dCCC!!"DdF`F`a ::++,ST ===t66GH >r+   c                 >   | j                  t        d      r| j                  d       n| j                  d       | j	                  d       | j
                  dk\  rd| j                  }| j                  |      s|t        | j                  d      k(  r| j                  dt        |d             n| j                  d       | j                  d       | j                  d	       | j
                  dk\  r!| j                  k(  r| j                  d
       n| j                  d       | j
                  dk\  rg| j                  j!                  | j
                        d   }| j                  |      r| j                  dt        |d             n| j#                  d       | j
                  dk\  r9| j                  t$        d      r| j'                  d       n| j)                  d       | j
                  dk\  rg| j                  j+                  | j
                        d   }| j                  |      r| j                  dt        |d             n| j-                  d       | j
                  dk\  r9| j                  t.        d      r| j1                  d       n| j3                  d       | j5                         }| j
                  dk\  rg| j                  j7                  | j
                        d   }| j                  |      r| j                  dt        |d             n| j9                  d       | j
                  dk\  rit;        | j
                  t<        d      }| j                  |      s
||k(  s|k(  r"| j                  d| j?                  |             n| jA                  d       | j
                  dv r| jC                  d       d}d}d}	| jD                  }
| j                  |
      r#| jG                  |       | jI                  |	       nV| jK                  |
      r#| jM                  |       | jI                  |       n"| jM                  |       | jG                  |       d| j
                  cxk  rd k  rin nfd!}| j
                  d"k\  r#| jO                  |       | jQ                  |       n2| j
                  dk7  r| jS                  |       n| jU                  |       | j
                  d#k  r3| jW                  d$       | jY                  d%       | j[                  d&       | j
                  d k  rxd'}| j
                  d"k\  r#| j]                  |       | j_                  |       y | j
                  dk\  r#| ja                  |       | j]                  |       y | jc                  |       y y )(Nr/   z*The day following the first day of JanuaryrK   r.   rL   z%The day following Ching Ming FestivalrP   rM   rN   zThe day following Easter MondayrO   rR   r   z,The day following the Birthday of the BuddharQ   zThe day following Labour DayrS   z"The day following Tuen Ng FestivalrT   rU   KThe day following Hong Kong Special Administrative Region Establishment DayrV   z&The day following Chung Yeung FestivalrW   The day following National DayrX   >   rU     r[   rZ   z&The second weekday after Christmas Dayi  i  Queen's Birthdayr0   i  zMonday after Pentecostz%National Day of the Republic of ChinazMonday after Peace Memorial Dayz*Anniversary of the liberation of Hong Kong)2r4   r   _add_new_years_day_twor]   rI   r3   _qingming_dater   _easter_sundayr5   ra   r^   r_   _add_easter_tuesdayr`   _chinese_calendarbuddha_birthday_daterb   r   _add_labor_day_tworc   dragon_boat_daterd   r   _add_holiday_jul_2re   r9   double_ninth_daterf   r   r
   _get_next_workdayrg   _add_holiday_oct_2_christmas_dayri   _add_christmas_day_threer>   rj   _add_holiday_2nd_sat_of_jun'_add_holiday_2_days_past_2nd_sat_of_jun_add_holiday_apr_21_add_holiday_jun_5_add_whit_monday_add_holiday_2nd_mon_of_oct&_add_holiday_1_day_past_2nd_sun_of_nov_add_holiday_last_mon_of_aug)_add_holiday_2_days_prior_last_mon_of_aug_add_holiday_1st_mon_of_aug_add_holiday_aug_30)r&   dt_qingmingdt_birthday_of_buddhadt_dragon_boatr6   rk   dtr7   first_after_christmassecond_after_christmasdt_christmass              r*   _populate_optional_holidaysz$HongKong._populate_optional_holidays   s    ??3"''(TU ##$>?  d ; ::--K{+{jI\I\^`>a/a!!;ZUW=X
 ++,AB 	m, 	 ?@ ::+1D1D"D$$%FG ##O4 ::$($:$:$O$OPTPZPZ$[\]$^!45!!B4b9 445QR ::sA&''(FG ##L1 ::!33DDTZZPQRSN~.!!8*^UW:X
 ../AB ::sA&''a
 ''O ..0 ::"44FFtzzRSTUO/!!<jZ\>]
 //0FG ::djj#q)Br"bO&;r_?T!!"BDDZDZ[]D^_ ''7::%##$DE  G!I**??<(''(=>))*@A|,##D)))*?@##D)''(=> 4::%%%DzzT!006<<TB::%,,T2++D1:: !!":; ,,-TU 778YZ:: @DzzT!11$7>>tDt#00611$7((. r+   c                 2   | j                   dz  dk(  r| j                   dk\  sc| j                   dz  dk(  r| j                   dk\  sB| j                   dz  dk(  r| j                   dk\  s!| j                   dz  dk(  r| j                   d	k\  r
d
}t        |fS d}t        |fS )N   r   i  r/   i     i
     i+        )r3   r   )r&   days     r*   rh   zHongKong._winter_solstice_date  s     ZZ!^q TZZ4%7

Q!#

d(:

Q!#

d(:

Q!#

d(:C Cx CCxr+   )__name__
__module____qualname____doc__countryr   (default_preferred_discretionary_holidaysobserved_labelr   r   supported_categoriesr   weekend
start_yearr!   r   r9   intrI   rm   r   propertytuplerh   __classcell__)r)   s   @r*   r   r   -   s    
 G09|,$N$f-eGJ	* 0$G $GL]I~l/\ uS#X  r+   r   c                       e Zd Zy)r   Nr   r   r    r+   r*   r   r         r+   r   c                       e Zd Zy)HKGNr   r   r+   r*   r   r     r   r+   r   c            	           e Zd ZdZdZdZdZdZdZdZ	dZ
ed	efed
efedefedefdZed	efed
efedefedefedef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dZy)r#   z#Wedding of Prince Charles and DianazESecond day of Queen Elizabeth II and her husband's visit to Hong Kongrr   ro   zmThe 70th anniversary day of the victory of the Chinese people's war of resistance against Japanese aggressionzSino-Japanese War Victory Dayrp   zAdditional public holiday   r   r   r   )    rU                    )r   r   rU   rq   rR   r   N)r   r   r   wedding_of_charles_and_dianaqueen_visit_hkqueen_birthday%day_following_hksar_establishment_dayvictory_70th_anniversarywar_victory_dayday_following_national_dayadditional_public_holidayr   r
   r	   special_public_holidaysr   r   r   special_optional_holidaysr   r+   r*   r#   r#     s   #H  ]N (N 	V *	A  6O "B !< B45B'A<=A/0	 B45B'"n%"n%!:;"o&!/0
 "o&!/0
 B12A/0!r+   r#   N)"datetimer   holidays.calendars.gregorianr   r   r   r   r   r	   r
   r   r   r   r   r   holidays.constantsr   r   holidays.groupsr   r   r   r   holidays.mixinsr   holidays.observed_holiday_baser   r   r   r   r   r   r   r#   r   r+   r*   <module>r      s}        0  ; "D	 		( 	5 5r+   