code: def value(self, t):
          
          for (l_t, l), (r_t, r) in zip(self._endpoints[:-1], self._endpoints[1:]):
              if l_t <= t and t < r_t:
                  alpha = float(t - l_t) / (r_t - l_t)
                  return self._interpolation(l, r, alpha)
  
          # t does not belong to any of the pieces, so doom.
          assert self._outside_value is not None
          return self._outside_value
docs: See Schedule.value