diff --git a/dataconnect/service/default.py b/dataconnect/service/default.py index d309fda..b2c6fff 100644 --- a/dataconnect/service/default.py +++ b/dataconnect/service/default.py @@ -6,7 +6,6 @@ import pandas as pd -from dataconnect.exceptions import ErrorDetail from dataconnect.models import Dataset, DatasetVersion, PaginatedResponse, Pagination, StudiesResult from dataconnect.service.base import DataConnectService from dataconnect.service.error_handler import translate_error @@ -16,7 +15,6 @@ resource_to_fetched_data, resource_to_study, ) -from dataconnect.service.validators import validate_positive_int, validate_uuid from dataconnect.transport.base import Transport from dataconnect.transport.errors import TransportError from dataconnect.transport.models import DatasetTicket, ResourceQuery @@ -89,37 +87,6 @@ def get_dataset_versions(self, dataset_uuid: UUID) -> list[DatasetVersion]: def fetch_data(self, dataset_uuid: UUID, first_n_rows: int | None = None) -> pd.DataFrame: """Fetch data for a dataset""" - validate_uuid( - dataset_uuid, - field_name="dataset_uuid", - error_code="VAL_C_DATASET_UUID", - message="Invalid dataset_uuid.", - details=[ - ErrorDetail( - field="dataset_uuid", - message="dataset_uuid must be a valid UUID.", - expected="Review and provide the correct dataset_uuid.", - ) - ], - ) - - if first_n_rows is not None: - validate_positive_int( - first_n_rows, - field_name="first_n_rows", - error_code="VAL_C_FIRST_N_ROWS", - message="Invalid first_n_rows.", - details=[ - ErrorDetail( - field="first_n_rows", - message=(f"Received {first_n_rows} for first_n_rows, which is not a positive integer."), - expected=( - "Set first_n_rows to 1 or greater, or omit the parameter to retrieve the full dataset" - ), - ) - ], - ) - ticket = DatasetTicket( dataset_uuid=str(dataset_uuid), limit=first_n_rows, diff --git a/tests/test_fetch_data.py b/tests/test_fetch_data.py index 0f5396e..776c7d0 100644 --- a/tests/test_fetch_data.py +++ b/tests/test_fetch_data.py @@ -13,7 +13,6 @@ AuthorizationError, NotFoundError, ServerError, - ValidationError, ) from dataconnect.service.default import DefaultDataConnectService from dataconnect.transport.errors import ( @@ -120,86 +119,6 @@ def test_fetch_data_returns_empty_dataframe_for_empty_table() -> None: assert "col" in result.columns -# --------------------------------------------------------------------------- -# Validation — dataset_uuid -# --------------------------------------------------------------------------- - - -def test_fetch_data_raises_validation_error_on_none_uuid() -> None: - transport = _FakeTransport(data_table=_make_ipc_table({"x": [1]})) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError) as exc_info: - service.fetch_data(None) # type: ignore[arg-type] - - assert exc_info.value.error_code == "VAL_C_DATASET_UUID" - - -def test_fetch_data_raises_validation_error_on_zero_uuid() -> None: - transport = _FakeTransport(data_table=_make_ipc_table({"x": [1]})) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError) as exc_info: - service.fetch_data(UUID(int=0)) - - assert exc_info.value.error_code == "VAL_C_DATASET_UUID" - - -def test_fetch_data_raises_validation_error_on_string_uuid() -> None: - transport = _FakeTransport(data_table=_make_ipc_table({"x": [1]})) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError) as exc_info: - service.fetch_data("073410b6-79be-3e7d-ae37-92f6e054013e") # type: ignore[arg-type] - - assert exc_info.value.error_code == "VAL_C_DATASET_UUID" - - -# --------------------------------------------------------------------------- -# Validation — first_n_rows -# --------------------------------------------------------------------------- - - -def test_fetch_data_raises_validation_error_on_zero_first_n_rows() -> None: - dataset_uuid = UUID("073410b6-79be-3e7d-ae37-92f6e054013e") - transport = _FakeTransport(data_table=_make_ipc_table({"x": [1]})) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError) as exc_info: - service.fetch_data(dataset_uuid, first_n_rows=0) - - assert exc_info.value.error_code == "VAL_C_FIRST_N_ROWS" - assert exc_info.value.details is not None - assert exc_info.value.details[0].field == "first_n_rows" - - -def test_fetch_data_raises_validation_error_on_negative_first_n_rows() -> None: - dataset_uuid = UUID("073410b6-79be-3e7d-ae37-92f6e054013e") - transport = _FakeTransport(data_table=_make_ipc_table({"x": [1]})) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError) as exc_info: - service.fetch_data(dataset_uuid, first_n_rows=-5) - - assert exc_info.value.error_code == "VAL_C_FIRST_N_ROWS" - - -def test_fetch_data_raises_validation_error_on_non_int_first_n_rows() -> None: - dataset_uuid = UUID("073410b6-79be-3e7d-ae37-92f6e054013e") - transport = _FakeTransport(data_table=_make_ipc_table({"x": [1]})) - service = DefaultDataConnectService(transport) - - with pytest.raises(ValidationError) as exc_info: - service.fetch_data(dataset_uuid, first_n_rows="abc") # type: ignore[arg-type] - - assert exc_info.value.error_code == "VAL_C_FIRST_N_ROWS" - - -# --------------------------------------------------------------------------- -# Transport-error translation -# --------------------------------------------------------------------------- - - def test_fetch_data_translates_authentication_error() -> None: dataset_uuid = UUID("073410b6-79be-3e7d-ae37-92f6e054013e") transport = _FakeTransport(