solarforecastarbiter.io.utils.adjust_start_end_for_interval_label

solarforecastarbiter.io.utils.adjust_start_end_for_interval_label(interval_label, start, end, limit_instant=False)[source]

Adjusts the start and end times depending on the interval_label.

Parameters:
  • interval_label (str or None) – The interval label for the the object the data represents
  • start (pandas.Timestamp) – Start time to restrict data to
  • end (pandas.Timestamp) – End time to restrict data to
  • limit_instant (boolean) – If true, an interval label of ‘instant’ will remove a nanosecond from end to ensure forecasts do not overlap. If False, instant returns start, end unmodified
Returns:

start, end – Return the adjusted start and end

Raises:

ValueError – If an invalid interval_label is given

Examples

Define input start/end:

>>> start = pd.Timestamp('20190101 1200Z')
>>> end = pd.Timestamp('20190101 1300Z')

Beginning:

>>> adjust_start_end_for_interval_label('beginning', start, end)
(Timestamp('2019-01-01 12:00:00+0000', tz='UTC'), Timestamp('2019-01-01 12:59:59.999999999+0000', tz='UTC'))

Ending:

>>> adjust_start_end_for_interval_label('ending', start, end)
(Timestamp('2019-01-01 12:00:00.000000001+0000', tz='UTC'), Timestamp('2019-01-01 13:00:00+0000', tz='UTC'))

Instantaneous:

>>> adjust_start_end_for_interval_label('instant', start, end)
(Timestamp('2019-01-01 12:00:00+0000', tz='UTC'), Timestamp('2019-01-01 13:00:00+0000', tz='UTC'))
>>> adjust_start_end_for_interval_label('instant', start, end,
...                                     limit_instant=True)
(Timestamp('2019-01-01 12:00:00+0000', tz='UTC'), Timestamp('2019-01-01 12:59:59.999999999+0000', tz='UTC'))