Skip to content

Commit 3472e82

Browse files
fix: handler_mod func don't work when dealing None end date (#2068)
* [fix] handler_mod func don't work when dealing None end date * refactor: avoid deep access by extracting handler_kwargs and using get(end_time) --------- Co-authored-by: Linlang <Lv.Linlang@hotmail.com>
1 parent cb285bc commit 3472e82

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

qlib/workflow/task/gen.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,13 @@ def handler_mod(task: dict, rolling_gen):
106106
rg (RollingGen): an instance of RollingGen
107107
"""
108108
try:
109-
interval = rolling_gen.ta.cal_interval(
110-
task["dataset"]["kwargs"]["handler"]["kwargs"]["end_time"],
111-
task["dataset"]["kwargs"]["segments"][rolling_gen.test_key][1],
112-
)
113-
# if end_time < the end of test_segments, then change end_time to allow load more data
114-
if interval < 0:
115-
task["dataset"]["kwargs"]["handler"]["kwargs"]["end_time"] = copy.deepcopy(
116-
task["dataset"]["kwargs"]["segments"][rolling_gen.test_key][1]
117-
)
109+
handler_kwargs = task["dataset"]["kwargs"]["handler"]["kwargs"]
110+
handler_end_time = handler_kwargs.get("end_time")
111+
test_seg_end_time = task["dataset"]["kwargs"]["segments"][rolling_gen.test_key][1]
112+
# if the end of test_segments is None (open-ended segment, i.e., "until now") or end_time < the end of test_segments,
113+
# then change end_time to allow load more data
114+
if test_seg_end_time is None or rolling_gen.ta.cal_interval(handler_end_time, test_seg_end_time) < 0:
115+
handler_kwargs["end_time"] = copy.deepcopy(test_seg_end_time)
118116
except KeyError:
119117
# Maybe dataset do not have handler, then do nothing.
120118
pass

0 commit comments

Comments
 (0)