From 5b1fe19cbd388d3a5f63872b882bdb3614acf353 Mon Sep 17 00:00:00 2001 From: David Silaghi Date: Wed, 5 Aug 2026 12:27:02 +0300 Subject: [PATCH] [MCC-1535269] Python SDK - Remove dataset_batch_number from publish and dry_publish results --- dataconnect/models.py | 5 ----- dataconnect/service/mappers.py | 1 - tests/test_publish.py | 4 ---- tests/test_publish_envelope.py | 32 ++++++++++++++++++++------------ 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/dataconnect/models.py b/dataconnect/models.py index e5f3495..a770277 100644 --- a/dataconnect/models.py +++ b/dataconnect/models.py @@ -73,7 +73,6 @@ class ResultMetadata: dataset_version: int | None = None column_count: int | None = None dataset_uuid: str | None = None - dataset_batch_number: int | None = field(default=None, repr=False) @dataclass(frozen=True) @@ -126,10 +125,6 @@ def dataset_version(self) -> int | None: def dataset_uuid(self) -> str | None: return self.metadata.dataset_uuid - @property - def dataset_batch_number(self) -> int | None: - return self.metadata.dataset_batch_number - @property def no_of_columns(self) -> int | None: return self.metadata.column_count diff --git a/dataconnect/service/mappers.py b/dataconnect/service/mappers.py index fbf727a..bd01e67 100644 --- a/dataconnect/service/mappers.py +++ b/dataconnect/service/mappers.py @@ -121,7 +121,6 @@ def _envelope_to_domain(envelope: PublishEnvelope, result_cls: type[_ResultT]) - dataset_version=envelope.metadata.dataset_version, column_count=envelope.metadata.column_count, dataset_uuid=envelope.metadata.dataset_uuid, - dataset_batch_number=envelope.metadata.dataset_batch_number, ), metrics=ResultMetrics( total_valid_rows=envelope.metrics.total_valid_rows, diff --git a/tests/test_publish.py b/tests/test_publish.py index 3dabcfd..35e531d 100644 --- a/tests/test_publish.py +++ b/tests/test_publish.py @@ -116,10 +116,6 @@ def test_dataset_version_mapped(self) -> None: result = publish_response_to_domain(_make_publish_response(dataset_version=3)) assert result.dataset_version == 3 - def test_dataset_batch_number_mapped(self) -> None: - result = publish_response_to_domain(_make_publish_response(dataset_batch_number=2)) - assert result.dataset_batch_number == 2 - def test_valid_record_count_mapped(self) -> None: result = publish_response_to_domain(_make_publish_response(valid_record_count=50)) assert result.valid_record_count == 50 diff --git a/tests/test_publish_envelope.py b/tests/test_publish_envelope.py index e8aa265..2361ae7 100644 --- a/tests/test_publish_envelope.py +++ b/tests/test_publish_envelope.py @@ -15,6 +15,7 @@ import json from collections.abc import Callable +from dataclasses import asdict from unittest.mock import MagicMock, patch import pandas as pd @@ -142,7 +143,6 @@ def test_publish_flat_accessors(self) -> None: assert result.dataset_name == "PP_0726_1" assert result.dataset_uuid == "6f5a4e1c-0000-4a2b-9d3e-2f1c8b7a6d55" assert result.dataset_version == 1 - assert result.dataset_batch_number == 1 assert result.valid_record_count == 36042 assert result.invalid_record_count == 0 assert result.duplicate_record_count == 0 @@ -202,7 +202,6 @@ def test_publish(self) -> None: assert result.success is True assert result.metadata.dataset_uuid == "6f5a4e1c-0000-4a2b-9d3e-2f1c8b7a6d55" - assert result.metadata.dataset_batch_number == 1 assert result.checks.schema_is_valid is True def test_dry_publish_and_publish_read_the_same_sections(self) -> None: @@ -272,7 +271,7 @@ def test_none_transport_response_maps_to_failure(self) -> None: assert publish_response_to_domain(None).success is False -class TestBatchNumberIsHiddenFromOutput: +class TestBatchNumberRemovedFromResult: @pytest.mark.parametrize( ("envelope", "over_wire"), [ @@ -282,22 +281,31 @@ class TestBatchNumberIsHiddenFromOutput: ], ids=["dry_publish_failure", "dry_publish_success", "publish"], ) - def test_batch_number_absent_from_printed_output( + def test_batch_number_absent_from_serialised_result( self, envelope: dict, over_wire: Callable[[dict], DryPublishResult | PublishResult] ) -> None: result = over_wire(envelope) + # asdict is how QA evidences the result; repr=False does not affect it. + serialised = asdict(result) + + assert "dataset_batch_number" not in serialised["metadata"] + assert "dataset_batch_number" not in serialised + assert "dataset_batch_number" not in json.dumps(serialised, default=str) assert "dataset_batch_number" not in repr(result) - assert "dataset_batch_number" not in repr(result.metadata) - def test_publish_batch_number_is_still_readable(self) -> None: + def test_batch_number_attribute_is_gone(self) -> None: result = _publish_over_wire(PUBLISH_ENVELOPE) - assert result.metadata.dataset_batch_number == 1 - assert result.dataset_batch_number == 1 + assert not hasattr(result, "dataset_batch_number") + assert not hasattr(result.metadata, "dataset_batch_number") - def test_other_metadata_still_printed(self) -> None: - printed = repr(_publish_over_wire(PUBLISH_ENVELOPE).metadata) + def test_other_metadata_survives(self) -> None: + serialised = asdict(_publish_over_wire(PUBLISH_ENVELOPE))["metadata"] - for field_name in ("dataset_name", "dataset_version", "column_count", "dataset_uuid"): - assert field_name in printed + assert serialised == { + "dataset_name": "PP_0726_1", + "dataset_version": 1, + "column_count": 13, + "dataset_uuid": "6f5a4e1c-0000-4a2b-9d3e-2f1c8b7a6d55", + }