tableauserverclient 0.33__tar.gz → 0.35__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tableauserverclient-0.33 → tableauserverclient-0.35}/PKG-INFO +7 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/pyproject.toml +20 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/add_default_permission.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_extract_task.py +12 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_group.py +6 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_project.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_schedules.py +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_datasource.py +11 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_favorites.py +7 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_site.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_webhooks.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_workbook.py +14 -19
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/export.py +16 -7
- tableauserverclient-0.35/samples/extracts.py +91 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/filter_sort_groups.py +25 -19
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/filter_sort_projects.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/getting_started/1_hello_server.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/getting_started/2_hello_site.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/getting_started/3_hello_universe.py +11 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/initialize_server.py +5 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/list.py +4 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/login.py +14 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/move_workbook_sites.py +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/pagination_sample.py +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/publish_datasource.py +16 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/publish_workbook.py +34 -10
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/query_permissions.py +3 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/refresh.py +25 -8
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/refresh_tasks.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/set_refresh_schedule.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/update_connection.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/update_workbook_data_freshness_policy.py +1 -1
- tableauserverclient-0.35/setup.cfg +4 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/setup.py +0 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/__init__.py +33 -23
- {tableauserverclient-0.33/tableauserverclient → tableauserverclient-0.35/tableauserverclient/bin}/_version.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/config.py +5 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/column_item.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/connection_credentials.py +18 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/connection_item.py +44 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/custom_view_item.py +78 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/data_acceleration_report_item.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/data_alert_item.py +5 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/data_freshness_policy_item.py +6 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/database_item.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/datasource_item.py +10 -10
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/dqw_item.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/favorites_item.py +5 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/fileupload_item.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/flow_item.py +54 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/flow_run_item.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/group_item.py +44 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/groupset_item.py +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/interval_item.py +9 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/job_item.py +73 -8
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/linked_tasks_item.py +5 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/metric_item.py +5 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/pagination_item.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/permissions_item.py +12 -10
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/project_item.py +73 -19
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/property_decorators.py +12 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/reference_item.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/revision_item.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/schedule_item.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/server_info_item.py +26 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/site_item.py +69 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/subscription_item.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/table_item.py +1 -1
- tableauserverclient-0.35/tableauserverclient/models/tableau_auth.py +216 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/tableau_types.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/tag_item.py +3 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/task_item.py +34 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/user_item.py +47 -17
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/view_item.py +66 -13
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/virtual_connection_item.py +6 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/webhook_item.py +39 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/workbook_item.py +116 -13
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/namespace.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/__init__.py +2 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/auth_endpoint.py +69 -10
- tableauserverclient-0.35/tableauserverclient/server/endpoint/custom_views_endpoint.py +394 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/data_alert_endpoint.py +14 -14
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/databases_endpoint.py +13 -12
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/datasources_endpoint.py +61 -62
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +19 -18
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/dqw_endpoint.py +9 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/endpoint.py +19 -21
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/exceptions.py +23 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/favorites_endpoint.py +31 -31
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +9 -11
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +15 -13
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/flow_task_endpoint.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/flows_endpoint.py +344 -29
- tableauserverclient-0.35/tableauserverclient/server/endpoint/groups_endpoint.py +520 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/groupsets_endpoint.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/jobs_endpoint.py +116 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/linked_tasks_endpoint.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/metadata_endpoint.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/metrics_endpoint.py +10 -10
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/permissions_endpoint.py +13 -15
- tableauserverclient-0.35/tableauserverclient/server/endpoint/projects_endpoint.py +850 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/resource_tagger.py +14 -13
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/schedules_endpoint.py +17 -18
- tableauserverclient-0.35/tableauserverclient/server/endpoint/server_info_endpoint.py +82 -0
- tableauserverclient-0.35/tableauserverclient/server/endpoint/sites_endpoint.py +420 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +10 -10
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/tables_endpoint.py +15 -14
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/tasks_endpoint.py +86 -8
- tableauserverclient-0.35/tableauserverclient/server/endpoint/users_endpoint.py +554 -0
- tableauserverclient-0.35/tableauserverclient/server/endpoint/views_endpoint.py +502 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/virtual_connections_endpoint.py +6 -5
- tableauserverclient-0.35/tableauserverclient/server/endpoint/webhooks_endpoint.py +147 -0
- tableauserverclient-0.35/tableauserverclient/server/endpoint/workbooks_endpoint.py +1169 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/filter.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/pager.py +29 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/query.py +68 -19
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/request_factory.py +57 -37
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/request_options.py +243 -141
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/server.py +76 -10
- tableauserverclient-0.35/tableauserverclient/server/sort.py +21 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/PKG-INFO +7 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/SOURCES.txt +3 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/requires.txt +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/_utils.py +14 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get.xml +1 -2
- tableauserverclient-0.35/test/assets/project_populate_virtualconnection_default_permissions.xml +19 -0
- tableauserverclient-0.35/test/assets/project_update_virtualconnection_default_permissions.xml +17 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_auth.py +8 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_custom_view.py +72 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_dataalert.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_datasource.py +10 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_endpoint.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_favorites.py +9 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_filesys_helpers.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_fileuploads.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_flowruns.py +17 -6
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_flowtask.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_group.py +0 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_job.py +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_pager.py +12 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_project.py +125 -18
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_regression_tests.py +1 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_request_option.py +17 -7
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_schedule.py +9 -9
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_server_info.py +10 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_site_model.py +0 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_tagging.py +2 -2
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_task.py +4 -4
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_user.py +2 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_user_model.py +4 -5
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_view.py +3 -3
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_view_acceleration.py +1 -1
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_workbook.py +45 -6
- tableauserverclient-0.33/samples/extracts.py +0 -69
- tableauserverclient-0.33/samples/update_workbook_data_acceleration.py +0 -109
- tableauserverclient-0.33/setup.cfg +0 -11
- tableauserverclient-0.33/tableauserverclient/models/tableau_auth.py +0 -106
- tableauserverclient-0.33/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -165
- tableauserverclient-0.33/tableauserverclient/server/endpoint/groups_endpoint.py +0 -205
- tableauserverclient-0.33/tableauserverclient/server/endpoint/projects_endpoint.py +0 -199
- tableauserverclient-0.33/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -47
- tableauserverclient-0.33/tableauserverclient/server/endpoint/sites_endpoint.py +0 -155
- tableauserverclient-0.33/tableauserverclient/server/endpoint/users_endpoint.py +0 -207
- tableauserverclient-0.33/tableauserverclient/server/endpoint/views_endpoint.py +0 -260
- tableauserverclient-0.33/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -70
- tableauserverclient-0.33/tableauserverclient/server/endpoint/workbooks_endpoint.py +0 -581
- tableauserverclient-0.33/tableauserverclient/server/sort.py +0 -7
- tableauserverclient-0.33/versioneer.py +0 -1846
- {tableauserverclient-0.33 → tableauserverclient-0.35}/CHANGELOG.md +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/CONTRIBUTORS.md +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/LICENSE +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/MANIFEST.in +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/README.md +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/contributing.md +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/docs/README.md +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/kill_all_jobs.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/metadata_query.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/move_workbook_projects.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/name.txt +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/smoke_test.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/update_datasource_data.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/datetime_helpers.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/exponential_backoff.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/filesys_helpers.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/__init__.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/headers.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/logging.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/strings.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/__init__.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/exceptions.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/target.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/__init__.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/exceptions.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/dependency_links.txt +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/top_level.txt +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/__init__.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Data/user_details.csv +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Data/usernames.csv +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/RESTAPISample Image.png +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Sample View Image.png +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/World Indicators.hyper +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/auth_sign_in.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/auth_sign_in_error.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/auth_sign_in_impersonate.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_download.json +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_get_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_acceleration_report.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_add_user.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/database_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/database_populate_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/database_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_add_tags.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_connection_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_data_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_get_empty.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_populate_connections.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_populate_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_publish.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_publish_async.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_refresh.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_revision.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/dqw_by_content_type.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_datasource.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_project.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_view.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_workbook.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/fileupload_append.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/fileupload_initialize.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_populate_connections.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_populate_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_publish.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_refresh.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_add_user.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_add_users.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_create.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_create_ad.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_create_async.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_populate_users.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_populate_users_empty.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_update_async.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_users_added.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_create.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/linked_tasks_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/linked_tasks_run_now.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_paged_1.json +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_paged_2.json +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_paged_3.json +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_query_error.json +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_query_expected_dict.dict +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_query_success.json +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metrics_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metrics_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metrics_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/odata_connection.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/populate_csv.csv +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/populate_pdf.pdf +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_content_permission.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_create.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_populate_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_update_datasource_default_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/queryset_slicing_page_1.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/queryset_slicing_page_2.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_filter_equals.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_filter_name_in.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_filter_tags_in.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_page_number.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_page_size.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_pagination.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_slicing_queryset.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_datasource.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_flow.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_workbook.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_daily.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_hourly.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_monthly.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_weekly.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_daily_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_empty.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_hourly_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_monthly_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_monthly_id_2.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_25.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_404.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_auth_info.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_create.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_get_by_name.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/subscription_create.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/subscription_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/subscription_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/table_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/table_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_create_extract_task.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_create_flow_task.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_run_now_response.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_datasource.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_interval.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_workbook.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_without_schedule.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_add.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_add_favorite.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_get_empty.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_populate_groups.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_populate_workbooks.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_add_tags.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get_id_usage.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get_usage.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_populate_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_update_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connection_add_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connection_database_connection_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connection_populate_connections.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_download.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_publish.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_revisions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/webhook_create.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/webhook_create_request.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/webhook_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_add_tags.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_by_id.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_by_id_personal.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_empty.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_invalid_date.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_page_1.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_page_2.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_page_3.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_connections.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_views.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_views_usage.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_publish.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_publish_async.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_refresh.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_revision.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_acceleration_status.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_permissions.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/http/test_http_requests.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/models/_models.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/models/test_repr.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/request_factory/__init__.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/request_factory/test_datasource_requests.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/request_factory/test_workbook_requests.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_connection_.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_data_acceleration_report.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_data_freshness_policy.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_database.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_datasource_model.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_dqw.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_exponential_backoff.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_filter.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_flow.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_group_model.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_groupsets.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_linked_tasks.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_metadata.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_metrics.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_permissionsrule.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_project_model.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_requests.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_site.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_sort.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_subscription.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_table.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_tableauauth_model.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_virtual_connection.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_webhook.py +0 -0
- {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_workbook_model.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tableauserverclient
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.35
|
|
4
4
|
Summary: A Python module for working with the Tableau Server REST API.
|
|
5
5
|
Author-email: Tableau <github@tableau.com>
|
|
6
6
|
License: The MIT License (MIT)
|
|
@@ -28,22 +28,22 @@ License: The MIT License (MIT)
|
|
|
28
28
|
Project-URL: repository, https://github.com/tableau/server-client-python
|
|
29
29
|
Classifier: Programming Language :: Python
|
|
30
30
|
Classifier: Programming Language :: Python :: 3
|
|
31
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
32
31
|
Classifier: Programming Language :: Python :: 3.9
|
|
33
32
|
Classifier: Programming Language :: Python :: 3.10
|
|
34
33
|
Classifier: Programming Language :: Python :: 3.11
|
|
35
34
|
Classifier: Programming Language :: Python :: 3.12
|
|
36
|
-
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
36
|
+
Requires-Python: >=3.9
|
|
37
37
|
Description-Content-Type: text/markdown
|
|
38
38
|
License-File: LICENSE
|
|
39
39
|
License-File: LICENSE.versioneer
|
|
40
40
|
Requires-Dist: defusedxml>=0.7.1
|
|
41
41
|
Requires-Dist: packaging>=23.1
|
|
42
|
-
Requires-Dist: requests>=2.
|
|
43
|
-
Requires-Dist: urllib3
|
|
44
|
-
Requires-Dist: typing_extensions>=4.0
|
|
42
|
+
Requires-Dist: requests>=2.32
|
|
43
|
+
Requires-Dist: urllib3<3,>=2.2.2
|
|
44
|
+
Requires-Dist: typing_extensions>=4.0
|
|
45
45
|
Provides-Extra: test
|
|
46
|
-
Requires-Dist: black==
|
|
46
|
+
Requires-Dist: black==24.8; extra == "test"
|
|
47
47
|
Requires-Dist: build; extra == "test"
|
|
48
48
|
Requires-Dist: mypy==1.4; extra == "test"
|
|
49
49
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=
|
|
2
|
+
requires = ["setuptools>=75.0", "versioneer[toml]==0.29", "wheel"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
@@ -14,43 +14,52 @@ readme = "README.md"
|
|
|
14
14
|
dependencies = [
|
|
15
15
|
'defusedxml>=0.7.1', # latest as at 7/31/23
|
|
16
16
|
'packaging>=23.1', # latest as at 7/31/23
|
|
17
|
-
'requests>=2.
|
|
18
|
-
'urllib3
|
|
19
|
-
'typing_extensions>=4.0
|
|
17
|
+
'requests>=2.32', # latest as at 7/31/23
|
|
18
|
+
'urllib3>=2.2.2,<3',
|
|
19
|
+
'typing_extensions>=4.0',
|
|
20
20
|
]
|
|
21
|
-
requires-python = ">=3.
|
|
21
|
+
requires-python = ">=3.9"
|
|
22
22
|
classifiers = [
|
|
23
23
|
"Programming Language :: Python",
|
|
24
24
|
"Programming Language :: Python :: 3",
|
|
25
|
-
"Programming Language :: Python :: 3.8",
|
|
26
25
|
"Programming Language :: Python :: 3.9",
|
|
27
26
|
"Programming Language :: Python :: 3.10",
|
|
28
27
|
"Programming Language :: Python :: 3.11",
|
|
29
|
-
"Programming Language :: Python :: 3.12"
|
|
28
|
+
"Programming Language :: Python :: 3.12",
|
|
29
|
+
"Programming Language :: Python :: 3.13"
|
|
30
30
|
]
|
|
31
31
|
[project.urls]
|
|
32
32
|
repository = "https://github.com/tableau/server-client-python"
|
|
33
33
|
|
|
34
34
|
[project.optional-dependencies]
|
|
35
|
-
test = ["black==
|
|
35
|
+
test = ["black==24.8", "build", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
|
|
36
36
|
"requests-mock>=1.0,<2.0"]
|
|
37
37
|
|
|
38
38
|
[tool.black]
|
|
39
39
|
line-length = 120
|
|
40
|
-
target-version = ['
|
|
40
|
+
target-version = ['py39', 'py310', 'py311', 'py312', 'py313']
|
|
41
|
+
force-exclude = "tableauserverclient/bin/*"
|
|
41
42
|
|
|
42
43
|
[tool.mypy]
|
|
43
44
|
check_untyped_defs = false
|
|
44
45
|
disable_error_code = [
|
|
45
46
|
'misc',
|
|
46
|
-
# tableauserverclient\server\endpoint\datasources_endpoint.py:48: error: Cannot assign multiple types to name "FilePath" without an explicit "Type[...]" annotation [misc]
|
|
47
47
|
'annotation-unchecked' # can be removed when check_untyped_defs = true
|
|
48
48
|
]
|
|
49
|
-
files = ["tableauserverclient", "test"]
|
|
49
|
+
files = ["tableauserverclient", "test", "samples"]
|
|
50
50
|
show_error_codes = true
|
|
51
51
|
ignore_missing_imports = true # defusedxml library has no types
|
|
52
52
|
no_implicit_reexport = true
|
|
53
|
+
implicit_optional = true
|
|
54
|
+
exclude = ['/bin/']
|
|
53
55
|
|
|
54
56
|
[tool.pytest.ini_options]
|
|
55
57
|
testpaths = ["test"]
|
|
56
58
|
addopts = "--junitxml=./test.junit.xml"
|
|
59
|
+
|
|
60
|
+
[tool.versioneer]
|
|
61
|
+
VCS = "git"
|
|
62
|
+
style = "pep440-pre"
|
|
63
|
+
versionfile_source = "tableauserverclient/bin/_version.py"
|
|
64
|
+
versionfile_build = "tableauserverclient/bin/_version.py"
|
|
65
|
+
tag_prefix = "v"
|
|
@@ -63,10 +63,10 @@ def main():
|
|
|
63
63
|
for permission in new_default_permissions:
|
|
64
64
|
grantee = permission.grantee
|
|
65
65
|
capabilities = permission.capabilities
|
|
66
|
-
print("\nCapabilities for {
|
|
66
|
+
print(f"\nCapabilities for {grantee.tag_name} {grantee.id}:")
|
|
67
67
|
|
|
68
68
|
for capability in capabilities:
|
|
69
|
-
print("\t{
|
|
69
|
+
print(f"\t{capability} - {capabilities[capability]}")
|
|
70
70
|
|
|
71
71
|
# Uncomment lines below to DELETE the new capability and the new project
|
|
72
72
|
# rules_to_delete = TSC.PermissionsRule(
|
|
@@ -29,7 +29,9 @@ def main():
|
|
|
29
29
|
help="desired logging level (set to error by default)",
|
|
30
30
|
)
|
|
31
31
|
# Options specific to this sample:
|
|
32
|
-
|
|
32
|
+
parser.add_argument("resource_type", choices=["workbook", "datasource"])
|
|
33
|
+
parser.add_argument("resource_id")
|
|
34
|
+
parser.add_argument("--incremental", default=False)
|
|
33
35
|
|
|
34
36
|
args = parser.parse_args()
|
|
35
37
|
|
|
@@ -45,6 +47,7 @@ def main():
|
|
|
45
47
|
# Monthly Schedule
|
|
46
48
|
# This schedule will run on the 15th of every month at 11:30PM
|
|
47
49
|
monthly_interval = TSC.MonthlyInterval(start_time=time(23, 30), interval_value=15)
|
|
50
|
+
print(monthly_interval)
|
|
48
51
|
monthly_schedule = TSC.ScheduleItem(
|
|
49
52
|
None,
|
|
50
53
|
None,
|
|
@@ -53,18 +56,20 @@ def main():
|
|
|
53
56
|
monthly_interval,
|
|
54
57
|
)
|
|
55
58
|
|
|
56
|
-
|
|
57
|
-
all_workbook_items, pagination_item = server.workbooks.get()
|
|
58
|
-
my_workbook: TSC.WorkbookItem = all_workbook_items[0]
|
|
59
|
+
my_workbook: TSC.WorkbookItem = server.workbooks.get_by_id(args.resource_id)
|
|
59
60
|
|
|
60
61
|
target_item = TSC.Target(
|
|
61
62
|
my_workbook.id, # the id of the workbook or datasource
|
|
62
63
|
"workbook", # alternatively can be "datasource"
|
|
63
64
|
)
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
refresh_type = "FullRefresh"
|
|
67
|
+
if args.incremental:
|
|
68
|
+
refresh_type = "Incremental"
|
|
69
|
+
|
|
70
|
+
scheduled_extract_item = TSC.TaskItem(
|
|
66
71
|
None,
|
|
67
|
-
|
|
72
|
+
refresh_type,
|
|
68
73
|
None,
|
|
69
74
|
None,
|
|
70
75
|
None,
|
|
@@ -74,7 +79,7 @@ def main():
|
|
|
74
79
|
)
|
|
75
80
|
|
|
76
81
|
try:
|
|
77
|
-
response = server.tasks.create(
|
|
82
|
+
response = server.tasks.create(scheduled_extract_item)
|
|
78
83
|
print(response)
|
|
79
84
|
except Exception as e:
|
|
80
85
|
print(e)
|
|
@@ -11,7 +11,6 @@ import logging
|
|
|
11
11
|
import os
|
|
12
12
|
|
|
13
13
|
from datetime import time
|
|
14
|
-
from typing import List
|
|
15
14
|
|
|
16
15
|
import tableauserverclient as TSC
|
|
17
16
|
from tableauserverclient import ServerResponseError
|
|
@@ -63,23 +62,23 @@ def main():
|
|
|
63
62
|
|
|
64
63
|
if args.file:
|
|
65
64
|
filepath = os.path.abspath(args.file)
|
|
66
|
-
print("Add users to site from file {}:"
|
|
67
|
-
added:
|
|
68
|
-
failed:
|
|
65
|
+
print(f"Add users to site from file {filepath}:")
|
|
66
|
+
added: list[TSC.UserItem]
|
|
67
|
+
failed: list[TSC.UserItem, TSC.ServerResponseError]
|
|
69
68
|
added, failed = server.users.create_from_file(filepath)
|
|
70
69
|
for user, error in failed:
|
|
71
70
|
print(user, error.code)
|
|
72
71
|
if error.code == "409017":
|
|
73
72
|
user = server.users.filter(name=user.name)[0]
|
|
74
73
|
added.append(user)
|
|
75
|
-
print("Adding users to group:{}"
|
|
74
|
+
print(f"Adding users to group:{added}")
|
|
76
75
|
for user in added:
|
|
77
|
-
print("Adding user {}"
|
|
76
|
+
print(f"Adding user {user}")
|
|
78
77
|
try:
|
|
79
78
|
server.groups.add_user(group, user.id)
|
|
80
79
|
except ServerResponseError as serverError:
|
|
81
80
|
if serverError.code == "409011":
|
|
82
|
-
print("user {} is already a member of group {
|
|
81
|
+
print(f"user {user.name} is already a member of group {group.name}")
|
|
83
82
|
else:
|
|
84
83
|
raise rError
|
|
85
84
|
|
|
@@ -84,7 +84,7 @@ def main():
|
|
|
84
84
|
server.projects.populate_datasource_default_permissions(changed_project),
|
|
85
85
|
server.projects.populate_permissions(changed_project)
|
|
86
86
|
# Projects have default permissions set for the object types they contain
|
|
87
|
-
print("Permissions from project {}:"
|
|
87
|
+
print(f"Permissions from project {changed_project.id}:")
|
|
88
88
|
print(changed_project.permissions)
|
|
89
89
|
print(
|
|
90
90
|
changed_project.default_workbook_permissions,
|
|
@@ -55,7 +55,7 @@ def main():
|
|
|
55
55
|
)
|
|
56
56
|
try:
|
|
57
57
|
hourly_schedule = server.schedules.create(hourly_schedule)
|
|
58
|
-
print("Hourly schedule created (ID: {})."
|
|
58
|
+
print(f"Hourly schedule created (ID: {hourly_schedule.id}).")
|
|
59
59
|
except Exception as e:
|
|
60
60
|
print(e)
|
|
61
61
|
|
|
@@ -71,7 +71,7 @@ def main():
|
|
|
71
71
|
)
|
|
72
72
|
try:
|
|
73
73
|
daily_schedule = server.schedules.create(daily_schedule)
|
|
74
|
-
print("Daily schedule created (ID: {})."
|
|
74
|
+
print(f"Daily schedule created (ID: {daily_schedule.id}).")
|
|
75
75
|
except Exception as e:
|
|
76
76
|
print(e)
|
|
77
77
|
|
|
@@ -89,7 +89,7 @@ def main():
|
|
|
89
89
|
)
|
|
90
90
|
try:
|
|
91
91
|
weekly_schedule = server.schedules.create(weekly_schedule)
|
|
92
|
-
print("Weekly schedule created (ID: {})."
|
|
92
|
+
print(f"Weekly schedule created (ID: {weekly_schedule.id}).")
|
|
93
93
|
except Exception as e:
|
|
94
94
|
print(e)
|
|
95
95
|
options = TSC.RequestOptions()
|
|
@@ -112,7 +112,7 @@ def main():
|
|
|
112
112
|
)
|
|
113
113
|
try:
|
|
114
114
|
monthly_schedule = server.schedules.create(monthly_schedule)
|
|
115
|
-
print("Monthly schedule created (ID: {})."
|
|
115
|
+
print(f"Monthly schedule created (ID: {monthly_schedule.id}).")
|
|
116
116
|
except Exception as e:
|
|
117
117
|
print(e)
|
|
118
118
|
|
|
@@ -51,16 +51,17 @@ def main():
|
|
|
51
51
|
if args.publish:
|
|
52
52
|
if default_project is not None:
|
|
53
53
|
new_datasource = TSC.DatasourceItem(default_project.id)
|
|
54
|
+
new_datasource.description = "Published with a description"
|
|
54
55
|
new_datasource = server.datasources.publish(
|
|
55
56
|
new_datasource, args.publish, TSC.Server.PublishMode.Overwrite
|
|
56
57
|
)
|
|
57
|
-
print("Datasource published. ID: {
|
|
58
|
+
print(f"Datasource published. ID: {new_datasource.id}")
|
|
58
59
|
else:
|
|
59
60
|
print("Publish failed. Could not find the default project.")
|
|
60
61
|
|
|
61
62
|
# Gets all datasource items
|
|
62
63
|
all_datasources, pagination_item = server.datasources.get()
|
|
63
|
-
print("\nThere are {} datasources on site: "
|
|
64
|
+
print(f"\nThere are {pagination_item.total_available} datasources on site: ")
|
|
64
65
|
print([datasource.name for datasource in all_datasources])
|
|
65
66
|
|
|
66
67
|
if all_datasources:
|
|
@@ -69,20 +70,19 @@ def main():
|
|
|
69
70
|
|
|
70
71
|
# Populate connections
|
|
71
72
|
server.datasources.populate_connections(sample_datasource)
|
|
72
|
-
print("\nConnections for {}: "
|
|
73
|
-
print(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
)
|
|
73
|
+
print(f"\nConnections for {sample_datasource.name}: ")
|
|
74
|
+
print([f"{connection.id}({connection.datasource_name})" for connection in sample_datasource.connections])
|
|
75
|
+
|
|
76
|
+
# Demonstrate that description is editable
|
|
77
|
+
sample_datasource.description = "Description updated by TSC"
|
|
78
|
+
server.datasources.update(sample_datasource)
|
|
79
79
|
|
|
80
80
|
# Add some tags to the datasource
|
|
81
81
|
original_tag_set = set(sample_datasource.tags)
|
|
82
82
|
sample_datasource.tags.update("a", "b", "c", "d")
|
|
83
83
|
server.datasources.update(sample_datasource)
|
|
84
|
-
print("\nOld tag set: {}"
|
|
85
|
-
print("New tag set: {
|
|
84
|
+
print(f"\nOld tag set: {original_tag_set}")
|
|
85
|
+
print(f"New tag set: {sample_datasource.tags}")
|
|
86
86
|
|
|
87
87
|
# Delete all tags that were added by setting tags to original
|
|
88
88
|
sample_datasource.tags = original_tag_set
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import argparse
|
|
4
4
|
import logging
|
|
5
5
|
import tableauserverclient as TSC
|
|
6
|
-
from tableauserverclient import Resource
|
|
6
|
+
from tableauserverclient.models import Resource
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def main():
|
|
@@ -39,15 +39,15 @@ def main():
|
|
|
39
39
|
# get all favorites on site for the logged on user
|
|
40
40
|
user: TSC.UserItem = TSC.UserItem()
|
|
41
41
|
user.id = server.user_id
|
|
42
|
-
print("Favorites for user: {
|
|
42
|
+
print(f"Favorites for user: {user.id}")
|
|
43
43
|
server.favorites.get(user)
|
|
44
44
|
print(user.favorites)
|
|
45
45
|
|
|
46
46
|
# get list of workbooks
|
|
47
47
|
all_workbook_items, pagination_item = server.workbooks.get()
|
|
48
48
|
if all_workbook_items is not None and len(all_workbook_items) > 0:
|
|
49
|
-
my_workbook
|
|
50
|
-
server.favorites.add_favorite(
|
|
49
|
+
my_workbook = all_workbook_items[0]
|
|
50
|
+
server.favorites.add_favorite(user, Resource.Workbook, all_workbook_items[0])
|
|
51
51
|
print(
|
|
52
52
|
"Workbook added to favorites. Workbook Name: {}, Workbook ID: {}".format(
|
|
53
53
|
my_workbook.name, my_workbook.id
|
|
@@ -57,7 +57,7 @@ def main():
|
|
|
57
57
|
if views is not None and len(views) > 0:
|
|
58
58
|
my_view = views[0]
|
|
59
59
|
server.favorites.add_favorite_view(user, my_view)
|
|
60
|
-
print("View added to favorites. View Name: {}, View ID: {
|
|
60
|
+
print(f"View added to favorites. View Name: {my_view.name}, View ID: {my_view.id}")
|
|
61
61
|
|
|
62
62
|
all_datasource_items, pagination_item = server.datasources.get()
|
|
63
63
|
if all_datasource_items:
|
|
@@ -70,12 +70,10 @@ def main():
|
|
|
70
70
|
)
|
|
71
71
|
|
|
72
72
|
server.favorites.delete_favorite_workbook(user, my_workbook)
|
|
73
|
-
print(
|
|
74
|
-
"Workbook deleted from favorites. Workbook Name: {}, Workbook ID: {}".format(my_workbook.name, my_workbook.id)
|
|
75
|
-
)
|
|
73
|
+
print(f"Workbook deleted from favorites. Workbook Name: {my_workbook.name}, Workbook ID: {my_workbook.id}")
|
|
76
74
|
|
|
77
75
|
server.favorites.delete_favorite_view(user, my_view)
|
|
78
|
-
print("View deleted from favorites. View Name: {}, View ID: {
|
|
76
|
+
print(f"View deleted from favorites. View Name: {my_view.name}, View ID: {my_view.id}")
|
|
79
77
|
|
|
80
78
|
server.favorites.delete_favorite_datasource(user, my_datasource)
|
|
81
79
|
print(
|
|
@@ -49,7 +49,7 @@ def main():
|
|
|
49
49
|
|
|
50
50
|
if args.delete:
|
|
51
51
|
print("You can only delete the site you are currently in")
|
|
52
|
-
print("Delete site `{}`?"
|
|
52
|
+
print(f"Delete site `{current_site.name}`?")
|
|
53
53
|
# server.sites.delete(server.site_id)
|
|
54
54
|
|
|
55
55
|
elif args.create:
|
|
@@ -52,11 +52,11 @@ def main():
|
|
|
52
52
|
new_webhook.event = "datasource-created"
|
|
53
53
|
print(new_webhook)
|
|
54
54
|
new_webhook = server.webhooks.create(new_webhook)
|
|
55
|
-
print("Webhook created. ID: {
|
|
55
|
+
print(f"Webhook created. ID: {new_webhook.id}")
|
|
56
56
|
|
|
57
57
|
# Gets all webhook items
|
|
58
58
|
all_webhooks, pagination_item = server.webhooks.get()
|
|
59
|
-
print("\nThere are {} webhooks on site: "
|
|
59
|
+
print(f"\nThere are {pagination_item.total_available} webhooks on site: ")
|
|
60
60
|
print([webhook.name for webhook in all_webhooks])
|
|
61
61
|
|
|
62
62
|
if all_webhooks:
|
|
@@ -59,13 +59,13 @@ def main():
|
|
|
59
59
|
if default_project is not None:
|
|
60
60
|
new_workbook = TSC.WorkbookItem(default_project.id)
|
|
61
61
|
new_workbook = server.workbooks.publish(new_workbook, args.publish, overwrite_true)
|
|
62
|
-
print("Workbook published. ID: {
|
|
62
|
+
print(f"Workbook published. ID: {new_workbook.id}")
|
|
63
63
|
else:
|
|
64
64
|
print("Publish failed. Could not find the default project.")
|
|
65
65
|
|
|
66
66
|
# Gets all workbook items
|
|
67
67
|
all_workbooks, pagination_item = server.workbooks.get()
|
|
68
|
-
print("\nThere are {} workbooks on site: "
|
|
68
|
+
print(f"\nThere are {pagination_item.total_available} workbooks on site: ")
|
|
69
69
|
print([workbook.name for workbook in all_workbooks])
|
|
70
70
|
|
|
71
71
|
if all_workbooks:
|
|
@@ -78,27 +78,22 @@ def main():
|
|
|
78
78
|
|
|
79
79
|
# Populate views
|
|
80
80
|
server.workbooks.populate_views(sample_workbook)
|
|
81
|
-
print("\nName of views in {}: "
|
|
81
|
+
print(f"\nName of views in {sample_workbook.name}: ")
|
|
82
82
|
print([view.name for view in sample_workbook.views])
|
|
83
83
|
|
|
84
84
|
# Populate connections
|
|
85
85
|
server.workbooks.populate_connections(sample_workbook)
|
|
86
|
-
print("\nConnections for {}: "
|
|
87
|
-
print(
|
|
88
|
-
[
|
|
89
|
-
"{0}({1})".format(connection.id, connection.datasource_name)
|
|
90
|
-
for connection in sample_workbook.connections
|
|
91
|
-
]
|
|
92
|
-
)
|
|
86
|
+
print(f"\nConnections for {sample_workbook.name}: ")
|
|
87
|
+
print([f"{connection.id}({connection.datasource_name})" for connection in sample_workbook.connections])
|
|
93
88
|
|
|
94
89
|
# Update tags and show_tabs flag
|
|
95
90
|
original_tag_set = set(sample_workbook.tags)
|
|
96
91
|
sample_workbook.tags.update("a", "b", "c", "d")
|
|
97
92
|
sample_workbook.show_tabs = True
|
|
98
93
|
server.workbooks.update(sample_workbook)
|
|
99
|
-
print("\nWorkbook's old tag set: {}"
|
|
100
|
-
print("Workbook's new tag set: {
|
|
101
|
-
print("Workbook tabbed: {
|
|
94
|
+
print(f"\nWorkbook's old tag set: {original_tag_set}")
|
|
95
|
+
print(f"Workbook's new tag set: {sample_workbook.tags}")
|
|
96
|
+
print(f"Workbook tabbed: {sample_workbook.show_tabs}")
|
|
102
97
|
|
|
103
98
|
# Delete all tags that were added by setting tags to original
|
|
104
99
|
sample_workbook.tags = original_tag_set
|
|
@@ -109,8 +104,8 @@ def main():
|
|
|
109
104
|
original_tag_set = set(sample_view.tags)
|
|
110
105
|
sample_view.tags.add("view_tag")
|
|
111
106
|
server.views.update(sample_view)
|
|
112
|
-
print("\nView's old tag set: {}"
|
|
113
|
-
print("View's new tag set: {
|
|
107
|
+
print(f"\nView's old tag set: {original_tag_set}")
|
|
108
|
+
print(f"View's new tag set: {sample_view.tags}")
|
|
114
109
|
|
|
115
110
|
# Delete tag from just one view
|
|
116
111
|
sample_view.tags = original_tag_set
|
|
@@ -119,14 +114,14 @@ def main():
|
|
|
119
114
|
if args.download:
|
|
120
115
|
# Download
|
|
121
116
|
path = server.workbooks.download(sample_workbook.id, args.download)
|
|
122
|
-
print("\nDownloaded workbook to {}"
|
|
117
|
+
print(f"\nDownloaded workbook to {path}")
|
|
123
118
|
|
|
124
119
|
if args.preview_image:
|
|
125
120
|
# Populate workbook preview image
|
|
126
121
|
server.workbooks.populate_preview_image(sample_workbook)
|
|
127
122
|
with open(args.preview_image, "wb") as f:
|
|
128
123
|
f.write(sample_workbook.preview_image)
|
|
129
|
-
print("\nDownloaded preview image of workbook to {
|
|
124
|
+
print(f"\nDownloaded preview image of workbook to {os.path.abspath(args.preview_image)}")
|
|
130
125
|
|
|
131
126
|
# get custom views
|
|
132
127
|
cvs, _ = server.custom_views.get()
|
|
@@ -153,10 +148,10 @@ def main():
|
|
|
153
148
|
server.workbooks.populate_powerpoint(sample_workbook)
|
|
154
149
|
with open(args.powerpoint, "wb") as f:
|
|
155
150
|
f.write(sample_workbook.powerpoint)
|
|
156
|
-
print("\nDownloaded powerpoint of workbook to {
|
|
151
|
+
print(f"\nDownloaded powerpoint of workbook to {os.path.abspath(args.powerpoint)}")
|
|
157
152
|
|
|
158
153
|
if args.delete:
|
|
159
|
-
print("deleting {
|
|
154
|
+
print(f"deleting {c.id}")
|
|
160
155
|
unlucky = TSC.CustomViewItem(c.id)
|
|
161
156
|
server.custom_views.delete(unlucky.id)
|
|
162
157
|
|
|
@@ -37,8 +37,11 @@ def main():
|
|
|
37
37
|
"--csv", dest="type", action="store_const", const=("populate_csv", "CSVRequestOptions", "csv", "csv")
|
|
38
38
|
)
|
|
39
39
|
# other options shown in explore_workbooks: workbook.download, workbook.preview_image
|
|
40
|
-
|
|
40
|
+
parser.add_argument(
|
|
41
|
+
"--language", help="Text such as 'Average' will appear in this language. Use values like fr, de, es, en"
|
|
42
|
+
)
|
|
41
43
|
parser.add_argument("--workbook", action="store_true")
|
|
44
|
+
parser.add_argument("--custom_view", action="store_true")
|
|
42
45
|
|
|
43
46
|
parser.add_argument("--file", "-f", help="filename to store the exported data")
|
|
44
47
|
parser.add_argument("--filter", "-vf", metavar="COLUMN:VALUE", help="View filter to apply to the view")
|
|
@@ -56,14 +59,16 @@ def main():
|
|
|
56
59
|
print("Connected")
|
|
57
60
|
if args.workbook:
|
|
58
61
|
item = server.workbooks.get_by_id(args.resource_id)
|
|
62
|
+
elif args.custom_view:
|
|
63
|
+
item = server.custom_views.get_by_id(args.resource_id)
|
|
59
64
|
else:
|
|
60
65
|
item = server.views.get_by_id(args.resource_id)
|
|
61
66
|
|
|
62
67
|
if not item:
|
|
63
|
-
print("No item found for id {
|
|
68
|
+
print(f"No item found for id {args.resource_id}")
|
|
64
69
|
exit(1)
|
|
65
70
|
|
|
66
|
-
print("Item found: {
|
|
71
|
+
print(f"Item found: {item.name}")
|
|
67
72
|
# We have a number of different types and functions for each different export type.
|
|
68
73
|
# We encode that information above in the const=(...) parameter to the add_argument function to make
|
|
69
74
|
# the code automatically adapt for the type of export the user is doing.
|
|
@@ -72,18 +77,22 @@ def main():
|
|
|
72
77
|
populate = getattr(server.views, populate_func_name)
|
|
73
78
|
if args.workbook:
|
|
74
79
|
populate = getattr(server.workbooks, populate_func_name)
|
|
80
|
+
elif args.custom_view:
|
|
81
|
+
populate = getattr(server.custom_views, populate_func_name)
|
|
75
82
|
|
|
76
83
|
option_factory = getattr(TSC, option_factory_name)
|
|
84
|
+
options: TSC.PDFRequestOptions = option_factory()
|
|
77
85
|
|
|
78
86
|
if args.filter:
|
|
79
|
-
options =
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
options = options.vf(*args.filter.split(":"))
|
|
88
|
+
|
|
89
|
+
if args.language:
|
|
90
|
+
options.language = args.language
|
|
82
91
|
|
|
83
92
|
if args.file:
|
|
84
93
|
filename = args.file
|
|
85
94
|
else:
|
|
86
|
-
filename = "out.{}"
|
|
95
|
+
filename = f"out-{options.language}.{extension}"
|
|
87
96
|
|
|
88
97
|
populate(item, options)
|
|
89
98
|
with open(filename, "wb") as f:
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
####
|
|
2
|
+
# This script demonstrates how to use the Tableau Server Client to interact with extracts.
|
|
3
|
+
# It explores the different functions that the REST API supports on extracts.
|
|
4
|
+
#####
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import logging
|
|
8
|
+
import os.path
|
|
9
|
+
|
|
10
|
+
import tableauserverclient as TSC
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def main():
|
|
14
|
+
parser = argparse.ArgumentParser(description="Explore extract functions supported by the Server API.")
|
|
15
|
+
# Common options; please keep those in sync across all samples
|
|
16
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
17
|
+
parser.add_argument("--site", help="site name")
|
|
18
|
+
parser.add_argument("--token-name", "-tn", help="name of the personal access token used to sign into the server")
|
|
19
|
+
parser.add_argument("--token-value", "-tv", help="value of the personal access token used to sign into the server")
|
|
20
|
+
parser.add_argument(
|
|
21
|
+
"--logging-level",
|
|
22
|
+
"-l",
|
|
23
|
+
choices=["debug", "info", "error"],
|
|
24
|
+
default="error",
|
|
25
|
+
help="desired logging level (set to error by default)",
|
|
26
|
+
)
|
|
27
|
+
# Options specific to this sample
|
|
28
|
+
parser.add_argument("--create", action="store_true")
|
|
29
|
+
parser.add_argument("--delete", action="store_true")
|
|
30
|
+
parser.add_argument("--refresh", action="store_true")
|
|
31
|
+
parser.add_argument("--workbook", required=False)
|
|
32
|
+
parser.add_argument("--datasource", required=False)
|
|
33
|
+
args = parser.parse_args()
|
|
34
|
+
|
|
35
|
+
# Set logging level based on user input, or error by default
|
|
36
|
+
logging_level = getattr(logging, args.logging_level.upper())
|
|
37
|
+
logging.basicConfig(level=logging_level)
|
|
38
|
+
|
|
39
|
+
# SIGN IN
|
|
40
|
+
tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
|
|
41
|
+
server = TSC.Server(args.server, use_server_version=False)
|
|
42
|
+
server.add_http_options({"verify": False})
|
|
43
|
+
server.use_server_version()
|
|
44
|
+
with server.auth.sign_in(tableau_auth):
|
|
45
|
+
|
|
46
|
+
wb = None
|
|
47
|
+
ds = None
|
|
48
|
+
if args.workbook:
|
|
49
|
+
wb = server.workbooks.get_by_id(args.workbook)
|
|
50
|
+
if wb is None:
|
|
51
|
+
raise ValueError(f"Workbook not found for id {args.workbook}")
|
|
52
|
+
elif args.datasource:
|
|
53
|
+
ds = server.datasources.get_by_id(args.datasource)
|
|
54
|
+
if ds is None:
|
|
55
|
+
raise ValueError(f"Datasource not found for id {args.datasource}")
|
|
56
|
+
else:
|
|
57
|
+
# Gets all workbook items
|
|
58
|
+
all_workbooks, pagination_item = server.workbooks.get()
|
|
59
|
+
print(f"\nThere are {pagination_item.total_available} workbooks on site: ")
|
|
60
|
+
print([workbook.name for workbook in all_workbooks])
|
|
61
|
+
|
|
62
|
+
if all_workbooks:
|
|
63
|
+
# Pick one workbook from the list
|
|
64
|
+
wb = all_workbooks[3]
|
|
65
|
+
|
|
66
|
+
if args.create:
|
|
67
|
+
print("create extract on wb ", wb.name)
|
|
68
|
+
extract_job = server.workbooks.create_extract(wb, includeAll=True)
|
|
69
|
+
print(extract_job)
|
|
70
|
+
|
|
71
|
+
if args.refresh:
|
|
72
|
+
extract_job = None
|
|
73
|
+
if ds is not None:
|
|
74
|
+
print(f"refresh extract on datasource {ds.name}")
|
|
75
|
+
extract_job = server.datasources.refresh(ds, includeAll=True, incremental=True)
|
|
76
|
+
elif wb is not None:
|
|
77
|
+
print(f"refresh extract on workbook {wb.name}")
|
|
78
|
+
extract_job = server.workbooks.refresh(wb)
|
|
79
|
+
else:
|
|
80
|
+
print("no content item selected to refresh")
|
|
81
|
+
|
|
82
|
+
print(extract_job)
|
|
83
|
+
|
|
84
|
+
if args.delete:
|
|
85
|
+
print("delete extract on wb ", wb.name)
|
|
86
|
+
jj = server.workbooks.delete_extract(wb)
|
|
87
|
+
print(jj)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
if __name__ == "__main__":
|
|
91
|
+
main()
|