tableauserverclient 0.25__tar.gz → 0.27.post0.dev1__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.25 → tableauserverclient-0.27.post0.dev1}/PKG-INFO +16 -3
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/README.md +1 -1
- tableauserverclient-0.27.post0.dev1/pyproject.toml +53 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/add_default_permission.py +3 -7
- tableauserverclient-0.27.post0.dev1/samples/create_extract_task.py +84 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/create_group.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/create_project.py +11 -8
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/create_schedules.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_datasource.py +3 -7
- tableauserverclient-0.27.post0.dev1/samples/explore_favorites.py +85 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_site.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_webhooks.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_workbook.py +13 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/export.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/extracts.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/filter_sort_groups.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/filter_sort_projects.py +3 -7
- tableauserverclient-0.27.post0.dev1/samples/getting_started/1_hello_server.py +21 -0
- tableauserverclient-0.27.post0.dev1/samples/getting_started/2_hello_site.py +50 -0
- tableauserverclient-0.27.post0.dev1/samples/getting_started/3_hello_universe.py +96 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/initialize_server.py +5 -9
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/kill_all_jobs.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/list.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/login.py +15 -6
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/metadata_query.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/move_workbook_projects.py +5 -9
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/move_workbook_sites.py +5 -9
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/pagination_sample.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/publish_datasource.py +29 -11
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/publish_workbook.py +4 -8
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/query_permissions.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/refresh.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/refresh_tasks.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/set_refresh_schedule.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/smoke_test.py +9 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/update_connection.py +3 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/update_datasource_data.py +3 -7
- tableauserverclient-0.27.post0.dev1/tableauserverclient/__init__.py +58 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/_version.py +4 -4
- tableauserverclient-0.27.post0.dev1/tableauserverclient/config.py +13 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/datetime_helpers.py +4 -0
- tableauserverclient-0.27.post0.dev1/tableauserverclient/helpers/logging.py +4 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/__init__.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/column_item.py +3 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/connection_credentials.py +7 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/connection_item.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/custom_view_item.py +5 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/data_acceleration_report_item.py +3 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/datasource_item.py +10 -54
- tableauserverclient-0.27.post0.dev1/tableauserverclient/models/favorites_item.py +90 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/fileupload_item.py +2 -2
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/flow_item.py +30 -25
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/group_item.py +1 -4
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/interval_item.py +12 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/job_item.py +10 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/metric_item.py +36 -29
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/pagination_item.py +3 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/permissions_item.py +8 -5
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/project_item.py +11 -13
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/schedule_item.py +6 -7
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/server_info_item.py +2 -2
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/site_item.py +3 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/subscription_item.py +8 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/table_item.py +6 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/tableau_auth.py +41 -6
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/tableau_types.py +4 -2
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/user_item.py +5 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/view_item.py +39 -36
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/workbook_item.py +14 -43
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/__init__.py +1 -3
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/__init__.py +1 -5
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/auth_endpoint.py +29 -8
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/custom_views_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/data_alert_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/databases_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/datasources_endpoint.py +21 -15
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/dqw_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/endpoint.py +98 -11
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/exceptions.py +1 -5
- tableauserverclient-0.27.post0.dev1/tableauserverclient/server/endpoint/favorites_endpoint.py +135 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +11 -10
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/flows_endpoint.py +5 -5
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/groups_endpoint.py +5 -2
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/jobs_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/metadata_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/metrics_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/permissions_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/projects_endpoint.py +3 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/resource_tagger.py +3 -3
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/schedules_endpoint.py +2 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/server_info_endpoint.py +2 -4
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/sites_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/tables_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/tasks_endpoint.py +12 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/users_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/views_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/webhooks_endpoint.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/workbooks_endpoint.py +4 -2
- tableauserverclient-0.27.post0.dev1/tableauserverclient/server/exceptions.py +9 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/filter.py +5 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/request_factory.py +56 -12
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/request_options.py +4 -2
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/server.py +12 -13
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/PKG-INFO +16 -3
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/SOURCES.txt +11 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/requires.txt +6 -5
- tableauserverclient-0.27.post0.dev1/test/assets/group_update_async.xml +10 -0
- tableauserverclient-0.27.post0.dev1/test/assets/request_option_filter_name_in.xml +12 -0
- tableauserverclient-0.27.post0.dev1/test/assets/tasks_create_extract_task.xml +12 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/models/_models.py +23 -26
- tableauserverclient-0.27.post0.dev1/test/models/test_repr.py +51 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_auth.py +3 -3
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_custom_view.py +2 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_datasource.py +7 -5
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_datasource_model.py +3 -5
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_endpoint.py +24 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_favorites.py +2 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_fileuploads.py +2 -2
- tableauserverclient-0.27.post0.dev1/test/test_filter.py +22 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_group.py +18 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_group_model.py +0 -10
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_project.py +1 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_project_model.py +4 -8
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_request_option.py +28 -3
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_task.py +26 -1
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_view.py +16 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_webhook.py +2 -1
- tableauserverclient-0.25/pyproject.toml +0 -50
- tableauserverclient-0.25/tableauserverclient/__init__.py +0 -17
- tableauserverclient-0.25/tableauserverclient/models/favorites_item.py +0 -74
- tableauserverclient-0.25/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -93
- tableauserverclient-0.25/tableauserverclient/server/exceptions.py +0 -2
- tableauserverclient-0.25/test/models/test_repr.py +0 -40
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/CHANGELOG.md +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/CONTRIBUTORS.md +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/LICENSE +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/MANIFEST.in +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/contributing.md +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/docs/README.md +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/name.txt +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/setup.cfg +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/setup.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/exponential_backoff.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/filesys_helpers.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/helpers/__init__.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/helpers/strings.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/data_alert_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/database_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/dqw_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/exceptions.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/flow_run_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/property_decorators.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/reference_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/revision_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/tag_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/target.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/task_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/webhook_item.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/namespace.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/pager.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/query.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/sort.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/dependency_links.txt +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/top_level.txt +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/__init__.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/_utils.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/Data/user_details.csv +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/Data/usernames.csv +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/RESTAPISample Image.png +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/Sample View Image.png +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/World Indicators.hyper +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/auth_sign_in.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/auth_sign_in_error.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/auth_sign_in_impersonate.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/custom_view_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/custom_view_get_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/custom_view_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/data_acceleration_report.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_add_user.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/database_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/database_populate_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/database_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_add_tags.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_connection_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_data_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_get_empty.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_populate_connections.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_populate_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_publish.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_publish_async.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_refresh.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_revision.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/dqw_by_content_type.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_datasource.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_project.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_view.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_workbook.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/fileupload_append.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/fileupload_initialize.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_populate_connections.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_populate_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_publish.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_refresh.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_add_user.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_create.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_create_ad.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_create_async.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_populate_users.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_populate_users_empty.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/group_users_added.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_paged_1.json +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_paged_2.json +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_paged_3.json +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_query_error.json +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_query_expected_dict.dict +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_query_success.json +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metrics_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metrics_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/metrics_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/populate_csv.csv +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/populate_pdf.pdf +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_content_permission.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_create.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_populate_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/project_update_datasource_default_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/queryset_slicing_page_1.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/queryset_slicing_page_2.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_filter_equals.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_filter_tags_in.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_page_number.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_page_size.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_pagination.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_slicing_queryset.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_datasource.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_flow.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_workbook.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_daily.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_hourly.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_monthly.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_weekly.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_get_empty.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_25.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_404.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_auth_info.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/site_create.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/site_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/site_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/site_get_by_name.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/site_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/subscription_create.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/subscription_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/subscription_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/table_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/table_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_run_now_response.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_datasource.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_workbook.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_add.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_add_favorite.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_get_empty.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_populate_groups.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_populate_workbooks.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/user_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/view_add_tags.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/view_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/view_get_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/view_get_usage.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/view_populate_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/view_update_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/webhook_create.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/webhook_create_request.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/webhook_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_add_tags.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_by_id.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_by_id_personal.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_empty.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_invalid_date.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_page_1.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_page_2.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_page_3.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_connections.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_views.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_views_usage.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_publish.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_publish_async.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_refresh.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_revision.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_update.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_update_permissions.xml +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/http/test_http_requests.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/request_factory/__init__.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/request_factory/test_datasource_requests.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/request_factory/test_workbook_requests.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_connection_.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_data_acceleration_report.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_dataalert.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_database.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_dqw.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_exponential_backoff.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_filesys_helpers.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_flow.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_flowruns.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_job.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_metadata.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_metrics.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_pager.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_regression_tests.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_requests.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_schedule.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_server_info.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_site.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_site_model.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_sort.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_subscription.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_table.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_tableauauth_model.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_user.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_user_model.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_workbook.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/test/test_workbook_model.py +0 -0
- {tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tableauserverclient
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.27.post0.dev1
|
|
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,15 +28,28 @@ 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.7
|
|
32
31
|
Classifier: Programming Language :: Python :: 3.8
|
|
33
32
|
Classifier: Programming Language :: Python :: 3.9
|
|
34
33
|
Classifier: Programming Language :: Python :: 3.10
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
35
36
|
Requires-Python: >=3.7
|
|
36
37
|
Description-Content-Type: text/markdown
|
|
37
|
-
Provides-Extra: test
|
|
38
38
|
License-File: LICENSE
|
|
39
39
|
License-File: LICENSE.versioneer
|
|
40
|
+
Requires-Dist: defusedxml>=0.7.1
|
|
41
|
+
Requires-Dist: packaging>=23.1
|
|
42
|
+
Requires-Dist: requests>=2.31
|
|
43
|
+
Requires-Dist: urllib3==2.0.6
|
|
44
|
+
Provides-Extra: test
|
|
45
|
+
Requires-Dist: argparse; extra == "test"
|
|
46
|
+
Requires-Dist: black==23.7; extra == "test"
|
|
47
|
+
Requires-Dist: mock; extra == "test"
|
|
48
|
+
Requires-Dist: mypy==1.4; extra == "test"
|
|
49
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
51
|
+
Requires-Dist: pytest-subtests; extra == "test"
|
|
52
|
+
Requires-Dist: requests-mock<2.0,>=1.0; extra == "test"
|
|
40
53
|
|
|
41
54
|
# Tableau Server Client (Python)
|
|
42
55
|
|
|
@@ -19,4 +19,4 @@ For more information on installing and using TSC, see the documentation:
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
## License
|
|
22
|
-
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftableau%2Fserver-client-python?ref=badge_large)
|
|
22
|
+
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftableau%2Fserver-client-python?ref=badge_large)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "versioneer>=0.29", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name="tableauserverclient"
|
|
7
|
+
|
|
8
|
+
dynamic = ["version"]
|
|
9
|
+
description='A Python module for working with the Tableau Server REST API.'
|
|
10
|
+
authors = [{name="Tableau", email="github@tableau.com"}]
|
|
11
|
+
license = {file = "LICENSE"}
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
|
|
14
|
+
dependencies = [
|
|
15
|
+
'defusedxml>=0.7.1', # latest as at 7/31/23
|
|
16
|
+
'packaging>=23.1', # latest as at 7/31/23
|
|
17
|
+
'requests>=2.31', # latest as at 7/31/23
|
|
18
|
+
'urllib3==2.0.6', # latest as at 7/31/23
|
|
19
|
+
]
|
|
20
|
+
requires-python = ">=3.7"
|
|
21
|
+
classifiers = [
|
|
22
|
+
"Programming Language :: Python",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Programming Language :: Python :: 3.8",
|
|
25
|
+
"Programming Language :: Python :: 3.9",
|
|
26
|
+
"Programming Language :: Python :: 3.10",
|
|
27
|
+
"Programming Language :: Python :: 3.11",
|
|
28
|
+
"Programming Language :: Python :: 3.12"
|
|
29
|
+
]
|
|
30
|
+
[project.urls]
|
|
31
|
+
repository = "https://github.com/tableau/server-client-python"
|
|
32
|
+
|
|
33
|
+
[project.optional-dependencies]
|
|
34
|
+
test = ["argparse", "black==23.7", "mock", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
|
|
35
|
+
"requests-mock>=1.0,<2.0"]
|
|
36
|
+
|
|
37
|
+
[tool.black]
|
|
38
|
+
line-length = 120
|
|
39
|
+
target-version = ['py37', 'py38', 'py39', 'py310', 'py311', 'py312']
|
|
40
|
+
|
|
41
|
+
[tool.mypy]
|
|
42
|
+
check_untyped_defs = false
|
|
43
|
+
disable_error_code = [
|
|
44
|
+
'misc',
|
|
45
|
+
# tableauserverclient\server\endpoint\datasources_endpoint.py:48: error: Cannot assign multiple types to name "FilePath" without an explicit "Type[...]" annotation [misc]
|
|
46
|
+
'annotation-unchecked' # can be removed when check_untyped_defs = true
|
|
47
|
+
]
|
|
48
|
+
files = ["tableauserverclient", "test"]
|
|
49
|
+
show_error_codes = true
|
|
50
|
+
ignore_missing_imports = true # defusedxml library has no types
|
|
51
|
+
[tool.pytest.ini_options]
|
|
52
|
+
testpaths = ["test"]
|
|
53
|
+
addopts = "--junitxml=./test.junit.xml"
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/add_default_permission.py
RENAMED
|
@@ -18,14 +18,10 @@ import tableauserverclient as TSC
|
|
|
18
18
|
def main():
|
|
19
19
|
parser = argparse.ArgumentParser(description="Add workbook default permissions for a given project.")
|
|
20
20
|
# Common options; please keep those in sync across all samples
|
|
21
|
-
parser.add_argument("--server", "-s",
|
|
21
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
22
22
|
parser.add_argument("--site", "-S", help="site name")
|
|
23
|
-
parser.add_argument(
|
|
24
|
-
|
|
25
|
-
)
|
|
26
|
-
parser.add_argument(
|
|
27
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
28
|
-
)
|
|
23
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
24
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
29
25
|
parser.add_argument(
|
|
30
26
|
"--logging-level",
|
|
31
27
|
"-l",
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
####
|
|
2
|
+
# This script demonstrates how to create extract tasks in Tableau Cloud
|
|
3
|
+
# using the Tableau Server Client.
|
|
4
|
+
#
|
|
5
|
+
# To run the script, you must have installed Python 3.7 or later.
|
|
6
|
+
####
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
import argparse
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
from datetime import time
|
|
13
|
+
|
|
14
|
+
import tableauserverclient as TSC
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
parser = argparse.ArgumentParser(description="Creates sample extract refresh task.")
|
|
19
|
+
# Common options; please keep those in sync across all samples
|
|
20
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
21
|
+
parser.add_argument("--site", "-S", help="site name")
|
|
22
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
23
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
24
|
+
parser.add_argument(
|
|
25
|
+
"--logging-level",
|
|
26
|
+
"-l",
|
|
27
|
+
choices=["debug", "info", "error"],
|
|
28
|
+
default="error",
|
|
29
|
+
help="desired logging level (set to error by default)",
|
|
30
|
+
)
|
|
31
|
+
# Options specific to this sample:
|
|
32
|
+
# This sample has no additional options, yet. If you add some, please add them here
|
|
33
|
+
|
|
34
|
+
args = parser.parse_args()
|
|
35
|
+
|
|
36
|
+
# Set logging level based on user input, or error by default
|
|
37
|
+
logging_level = getattr(logging, args.logging_level.upper())
|
|
38
|
+
logging.basicConfig(level=logging_level)
|
|
39
|
+
|
|
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
|
+
# Monthly Schedule
|
|
46
|
+
# This schedule will run on the 15th of every month at 11:30PM
|
|
47
|
+
monthly_interval = TSC.MonthlyInterval(start_time=time(23, 30), interval_value=15)
|
|
48
|
+
monthly_schedule = TSC.ScheduleItem(
|
|
49
|
+
None,
|
|
50
|
+
None,
|
|
51
|
+
None,
|
|
52
|
+
None,
|
|
53
|
+
monthly_interval,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Default to using first workbook found in server
|
|
57
|
+
all_workbook_items, pagination_item = server.workbooks.get()
|
|
58
|
+
my_workbook: TSC.WorkbookItem = all_workbook_items[0]
|
|
59
|
+
|
|
60
|
+
target_item = TSC.Target(
|
|
61
|
+
my_workbook.id, # the id of the workbook or datasource
|
|
62
|
+
"workbook", # alternatively can be "datasource"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
extract_item = TSC.TaskItem(
|
|
66
|
+
None,
|
|
67
|
+
"FullRefresh",
|
|
68
|
+
None,
|
|
69
|
+
None,
|
|
70
|
+
None,
|
|
71
|
+
monthly_schedule,
|
|
72
|
+
None,
|
|
73
|
+
target_item,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
try:
|
|
77
|
+
response = server.tasks.create(extract_item)
|
|
78
|
+
print(response)
|
|
79
|
+
except Exception as e:
|
|
80
|
+
print(e)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
if __name__ == "__main__":
|
|
84
|
+
main()
|
|
@@ -20,14 +20,10 @@ from tableauserverclient import ServerResponseError
|
|
|
20
20
|
def main():
|
|
21
21
|
parser = argparse.ArgumentParser(description="Creates a sample user group.")
|
|
22
22
|
# Common options; please keep those in sync across all samples
|
|
23
|
-
parser.add_argument("--server", "-s",
|
|
23
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
24
24
|
parser.add_argument("--site", "-S", help="site name")
|
|
25
|
-
parser.add_argument(
|
|
26
|
-
|
|
27
|
-
)
|
|
28
|
-
parser.add_argument(
|
|
29
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
30
|
-
)
|
|
25
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
26
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
31
27
|
parser.add_argument(
|
|
32
28
|
"--logging-level",
|
|
33
29
|
"-l",
|
|
@@ -28,14 +28,10 @@ def create_project(server, project_item, samples=False):
|
|
|
28
28
|
def main():
|
|
29
29
|
parser = argparse.ArgumentParser(description="Create new projects.")
|
|
30
30
|
# Common options; please keep those in sync across all samples
|
|
31
|
-
parser.add_argument("--server", "-s",
|
|
31
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
32
32
|
parser.add_argument("--site", "-S", help="site name")
|
|
33
|
-
parser.add_argument(
|
|
34
|
-
|
|
35
|
-
)
|
|
36
|
-
parser.add_argument(
|
|
37
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
38
|
-
)
|
|
33
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
34
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
39
35
|
parser.add_argument(
|
|
40
36
|
"--logging-level",
|
|
41
37
|
"-l",
|
|
@@ -61,7 +57,14 @@ def main():
|
|
|
61
57
|
server.use_server_version()
|
|
62
58
|
|
|
63
59
|
# Without parent_id specified, projects are created at the top level.
|
|
64
|
-
|
|
60
|
+
# With the publish-samples attribute, the project will be created with sample items
|
|
61
|
+
top_level_project = TSC.ProjectItem(
|
|
62
|
+
name="Top Level Project",
|
|
63
|
+
description="A sample tsc project",
|
|
64
|
+
content_permissions=None,
|
|
65
|
+
parent_id=None,
|
|
66
|
+
samples=True,
|
|
67
|
+
)
|
|
65
68
|
top_level_project = create_project(server, top_level_project)
|
|
66
69
|
|
|
67
70
|
# Specifying parent_id creates a nested projects.
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/create_schedules.py
RENAMED
|
@@ -17,14 +17,10 @@ import tableauserverclient as TSC
|
|
|
17
17
|
def main():
|
|
18
18
|
parser = argparse.ArgumentParser(description="Creates sample schedules for each type of frequency.")
|
|
19
19
|
# Common options; please keep those in sync across all samples
|
|
20
|
-
parser.add_argument("--server", "-s",
|
|
20
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
21
21
|
parser.add_argument("--site", "-S", help="site name")
|
|
22
|
-
parser.add_argument(
|
|
23
|
-
|
|
24
|
-
)
|
|
25
|
-
parser.add_argument(
|
|
26
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
27
|
-
)
|
|
22
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
23
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
28
24
|
parser.add_argument(
|
|
29
25
|
"--logging-level",
|
|
30
26
|
"-l",
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_datasource.py
RENAMED
|
@@ -18,14 +18,10 @@ import tableauserverclient as TSC
|
|
|
18
18
|
def main():
|
|
19
19
|
parser = argparse.ArgumentParser(description="Explore datasource functions supported by the Server API.")
|
|
20
20
|
# Common options; please keep those in sync across all samples
|
|
21
|
-
parser.add_argument("--server", "-s",
|
|
21
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
22
22
|
parser.add_argument("--site", "-S", help="site name")
|
|
23
|
-
parser.add_argument(
|
|
24
|
-
|
|
25
|
-
)
|
|
26
|
-
parser.add_argument(
|
|
27
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
28
|
-
)
|
|
23
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
24
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
29
25
|
parser.add_argument(
|
|
30
26
|
"--logging-level",
|
|
31
27
|
"-l",
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# This script demonstrates how to get all favorites, or add/delete a favorite.
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import logging
|
|
5
|
+
import tableauserverclient as TSC
|
|
6
|
+
from tableauserverclient import Resource
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def main():
|
|
10
|
+
parser = argparse.ArgumentParser(description="Explore favoriting functions supported by the Server API.")
|
|
11
|
+
# Common options; please keep those in sync across all samples
|
|
12
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
13
|
+
parser.add_argument("--site", "-S", help="site name")
|
|
14
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
15
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
16
|
+
parser.add_argument(
|
|
17
|
+
"--logging-level",
|
|
18
|
+
"-l",
|
|
19
|
+
choices=["debug", "info", "error"],
|
|
20
|
+
default="error",
|
|
21
|
+
help="desired logging level (set to error by default)",
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
args = parser.parse_args()
|
|
25
|
+
|
|
26
|
+
# Set logging level based on user input, or error by default
|
|
27
|
+
logging_level = getattr(logging, args.logging_level.upper())
|
|
28
|
+
logging.basicConfig(level=logging_level)
|
|
29
|
+
|
|
30
|
+
# SIGN IN
|
|
31
|
+
tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
|
|
32
|
+
server = TSC.Server(args.server, use_server_version=True)
|
|
33
|
+
with server.auth.sign_in(tableau_auth):
|
|
34
|
+
print(server)
|
|
35
|
+
my_workbook = None
|
|
36
|
+
my_view = None
|
|
37
|
+
my_datasource = None
|
|
38
|
+
|
|
39
|
+
# get all favorites on site for the logged on user
|
|
40
|
+
user: TSC.UserItem = TSC.UserItem()
|
|
41
|
+
user.id = server.user_id
|
|
42
|
+
print("Favorites for user: {}".format(user.id))
|
|
43
|
+
server.favorites.get(user)
|
|
44
|
+
print(user.favorites)
|
|
45
|
+
|
|
46
|
+
# get list of workbooks
|
|
47
|
+
all_workbook_items, pagination_item = server.workbooks.get()
|
|
48
|
+
if all_workbook_items is not None and len(all_workbook_items) > 0:
|
|
49
|
+
my_workbook: TSC.WorkbookItem = all_workbook_items[0]
|
|
50
|
+
server.favorites.add_favorite(server, user, Resource.Workbook.name(), all_workbook_items[0])
|
|
51
|
+
print(
|
|
52
|
+
"Workbook added to favorites. Workbook Name: {}, Workbook ID: {}".format(
|
|
53
|
+
my_workbook.name, my_workbook.id
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
views = server.workbooks.populate_views(my_workbook)
|
|
57
|
+
if views is not None and len(views) > 0:
|
|
58
|
+
my_view = views[0]
|
|
59
|
+
server.favorites.add_favorite_view(user, my_view)
|
|
60
|
+
print("View added to favorites. View Name: {}, View ID: {}".format(my_view.name, my_view.id))
|
|
61
|
+
|
|
62
|
+
all_datasource_items, pagination_item = server.datasources.get()
|
|
63
|
+
if all_datasource_items:
|
|
64
|
+
my_datasource = all_datasource_items[0]
|
|
65
|
+
server.favorites.add_favorite_datasource(user, my_datasource)
|
|
66
|
+
print(
|
|
67
|
+
"Datasource added to favorites. Datasource Name: {}, Datasource ID: {}".format(
|
|
68
|
+
my_datasource.name, my_datasource.id
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
|
|
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
|
+
)
|
|
76
|
+
|
|
77
|
+
server.favorites.delete_favorite_view(user, my_view)
|
|
78
|
+
print("View deleted from favorites. View Name: {}, View ID: {}".format(my_view.name, my_view.id))
|
|
79
|
+
|
|
80
|
+
server.favorites.delete_favorite_datasource(user, my_datasource)
|
|
81
|
+
print(
|
|
82
|
+
"Datasource deleted from favorites. Datasource Name: {}, Datasource ID: {}".format(
|
|
83
|
+
my_datasource.name, my_datasource.id
|
|
84
|
+
)
|
|
85
|
+
)
|
|
@@ -14,14 +14,10 @@ import tableauserverclient as TSC
|
|
|
14
14
|
def main():
|
|
15
15
|
parser = argparse.ArgumentParser(description="Explore site updates by the Server API.")
|
|
16
16
|
# Common options; please keep those in sync across all samples
|
|
17
|
-
parser.add_argument("--server", "-s",
|
|
17
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
18
18
|
parser.add_argument("--site", "-S", help="site name")
|
|
19
|
-
parser.add_argument(
|
|
20
|
-
|
|
21
|
-
)
|
|
22
|
-
parser.add_argument(
|
|
23
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
24
|
-
)
|
|
19
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
20
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
25
21
|
parser.add_argument(
|
|
26
22
|
"--logging-level",
|
|
27
23
|
"-l",
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_webhooks.py
RENAMED
|
@@ -19,14 +19,10 @@ import tableauserverclient as TSC
|
|
|
19
19
|
def main():
|
|
20
20
|
parser = argparse.ArgumentParser(description="Explore webhook functions supported by the Server API.")
|
|
21
21
|
# Common options; please keep those in sync across all samples
|
|
22
|
-
parser.add_argument("--server", "-s",
|
|
22
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
23
23
|
parser.add_argument("--site", "-S", help="site name")
|
|
24
|
-
parser.add_argument(
|
|
25
|
-
|
|
26
|
-
)
|
|
27
|
-
parser.add_argument(
|
|
28
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
29
|
-
)
|
|
24
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
25
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
30
26
|
parser.add_argument(
|
|
31
27
|
"--logging-level",
|
|
32
28
|
"-l",
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/explore_workbook.py
RENAMED
|
@@ -19,14 +19,10 @@ import tableauserverclient as TSC
|
|
|
19
19
|
def main():
|
|
20
20
|
parser = argparse.ArgumentParser(description="Explore workbook functions supported by the Server API.")
|
|
21
21
|
# Common options; please keep those in sync across all samples
|
|
22
|
-
parser.add_argument("--server", "-s",
|
|
22
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
23
23
|
parser.add_argument("--site", "-S", help="site name")
|
|
24
|
-
parser.add_argument(
|
|
25
|
-
|
|
26
|
-
)
|
|
27
|
-
parser.add_argument(
|
|
28
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
29
|
-
)
|
|
24
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
25
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
30
26
|
parser.add_argument(
|
|
31
27
|
"--logging-level",
|
|
32
28
|
"-l",
|
|
@@ -40,6 +36,9 @@ def main():
|
|
|
40
36
|
parser.add_argument(
|
|
41
37
|
"--preview-image", "-i", metavar="FILENAME", help="filename (a .png file) to save the preview image"
|
|
42
38
|
)
|
|
39
|
+
parser.add_argument(
|
|
40
|
+
"--powerpoint", "-ppt", metavar="FILENAME", help="filename (a .ppt file) to save the powerpoint deck"
|
|
41
|
+
)
|
|
43
42
|
|
|
44
43
|
args = parser.parse_args()
|
|
45
44
|
|
|
@@ -149,6 +148,13 @@ def main():
|
|
|
149
148
|
f.write(c.image)
|
|
150
149
|
print("saved to " + filename)
|
|
151
150
|
|
|
151
|
+
if args.powerpoint:
|
|
152
|
+
# Populate workbook preview image
|
|
153
|
+
server.workbooks.populate_powerpoint(sample_workbook)
|
|
154
|
+
with open(args.powerpoint, "wb") as f:
|
|
155
|
+
f.write(sample_workbook.powerpoint)
|
|
156
|
+
print("\nDownloaded powerpoint of workbook to {}".format(os.path.abspath(args.powerpoint)))
|
|
157
|
+
|
|
152
158
|
if args.delete:
|
|
153
159
|
print("deleting {}".format(c.id))
|
|
154
160
|
unlucky = TSC.CustomViewItem(c.id)
|
|
@@ -14,14 +14,10 @@ import tableauserverclient as TSC
|
|
|
14
14
|
def main():
|
|
15
15
|
parser = argparse.ArgumentParser(description="Export a view as an image, PDF, or CSV")
|
|
16
16
|
# Common options; please keep those in sync across all samples
|
|
17
|
-
parser.add_argument("--server", "-s",
|
|
17
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
18
18
|
parser.add_argument("--site", "-S", help="site name")
|
|
19
|
-
parser.add_argument(
|
|
20
|
-
|
|
21
|
-
)
|
|
22
|
-
parser.add_argument(
|
|
23
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
24
|
-
)
|
|
19
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
20
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
25
21
|
parser.add_argument(
|
|
26
22
|
"--logging-level",
|
|
27
23
|
"-l",
|
|
@@ -19,14 +19,10 @@ import tableauserverclient as TSC
|
|
|
19
19
|
def main():
|
|
20
20
|
parser = argparse.ArgumentParser(description="Explore extract functions supported by the Server API.")
|
|
21
21
|
# Common options; please keep those in sync across all samples
|
|
22
|
-
parser.add_argument("--server", "-s",
|
|
22
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
23
23
|
parser.add_argument("--site", help="site name")
|
|
24
|
-
parser.add_argument(
|
|
25
|
-
|
|
26
|
-
)
|
|
27
|
-
parser.add_argument(
|
|
28
|
-
"--token-value", "-tv", required=True, help="value of the personal access token used to sign into the server"
|
|
29
|
-
)
|
|
24
|
+
parser.add_argument("--token-name", "-tn", help="name of the personal access token used to sign into the server")
|
|
25
|
+
parser.add_argument("--token-value", "-tv", help="value of the personal access token used to sign into the server")
|
|
30
26
|
parser.add_argument(
|
|
31
27
|
"--logging-level",
|
|
32
28
|
"-l",
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/filter_sort_groups.py
RENAMED
|
@@ -26,14 +26,10 @@ def create_example_group(group_name="Example Group", server=None):
|
|
|
26
26
|
def main():
|
|
27
27
|
parser = argparse.ArgumentParser(description="Filter and sort groups.")
|
|
28
28
|
# Common options; please keep those in sync across all samples
|
|
29
|
-
parser.add_argument("--server", "-s",
|
|
29
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
30
30
|
parser.add_argument("--site", "-S", help="site name")
|
|
31
|
-
parser.add_argument(
|
|
32
|
-
|
|
33
|
-
)
|
|
34
|
-
parser.add_argument(
|
|
35
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
36
|
-
)
|
|
31
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
32
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
37
33
|
parser.add_argument(
|
|
38
34
|
"--logging-level",
|
|
39
35
|
"-l",
|
{tableauserverclient-0.25 → tableauserverclient-0.27.post0.dev1}/samples/filter_sort_projects.py
RENAMED
|
@@ -29,14 +29,10 @@ def create_example_project(
|
|
|
29
29
|
def main():
|
|
30
30
|
parser = argparse.ArgumentParser(description="Filter and sort projects.")
|
|
31
31
|
# Common options; please keep those in sync across all samples
|
|
32
|
-
parser.add_argument("--server", "-s",
|
|
32
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
33
33
|
parser.add_argument("--site", "-S", help="site name")
|
|
34
|
-
parser.add_argument(
|
|
35
|
-
|
|
36
|
-
)
|
|
37
|
-
parser.add_argument(
|
|
38
|
-
"--token-value", "-v", required=True, help="value of the personal access token used to sign into the server"
|
|
39
|
-
)
|
|
34
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
35
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
40
36
|
parser.add_argument(
|
|
41
37
|
"--logging-level",
|
|
42
38
|
"-l",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
####
|
|
2
|
+
# Getting started Part One of Three
|
|
3
|
+
# This script demonstrates how to use the Tableau Server Client to connect to a server
|
|
4
|
+
# You don't need to have a site or any experience with Tableau to run it
|
|
5
|
+
#
|
|
6
|
+
####
|
|
7
|
+
|
|
8
|
+
import tableauserverclient as TSC
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def main():
|
|
12
|
+
# This is the domain for Tableau's Developer Program
|
|
13
|
+
server_url = "https://10ax.online.tableau.com"
|
|
14
|
+
server = TSC.Server(server_url)
|
|
15
|
+
print("Connected to {}".format(server.server_info.baseurl))
|
|
16
|
+
print("Server information: {}".format(server.server_info))
|
|
17
|
+
print("Sign up for a test site at https://www.tableau.com/developer")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
main()
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
####
|
|
2
|
+
# Getting started Part Two of Three
|
|
3
|
+
# This script demonstrates how to use the Tableau Server Client to
|
|
4
|
+
# view the content on an existing site on Tableau Server/Online
|
|
5
|
+
# It assumes that you have already got a site and can visit it in a browser
|
|
6
|
+
#
|
|
7
|
+
####
|
|
8
|
+
|
|
9
|
+
import getpass
|
|
10
|
+
import tableauserverclient as TSC
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# 0 - launch your Tableau site in a web browser and look at the url to set the values below
|
|
14
|
+
def main():
|
|
15
|
+
# 1 - replace with your server domain: stop at the slash
|
|
16
|
+
server_url = "https://10ax.online.tableau.com"
|
|
17
|
+
|
|
18
|
+
# 2 - optional - change to false **for testing only** if you get a certificate error
|
|
19
|
+
use_ssl = True
|
|
20
|
+
|
|
21
|
+
server = TSC.Server(server_url, use_server_version=True, http_options={"verify": use_ssl})
|
|
22
|
+
print("Connected to {}".format(server.server_info.baseurl))
|
|
23
|
+
|
|
24
|
+
# 3 - replace with your site name exactly as it looks in the url
|
|
25
|
+
# e.g https://my-server/#/site/this-is-your-site-url-name/not-this-part
|
|
26
|
+
site_url_name = "" # leave empty if there is no site name in the url (you are on the default site)
|
|
27
|
+
|
|
28
|
+
# 4 - replace with your username.
|
|
29
|
+
# REMEMBER: if you are using Tableau Online, your username is the entire email address
|
|
30
|
+
username = "your-username-here"
|
|
31
|
+
password = getpass.getpass("Your password:") # so you don't save it in this file
|
|
32
|
+
tableau_auth = TSC.TableauAuth(username, password, site_id=site_url_name)
|
|
33
|
+
|
|
34
|
+
# OR instead of username+password, uncomment this section to use a Personal Access Token
|
|
35
|
+
# token_name = "your-token-name"
|
|
36
|
+
# token_value = "your-token-value-long-random-string"
|
|
37
|
+
# tableau_auth = TSC.PersonalAccessTokenAuth(token_name, token_value, site_id=site_url_name)
|
|
38
|
+
|
|
39
|
+
with server.auth.sign_in(tableau_auth):
|
|
40
|
+
projects, pagination = server.projects.get()
|
|
41
|
+
if projects:
|
|
42
|
+
print("{} projects".format(pagination.total_available))
|
|
43
|
+
project = projects[0]
|
|
44
|
+
print(project.name)
|
|
45
|
+
|
|
46
|
+
print("Done")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
main()
|