diff --git a/.gitignore b/.gitignore index 9a2e4a0..cf41dea 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ __pycache__/ __pycache__ .mypy_cache config +.hypothesis/ diff --git a/agenda/__init__.py b/agenda/__init__.py index 6ca9505..95dccd4 100644 --- a/agenda/__init__.py +++ b/agenda/__init__.py @@ -11,6 +11,7 @@ from typing import List import dateutil import dateutil.parser +import dateutil.tz import exchange_calendars import holidays import lxml @@ -304,16 +305,20 @@ def next_birthday(from_date: date, birth_date: date) -> tuple[date, int]: def get_birthdays(from_date: date, config: configparser.ConfigParser) -> list[Event]: """Get birthdays from config.""" - if "birthdays" not in config: - return [] + filename = config["data"]["entities"] + events = [] - for name, date_str in config["birthdays"].items(): - bday = next_birthday(from_date, datetime.strptime(date_str, "%Y-%m-%d").date()) + with open(filename) as f: + entities = yaml.safe_load(f) + + for entity in entities: + birthday = date(**entity["birthday"]) + bday, age = next_birthday(from_date, birthday) events.append( Event( - date=bday[0], + date=bday, name="birthday", - title=f"{name.title()} (aged {bday[1]})", + title=f'{entity["label"]} (aged {age})', ) )