Skip to content

Commit

Permalink
fix: signals that return an empty list are considered ready (#3841)
Browse files Browse the repository at this point in the history
  • Loading branch information
plaflamme authored Feb 14, 2025
1 parent ec5e085 commit 8c94571
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion sqlmesh/core/snapshot/definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -2083,7 +2083,7 @@ def _check_ready_intervals(
for i in ready_intervals:
if i not in batch:
raise SQLMeshError(f"Unknown interval {i} for signal")
batch = ready_intervals
batch = ready_intervals
else:
raise SQLMeshError(f"Expected bool | list, got {type(ready_intervals)} for signal")

Expand Down
12 changes: 10 additions & 2 deletions tests/core/test_snapshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -2326,21 +2326,29 @@ def test_contiguous_intervals():

def test_check_ready_intervals(mocker: MockerFixture):
def assert_always_signal(intervals):
_check_ready_intervals(lambda _: True, intervals) == intervals
assert _check_ready_intervals(lambda _: True, intervals) == intervals

assert_always_signal([])
assert_always_signal([(0, 1)])
assert_always_signal([(0, 1), (1, 2)])
assert_always_signal([(0, 1), (2, 3)])

def assert_never_signal(intervals):
_check_ready_intervals(lambda _: False, intervals) == []
assert _check_ready_intervals(lambda _: False, intervals) == []

assert_never_signal([])
assert_never_signal([(0, 1)])
assert_never_signal([(0, 1), (1, 2)])
assert_never_signal([(0, 1), (2, 3)])

def assert_empty_signal(intervals):
assert _check_ready_intervals(lambda _: [], intervals) == []

assert_empty_signal([])
assert_empty_signal([(0, 1)])
assert_empty_signal([(0, 1), (1, 2)])
assert_empty_signal([(0, 1), (2, 3)])

def to_intervals(values: t.List[t.Tuple[int, int]]) -> DatetimeRanges:
return [(to_datetime(s), to_datetime(e)) for s, e in values]

Expand Down

0 comments on commit 8c94571

Please sign in to comment.