Source code for workingless.calculators.every_n_years_calculator

import datetime
from typing import Optional


[docs]class EveryNYearsCalculator: """ Holidays calculations based in every years from base year Args: month (int): month if every year is satisfied day (int): day if every year is satisfied base_year (int): base year for calculation every (int): how often """ __slots__ = ('_month', '_day', '_base_year', '_every') def __init__(self, month: int, day: int, base_year: int, every: int): self._month = month self._day = day self._base_year = base_year self._every = every
[docs] def calculate(self, year: int) -> Optional[datetime.date]: """ It return base date if the ``year`` meets the condition Args: year (int): year for calculate holiday Returns: datetime.date: if year meets the condition, None otherwise. """ if (self._base_year - year) % self._every == 0: return datetime.date(year, self._month, self._day)