def _relax_switch_window(self, series, direction, window): """ direction == "left" return the last time the task was running if no such time exists in the window, extend the window's left extent to getStartTime direction == "right" return the first time the task was running in the window. If no such time exists in the window, extend the window's right extent to getEndTime() The function returns a None if len(series[series == TASK_RUNNING]) == 0 even in the extended window """ series = series[series == sconf.TASK_RUNNING] w_series = sconf.select_window(series, window) start, stop = window if direction == "left": if len(w_series): return w_series.index.values[-1] else: start_time = self.getStartTime() w_series = sconf.select_window( series, window=( start_time, start)) if not len(w_series): return None else: return w_series.index.values[-1] elif direction == "right": if len(w_series): return w_series.index.values[0] else: end_time = self.getEndTime() w_series = sconf.select_window(series, window=(stop, end_time)) if not len(w_series): return None else: return w_series.index.values[0] else: raise ValueError("direction should be either left or right")