Skip to content

Commit 7fd4add

Browse files
committed
Add a fix to ensure we get correct behaviour when dealing with time-range computations.
1 parent 6a214dd commit 7fd4add

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

hgraph/_impl/_operators/_tsw_operators.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ def min_tsw(
4444
ts: TSW[NUMBER, WINDOW_SIZE, WINDOW_SIZE_MIN], default_value: TS[NUMBER] = None, _tp: type[NUMBER] = AUTO_RESOLVE
4545
) -> TS[NUMBER]:
4646
default = default_value.value if default_value.valid else None
47-
value = min(ts.value, default=default)
47+
values = ts.value if ts.value is not None else ()
48+
value = min(values, default=default)
4849
return _tp(value) if value is not None else None
4950

5051

@@ -53,5 +54,6 @@ def max_tsw(
5354
ts: TSW[NUMBER, WINDOW_SIZE, WINDOW_SIZE_MIN], default_value: TS[NUMBER] = None, _tp: type[NUMBER] = AUTO_RESOLVE
5455
) -> TS[NUMBER]:
5556
default = default_value.value if default_value.valid else None
56-
value = max(ts.value, default=default)
57+
values = ts.value if ts.value is not None else ()
58+
value = max(values, default=default)
5759
return _tp(value) if value is not None else None

hgraph_unit_tests/_operators/test_tsw_operators.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from hgraph import graph, TS, sum_, to_window, abs_, TSW, mean, min_, max_
2+
from hgraph._runtime._constants import MIN_TD
23
from hgraph.test import eval_node
34

45
import pytest
@@ -38,9 +39,18 @@ def test_tsw_min():
3839
@graph
3940
def g(ts: TS[int]) -> TS[int]:
4041
window = to_window(ts, 3, 3)
41-
return min_(window)
42+
return min_(window, default_value=0)
4243

43-
assert eval_node(g, [1, -2, 3, 4]) == [None, None, -2, -2]
44+
assert eval_node(g, [None, 1, -2, 3, 4]) == [None, None, None, -2, -2]
45+
46+
47+
def test_tsw_min_time_period_with_default():
48+
@graph
49+
def g(ts: TS[int]) -> TS[int]:
50+
window = to_window(ts, MIN_TD * 2)
51+
return min_(window, default_value=99)
52+
53+
assert eval_node(g, [1, 2, 3, 4]) == [99, 99, 1, 2]
4454

4555

4656
def test_tsw_max():
@@ -50,3 +60,12 @@ def g(ts: TS[int]) -> TS[int]:
5060
return max_(window)
5161

5262
assert eval_node(g, [1, -2, 3, 4]) == [None, None, 3, 4]
63+
64+
65+
def test_tsw_max_time_period_with_default():
66+
@graph
67+
def g(ts: TS[int]) -> TS[int]:
68+
window = to_window(ts, MIN_TD * 2)
69+
return max_(window, default_value=99)
70+
71+
assert eval_node(g, [1, 2, 3, 4]) == [99, 99, 3, 4]

0 commit comments

Comments
 (0)