diff options
| author | 2020-03-14 17:24:38 +0100 | |
|---|---|---|
| committer | 2020-03-14 17:24:38 +0100 | |
| commit | e723dd242b8c040d8649cee8c26e000791e5c88a (patch) | |
| tree | a157ceedb8d7d451021dd1af8992907c4d01fafa | |
| parent | Deseasonify: lock daily tasks to their seasons' respective months (diff) | |
Deseasonify: add convenience method to get current season
| -rw-r--r-- | bot/seasons/__init__.py | 24 | 
1 files changed, 22 insertions, 2 deletions
| diff --git a/bot/seasons/__init__.py b/bot/seasons/__init__.py index 21b7f6fe..2f7609ec 100644 --- a/bot/seasons/__init__.py +++ b/bot/seasons/__init__.py @@ -1,11 +1,12 @@  import logging  import pkgutil +from datetime import datetime  from pathlib import Path -from typing import List, Set +from typing import List, Set, Type  from bot.constants import Month -__all__ = ("SeasonBase", "get_seasons", "get_extensions") +__all__ = ("SeasonBase", "get_seasons", "get_extensions", "get_current_season")  log = logging.getLogger(__name__) @@ -62,3 +63,22 @@ class SeasonBase:      branding_path: str = "seasonal/evergreen"      months: Set[Month] = set(Month) + + +def get_current_season() -> Type[SeasonBase]: +    """Give active season, based on current UTC month.""" +    current_month = Month(datetime.utcnow().month) + +    active_seasons = tuple( +        season +        for season in SeasonBase.__subclasses__() +        if current_month in season.months +    ) + +    if not active_seasons: +        return SeasonBase + +    if len(active_seasons) > 1: +        log.warning(f"Multiple active season in month {current_month.name}") + +    return active_seasons[0] | 
