diff --git a/py/server/deephaven/table.py b/py/server/deephaven/table.py index abb22e1031c..a5b2c8bbced 100644 --- a/py/server/deephaven/table.py +++ b/py/server/deephaven/table.py @@ -816,6 +816,16 @@ def flatten(self) -> Table: """Returns a new version of this table with a flat row set, i.e. from 0 to number of rows - 1.""" return Table(j_table=self.j_table.flatten()) + def remove_blink(self) -> Table: + """Returns a new version of this table without specialized blink table aggregation semantics.""" + if self.is_blink: + try: + return Table(j_table=self.j_table.removeBlink()) + except Exception as e: + raise DHError(e, "failed to remove blink table semantics.") from e + else: + raise RuntimeError("Table is not a blink table, so blink table semantics cannot be removed.") + def snapshot(self) -> Table: """Returns a static snapshot table. diff --git a/py/server/tests/test_table.py b/py/server/tests/test_table.py index 06e0ab2355a..91d3dbd0c3a 100644 --- a/py/server/tests/test_table.py +++ b/py/server/tests/test_table.py @@ -930,6 +930,12 @@ def test_attributes(self): self.assertEqual(len(attrs), len(rt_attrs) + 1) self.assertIn("BlinkTable", set(attrs.keys()) - set(rt_attrs.keys())) + def test_remove_blink(self): + t_blink = time_table("PT1s", blink_table=True).update("X = ii") + t_no_blink = t_blink.remove_blink() + self.assertEqual(t_blink.is_blink, True) + self.assertEqual(t_no_blink.is_blink, False) + def test_grouped_column_as_arg(self): t1 = empty_table(100).update( ["id = i % 10", "Person = random() > 0.5 ? true : random() > 0.5 ? false : true"]).sort(