From acd95db18d74f2068e0409dc585ed214d9622121 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Sat, 21 Oct 2023 09:27:40 +0100 Subject: [PATCH 1/3] Update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9a2e4a0..cf41dea 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ __pycache__/ __pycache__ .mypy_cache config +.hypothesis/ From 155181be18a0f86dc55da981783c5ab9b38d56d2 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Sat, 21 Oct 2023 09:28:23 +0100 Subject: [PATCH 2/3] Import dateutil.tz for tzlocal --- agenda/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/agenda/__init__.py b/agenda/__init__.py index 6ca9505..fbeb73f 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 From aafd37ab5ac915261c84a0bbc015d96d78685f6b Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Sat, 21 Oct 2023 09:28:58 +0100 Subject: [PATCH 3/3] Read birthdays from YAML Closes: #22 --- agenda/__init__.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/agenda/__init__.py b/agenda/__init__.py index fbeb73f..95dccd4 100644 --- a/agenda/__init__.py +++ b/agenda/__init__.py @@ -305,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})', ) )