some new features

This commit is contained in:
ilgazca
2025-07-30 18:53:50 +03:00
parent 8019bd3b7c
commit 079804a0fc
2118 changed files with 297840 additions and 502 deletions

View File

@ -0,0 +1,179 @@
# holidays
# --------
# A fast, efficient Python library for generating country, province and state
# specific sets of holidays on the fly. It aims to make determining whether a
# specific date is a holiday as fast and flexible as possible.
#
# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
# dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
# ryanss <ryanssdev@icloud.com> (c) 2014-2017
# Website: https://github.com/vacanza/holidays
# License: MIT (see LICENSE file)
from holidays.calendars.gregorian import JAN, FEB, MAR, APR, JUN, SEP, NOV
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
from holidays.observed_holiday_base import ObservedHolidayBase, SUN_TO_NEXT_MON, SUN_TO_NEXT_TUE
class PapuaNewGuinea(
ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays
):
"""Papua New Guinea holidays.
References:
* [Public Holidays Act 1953](https://web.archive.org/web/20250406104407/http://www.paclii.org/pg/legis/consol_act/pha1953163.pdf)
* <https://en.wikipedia.org/wiki/Public_holidays_in_Papua_New_Guinea>
* <https://web.archive.org/web/20240612224551/https://pnghausbung.com/kings-birthday-holiday-to-be-observed-on-16th-june/>
Checked With:
* <https://web.archive.org/web/20250215234848/https://www.ipa.gov.pg/public/Holidays.aspx>
* <https://web.archive.org/web/20240119163205/https://www.businessadvantagepng.com/papua-new-guinea-public-for-holidays/>
* [2019](https://web.archive.org/web/20250429081247/https://www.scribd.com/document/465334129/PNG-2019-Gazetted-Public-Holidays-pdf)
* [2020](https://web.archive.org/web/20250429081229/https://publicholidays.asia/wp-content/uploads/2020/01/PNG_PublicHolidays_2020.png)
* [2021](https://web.archive.org/web/20240625200332/https://publicholidays.asia/wp-content/uploads/2020/12/PNG_PublicHolidays_2021.pdf)
* [2022](https://web.archive.org/web/20230530042019/https://publicholidays.asia/wp-content/uploads/2022/01/PNG_PublicHolidays_2022.pdf)
* [2023](https://web.archive.org/web/20240413053729/https://publicholidays.asia/wp-content/uploads/2022/12/PNG_PublicHolidays_2023.pdf)
Should a holiday listed, other than the Christmas Day, fall on a Sunday the next Monday
shall, unless the Head of State, acting on advice, declares otherwise, be observed as a
public holiday throughout the country.
When Christmas Day falls on a Sunday, the following Tuesday shall also be observed as a
public holiday.
"""
country = "PG"
observed_label = "%s (observed)"
# Public Holidays Law 1953 (No. 38 of 1953).
start_year = 1953
def __init__(self, *args, **kwargs):
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
StaticHolidays.__init__(self, PapuaNewGuineaStaticHolidays)
kwargs.setdefault("observed_rule", SUN_TO_NEXT_MON)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self):
# Section 1: Public Holidays.
# - Easter Saturday is currently not gazetted as a Public Holiday in 2024.
# - While Easter Sunday itself is not listed, this is de facto always a day-off.
# New Year's Day.
self._add_observed(self._add_new_years_day("New Year's Day"))
# Good Friday.
self._add_good_friday("Good Friday")
if self._year <= 2023:
# Easter Saturday.
self._add_holy_saturday("Easter Saturday")
# Easter Sunday.
self._add_easter_sunday("Easter Sunday")
# Easter Monday.
self._add_easter_monday("Easter Monday")
# Papua New Guinea Remembrance Day.
self._add_observed(self._add_holiday_jul_23("Papua New Guinea Remembrance Day"))
# Christmas Day.
self._add_observed(self._add_christmas_day("Christmas Day"), rule=SUN_TO_NEXT_TUE)
# Boxing Day.
self._add_observed(self._add_christmas_day_two("Boxing Day"))
# Section 2: Independence Day or Days.
# Independence Day
# Commemorates the attainment of Independent Sovereign Statehood on Sep 16, 1975.
if self._year >= 1975:
# Independence Day.
self._add_observed(self._add_holiday_sep_16("Independence Day"))
# Section 3: Anniversary of Birthday of the Queen/King.
# In Papua New Guinea, it is usually celebrated on the second Monday of June every year.
# From 2023, the date changed to Jun 17 (Special Observed for 2023 on Jun 16).
if self._year <= 2022:
# Queen's Birthday.
self._add_holiday_2nd_mon_of_jun("Queen's Birthday")
else:
# King's Birthday.
self._add_holiday_jun_17("King's Birthday")
# Section 5: Additional Public Holidays.
# Grand Chief Sir Michael Somare Remembrance Day.
# First observed on Feb 26, 2022.
# As of 2024, all previous observances so far are done on an ad hoc basis.
if self._year >= 2022:
# Grand Chief Sir Michael Somare Remembrance Day.
self._add_holiday_feb_26("Grand Chief Sir Michael Somare Remembrance Day")
# National Repentance Day.
# Enacted Aug 15, 2011, celebrated by "prayer ceremonies" across the country.
# First observed on Aug 26, 2011, held annually since then on that date.
if self._year >= 2011:
# The National Repentance Day.
self._add_observed(self._add_holiday_aug_26("National Repentance Day"))
class PG(PapuaNewGuinea):
pass
class PNG(PapuaNewGuinea):
pass
class PapuaNewGuineaStaticHolidays:
"""Papua New Guinea special holidays.
References:
* [2018 APEC Public Holiday](https://web.archive.org/web/20220813203130/https://www.rnz.co.nz/international/pacific-news/369989/papua-new-guinea-declares-apec-holiday)
* [2021 Sir Mekere Morauta's Funeral](https://web.archive.org/web/20241206065336/https://pnghausbung.com/friday-8th-declared-a-nation-wide-public-holiday-to-honour-late-sir-mekere/)
* [2021 Sir Michael Somare's Day of Mourning](https://web.archive.org/web/20241207121149/https://pnghausbung.com/2-weeks-mourning-period-for-late-sir-micheal-to-start-with-public-holiday-on-monday-pm/)
* [2022 QE2's Funeral](https://web.archive.org/web/20220914111729/https://www.thenational.com.pg/column-1-553/)
* [2023 Sir Rabbie Namaliu's Funeral](https://web.archive.org/web/20241109201443/https://pnghausbung.com/breaking-public-holiday-tomorrow-in-respect-of-late-sir-rabbies-state-funeral/)
Nov 15, 2018 is an APEC Holiday too, but for Port Moresby-only:
<https://web.archive.org/web/20250120182905/https://www.businessadvantagepng.com/public-holidays-declared-in-port-moresby-due-to-apec-summit-says-ceo/>
Starting from 2021 afterwards all state funerals are given special public holidays, though only
some are day-off nationwide.
"""
# National Day of Mourning for Sir Michael Somare.
sir_michael_somare_mourning_day = "National Day of Mourning for Sir Michael Somare"
# Grand Chief Sir Michael Somare Remembrance Day
sir_michael_somare_remembrance_day = "Grand Chief Sir Michael Somare Remembrance Day"
special_public_holidays = {
# APEC Leaders' Summit Public Holiday.
2018: (NOV, 16, "APEC Leaders' Summit Public Holiday"),
2021: (
# State Funeral of Sir Mekere Morauta.
(JAN, 8, "State Funeral of Sir Mekere Morauta"),
(MAR, 1, sir_michael_somare_mourning_day),
(MAR, 12, sir_michael_somare_mourning_day),
),
# State Funeral of Queen Elizabeth II.
2022: (SEP, 19, "State Funeral of Queen Elizabeth II"),
# State Funeral of Sir Rabbie Namaliu.
2023: (APR, 18, "State Funeral of Sir Rabbie Namaliu"),
}
special_public_holidays_observed = {
2022: (FEB, 28, sir_michael_somare_remembrance_day),
2023: (
(FEB, 24, sir_michael_somare_remembrance_day),
(JUN, 16, "King's Birthday"),
(SEP, 15, "Independence Day"),
),
}