tableauserverclient 0.26__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.26 → tableauserverclient-0.27.post0.dev1}/PKG-INFO +16 -3
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/README.md +1 -1
- tableauserverclient-0.27.post0.dev1/pyproject.toml +53 -0
- tableauserverclient-0.27.post0.dev1/samples/create_extract_task.py +84 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/create_project.py +8 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/explore_workbook.py +10 -0
- 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.27.post0.dev1/tableauserverclient/__init__.py +58 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/_version.py +4 -4
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/helpers/logging.py +0 -2
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/__init__.py +1 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/column_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/connection_credentials.py +7 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/custom_view_item.py +5 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/data_acceleration_report_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/datasource_item.py +0 -9
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/group_item.py +1 -4
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/interval_item.py +12 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/job_item.py +10 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/metric_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/pagination_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/permissions_item.py +7 -4
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/project_item.py +2 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/schedule_item.py +6 -7
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/server_info_item.py +1 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/site_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/subscription_item.py +8 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/table_item.py +6 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/tableau_auth.py +41 -6
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/user_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/view_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/workbook_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/auth_endpoint.py +28 -7
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/groups_endpoint.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/projects_endpoint.py +2 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/tasks_endpoint.py +11 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/filter.py +5 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/request_factory.py +28 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/request_options.py +1 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/PKG-INFO +16 -3
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/SOURCES.txt +8 -0
- {tableauserverclient-0.26 → 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.26 → 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.26 → tableauserverclient-0.27.post0.dev1}/test/test_custom_view.py +2 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_datasource.py +4 -2
- tableauserverclient-0.27.post0.dev1/test/test_filter.py +22 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_group.py +18 -1
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_group_model.py +0 -10
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_request_option.py +25 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_task.py +26 -1
- tableauserverclient-0.26/pyproject.toml +0 -50
- tableauserverclient-0.26/tableauserverclient/__init__.py +0 -17
- tableauserverclient-0.26/test/models/test_repr.py +0 -40
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/CHANGELOG.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/CONTRIBUTORS.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/LICENSE +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/MANIFEST.in +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/contributing.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/docs/README.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/add_default_permission.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/create_group.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/create_schedules.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/explore_datasource.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/explore_favorites.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/explore_site.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/explore_webhooks.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/export.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/extracts.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/filter_sort_groups.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/filter_sort_projects.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/initialize_server.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/kill_all_jobs.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/list.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/login.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/metadata_query.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/move_workbook_projects.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/move_workbook_sites.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/name.txt +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/pagination_sample.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/publish_datasource.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/publish_workbook.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/query_permissions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/refresh.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/refresh_tasks.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/set_refresh_schedule.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/smoke_test.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/update_connection.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/update_datasource_data.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/setup.cfg +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/setup.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/config.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/datetime_helpers.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/exponential_backoff.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/filesys_helpers.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/helpers/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/helpers/strings.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/connection_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/data_alert_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/database_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/dqw_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/exceptions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/favorites_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/fileupload_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/flow_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/flow_run_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/property_decorators.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/reference_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/revision_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/tableau_types.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/tag_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/target.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/task_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/models/webhook_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/namespace.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/databases_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/datasources_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/dqw_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/exceptions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/flows_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/jobs_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/metadata_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/metrics_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/schedules_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/sites_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/tables_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/users_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/views_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/endpoint/workbooks_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/exceptions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/pager.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/query.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/server.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/server/sort.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/dependency_links.txt +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient.egg-info/top_level.txt +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/_utils.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/Data/user_details.csv +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/Data/usernames.csv +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/RESTAPISample Image.png +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/Sample View Image.png +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/World Indicators.hyper +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/auth_sign_in.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/auth_sign_in_error.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/auth_sign_in_impersonate.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/custom_view_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/custom_view_get_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/custom_view_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/data_acceleration_report.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_add_user.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/data_alerts_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/database_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/database_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/database_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_add_tags.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_connection_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_data_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_populate_connections.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_publish.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_publish_async.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_refresh.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_revision.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/datasource_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/dqw_by_content_type.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_project.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_view.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_add_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/favorites_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/fileupload_append.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/fileupload_initialize.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_populate_connections.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_publish.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_refresh.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/flow_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_add_user.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_create_ad.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_create_async.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_populate_users.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_populate_users_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/group_users_added.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/job_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_paged_1.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_paged_2.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_paged_3.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_query_error.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_query_expected_dict.dict +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metadata_query_success.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metrics_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metrics_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/metrics_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/populate_csv.csv +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/populate_pdf.pdf +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_content_permission.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/project_update_datasource_default_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/queryset_slicing_page_1.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/queryset_slicing_page_2.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_filter_equals.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_filter_tags_in.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_page_number.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_page_size.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_pagination.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/request_option_slicing_queryset.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_flow.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_daily.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_hourly.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_monthly.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_create_weekly.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/schedule_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_25.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_404.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_auth_info.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/server_info_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/site_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/site_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/site_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/site_get_by_name.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/site_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/subscription_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/subscription_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/subscription_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/table_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/table_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_run_now_response.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_add.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_add_favorite.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_populate_groups.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_populate_workbooks.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/user_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/view_add_tags.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/view_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/view_get_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/view_get_usage.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/view_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/view_update_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/webhook_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/webhook_create_request.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/webhook_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_add_tags.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_by_id_personal.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_invalid_date.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_page_1.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_page_2.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_get_page_3.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_connections.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_views.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_populate_views_usage.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_publish.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_publish_async.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_refresh.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_revision.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/assets/workbook_update_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/http/test_http_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/request_factory/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/request_factory/test_datasource_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/request_factory/test_workbook_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_auth.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_connection_.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_data_acceleration_report.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_dataalert.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_database.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_datasource_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_dqw.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_exponential_backoff.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_favorites.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_filesys_helpers.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_fileuploads.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_flow.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_flowruns.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_job.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_metadata.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_metrics.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_pager.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_project.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_project_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_regression_tests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_schedule.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_server_info.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_site.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_site_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_sort.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_subscription.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_table.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_tableauauth_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_user.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_user_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_view.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_webhook.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_workbook.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/test/test_workbook_model.py +0 -0
- {tableauserverclient-0.26 → 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"
|
|
@@ -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()
|
|
@@ -57,7 +57,14 @@ def main():
|
|
|
57
57
|
server.use_server_version()
|
|
58
58
|
|
|
59
59
|
# Without parent_id specified, projects are created at the top level.
|
|
60
|
-
|
|
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
|
+
)
|
|
61
68
|
top_level_project = create_project(server, top_level_project)
|
|
62
69
|
|
|
63
70
|
# Specifying parent_id creates a nested projects.
|
{tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/samples/explore_workbook.py
RENAMED
|
@@ -36,6 +36,9 @@ def main():
|
|
|
36
36
|
parser.add_argument(
|
|
37
37
|
"--preview-image", "-i", metavar="FILENAME", help="filename (a .png file) to save the preview image"
|
|
38
38
|
)
|
|
39
|
+
parser.add_argument(
|
|
40
|
+
"--powerpoint", "-ppt", metavar="FILENAME", help="filename (a .ppt file) to save the powerpoint deck"
|
|
41
|
+
)
|
|
39
42
|
|
|
40
43
|
args = parser.parse_args()
|
|
41
44
|
|
|
@@ -145,6 +148,13 @@ def main():
|
|
|
145
148
|
f.write(c.image)
|
|
146
149
|
print("saved to " + filename)
|
|
147
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
|
+
|
|
148
158
|
if args.delete:
|
|
149
159
|
print("deleting {}".format(c.id))
|
|
150
160
|
unlucky = TSC.CustomViewItem(c.id)
|
|
@@ -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()
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
####
|
|
2
|
+
# Getting Started Part Three of Three
|
|
3
|
+
# This script demonstrates all the different types of 'content' a server contains
|
|
4
|
+
#
|
|
5
|
+
# To make it easy to run, it doesn't take any arguments - you need to edit the code with your info
|
|
6
|
+
####
|
|
7
|
+
|
|
8
|
+
import getpass
|
|
9
|
+
import tableauserverclient as TSC
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
# 1 - replace with your server url
|
|
14
|
+
server_url = "https://10ax.online.tableau.com"
|
|
15
|
+
|
|
16
|
+
# 2 - change to false **for testing only** if you get a certificate error
|
|
17
|
+
use_ssl = True
|
|
18
|
+
server = TSC.Server(server_url, use_server_version=True, http_options={"verify": use_ssl})
|
|
19
|
+
|
|
20
|
+
print("Connected to {}".format(server.server_info.baseurl))
|
|
21
|
+
|
|
22
|
+
# 3 - replace with your site name exactly as it looks in a url
|
|
23
|
+
# e.g https://my-server/#/this-is-your-site-url-name/
|
|
24
|
+
site_url_name = "" # leave empty if there is no site name in the url (you are on the default site)
|
|
25
|
+
|
|
26
|
+
# 4
|
|
27
|
+
username = "your-username-here"
|
|
28
|
+
password = getpass.getpass("Your password:") # so you don't save it in this file
|
|
29
|
+
tableau_auth = TSC.TableauAuth(username, password, site_id=site_url_name)
|
|
30
|
+
|
|
31
|
+
# OR instead of username+password, use a Personal Access Token (PAT) (required by Tableau Cloud)
|
|
32
|
+
# token_name = "your-token-name"
|
|
33
|
+
# token_value = "your-token-value-long-random-string"
|
|
34
|
+
# tableau_auth = TSC.PersonalAccessTokenAuth(token_name, token_value, site_id=site_url_name)
|
|
35
|
+
|
|
36
|
+
with server.auth.sign_in(tableau_auth):
|
|
37
|
+
projects, pagination = server.projects.get()
|
|
38
|
+
if projects:
|
|
39
|
+
print("{} projects".format(pagination.total_available))
|
|
40
|
+
for project in projects:
|
|
41
|
+
print(project.name)
|
|
42
|
+
|
|
43
|
+
workbooks, pagination = server.datasources.get()
|
|
44
|
+
if workbooks:
|
|
45
|
+
print("{} workbooks".format(pagination.total_available))
|
|
46
|
+
print(workbooks[0])
|
|
47
|
+
|
|
48
|
+
views, pagination = server.views.get()
|
|
49
|
+
if views:
|
|
50
|
+
print("{} views".format(pagination.total_available))
|
|
51
|
+
print(views[0])
|
|
52
|
+
|
|
53
|
+
datasources, pagination = server.datasources.get()
|
|
54
|
+
if datasources:
|
|
55
|
+
print("{} datasources".format(pagination.total_available))
|
|
56
|
+
print(datasources[0])
|
|
57
|
+
|
|
58
|
+
# I think all these other content types can go to a hello_universe script
|
|
59
|
+
# data alert, dqw, flow, ... do any of these require any add-ons?
|
|
60
|
+
jobs, pagination = server.jobs.get()
|
|
61
|
+
if jobs:
|
|
62
|
+
print("{} jobs".format(pagination.total_available))
|
|
63
|
+
print(jobs[0])
|
|
64
|
+
|
|
65
|
+
metrics, pagination = server.metrics.get()
|
|
66
|
+
if metrics:
|
|
67
|
+
print("{} metrics".format(pagination.total_available))
|
|
68
|
+
print(metrics[0])
|
|
69
|
+
|
|
70
|
+
schedules, pagination = server.schedules.get()
|
|
71
|
+
if schedules:
|
|
72
|
+
print("{} schedules".format(pagination.total_available))
|
|
73
|
+
print(schedules[0])
|
|
74
|
+
|
|
75
|
+
tasks, pagination = server.tasks.get()
|
|
76
|
+
if tasks:
|
|
77
|
+
print("{} tasks".format(pagination.total_available))
|
|
78
|
+
print(tasks[0])
|
|
79
|
+
|
|
80
|
+
webhooks, pagination = server.webhooks.get()
|
|
81
|
+
if webhooks:
|
|
82
|
+
print("{} webhooks".format(pagination.total_available))
|
|
83
|
+
print(webhooks[0])
|
|
84
|
+
|
|
85
|
+
users, pagination = server.metrics.get()
|
|
86
|
+
if users:
|
|
87
|
+
print("{} users".format(pagination.total_available))
|
|
88
|
+
print(users[0])
|
|
89
|
+
|
|
90
|
+
groups, pagination = server.groups.get()
|
|
91
|
+
if groups:
|
|
92
|
+
print("{} groups".format(pagination.total_available))
|
|
93
|
+
print(groups[0])
|
|
94
|
+
|
|
95
|
+
if __name__ == "__main__":
|
|
96
|
+
main()
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from ._version import get_versions
|
|
2
|
+
from .namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
|
|
3
|
+
from .models import (
|
|
4
|
+
BackgroundJobItem,
|
|
5
|
+
ColumnItem,
|
|
6
|
+
ConnectionCredentials,
|
|
7
|
+
ConnectionItem,
|
|
8
|
+
CustomViewItem,
|
|
9
|
+
DQWItem,
|
|
10
|
+
DailyInterval,
|
|
11
|
+
DataAlertItem,
|
|
12
|
+
DatabaseItem,
|
|
13
|
+
DatasourceItem,
|
|
14
|
+
FavoriteItem,
|
|
15
|
+
FlowItem,
|
|
16
|
+
FlowRunItem,
|
|
17
|
+
FileuploadItem,
|
|
18
|
+
GroupItem,
|
|
19
|
+
HourlyInterval,
|
|
20
|
+
IntervalItem,
|
|
21
|
+
JobItem,
|
|
22
|
+
JWTAuth,
|
|
23
|
+
MetricItem,
|
|
24
|
+
MonthlyInterval,
|
|
25
|
+
PaginationItem,
|
|
26
|
+
Permission,
|
|
27
|
+
PermissionsRule,
|
|
28
|
+
PersonalAccessTokenAuth,
|
|
29
|
+
ProjectItem,
|
|
30
|
+
RevisionItem,
|
|
31
|
+
ScheduleItem,
|
|
32
|
+
SiteItem,
|
|
33
|
+
ServerInfoItem,
|
|
34
|
+
SubscriptionItem,
|
|
35
|
+
TableItem,
|
|
36
|
+
TableauAuth,
|
|
37
|
+
Target,
|
|
38
|
+
TaskItem,
|
|
39
|
+
UserItem,
|
|
40
|
+
ViewItem,
|
|
41
|
+
WebhookItem,
|
|
42
|
+
WeeklyInterval,
|
|
43
|
+
WorkbookItem,
|
|
44
|
+
)
|
|
45
|
+
from .server import (
|
|
46
|
+
CSVRequestOptions,
|
|
47
|
+
ExcelRequestOptions,
|
|
48
|
+
ImageRequestOptions,
|
|
49
|
+
PDFRequestOptions,
|
|
50
|
+
RequestOptions,
|
|
51
|
+
MissingRequiredFieldError,
|
|
52
|
+
NotSignedInError,
|
|
53
|
+
ServerResponseError,
|
|
54
|
+
Filter,
|
|
55
|
+
Pager,
|
|
56
|
+
Server,
|
|
57
|
+
Sort,
|
|
58
|
+
)
|
{tableauserverclient-0.26 → tableauserverclient-0.27.post0.dev1}/tableauserverclient/_version.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
# This file was generated by 'versioneer.py' (0.
|
|
2
|
+
# This file was generated by 'versioneer.py' (0.29) from
|
|
3
3
|
# revision-control system data, or from the parent directory name of an
|
|
4
4
|
# unpacked source archive. Distribution tarballs contain a pre-generated copy
|
|
5
5
|
# of this file.
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2023-
|
|
11
|
+
"date": "2023-10-04T00:33:03-0700",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"full-revisionid": "72eb3c8500193e4f20defa20c8a6f8bbf34b2f43",
|
|
15
|
+
"version": "0.27.post0.dev1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -31,7 +31,7 @@ from .server_info_item import ServerInfoItem
|
|
|
31
31
|
from .site_item import SiteItem
|
|
32
32
|
from .subscription_item import SubscriptionItem
|
|
33
33
|
from .table_item import TableItem
|
|
34
|
-
from .tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth
|
|
34
|
+
from .tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
|
|
35
35
|
from .tableau_types import Resource, TableauItem, plural_type
|
|
36
36
|
from .tag_item import TagItem
|
|
37
37
|
from .target import Target
|
|
@@ -15,6 +15,13 @@ class ConnectionCredentials(object):
|
|
|
15
15
|
self.embed = embed
|
|
16
16
|
self.oauth = oauth
|
|
17
17
|
|
|
18
|
+
def __repr__(self):
|
|
19
|
+
if self.password:
|
|
20
|
+
print = "redacted"
|
|
21
|
+
else:
|
|
22
|
+
print = "None"
|
|
23
|
+
return f"<{self.__class__.__name__} name={self.name} password={print} embed={self.embed} oauth={self.oauth} >"
|
|
24
|
+
|
|
18
25
|
@property
|
|
19
26
|
def embed(self):
|
|
20
27
|
return self._embed
|
|
@@ -134,6 +134,7 @@ class CustomViewItem(object):
|
|
|
134
134
|
cv_item._content_url = custom_view_xml.get("contentUrl", None)
|
|
135
135
|
cv_item._id = custom_view_xml.get("id", None)
|
|
136
136
|
cv_item._name = custom_view_xml.get("name", None)
|
|
137
|
+
cv_item._shared = string_to_bool(custom_view_xml.get("shared", None))
|
|
137
138
|
|
|
138
139
|
if owner_elem is not None:
|
|
139
140
|
parsed_owners = UserItem.from_response_as_owner(tostring(custom_view_xml), ns)
|
|
@@ -154,3 +155,7 @@ class CustomViewItem(object):
|
|
|
154
155
|
|
|
155
156
|
all_view_items.append(cv_item)
|
|
156
157
|
return all_view_items
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def string_to_bool(s: Optional[str]) -> bool:
|
|
161
|
+
return (s or "").lower() == "true"
|
|
@@ -46,6 +46,9 @@ class DataAccelerationReportItem(object):
|
|
|
46
46
|
def __init__(self, comparison_records):
|
|
47
47
|
self._comparison_records = comparison_records
|
|
48
48
|
|
|
49
|
+
def __repr__(self):
|
|
50
|
+
return f"<(deprecated)DataAccelerationReportItem site={self.site} sheet={sheet_uri}>"
|
|
51
|
+
|
|
49
52
|
@property
|
|
50
53
|
def comparison_records(self):
|
|
51
54
|
return self._comparison_records
|
|
@@ -326,17 +326,8 @@ class DatasourceItem(object):
|
|
|
326
326
|
updated_at = parse_datetime(datasource_xml.get("updatedAt", None))
|
|
327
327
|
certification_note = datasource_xml.get("certificationNote", None)
|
|
328
328
|
certified = str(datasource_xml.get("isCertified", None)).lower() == "true"
|
|
329
|
-
certification_note = datasource_xml.get("certificationNote", None)
|
|
330
|
-
certified = str(datasource_xml.get("isCertified", None)).lower() == "true"
|
|
331
|
-
content_url = datasource_xml.get("contentUrl", None)
|
|
332
|
-
created_at = parse_datetime(datasource_xml.get("createdAt", None))
|
|
333
|
-
datasource_type = datasource_xml.get("type", None)
|
|
334
|
-
description = datasource_xml.get("description", None)
|
|
335
329
|
encrypt_extracts = datasource_xml.get("encryptExtracts", None)
|
|
336
330
|
has_extracts = datasource_xml.get("hasExtracts", None)
|
|
337
|
-
id_ = datasource_xml.get("id", None)
|
|
338
|
-
name = datasource_xml.get("name", None)
|
|
339
|
-
updated_at = parse_datetime(datasource_xml.get("updatedAt", None))
|
|
340
331
|
use_remote_query_agent = datasource_xml.get("useRemoteQueryAgent", None)
|
|
341
332
|
webpage_url = datasource_xml.get("webpageUrl", None)
|
|
342
333
|
|
|
@@ -26,11 +26,9 @@ class GroupItem(object):
|
|
|
26
26
|
self.name: Optional[str] = name
|
|
27
27
|
self.domain_name: Optional[str] = domain_name
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def __repr__(self):
|
|
30
30
|
return "{}({!r})".format(self.__class__.__name__, self.__dict__)
|
|
31
31
|
|
|
32
|
-
__repr__ = __str__
|
|
33
|
-
|
|
34
32
|
@property
|
|
35
33
|
def domain_name(self) -> Optional[str]:
|
|
36
34
|
return self._domain_name
|
|
@@ -48,7 +46,6 @@ class GroupItem(object):
|
|
|
48
46
|
return self._name
|
|
49
47
|
|
|
50
48
|
@name.setter
|
|
51
|
-
@property_not_empty
|
|
52
49
|
def name(self, value: str) -> None:
|
|
53
50
|
self._name = value
|
|
54
51
|
|
|
@@ -31,6 +31,9 @@ class HourlyInterval(object):
|
|
|
31
31
|
self.end_time = end_time
|
|
32
32
|
self.interval = interval_value
|
|
33
33
|
|
|
34
|
+
def __repr__(self):
|
|
35
|
+
return f"<{self.__class__.__name__} start={self.start_time} end={self.end_time} interval={self.interval}>"
|
|
36
|
+
|
|
34
37
|
@property
|
|
35
38
|
def _frequency(self):
|
|
36
39
|
return IntervalItem.Frequency.Hourly
|
|
@@ -86,6 +89,9 @@ class DailyInterval(object):
|
|
|
86
89
|
self.start_time = start_time
|
|
87
90
|
self.interval = interval_values
|
|
88
91
|
|
|
92
|
+
def __repr__(self):
|
|
93
|
+
return f"<{self.__class__.__name__} start={self.start_time} interval={self.interval}>"
|
|
94
|
+
|
|
89
95
|
@property
|
|
90
96
|
def _frequency(self):
|
|
91
97
|
return IntervalItem.Frequency.Daily
|
|
@@ -114,6 +120,9 @@ class WeeklyInterval(object):
|
|
|
114
120
|
self.start_time = start_time
|
|
115
121
|
self.interval = interval_values
|
|
116
122
|
|
|
123
|
+
def __repr__(self):
|
|
124
|
+
return f"<{self.__class__.__name__} start={self.start_time} interval={self.interval}>"
|
|
125
|
+
|
|
117
126
|
@property
|
|
118
127
|
def _frequency(self):
|
|
119
128
|
return IntervalItem.Frequency.Weekly
|
|
@@ -148,6 +157,9 @@ class MonthlyInterval(object):
|
|
|
148
157
|
self.start_time = start_time
|
|
149
158
|
self.interval = str(interval_value)
|
|
150
159
|
|
|
160
|
+
def __repr__(self):
|
|
161
|
+
return f"<{self.__class__.__name__} start={self.start_time} interval={self.interval}>"
|
|
162
|
+
|
|
151
163
|
@property
|
|
152
164
|
def _frequency(self):
|
|
153
165
|
return IntervalItem.Frequency.Monthly
|
|
@@ -117,12 +117,15 @@ class JobItem(object):
|
|
|
117
117
|
def updated_at(self) -> Optional[datetime.datetime]:
|
|
118
118
|
return self._updated_at
|
|
119
119
|
|
|
120
|
-
def
|
|
120
|
+
def __str__(self):
|
|
121
121
|
return (
|
|
122
122
|
"<Job#{_id} {_type} created_at({_created_at}) started_at({_started_at}) updated_at({_updated_at}) completed_at({_completed_at})"
|
|
123
123
|
" progress ({_progress}) finish_code({_finish_code})>".format(**self.__dict__)
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
+
def __repr__(self):
|
|
127
|
+
return self.__str__() + " { " + ", ".join(" % s: % s" % item for item in vars(self).items()) + "}"
|
|
128
|
+
|
|
126
129
|
@classmethod
|
|
127
130
|
def from_response(cls, xml, ns) -> List["JobItem"]:
|
|
128
131
|
parsed_response = fromstring(xml)
|
|
@@ -202,6 +205,12 @@ class BackgroundJobItem(object):
|
|
|
202
205
|
self._title = title
|
|
203
206
|
self._subtitle = subtitle
|
|
204
207
|
|
|
208
|
+
def __str__(self):
|
|
209
|
+
return f"<{self.__class__.name} {self._id} {self._type}>"
|
|
210
|
+
|
|
211
|
+
def __repr__(self):
|
|
212
|
+
return self.__str__() + " { " + ", ".join(" % s: % s" % item for item in vars(self).items()) + "}"
|
|
213
|
+
|
|
205
214
|
@property
|
|
206
215
|
def id(self) -> str:
|
|
207
216
|
return self._id
|
|
@@ -115,9 +115,12 @@ class MetricItem(object):
|
|
|
115
115
|
def _set_permissions(self, permissions):
|
|
116
116
|
self._permissions = permissions
|
|
117
117
|
|
|
118
|
-
def
|
|
118
|
+
def __str__(self):
|
|
119
119
|
return "<MetricItem# name={_name} id={_id} owner_id={_owner_id}>".format(**vars(self))
|
|
120
120
|
|
|
121
|
+
def __repr__(self):
|
|
122
|
+
return self.__str__() + " { " + ", ".join(" % s: % s" % item for item in vars(self).items()) + "}"
|
|
123
|
+
|
|
121
124
|
@classmethod
|
|
122
125
|
def from_response(
|
|
123
126
|
cls,
|