
    x7#hC                         d dl m Z d dlmZmZmZ d dlmZ d dlm	Z	m
Z
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APRJUL)KHMER_CALENDAR)BANKPUBLICSCHOOLWORKDAY)InternationalHolidaysThaiCalendarHolidaysStaticHolidays)ObservedHolidayBaseSAT_SUN_TO_NEXT_WORKDAYc                   f     e Zd ZdZdZeeeefZ	dZ
 ed      ZdZdZ fdZd Zd	 Zd
 Zd Z xZS )Laosa(  Laos holidays.

    References:
        * <https://en.wikipedia.org/wiki/Public_holidays_in_Laos>
        * [Decree on Holidays No. 386 / Rev. 15.12.2017](https://juristact.weebly.com/uploads/1/0/9/9/109947087/d17_386.pdf)

    Checked with:
        * <https://asean.org/wp-content/uploads/2021/12/ASEAN-National-Holidays-2022.pdf>
        * <https://asean.org/wp-content/uploads/2022/12/ASEAN-Public-Holidays-2023.pdf>
        * <https://www.timeanddate.com/holidays/laos/>
        * <https://www.bcel.com.la/bcel/bcel-calendar.html?y=2022>
        * <https://www.bcel.com.la/bcel/bcel-calendar.html?y=2023>
        * <https://www.bcel.com.la/bcel/bcel-calendar.html?y=2024>
        * <http://www.lsx.com.la/cal/getStockCalendar.do?lang=lo> (from 2011 onwards)

    !!! note "If Public Holiday falls on weekends, (in lieu) on workday"
        Despite the wording, this usually only applies to Monday only for holidays,
        consecutive holidays all have their own special in lieu declared separately.

    As featured in Decree on Holidays No. 386:
        - Saturdays and Sundays shall be restdays each week.
        - In-Lieu holidays shall be given if it fall on the weekends.

    Although in-lieus has been de facto observed since at least 2012.

    Limitations:
        - Laotian holidays only works from 1976 onwards, and are only 100% accurate from 2018
            onwards.
        - Laotian Lunar Calendar Holidays only work from 1941 (B.E. 2485) onwards until 2157
            (B.E. 2701) as we only have Thai year-type data for cross-checking until then.
    LAlou    ພັກຊົດເຊີຍ%s)en_USr   thi  c                    t        j                  |        t        j                  | t               t	        j                  | t
               |j                  dt               |j                  dd       t        |   |i | y )N)clsobserved_ruleobserved_since  )	r   __init__r   r   r   LaosStaticHolidays
setdefaultr   super)selfargskwargs	__class__s      W/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/holidays/countries/laos.pyr   zLaos.__init__@   sf    &&t,%%dN;*<=/+BC*D1$)&)    c                 L   | j                  | j                  t        d                   t        d      }| j                  || j	                  | j
                  d            }| j                  || j	                  |d            }| j                  || j	                  |d             y )NuV   ວັນສ້າງຕັ້ງທະນາຄານແຫ່ງ ສປປ ລາວuZ   ສາມວັນລັດຖະການສຸດທ້າຍຂອງທຸກໆປີ)_add_observed_add_holiday_oct_7tr_add_holiday_get_next_workday_next_year_new_years_day)r    namelast_workdaysecond_to_last_workdays       r$   _populate_bank_holidayszLaos._populate_bank_holidaysH   s     	4222  7O  4P  Q  	R no(($(()F)FK
 "&!2!249O9OP\^`9a!b$ 6 67Mr RSr%   c                    | j                  | j                  t        d                   | j                  t        d            }| j                  dk7  r| j                  |       t        d      }ddh}h d}t               }| j                  |j                  |      v r |j                  | j                  |             |j                  | j                  |             |j                  | j                  |             | j                  |vr |j                  | j                  |             |D ]  }| j                  |        | j                  | j                  t        d                   d	| j                  cxk  rdk  rn n| j                  t        d
             | j                  | j                  t        d                   y )Nu'   ວັນປີໃໝ່ສາກົນ*   ວັນແມ່ຍິງສາກົນi  !   ບຸນປີໃໝ່ລາວr   i  >         u-   ວັນກຳມະກອນສາກົນi  $   ວັນເດັກສາກົນu   ວັນຊາດ)r(   _add_new_years_dayr*   _add_womens_day_yearsetunionadd_add_holiday_apr_13_add_holiday_apr_14_add_holiday_apr_15_add_holiday_apr_16_add_labor_day_add_childrens_day_add_holiday_dec_2)r    
womens_dayr.   songkran_years_apr_13_15songkran_years_apr_13_16dts_observeddts          r$   _populate_public_holidayszLaos._populate_public_holidaysf   s   
 	42226_3`ab ))"-Y*Z[
::z* 56$($< #5 u::1778PQQT55d;<11$7811$78::55T55d;<Br"  	4..r2a/bcd 4::%%##B'M$NO 	42226J3KLMr%   c                    | j                  t        d             | j                  t        d             | 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
             y y )Nu*   ວັນບຸນມາຂະບູຊາu0   ວັນບຸນວິສາຂະບູຊາu0   ວັນບຸນເຂົ້າພັນສາuB   ວັນບຸນຫໍ່ເຂົ້າປະດັບດິນu<   ວັນບຸນຫໍ່ເຂົ້າສະຫຼາກu*   ວັນບຸນອອກພັນສາuX   ວັນບຸນຊ່ວງເຮືອ ນະຄອນຫຼວງວຽງຈັນu'   ວັນບຸນທາດຫລວງi  u$   ວັນຄູແຫ່ງຊາດ)_add_makha_buchar*   _add_visakha_bucha_add_asarnha_bucha_add_boun_haw_khao_padapdin_add_boun_haw_khao_salark_add_ok_phansa_add_boun_suang_heua_add_loy_krathongr;   r)   r    s    r$   _populate_school_holidayszLaos._populate_school_holidays   s     	b!MNO 	#U VW 	#U VW 	((,p)qr 	&&r*h'ij 	BKLM 	!!"%  #A  	B 	r"KLM ::##B'M$NO r%   c                 t   | 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                  t        d	             | j
                  d
k\  r| j                  t        d             | j                  t        d             | j                  t        d             | j
                  dk\  r| j                  t        d             | j                  t        d             | j                  t        d             | j
                  dk\  r| j                  t        d             y y )NuQ   ວັນສ້າງຕັ້ງກອງທັບປະຊາຊົນລາວuW   ວັນສ້າງຕັ້ງສະຫະພັນກໍາມະບານລາວu]   ວັນສ້າງຕັ້ງພັກປະຊາຊົນປະຕິວັດລາວu{   ວັນສ້າງຕັ້ງສູນກາງຊາວໜຸ່ມປະຊາຊົນປະຕິວັດລາວi  r8   i  u<   ວັນປູກຕົ້ນໄມ້ແຫ່ງຊາດuc   ວັນຄ້າຍວັນເກີດ ທ່ານ ປະທານ ສຸພານຸວົງi  u~   ວັນປ່ອຍປາ ແລະ ວັນອະນຸລັກສັດນ້ຳ-ສັດປ່າແຫ່ງຊາດQ   ວັນສ້າງຕັ້ງສະຫະພັນແມ່ຍິງລາວuk   ວັນສື່ມວນຊົນແຫ່ງຊາດ ແລະ ວັນພິມຈໍາໜ່າຍi  uE   ວັນລັດຖະທໍາມະນູນແຫ່ງຊາດu<   ວັນຍຶດອຳນາດທົ່ວປະເທດu-   ວັນປະກາດເອກະລາດup   ວັນຄ້າຍວັນເກີດ ທ່ານ ປະທານ ໄກສອນ ພົມວິຫານ)_add_holiday_jan_20r*   _add_holiday_feb_1_add_holiday_mar_22r@   r;   rD   _add_holiday_jun_1_add_holiday_jul_13_add_holiday_jul_20_add_holiday_aug_13_add_holiday_aug_15_add_holiday_aug_23_add_holiday_oct_12_add_holiday_dec_13rU   s    r$   _populate_workday_holidayszLaos._populate_workday_holidays   s    	  $w!xy 	#| }~ 	    %D  "E  	F 	    %b  "c  	d ::##B'M$NO ::##B'e$fg 	    %J  "K  	L ::$$R  )i  &j  k 	  $w!xy 	    %R  "S  	T ::$$R(o%pq 	  $b!cd 	  $S!TU ::$$R  )[  &\  ] r%   )__name__
__module____qualname____doc__countryr   r	   r
   r   supported_categoriesdefault_languager*   observed_labelsupported_languages
start_yearr   r1   rK   rV   rd   __classcell__)r#   s   @r$   r   r      s\    @ G &&'::;N/J*T<9NvKPZj]r%   r   c                       e Zd Zy)r   Nre   rf   rg    r%   r$   r   r   [      r%   r   c                       e Zd Zy)LAONrq   rr   r%   r$   ru   ru   _  rs   r%   ru   c                       e Zd Z ed      Z ed      Z ed      Z ed      Z ed      Zde	defiZ
dedefiZed	efedefd
ZdedefiZy)r   ui   ມື້ປິດການໃຫ້ບໍລິການຂອງທະນາຄານຕົວແທນr3   r4   u*   ພັກບຸນປີໃໝ່ລາວrX   i           )i  r7   i     N)re   rf   rg   r*   special_bank_day_offinternational_womens_rights_daylao_new_yearlao_new_year_speciallao_womens_unionr   special_bank_holidaysr   special_public_holidays special_public_holidays_observedr   !special_workday_holidays_observedrr   r%   r$   r   r   c  s       J  K '))U&V# 9:L JK mn 	sA+,
 	sB,-
 B%B%($ 	sB())%r%   r   N)r   r*   holidays.calendars.gregorianr   r   r   holidays.calendars.thair   holidays.constantsr   r	   r
   r   holidays.groupsr   r   r   holidays.observed_holiday_baser   r   r   r   ru   r   rr   r%   r$   <module>r      s^    " 6 6 2 < < W W WB] 5~G[ B]J
	 		$ 	! !r%   