buses.py

changeset 31
60045b362d71
parent 30
a5bfd99bc2a3
child 41
4354d459c231
--- a/buses.py	Sat Jun 24 19:38:05 2017 +0300
+++ b/buses.py	Wed Jun 28 12:20:05 2017 +0300
@@ -67,7 +67,7 @@
 		self.involved_trips = set()
 	def __repr__(self):
 		return 'bus_stops[%r]' % self.reference
-	def schedule(self, max_amount = 50):
+	def schedule(self, *, max_amount = 50, arrivals = False):
 		'''
 			Hakee tämän pysäkin seuraavat `määrä` lähtöä. Päätepysäkille saapuvia busseja ei
 			lasketa. Palauttaa pysähdykset listana jossa alkiot ovat muotoa (aika, halt),
@@ -85,7 +85,7 @@
 		while len(result) < max_amount:
 			try:
 				# hae nykyisen päivän aikataulut ja lisää ne,
-				result += self.schedule_for_day(date)
+				result += self.schedule_for_day(date, arrivals = arrivals)
 			except ValueError:
 				# paitsi jos mentiin kalenterin ulkopuolelle, jolloin lopetetaan,
 				break
@@ -93,7 +93,7 @@
 			date += timedelta(1)
 		# Typistä lopputulos haluttuun tulosmäärään.
 		return result[:max_amount]
-	def schedule_for_day(self, date):
+	def schedule_for_day(self, date, *, arrivals = False):
 		'''
 			Hakee pysäkin aikataulut tiettynä päivänä.
 		'''
@@ -109,7 +109,7 @@
 				# ja jos tämä trip pysähtyy tällä pysäkillä, ei kuitenkaan saapuen
 				# päätepysäkille,
 				stop = trip.contains_stop(self)
-				if stop and not stop.is_arrival: # stop is not trip.schedule[-1]:
+				if stop and (arrivals or not stop.is_arrival) and stop is not trip.schedule[-1]:
 					# ja jos tämä halt on tulevaisuudessa,
 					stop_time = datetime.combine(date, time()) + stop.arrival_time
 					if stop_time >= now():
@@ -294,10 +294,10 @@
 				self.stops |= other.stops
 				other.stops = set()
 				other._center = None
-			def schedule(self, max_amount = 50):
+			def schedule(self, *, max_amount = 50):
 				result = []
 				for stop in self.stops:
-					result += stop.schedule(max_amount)
+					result += stop.schedule(max_amount = max_amount)
 				result.sort(key = lambda schedule_entry: schedule_entry['time'])
 				return result[:max_amount]
 

mercurial