Note
Go to the end to download the full example code.
No future data#
Setting after="empty" may be used to create folds without regard for a Future data dataset.
import pandas
from rics import configure_stuff
from time_split import log_split_progress, plot, split
configure_stuff(datefmt="")
data = pandas.date_range("2022", "2022-1-21", freq="38min")
config = dict(
schedule="0 0 * * MON,FRI",
before="3d",
after="empty",
available=data,
)
plot(**config, show_removed=True)

<Axes: title={'center': "time_split.split(schedule='0 0 * * MON,FRI', before='3d', after='empty', available=pd.DatetimeIndex)"}, ylabel='Fold'>
The vertical, dashed lines shown denote the outer bounds of the data, beyond which the schedule may not extend.
for fold in log_split_progress(split(**config), logger="my-logger"):
print("Doing work..")
[my-logger:INFO] Begin fold 1/5: '2022-01-04' <= [schedule: '2022-01-07' (Friday)] < '2022-01-07'.
Doing work..
[my-logger:INFO] Finished fold 1/5: [schedule: '2022-01-07' (Friday)] after 16 μs.
[my-logger:INFO] Begin fold 2/5: '2022-01-07' <= [schedule: '2022-01-10' (Monday)] < '2022-01-10'.
Doing work..
[my-logger:INFO] Finished fold 2/5: [schedule: '2022-01-10' (Monday)] after 35 μs.
[my-logger:INFO] Begin fold 3/5: '2022-01-11' <= [schedule: '2022-01-14' (Friday)] < '2022-01-14'.
Doing work..
[my-logger:INFO] Finished fold 3/5: [schedule: '2022-01-14' (Friday)] after 14 μs.
[my-logger:INFO] Begin fold 4/5: '2022-01-14' <= [schedule: '2022-01-17' (Monday)] < '2022-01-17'.
Doing work..
[my-logger:INFO] Finished fold 4/5: [schedule: '2022-01-17' (Monday)] after 15 μs.
[my-logger:INFO] Begin fold 5/5: '2022-01-18' <= [schedule: '2022-01-21' (Friday)] < '2022-01-21'.
Doing work..
[my-logger:INFO] Finished fold 5/5: [schedule: '2022-01-21' (Friday)] after 14 μs.
Total running time of the script: (0 minutes 0.177 seconds)