
    x7#hL                         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 d dl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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)    )date)gettext)Optional)MARAPRJUNJULSEP)
GOVERNMENTOPTIONALPUBLIC)ChristianHolidaysInternationalHolidaysStaticHolidays)ObservedHolidayBaseALL_TO_NEAREST_MONSAT_SUN_TO_NEXT_MONSAT_SUN_TO_NEXT_MON_TUESUN_TO_NEXT_MONSUN_TO_NEXT_TUEc                       e Zd ZdZdZdZ ed      ZdZdZ	i ddd	d
dd
ddddddddddddddddddddddddd dd!d"d"d#d$d%Z
eeefZd&Z fd'Zd(ee   fd)Zd* Zd+ Zd, Zd- ZdFd.ZdFd/Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Z d7 Z!d8 Z"d9 Z#d: Z$d; Z%d< Z&d= Z'd> Z(d? Z)d@ Z*dA Z+dB Z,dC Z-dD Z.dE Z/ xZ0S )GCanadaa  Canada holidays.

    References:
        * <https://en.wikipedia.org/wiki/Public_holidays_in_Canada>
        * <https://web.archive.org/web/20130703014214/http://www.hrsdc.gc.ca/eng/labour/overviews/employment_standards/holidays.shtml>
        * <https://www.alberta.ca/alberta-general-holidays>
        * <https://www2.gov.bc.ca/gov/content/employment-business/employment-standards-advice/employment-standards/statutory-holidays>
        * <http://web2.gov.mb.ca/laws/statutes/ccsm/r120e.php>
        * <https://www2.gnb.ca/content/gnb/en/departments/elg/local_government/content/governance/content/days_of_rest_act.html>
        * <https://www.ontario.ca/document/your-guide-employment-standards-act-0/public-holidays>
        * <https://www.gov.nu.ca/en/print/pdf/node/52266>
        * <https://www.officeholidays.com/countries/canada/>
        * <https://www.timeanddate.com/holidays/canada/>
        * <https://web.archive.org/web/20250122122256/https://www.warmuseum.ca/firstworldwar/history/after-the-war/remembrance/remembrance-day/>
        * <https://web.archive.org/web/20250428153936/https://www.thecanadianencyclopedia.ca/en/article/thanksgiving-day>
        * <https://web.archive.org/web/20250428154427/https://recherche-collection-search.bac-lac.gc.ca/eng/home/record?idnumber=9326&app=diawlmking&ecopy=80003QJW>
        * <https://web.archive.org/web/20240915001506/https://www.britannica.com/topic/Victoria-Day>
    CAen_CAz%s (observed)iK  )ABBCMBNBNLNSNTNUONPEQCSKYTAlbertar   zBritish Columbiar   zColombie-BritanniqueManitobar   zNew Brunswickr   zNouveau-BrunswickzNewfoundland and Labradorr   zTerre-Neuve-et-LabradorzNova Scotiar    u   Nouvelle-ÉcossezNorthwest Territoriesr!   zTerritoires du Nord-OuestNunavutr"   Ontarior#   zPrince Edward Islandr$   u   Île-du-Prince-ÉdouardQuebecr%   r&   r'   )u   QuébecSaskatchewanYukon)arr   en_USfrthc                     t        j                  |        t        j                  |        t        j                  | t               |j                  dt               t        |   |i | y )Nobserved_rule)r   __init__r   r   CanadaStaticHolidays
setdefaultr   super)selfargskwargs	__class__s      Y/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/holidays/countries/canada.pyr5   zCanada.__init___   sS    ""4(&&t,&:;/+>?$)&)    returnc                 X    | j                  t        | j                  g| t              S )Nrule)_get_observed_dater   _yearr   )r9   r:   s     r=   _get_nearest_mondayzCanada._get_nearest_mondayf   s'    &&tDJJ'>'>EW&XXr>   c                    | j                  | j                  t        d                   | j                  t        d             | j                  dk\  r9| j                  | j                  dk\  rt        d      n
t        d            | _        | j                  dk\  r| j                  t        d             | j                  t        d	             y
)zNationwide statutory holidays.zNew Year's DayzGood FridayW  i  z
Canada DayzDominion Dayif  z
Labour DayChristmas DayN)	_add_observed_add_new_years_daytr_add_good_fridayrD   _add_holiday_jul_1_canada_day_add_holiday_1st_mon_of_sep_add_christmas_dayr9   s    r=   _add_statutory_holidayszCanada._add_statutory_holidaysi   s     	42226F3GHI 	b/0::#66 ::% <  ' D ::,,R-=> 	? 34r>   c                 Z    | j                          | j                  | j                         y )N)rR   rI   _christmas_dayrQ   s    r=   _populate_public_holidaysz Canada._populate_public_holidays   s"    $$&4../r>   c                 8   | j                          | j                          | j                  dk\  r| j                  | j                         | j                  dk\  r)| j                  | j                  t        d                   | j                          | j                  dk\  r)| j                  | j                  t        d                   | j                  | j                  t               | j                  | j                  t        d            t               y)	z,Holidays for federally regulated workplaces.rG     )National Day for Truth and Reconciliation  Remembrance DayrA   
Boxing DayN)rR   _add_victoria_dayrD   rI   rN   _add_holiday_sep_30rK   _add_thanksgiving_day_add_remembrance_dayrT   r   _add_christmas_day_tworQ   s    r=   _populate_government_holidaysz$Canada._populate_government_holidays   s     	$$& ::t//0::((,W)XY
 	""$::t88<M9NOP4..5LM''<(89( 	 	
r>   c                     | j                  | j                  t        d            t               | j                  | j	                  t        d            t               y )NrH   rA   r[   )rI   rP   rK   r   r`   rQ   s    r=   _populate_optional_holidaysz"Canada._populate_optional_holidays   sV    ##B$78( 	 	
 	''<(89( 	 	
r>   c                     | j                   dk\  r>t        d      }| j                   dk(  r| j                  |       y| j                  |       y| j                   dk\  r| j	                  t        d             yy)u  Adds Thanksgiving Day / Armistice Day.

        In 1921, Thanksgiving Day was moved to "Armistice Day" (1st Monday in the week of Nov 11).
        "Remembrance Day" and "Thanksgiving Day" split again in 1931, with Thanksgiving usually on
        the 2nd Monday of October — except in 1935, when it was delayed 10 days due to a General
        Election. It was finally fixed to the 2nd Monday of October permanently in 1957.
        rY   zThanksgiving Dayi  i  zArmistice DayN)rD   rK   _add_holiday_oct_24_add_holiday_2nd_mon_of_oct"_add_holiday_1st_mon_before_nov_12r9   names     r=   r^   zCanada._add_thanksgiving_day   sg     ::()DzzT!((.006ZZ433B4GH  r>   c                     t        d      }| j                  dk\  r| j                  |       y| j                  dk\  r'| j                  | j	                  |      t
               yy)a.  Adds Victoria Day.

        After Queen Victoria's death in 1901, an act of the Canadian Parliament established
        Victoria Day as a legal holiday, to be celebrated on May 24 (or on May 25 when
        May 24 fell on a Sunday). This was later moved to the Monday preceding May 24 in 1952.
        zVictoria Dayi  im  rA   N)rK   rD   "_add_holiday_1st_mon_before_may_24rI   _add_holiday_may_24r   rh   s     r=   r\   zCanada._add_victoria_day   sW     .!::33D9ZZ4t77=OT  r>   c                 h   | j                   dk\  r| j                  t        d             | j                          | j                   dk\  r!| j	                  | j
                  t               | j                          | j                   dk\  r*| j	                  | j                  t        d                   y y )N  
Family DayrG   rA   rY   rZ   )	rD   _add_holiday_3rd_mon_of_febrK   r\   rI   rN   r   r^   r_   rQ   s    r=   #_populate_subdiv_ab_public_holidaysz*Canada._populate_subdiv_ab_public_holidays   s    ::,,R-=> ::t//oF""$::t88<M9NOP r>   c                    | j                  t        d             | j                  dk\  r| j                  t        d             | j                  dk\  r| j	                  t        d             | j                  t        d             y )NEaster Monday  Heritage DayrW   rX   r[   )_add_easter_mondayrK   rD   _add_holiday_1st_mon_of_augr]   r`   rQ   s    r=   %_populate_subdiv_ab_optional_holidaysz,Canada._populate_subdiv_ab_optional_holidays   sk    ? 34 ::,,R-?@::$$R(S%TU 	##B|$45r>   c                 4   | j                   dk\  r=t        d      }| j                   dk\  r| j                  |       n| j                  |       | j	                          | j                   dk\  r!| j                  | j                  t               | j                   dk\  r| j                  t        d             | j                   dk\  r| j                  t        d	             | j                          | j                   d
k\  r| j                  t        d             y y )Ni  ro     rG   rA   rt   zBritish Columbia Day  rX   rY   rZ   )rD   rK   rp   _add_holiday_2nd_mon_of_febr\   rI   rN   r   rw   r]   r^   r_   rh   s     r=   #_populate_subdiv_bc_public_holidaysz*Canada._populate_subdiv_bc_public_holidays   s    ::l#DzzT!006006 ::t//oF ::,,R0F-GH::$$R(S%TU""$::%%b):&;< r>   c                     | j                   dk\  r| j                  t        d             | j                          | j	                          y )N  zLouis Riel Day)rD   rp   rK   r\   r^   rQ   s    r=   #_populate_subdiv_mb_public_holidaysz*Canada._populate_subdiv_mb_public_holidays  s:    ::,,R0@-AB ""$r>   c                     | j                   dk\  r4| j                  | j                   dk\  rt        d      n
t        d             | j                   dk\  r| j                  t        d             y y )Nl    zTerry Fox DayCivic HolidayrY   rZ   )rD   rw   rK   r_   rQ   s    r=   %_populate_subdiv_mb_optional_holidaysz,Canada._populate_subdiv_mb_optional_holidays  se    ::,, ::% ?# ( ::%%b):&;< r>   c                     | j                   dk\  r| j                  t        d             | j                   dk\  r| j                  t        d             | j                   dk\  r| j	                  t        d             y y )Ni  ro   i  zNew Brunswick DayrY   rZ   )rD   rp   rK   rw   r_   rQ   s    r=   #_populate_subdiv_nb_public_holidaysz*Canada._populate_subdiv_nb_public_holidays'  sh    ::,,R-=> ::,,R0C-DE::%%b):&;< r>   c                 x    | j                          | j                          | j                  t        d             y )Nr[   )r\   r^   r`   rK   rQ   s    r=   %_populate_subdiv_nb_optional_holidaysz,Canada._populate_subdiv_nb_optional_holidays5  s/     ""$ 	##B|$45r>   c                    | j                   dk\  r| j                  t        d             | j                   dk\  r| j                  | j                         | j                   dk\  r*| j                  | j                  t        d                   y y )Ni}  zMemorial DayrG   rY   rZ   )rD   rM   rK   rI   rN   r_   rQ   s    r=   #_populate_subdiv_nl_public_holidaysz*Canada._populate_subdiv_nl_public_holidays=  sq    ::##B~$67::t//0::t88<M9NOP r>   c                    | j                   dk\  r/| j                  t        d      | j                  t        d             | j                   dk\  rQ| j                   dk(  rt        dt        d      n| j                  t        d      }| j                  t        d      |       | j                   d	k\  r/| j                  t        d
      | j                  t        d             | j                   dk\  r/| j                  t        d      | j                  t        d             | j                          | j                  t        d             y )Nr   zSaint Patrick's Day   rn           zSaint George's Dayi  Discovery Day   zOrangemen's Day   r[   )rD   _add_holidayrK   rE   r   r   r   r   r	   r^   r`   )r9   dts     r=   %_populate_subdiv_nl_optional_holidaysz,Canada._populate_subdiv_nl_optional_holidaysI  s   ::b!679Q9QRUWY9Z[:: )-

d(:dC$@X@XY\^`@aBb!56;::b143K3KCQS3TU::b!23T5M5McSU5VW""$ 	##B|$45r>   c                     | j                   dk\  r| j                  t        d             | j                   dk\  r*| j                  | j	                  t        d                   y y )Nr   ru   i  rZ   )rD   rp   rK   rI   r_   rQ   s    r=   #_populate_subdiv_ns_public_holidaysz*Canada._populate_subdiv_ns_public_holidaysc  sQ    ::,,R-?@::t88<M9NOP r>   c                 X    | j                   dk\  r| j                  t        d             y y )N  z	Natal DayrD   rw   rK   rQ   s    r=   %_populate_subdiv_ns_optional_holidaysz,Canada._populate_subdiv_ns_optional_holidaysm  s%    ::,,R_= r>   c                    | j                          | j                  dk\  r| j                  t        d             | j                  dk\  r| j	                  t        d             | j                  dk\  r| j                  t        d             | j                          | j                  dk\  r| j                  t        d             y y )	Nr   National Aboriginal Dayr   r     rX   rY   rZ   )r\   rD   _add_holiday_jun_21rK   rw   r]   r^   r_   rQ   s    r=   #_populate_subdiv_nt_public_holidaysz*Canada._populate_subdiv_nt_public_holidaysr  s     ::$$R(A%BC::,,R-@A::$$R(S%TU""$::%%b):&;< r>   c                    | j                          | j                  dk\  r| j                  t        d             | j                  dk\  r| j	                  t        d             | j                  dk\  r| j                  t        d             | j                          | j                  dk\  r| j                  t        d             y y )	Ni  Nunavut Dayr   r   r   rX   rY   rZ   )r\   rD   _add_holiday_jul_9rK   rw   r]   r^   r_   rQ   s    r=   #_populate_subdiv_nu_public_holidaysz*Canada._populate_subdiv_nu_public_holidays  s     ::##B}$56::,,R-@A::$$R(S%TU""$::%%b):&;< r>   c                     d| j                   cxk  rdk  rAn y t        d      }| j                   dk(  r| j                  |       y | j                  |       y y )Ni  rz   r   )rD   rK   _add_holiday_apr_1r   rh   s     r=   %_populate_subdiv_nu_optional_holidaysz,Canada._populate_subdiv_nu_optional_holidays  sJ    4::%%m$DzzT!''-''- &r>   c                     | j                   dk\  r| j                  t        d             | j                          | j	                          | j                  | j                  t        d            t               y )Nr   ro   r[   rA   )rD   rp   rK   r\   r^   rI   r`   r   rQ   s    r=   #_populate_subdiv_on_public_holidaysz*Canada._populate_subdiv_on_public_holidays  s^    ::,,R-=> ""$ 	466r,7GH_r>   c                 X    | j                   dk\  r| j                  t        d             y y )Nr   r   r   rQ   s    r=   %_populate_subdiv_on_optional_holidaysz,Canada._populate_subdiv_on_optional_holidays  s&    ::,,R-@A r>   c                    | j                   dk\  r=t        d      }| j                   dk\  r| j                  |       n| j                  |       | j                   dk\  r| j	                  | j
                         | j                   dk\  r| j                  t        d             | j                   dk\  r*| j	                  | j                  t        d                   y y )	Ni  zIslander Dayr   rG   r   rX   rY   rZ   )rD   rK   rp   r|   rI   rN   r]   r_   rh   s     r=   #_populate_subdiv_pe_public_holidaysz*Canada._populate_subdiv_pe_public_holidays  s    ::n%DzzT!006006::t//0::$$R(S%TU::t88<M9NOP r>   c                 R   | j                   dk\  r| j                  t        d             | j                   dk\  r/| j                  | j	                  t        d            t
               | j                   dk\  r!| j                  | j                  t
               | j                          y )Ni  zNational Patriots' Dayi  zSaint Jean Baptiste DayrA   rG   )rD   rk   rK   rI   _add_saint_johns_dayr   rN   r^   rQ   s    r=   #_populate_subdiv_qc_public_holidaysz*Canada._populate_subdiv_qc_public_holidays  s    ::33B7O4PQ::))"-F*GH$   ::t//oF""$r>   c                 8    | j                  t        d             y )Nrs   )rv   rK   rQ   s    r=   %_populate_subdiv_qc_optional_holidaysz,Canada._populate_subdiv_qc_optional_holidays  s    ? 34r>   c                    | j                   dk\  r| j                  t        d             | j                          | j                   dk\  r| j	                  | j
                         | j                   dk\  r| j                  t        d             | j                          | j                   dk\  r*| j	                  | j                  t        d                   y y )Ni  ro   rG   r   zSaskatchewan DayrY   rZ   )	rD   rp   rK   r\   rI   rN   rw   r^   r_   rQ   s    r=   #_populate_subdiv_sk_public_holidaysz*Canada._populate_subdiv_sk_public_holidays  s    ::,,R-=> ::t//0 ::,,R0B-CD""$::t88<M9NOP r>   c                     | j                          | j                  dk\  r| j                  t        d             | j                  dk\  r| j	                  | j
                         | j                  dk\  r| j                  t        d             | j                  dk\  r| j                  t        d             | j                          | j                  dk\  r*| j	                  | j                  t        d	                   y y )
Ni  r   rG   ix  r   r{   rX   rY   rZ   )
r\   rD   r   rK   rI   rN   _add_holiday_3rd_mon_of_augr]   r^   r_   rQ   s    r=   #_populate_subdiv_yt_public_holidaysz*Canada._populate_subdiv_yt_public_holidays  s     ::$$R(A%BC::t//0::,,R-@A::$$R(S%TU""$::t88<M9NOP r>   c                 X    | j                   dk\  r| j                  t        d             y y )Ni  ru   )rD   )_add_holiday_2_days_prior_last_sun_of_febrK   rQ   s    r=   %_populate_subdiv_yt_optional_holidaysz,Canada._populate_subdiv_yt_optional_holidays  s&    ::::2n;MN r>   )r?   N)1__name__
__module____qualname____doc__countrydefault_languagerK   observed_label
start_yearsubdivisionssubdivisions_aliasesr   r   r   supported_categoriessupported_languagesr5   r   r   rE   rR   rU   ra   rc   r^   r\   rq   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r<   s   @r=   r   r      s   & G(NJL4D 	 	D	
 	 	T 	$T 	"4 	t 	D 	  	$T 	4 	4 	  	"4!" 	$#$ ), '&9>*YHTN Y520

<
I&UQ 6 =:%==6
Q64Q>
=*=*.
`B
Q(%"5Q*Q0O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)CANNr   r   r>   r=   r   r     r   r>   r   c                   p    e Zd Z ed      ZdedefiZdedefiZdedefiZdedefiZ	dedefiZ
dedefiZy)r6   z-Funeral of Her Majesty the Queen Elizabeth IIr   r   N)r   r   r   rK   queen_funeralr
   special_bc_public_holidaysspecial_nb_public_holidaysspecial_nl_public_holidaysspecial_ns_public_holidaysspecial_pe_public_holidaysspecial_yt_public_holidaysr   r>   r=   r6   r6     s    FGM 	sB&"
 	sB&"
 	sB&"
 	sB&"
 	sB&"
 	sB&"r>   r6   N)datetimer   r   rK   typingr   holidays.calendars.gregorianr   r   r   r	   r
   holidays.constantsr   r   r   holidays.groupsr   r   r   holidays.observed_holiday_baser   r   r   r   r   r   r   r   r   r6   r   r>   r=   <module>r      sh     !  @ @ ; ; T T rO "35JN rOj	 		& 	 r>   