From 3bfe983b1c6f503c697532d4b37669cad3983154 Mon Sep 17 00:00:00 2001
From: Lennard Geese <lennard.geese@sva.de>
Date: Wed, 23 Apr 2025 16:30:24 +0200
Subject: [PATCH] Add check for years with no events, e.g. when code is run
 after new years but before first event

---
 DataImporter.py | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/DataImporter.py b/DataImporter.py
index e8fe418..8c4cefb 100644
--- a/DataImporter.py
+++ b/DataImporter.py
@@ -68,11 +68,22 @@ class DataImporter(DataHandler, ABC):
         return fastf1.get_event(year, event)
 
     def importAllEventsFromYear(self, year: int):
-        races: list[Event] = []
+        """
+        Get all event objects from given year.
+        :param year: Year from which to retrieve event objects.
+        :return: List of all event objects from the given year. Returns None if
+        """
+        if self.__isInFuture(year): raise ValueError("Cannot get event data from the future :)")
+
+        events: list[Event] = []
         schedule: EventSchedule = fastf1.get_event_schedule(year, include_testing = False)
+        if schedule.empty:
+            print(f"INFO: No races have run in {year} yet. You will receive a None object")
+            return None
+
         for raceIndex in schedule['RoundNumber']:
-            races.append(schedule.get_event_by_round(raceIndex))
-        return races
+            events.append(schedule.get_event_by_round(raceIndex))
+        return events
 
     def importSessionWeather(self, sessionIdentifier: SessionIdentifier):
         """
@@ -101,12 +112,11 @@ class DataImporter(DataHandler, ABC):
         return session
 
     def getWetEventsSince(self, firstYear: int):
-        currentYear = datetime.now().year
-        if firstYear > currentYear:
-            raise ValueError("Cannot get race data from the future :)")
+        if self.__isInFuture(firstYear): raise ValueError("Cannot get race data from the future :)")
 
         rainRaces: list[Session] = []
-        for year in range(firstYear, currentYear):  # FIXME: Handle exception after new years, when no events have run in current year yet
+        currentYear = datetime.now().year
+        for year in range(firstYear, currentYear):
             wetWeatherRacesInYear: list[Session] = self.getWetEventsIn(year)
             for wetWeatherRace in wetWeatherRacesInYear:
                 rainRaces.append(wetWeatherRace)
@@ -121,7 +131,9 @@ class DataImporter(DataHandler, ABC):
 
         return rainRaces
 
-
+    def __isInFuture(self, year: int):
+        currentYear = datetime.now().year
+        return year > currentYear
 
     def getRainRacesSince(self, firstYear: int):
         """
-- 
GitLab