chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
"""Integration tests for comparison expression operations.
|
||||
|
||||
These tests require Ray and test end-to-end comparison expression evaluation.
|
||||
"""
|
||||
|
||||
import pandas as pd
|
||||
import pytest
|
||||
from packaging.version import parse as parse_version
|
||||
|
||||
import ray
|
||||
from ray.data._internal.utils.arrow_utils import get_pyarrow_version
|
||||
from ray.data.expressions import col
|
||||
from ray.data.tests.conftest import * # noqa
|
||||
from ray.tests.conftest import * # noqa
|
||||
|
||||
pytestmark = pytest.mark.skipif(
|
||||
get_pyarrow_version() < parse_version("20.0.0"),
|
||||
reason="Expression integration tests require PyArrow >= 20.0.0",
|
||||
)
|
||||
|
||||
|
||||
class TestComparisonIntegration:
|
||||
"""Integration tests for comparison expressions with Ray Dataset."""
|
||||
|
||||
def test_comparison_with_dataset(self, ray_start_regular_shared):
|
||||
"""Test comparison expressions work correctly with Ray Dataset."""
|
||||
ds = ray.data.from_items(
|
||||
[
|
||||
{"age": 17, "name": "Alice"},
|
||||
{"age": 21, "name": "Bob"},
|
||||
{"age": 25, "name": "Charlie"},
|
||||
{"age": 18, "name": "Diana"},
|
||||
]
|
||||
)
|
||||
|
||||
result = ds.with_column("is_adult", col("age") >= 18).to_pandas()
|
||||
expected = pd.DataFrame(
|
||||
{
|
||||
"age": [17, 21, 25, 18],
|
||||
"name": ["Alice", "Bob", "Charlie", "Diana"],
|
||||
"is_adult": [False, True, True, True],
|
||||
}
|
||||
)
|
||||
pd.testing.assert_frame_equal(result, expected, check_dtype=False)
|
||||
|
||||
def test_multiple_comparisons_with_dataset(self, ray_start_regular_shared):
|
||||
"""Test multiple comparison expressions with Ray Dataset."""
|
||||
ds = ray.data.from_items(
|
||||
[
|
||||
{"score": 45, "passing": 50},
|
||||
{"score": 75, "passing": 50},
|
||||
{"score": 50, "passing": 50},
|
||||
]
|
||||
)
|
||||
|
||||
result = (
|
||||
ds.with_column("passed", col("score") >= col("passing"))
|
||||
.with_column("failed", col("score") < col("passing"))
|
||||
.with_column("borderline", col("score") == col("passing"))
|
||||
.to_pandas()
|
||||
)
|
||||
|
||||
expected = pd.DataFrame(
|
||||
{
|
||||
"score": [45, 75, 50],
|
||||
"passing": [50, 50, 50],
|
||||
"passed": [False, True, True],
|
||||
"failed": [True, False, False],
|
||||
"borderline": [False, False, True],
|
||||
}
|
||||
)
|
||||
pd.testing.assert_frame_equal(result, expected, check_dtype=False)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
sys.exit(pytest.main(["-v", __file__]))
|
||||
Reference in New Issue
Block a user