Skip to content

Commit 9773cc8

Browse files
bgeng777dianfu
authored andcommitted
[hotfix][python] Fix wrong implementation in of __le__ in MemorySize and TimeWindow
This closes #27240.
1 parent dae2cfe commit 9773cc8

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

flink-python/pyflink/datastream/slot_sharing_group.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def __lt__(self, other: 'MemorySize'):
9999
return self._j_memory_size.compareTo(other._j_memory_size) == -1
100100

101101
def __le__(self, other: 'MemorySize'):
102-
return self.__eq__(other) and self.__lt__(other)
102+
return self.__eq__(other) or self.__lt__(other)
103103

104104
def __str__(self):
105105
return self._j_memory_size.toString()

flink-python/pyflink/datastream/tests/test_slot_sharing_group.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,18 @@ def test_build_slot_sharing_group_without_all_required_config(self):
6464
.set_cpu_cores(1.0) \
6565
.set_task_off_heap_memory_mb(10) \
6666
.build()
67+
68+
69+
class MemorySizeTests(PyFlinkTestCase):
70+
71+
def test_le_method(self):
72+
"""Test the __le__ method of MemorySize."""
73+
m1 = MemorySize.of_mebi_bytes(100)
74+
m2 = MemorySize.of_mebi_bytes(100)
75+
m3 = MemorySize.of_mebi_bytes(200)
76+
self.assertEqual(m1, m2)
77+
self.assertTrue(m1 <= m2)
78+
self.assertTrue(m2 <= m1)
79+
80+
self.assertTrue(m1 <= m3)
81+
self.assertFalse(m3 <= m1)

flink-python/pyflink/datastream/tests/test_window.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from pyflink.datastream.tests.test_util import DataStreamTestSinkFunction, \
3434
SecondColumnTimestampAssigner
3535
from pyflink.java_gateway import get_gateway
36-
from pyflink.testing.test_case_utils import PyFlinkStreamingTestCase
36+
from pyflink.testing.test_case_utils import PyFlinkStreamingTestCase, PyFlinkTestCase
3737
from pyflink.util.java_utils import get_j_env_configuration
3838

3939

@@ -668,3 +668,27 @@ def process(self,
668668
context: 'ProcessAllWindowFunction.Context',
669669
elements: Iterable[tuple]) -> Iterable[tuple]:
670670
return [(context.window().start, context.window().end, len([e for e in elements]))]
671+
672+
673+
class TestTimeWindow(PyFlinkTestCase):
674+
675+
def test_le_method(self):
676+
"""Test the __le__ method of TimeWindow."""
677+
# Create test windows
678+
w1 = TimeWindow(100, 200)
679+
w2 = TimeWindow(100, 200)
680+
w3 = TimeWindow(150, 250)
681+
w4 = TimeWindow(50, 150)
682+
w5 = TimeWindow(100, 180)
683+
684+
self.assertTrue(w1 <= w2)
685+
self.assertTrue(w2 <= w1)
686+
687+
self.assertTrue(w1 <= w3)
688+
self.assertFalse(w3 <= w1)
689+
690+
self.assertTrue(w4 <= w1)
691+
self.assertFalse(w1 < w4)
692+
693+
self.assertTrue(w5 <= w1)
694+
self.assertFalse(w1 <= w5)

flink-python/pyflink/datastream/window.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def __lt__(self, other: 'TimeWindow'):
171171
return self.start == other.start and self.end < other.end or self.start < other.start
172172

173173
def __le__(self, other: 'TimeWindow'):
174-
return self.__eq__(other) and self.__lt__(other)
174+
return self.__eq__(other) or self.__lt__(other)
175175

176176
def __repr__(self):
177177
return "TimeWindow(start={}, end={})".format(self.start, self.end)

0 commit comments

Comments
 (0)