Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions src/snowflake/snowpark/dataframe_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -833,12 +833,19 @@ def table(
start_snapshot_id=start_snapshot_id,
end_snapshot_id=end_snapshot_id,
)
elif (
time_travel_mode is not None
or version is not None
or version_tag is not None
or version_ref is not None
or branch is not None
elif any(
value is not None
for value in (
time_travel_mode,
statement,
offset,
timestamp,
stream,
version,
version_tag,
version_ref,
branch,
)
):
# If version / named-ref params are provided without mode,
# default to 'at'.
Expand Down
37 changes: 37 additions & 0 deletions tests/unit/test_dataframe.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,43 @@ def test_dataframe_method_alias():
)


@pytest.mark.parametrize(
("parameter", "value"),
[
("statement", "query-id"),
("offset", -60),
("timestamp", "2026-01-01 00:00:00"),
("stream", "my_stream"),
],
)
def test_dataframe_reader_direct_time_travel_parameter_requires_mode(
mock_server_connection, parameter, value
):
session = Session(mock_server_connection)

with pytest.raises(ValueError, match="Must specify time travel mode"):
session.read.table("my_table", _emit_ast=False, **{parameter: value})


@pytest.mark.parametrize(
("parameter", "value"),
[
("statement", "query-id"),
("offset", -60),
("timestamp", "2026-01-01 00:00:00"),
("stream", "my_stream"),
],
)
def test_dataframe_reader_direct_time_travel_parameter_overrides_options(
mock_server_connection, parameter, value
):
session = Session(mock_server_connection)
reader = session.read.option("time_travel_mode", "at").option("offset", -3600)

with pytest.raises(ValueError, match="Must specify time travel mode"):
reader.table("my_table", _emit_ast=False, **{parameter: value})


@pytest.mark.parametrize(
"format_type",
[
Expand Down
Loading