diff --git a/kedro-datasets/RELEASE.md b/kedro-datasets/RELEASE.md index a4931c1fa..484a217a7 100755 --- a/kedro-datasets/RELEASE.md +++ b/kedro-datasets/RELEASE.md @@ -1,5 +1,7 @@ # Upcoming Release ## Major features and improvements +* Improved PartitionedDataset representation when printing. + ## Bug fixes and other changes ## Breaking Changes ## Community contributions diff --git a/kedro-datasets/kedro_datasets/partitions/partitioned_dataset.py b/kedro-datasets/kedro_datasets/partitions/partitioned_dataset.py index 818ee97b8..f2ed55b73 100644 --- a/kedro-datasets/kedro_datasets/partitions/partitioned_dataset.py +++ b/kedro-datasets/kedro_datasets/partitions/partitioned_dataset.py @@ -327,6 +327,22 @@ def _describe(self) -> dict[str, Any]: "dataset_config": clean_dataset_config, } + def __repr__(self) -> str: + object_description = self._describe() + + # Dummy object to call _pretty_repr + # Only clean_dataset_config parameters are exposed + kwargs = deepcopy(self._dataset_config) + kwargs[self._filepath_arg] = "" + dataset = self._dataset_type(**kwargs) # type: ignore + + object_description_repr = { + "filepath": object_description["path"], + "dataset": dataset._pretty_repr(object_description["dataset_config"]), + } + + return self._pretty_repr(object_description_repr) + def _invalidate_caches(self) -> None: self._partition_cache.clear() self._filesystem.invalidate_cache(self._normalized_path) diff --git a/kedro-datasets/tests/partitions/test_partitioned_dataset.py b/kedro-datasets/tests/partitions/test_partitioned_dataset.py index 4dc70881a..2d16665cb 100644 --- a/kedro-datasets/tests/partitions/test_partitioned_dataset.py +++ b/kedro-datasets/tests/partitions/test_partitioned_dataset.py @@ -57,6 +57,15 @@ class FakeDataset: # pylint: disable=too-few-public-methods class TestPartitionedDatasetLocal: + @pytest.mark.parametrize("dataset", ["pandas.ParquetDataset", ParquetDataset]) + def test_repr(self, dataset): + pds = PartitionedDataset(path="", dataset=dataset) + assert ( + repr(pds) + == """kedro_datasets.partitions.partitioned_dataset.PartitionedDataset(filepath='', """ + """dataset='kedro_datasets.pandas.parquet_dataset.ParquetDataset()')""" + ) + @pytest.mark.parametrize("dataset", LOCAL_DATASET_DEFINITION) @pytest.mark.parametrize( "suffix,expected_num_parts", [("", 5), (".csv", 3), ("p4", 1)] diff --git a/kedro-telemetry/kedro_telemetry/plugin.py b/kedro-telemetry/kedro_telemetry/plugin.py index 5a87f001a..95328d7b2 100644 --- a/kedro-telemetry/kedro_telemetry/plugin.py +++ b/kedro-telemetry/kedro_telemetry/plugin.py @@ -172,7 +172,6 @@ def before_command_run( self._consent = _check_for_telemetry_consent(project_path) if not self._consent: - self._opt_out_notification() return # get KedroCLI and its structure from actual project root @@ -205,8 +204,6 @@ def after_context_created(self, context): if self._consent is None: self._consent = _check_for_telemetry_consent(context.project_path) - if not self._consent: - self._opt_out_notification() self._project_path = context.project_path @hook_impl @@ -231,12 +228,6 @@ def after_catalog_created(self, catalog): self._send_telemetry_heap_event("Kedro Project Statistics") - def _opt_out_notification(self): - logger.info( - "Kedro-Telemetry is installed, but you have opted out of " - "sharing usage analytics so none will be collected.", - ) - def _send_telemetry_heap_event(self, event_name: str): """Hook implementation to send command run data to Heap""" diff --git a/kedro-telemetry/tests/test_plugin.py b/kedro-telemetry/tests/test_plugin.py index 9c2ba65fd..c100dd9e1 100644 --- a/kedro-telemetry/tests/test_plugin.py +++ b/kedro-telemetry/tests/test_plugin.py @@ -178,11 +178,6 @@ def test_before_command_run(self, mocker, fake_metadata, caplog): in record.message for record in caplog.records ) - assert not any( - "Kedro-Telemetry is installed, but you have opted out of " - "sharing usage analytics so none will be collected." in record.message - for record in caplog.records - ) def test_before_command_run_with_tools(self, mocker, fake_metadata): mocker.patch( @@ -302,11 +297,6 @@ def test_before_command_run_no_consent_given(self, mocker, fake_metadata, caplog in record.message for record in caplog.records ) - assert any( - "Kedro-Telemetry is installed, but you have opted out of " - "sharing usage analytics so none will be collected." in record.message - for record in caplog.records - ) def test_before_command_run_connection_error(self, mocker, fake_metadata, caplog): mocker.patch(