From 062731b6f74fa75a4264cfd13f46fa9c07b1985a Mon Sep 17 00:00:00 2001 From: Renoy John Date: Mon, 24 Mar 2025 16:35:49 -0700 Subject: [PATCH 1/2] Adding support for incremental extract refresh --- pyproject.toml | 2 +- .../extracts/refresh_extracts_command.py | 8 ++--- tests/commands/test_run_commands.py | 29 +++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5cc6d5f7..3bdce842 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ dependencies = [ "types-mock", "types-requests", "types-setuptools", - "tableauserverclient==0.35", + "tableauserverclient==0.37", "urllib3", ] [project.optional-dependencies] diff --git a/tabcmd/commands/extracts/refresh_extracts_command.py b/tabcmd/commands/extracts/refresh_extracts_command.py index 0e4392bb..5d5b82d1 100644 --- a/tabcmd/commands/extracts/refresh_extracts_command.py +++ b/tabcmd/commands/extracts/refresh_extracts_command.py @@ -34,17 +34,17 @@ def run_command(args): if args.addcalculations or args.removecalculations: logger.warning("Add/Remove Calculations tasks are not supported.") - # docs: the REST method always runs a full refresh even if the refresh type is set to incremental. + incremental_refresh = False if args.incremental: # docs: run the incremental refresh - logger.warn("Incremental refresh is not yet available through the new tabcmd") + incremental_refresh = True try: item = Extracts.get_wb_or_ds_for_extracts(args, logger, server) if args.datasource: logger.info(_("refreshextracts.status_refreshed").format(_("content_type.datasource"), args.datasource)) - job: TSC.JobItem = server.datasources.refresh(item.id) + job: TSC.JobItem = server.datasources.refresh(item.id, incremental_refresh) else: - job: TSC.JobItem = server.workbooks.refresh(item.id) + job: TSC.JobItem = server.workbooks.refresh(item.id, incremental_refresh) logger.info(_("refreshextracts.status_refreshed").format(_("content_type.workbook"), args.workbook)) except Exception as e: diff --git a/tests/commands/test_run_commands.py b/tests/commands/test_run_commands.py index c24e3e74..958b0bfa 100644 --- a/tests/commands/test_run_commands.py +++ b/tests/commands/test_run_commands.py @@ -223,6 +223,35 @@ def test_refresh_extract(self, mock_session, mock_server): refresh_extracts_command.RefreshExtracts.run_command(mock_args) mock_session.assert_called() + mock_server.datasources.refresh.assert_called_with(fake_item.id, False) + + def test_run_command_incremental_refresh_datasource(self, mock_session, mock_server): + RunCommandsTest._set_up_session(mock_session, mock_server) + mock_args.incremental = True + mock_args.datasource = fake_item.name + mock_server.datasources = getter + mock_server.projects = getter + mock_args.workbook = None + mock_args.addcalculations = False + mock_args.removecalculations = False + mock_args.synchronous = False + + refresh_extracts_command.RefreshExtracts.run_command(mock_args) + mock_server.datasources.refresh.assert_called_with(fake_item.id, True) + + def test_run_command_incremental_refresh_workbook(self, mock_session, mock_server): + RunCommandsTest._set_up_session(mock_session, mock_server) + mock_args.incremental = True + mock_args.workbook = fake_item.name + mock_server.workbooks = getter + mock_server.projects = getter + mock_args.datasource = None + mock_args.addcalculations = False + mock_args.removecalculations = False + mock_args.synchronous = False + + refresh_extracts_command.RefreshExtracts.run_command(mock_args) + mock_server.workbooks.refresh.assert_called_with(fake_item.id, True) # groups def test_create_group(self, mock_session, mock_server): From 0e226c148c3ec837be69c7a3e8a799b1c8c5bdf1 Mon Sep 17 00:00:00 2001 From: Renoy John Date: Tue, 25 Mar 2025 10:56:12 -0700 Subject: [PATCH 2/2] one liner change --- tabcmd/commands/extracts/refresh_extracts_command.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tabcmd/commands/extracts/refresh_extracts_command.py b/tabcmd/commands/extracts/refresh_extracts_command.py index 5d5b82d1..4286e61f 100644 --- a/tabcmd/commands/extracts/refresh_extracts_command.py +++ b/tabcmd/commands/extracts/refresh_extracts_command.py @@ -34,9 +34,7 @@ def run_command(args): if args.addcalculations or args.removecalculations: logger.warning("Add/Remove Calculations tasks are not supported.") - incremental_refresh = False - if args.incremental: # docs: run the incremental refresh - incremental_refresh = True + incremental_refresh = True if args.incremental else False try: item = Extracts.get_wb_or_ds_for_extracts(args, logger, server)