From f075cf4e4c37af95b69a840ed5d81ac5eb7f6370 Mon Sep 17 00:00:00 2001
From: Matthew Hague <matthew.hague@rhul.ac.uk>
Date: Fri, 21 Jun 2024 12:21:39 +0100
Subject: [PATCH] bug(timetable): get_years should avoid duplicates

---
 timetabling/timetable-ics.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/timetabling/timetable-ics.py b/timetabling/timetable-ics.py
index 64f8737..224a5ff 100644
--- a/timetabling/timetable-ics.py
+++ b/timetabling/timetable-ics.py
@@ -8,7 +8,7 @@ import sys
 from icalendar import Calendar, Event
 from datetime import datetime, timedelta
 
-from typing import Dict, Generator
+from typing import Dict, Generator, Set
 
 TIMEZONE = "Europe/London"
 BASE_DATE = datetime(2024, 9, 23, 0, 0, 0, 0, pytz.timezone(TIMEZONE))
@@ -33,12 +33,13 @@ if sys.argv[1].lower() == "-expand":
 cals = { year: Calendar() for year in range(0, 6) }
 cals.update({ BEDFORD : Calendar() })
 
-def get_years(name : str) -> Generator[int, None, None]:
+def get_years(name : str) -> Set[int]:
     # remove CS2900 assessment weird names
     name = re.sub(r"<[^<]*>", "", name)
-    for sess in name.split(","):
-        year = int(sess.strip()[2])
-        yield year
+    return set(
+        int(sess.strip()[2])
+        for sess in name.split(",")
+    )
 
 def get_weeks(weeks : str) -> Generator[int, None, None]:
     for period in weeks.split(","):
-- 
GitLab