tableauserverclient 0.36__tar.gz → 0.38__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.36 → tableauserverclient-0.38}/PKG-INFO +3 -2
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/extracts.py +0 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/__init__.py +6 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/bin/_version.py +3 -3
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/helpers/strings.py +25 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/__init__.py +6 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/connection_item.py +3 -3
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/datasource_item.py +218 -23
- tableauserverclient-0.38/tableauserverclient/models/extract_item.py +82 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/flow_item.py +2 -2
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/group_item.py +11 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/interval_item.py +40 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/job_item.py +1 -0
- tableauserverclient-0.38/tableauserverclient/models/location_item.py +53 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/project_item.py +138 -27
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/schedule_item.py +57 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/site_item.py +28 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/table_item.py +7 -3
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/tableau_types.py +13 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/user_item.py +101 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/view_item.py +79 -5
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/workbook_item.py +151 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/__init__.py +2 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/databases_endpoint.py +101 -18
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/datasources_endpoint.py +562 -7
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/dqw_endpoint.py +16 -6
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/endpoint.py +39 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/exceptions.py +4 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +1 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/groupsets_endpoint.py +2 -2
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/jobs_endpoint.py +1 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/schedules_endpoint.py +132 -2
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/sites_endpoint.py +18 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/tables_endpoint.py +140 -17
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/users_endpoint.py +22 -5
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/views_endpoint.py +5 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/workbooks_endpoint.py +24 -10
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/query.py +36 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/request_factory.py +16 -5
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/request_options.py +162 -2
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/server.py +42 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient.egg-info/PKG-INFO +3 -2
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient.egg-info/SOURCES.txt +14 -0
- tableauserverclient-0.38/test/assets/datasource_get_all_fields.xml +10 -0
- tableauserverclient-0.38/test/assets/group_get_all_fields.xml +14 -0
- tableauserverclient-0.38/test/assets/job_get_by_id_completed.xml +14 -0
- tableauserverclient-0.38/test/assets/project_get_all_fields.xml +9 -0
- tableauserverclient-0.38/test/assets/schedule_get_extract_refresh_tasks.xml +15 -0
- tableauserverclient-0.38/test/assets/site_auth_configurations.xml +18 -0
- tableauserverclient-0.38/test/assets/user_get_all_fields.xml +11 -0
- tableauserverclient-0.38/test/assets/view_get_all_fields.xml +35 -0
- tableauserverclient-0.38/test/assets/virtual_connection_populate_connections2.xml +6 -0
- tableauserverclient-0.38/test/assets/workbook_get_all_fields.xml +46 -0
- tableauserverclient-0.38/test/request_factory/test_task_requests.py +47 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_datasource.py +38 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_group.py +23 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_job.py +12 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_project.py +26 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_request_option.py +11 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_schedule.py +18 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_site.py +26 -0
- tableauserverclient-0.38/test/test_ssl_config.py +77 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_user.py +88 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_view.py +153 -1
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_virtual_connection.py +23 -17
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_workbook.py +153 -4
- {tableauserverclient-0.36 → tableauserverclient-0.38}/CHANGELOG.md +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/CONTRIBUTORS.md +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/LICENSE +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/MANIFEST.in +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/README.md +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/contributing.md +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/docs/README.md +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/pyproject.toml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/add_default_permission.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/create_extract_task.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/create_group.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/create_project.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/create_schedules.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/explore_datasource.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/explore_favorites.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/explore_site.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/explore_webhooks.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/explore_workbook.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/export.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/filter_sort_groups.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/filter_sort_projects.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/getting_started/1_hello_server.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/getting_started/2_hello_site.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/getting_started/3_hello_universe.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/initialize_server.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/kill_all_jobs.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/list.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/login.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/metadata_query.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/move_workbook_projects.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/move_workbook_sites.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/name.txt +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/pagination_sample.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/publish_datasource.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/publish_workbook.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/query_permissions.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/refresh.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/refresh_tasks.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/set_refresh_schedule.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/smoke_test.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/update_connection.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/update_datasource_data.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/samples/update_workbook_data_freshness_policy.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/setup.cfg +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/setup.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/config.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/datetime_helpers.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/exponential_backoff.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/filesys_helpers.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/helpers/__init__.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/helpers/headers.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/helpers/logging.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/column_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/connection_credentials.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/custom_view_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/data_acceleration_report_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/data_alert_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/data_freshness_policy_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/database_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/dqw_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/exceptions.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/favorites_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/fileupload_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/flow_run_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/groupset_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/linked_tasks_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/metric_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/pagination_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/permissions_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/property_decorators.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/reference_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/revision_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/server_info_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/subscription_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/tableau_auth.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/tag_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/target.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/task_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/virtual_connection_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/webhook_item.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/namespace.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/__init__.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/auth_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/flow_task_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/flows_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/groups_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/linked_tasks_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/metadata_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/metrics_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/projects_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/tasks_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/virtual_connections_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/exceptions.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/filter.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/pager.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/server/sort.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient.egg-info/dependency_links.txt +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient.egg-info/requires.txt +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient.egg-info/top_level.txt +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/__init__.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/_utils.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/Data/user_details.csv +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/Data/usernames.csv +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/RESTAPISample Image.png +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/Sample View Image.png +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/World Indicators.hyper +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/auth_sign_in.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/auth_sign_in_error.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/auth_sign_in_impersonate.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/custom_view_download.json +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/custom_view_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/custom_view_get_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/custom_view_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/data_acceleration_report.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/data_alerts_add_user.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/data_alerts_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/data_alerts_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/data_alerts_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/database_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/database_populate_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/database_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_add_tags.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_connection_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_data_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_get_empty.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_populate_connections.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_populate_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_publish.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_publish_async.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_refresh.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_revision.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/datasource_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/dqw_by_content_type.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/favorites_add_datasource.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/favorites_add_project.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/favorites_add_view.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/favorites_add_workbook.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/favorites_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/fileupload_append.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/fileupload_initialize.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_populate_connections.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_populate_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_publish.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_refresh.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_runs_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_runs_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/flow_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_add_user.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_add_users.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_create.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_create_ad.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_create_async.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_populate_users.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_populate_users_empty.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_update_async.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/group_users_added.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/groupsets_create.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/groupsets_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/groupsets_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/groupsets_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/job_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/job_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/job_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/job_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/linked_tasks_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/linked_tasks_run_now.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metadata_paged_1.json +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metadata_paged_2.json +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metadata_paged_3.json +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metadata_query_error.json +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metadata_query_expected_dict.dict +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metadata_query_success.json +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metrics_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metrics_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/metrics_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/odata_connection.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/populate_csv.csv +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/populate_pdf.pdf +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_content_permission.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_create.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_populate_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_populate_virtualconnection_default_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_update_datasource_default_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/project_update_virtualconnection_default_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/queryset_slicing_page_1.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/queryset_slicing_page_2.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_filter_equals.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_filter_name_in.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_filter_tags_in.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_page_number.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_page_size.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_pagination.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/request_option_slicing_queryset.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_add_datasource.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_add_flow.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_add_workbook.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_create_daily.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_create_hourly.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_create_monthly.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_create_weekly.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get_daily_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get_empty.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get_hourly_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get_monthly_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_get_monthly_id_2.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/schedule_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/server_info_25.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/server_info_404.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/server_info_auth_info.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/server_info_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/site_create.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/site_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/site_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/site_get_by_name.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/site_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/subscription_create.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/subscription_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/subscription_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/table_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/table_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_create_extract_task.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_create_flow_task.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_run_now_response.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_with_datasource.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_with_interval.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_with_workbook.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/tasks_without_schedule.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_add.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_add_favorite.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_get_empty.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_populate_groups.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_populate_workbooks.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/user_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_add_tags.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_get_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_get_id_usage.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_get_usage.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_populate_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/view_update_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connection_add_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connection_database_connection_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connection_populate_connections.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connections_download.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connections_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connections_publish.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connections_revisions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/virtual_connections_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/webhook_create.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/webhook_create_request.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/webhook_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_add_tags.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_by_id.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_by_id_personal.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_empty.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_invalid_date.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_page_1.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_page_2.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_get_page_3.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_populate_connections.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_populate_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_populate_views.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_populate_views_usage.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_publish.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_publish_async.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_refresh.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_revision.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_acceleration_status.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_permissions.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/http/test_http_requests.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/models/_models.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/models/test_repr.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/request_factory/__init__.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/request_factory/test_datasource_requests.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/request_factory/test_workbook_requests.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_auth.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_connection_.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_custom_view.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_data_acceleration_report.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_data_freshness_policy.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_dataalert.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_database.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_datasource_model.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_dqw.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_endpoint.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_exponential_backoff.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_favorites.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_filesys_helpers.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_fileuploads.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_filter.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_flow.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_flowruns.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_flowtask.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_group_model.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_groupsets.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_linked_tasks.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_metadata.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_metrics.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_pager.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_permissionsrule.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_project_model.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_regression_tests.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_requests.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_server_info.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_site_model.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_sort.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_subscription.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_table.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_tableauauth_model.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_tagging.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_task.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_user_model.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_view_acceleration.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_webhook.py +0 -0
- {tableauserverclient-0.36 → tableauserverclient-0.38}/test/test_workbook_model.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: tableauserverclient
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.38
|
|
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)
|
|
@@ -50,6 +50,7 @@ Requires-Dist: pytest>=7.0; extra == "test"
|
|
|
50
50
|
Requires-Dist: pytest-cov; extra == "test"
|
|
51
51
|
Requires-Dist: pytest-subtests; extra == "test"
|
|
52
52
|
Requires-Dist: requests-mock<2.0,>=1.0; extra == "test"
|
|
53
|
+
Dynamic: license-file
|
|
53
54
|
|
|
54
55
|
# Tableau Server Client (Python)
|
|
55
56
|
|
|
@@ -25,6 +25,7 @@ from tableauserverclient.models import (
|
|
|
25
25
|
LinkedTaskItem,
|
|
26
26
|
LinkedTaskStepItem,
|
|
27
27
|
LinkedTaskFlowRunItem,
|
|
28
|
+
LocationItem,
|
|
28
29
|
MetricItem,
|
|
29
30
|
MonthlyInterval,
|
|
30
31
|
PaginationItem,
|
|
@@ -35,6 +36,7 @@ from tableauserverclient.models import (
|
|
|
35
36
|
Resource,
|
|
36
37
|
RevisionItem,
|
|
37
38
|
ScheduleItem,
|
|
39
|
+
SiteAuthConfiguration,
|
|
38
40
|
SiteItem,
|
|
39
41
|
ServerInfoItem,
|
|
40
42
|
SubscriptionItem,
|
|
@@ -56,6 +58,7 @@ from tableauserverclient.server import (
|
|
|
56
58
|
ExcelRequestOptions,
|
|
57
59
|
ImageRequestOptions,
|
|
58
60
|
PDFRequestOptions,
|
|
61
|
+
PPTXRequestOptions,
|
|
59
62
|
RequestOptions,
|
|
60
63
|
MissingRequiredFieldError,
|
|
61
64
|
FailedSignInError,
|
|
@@ -100,6 +103,7 @@ __all__ = [
|
|
|
100
103
|
"LinkedTaskFlowRunItem",
|
|
101
104
|
"LinkedTaskItem",
|
|
102
105
|
"LinkedTaskStepItem",
|
|
106
|
+
"LocationItem",
|
|
103
107
|
"MetricItem",
|
|
104
108
|
"MissingRequiredFieldError",
|
|
105
109
|
"MonthlyInterval",
|
|
@@ -107,6 +111,7 @@ __all__ = [
|
|
|
107
111
|
"Pager",
|
|
108
112
|
"PaginationItem",
|
|
109
113
|
"PDFRequestOptions",
|
|
114
|
+
"PPTXRequestOptions",
|
|
110
115
|
"Permission",
|
|
111
116
|
"PermissionsRule",
|
|
112
117
|
"PersonalAccessTokenAuth",
|
|
@@ -119,6 +124,7 @@ __all__ = [
|
|
|
119
124
|
"ServerInfoItem",
|
|
120
125
|
"ServerResponseError",
|
|
121
126
|
"SiteItem",
|
|
127
|
+
"SiteAuthConfiguration",
|
|
122
128
|
"Sort",
|
|
123
129
|
"SubscriptionItem",
|
|
124
130
|
"TableauAuth",
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-
|
|
11
|
+
"date": "2025-05-15T14:21:50-0700",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"full-revisionid": "cda018b684c98200f3f9de11e379ba2ca3b1b3fe",
|
|
15
|
+
"version": "0.38"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
{tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/helpers/strings.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from defusedxml.ElementTree import fromstring, tostring
|
|
2
2
|
from functools import singledispatch
|
|
3
|
-
from typing import TypeVar
|
|
3
|
+
from typing import TypeVar, overload
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
# the redact method can handle either strings or bytes, but it can't mix them.
|
|
@@ -41,3 +41,27 @@ def _(xml: str) -> str:
|
|
|
41
41
|
@redact_xml.register # type: ignore[no-redef]
|
|
42
42
|
def _(xml: bytes) -> bytes:
|
|
43
43
|
return _redact_any_type(bytearray(xml), b"password", b"..[redacted]")
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@overload
|
|
47
|
+
def nullable_str_to_int(value: None) -> None: ...
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@overload
|
|
51
|
+
def nullable_str_to_int(value: str) -> int: ...
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def nullable_str_to_int(value):
|
|
55
|
+
return int(value) if value is not None else None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@overload
|
|
59
|
+
def nullable_str_to_bool(value: None) -> None: ...
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@overload
|
|
63
|
+
def nullable_str_to_bool(value: str) -> bool: ...
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def nullable_str_to_bool(value):
|
|
67
|
+
return str(value).lower() == "true" if value is not None else None
|
{tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/__init__.py
RENAMED
|
@@ -28,6 +28,7 @@ from tableauserverclient.models.linked_tasks_item import (
|
|
|
28
28
|
LinkedTaskStepItem,
|
|
29
29
|
LinkedTaskFlowRunItem,
|
|
30
30
|
)
|
|
31
|
+
from tableauserverclient.models.location_item import LocationItem
|
|
31
32
|
from tableauserverclient.models.metric_item import MetricItem
|
|
32
33
|
from tableauserverclient.models.pagination_item import PaginationItem
|
|
33
34
|
from tableauserverclient.models.permissions_item import PermissionsRule, Permission
|
|
@@ -35,7 +36,7 @@ from tableauserverclient.models.project_item import ProjectItem
|
|
|
35
36
|
from tableauserverclient.models.revision_item import RevisionItem
|
|
36
37
|
from tableauserverclient.models.schedule_item import ScheduleItem
|
|
37
38
|
from tableauserverclient.models.server_info_item import ServerInfoItem
|
|
38
|
-
from tableauserverclient.models.site_item import SiteItem
|
|
39
|
+
from tableauserverclient.models.site_item import SiteItem, SiteAuthConfiguration
|
|
39
40
|
from tableauserverclient.models.subscription_item import SubscriptionItem
|
|
40
41
|
from tableauserverclient.models.table_item import TableItem
|
|
41
42
|
from tableauserverclient.models.tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
|
|
@@ -48,6 +49,7 @@ from tableauserverclient.models.view_item import ViewItem
|
|
|
48
49
|
from tableauserverclient.models.virtual_connection_item import VirtualConnectionItem
|
|
49
50
|
from tableauserverclient.models.webhook_item import WebhookItem
|
|
50
51
|
from tableauserverclient.models.workbook_item import WorkbookItem
|
|
52
|
+
from tableauserverclient.models.extract_item import ExtractItem
|
|
51
53
|
|
|
52
54
|
__all__ = [
|
|
53
55
|
"ColumnItem",
|
|
@@ -75,6 +77,7 @@ __all__ = [
|
|
|
75
77
|
"MonthlyInterval",
|
|
76
78
|
"HourlyInterval",
|
|
77
79
|
"BackgroundJobItem",
|
|
80
|
+
"LocationItem",
|
|
78
81
|
"MetricItem",
|
|
79
82
|
"PaginationItem",
|
|
80
83
|
"Permission",
|
|
@@ -83,6 +86,7 @@ __all__ = [
|
|
|
83
86
|
"RevisionItem",
|
|
84
87
|
"ScheduleItem",
|
|
85
88
|
"ServerInfoItem",
|
|
89
|
+
"SiteAuthConfiguration",
|
|
86
90
|
"SiteItem",
|
|
87
91
|
"SubscriptionItem",
|
|
88
92
|
"TableItem",
|
|
@@ -103,4 +107,5 @@ __all__ = [
|
|
|
103
107
|
"LinkedTaskItem",
|
|
104
108
|
"LinkedTaskStepItem",
|
|
105
109
|
"LinkedTaskFlowRunItem",
|
|
110
|
+
"ExtractItem",
|
|
106
111
|
]
|
{tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/connection_item.py
RENAMED
|
@@ -103,11 +103,11 @@ class ConnectionItem:
|
|
|
103
103
|
all_connection_xml = parsed_response.findall(".//t:connection", namespaces=ns)
|
|
104
104
|
for connection_xml in all_connection_xml:
|
|
105
105
|
connection_item = cls()
|
|
106
|
-
connection_item._id = connection_xml.get("id", None)
|
|
106
|
+
connection_item._id = connection_xml.get("id", connection_xml.get("connectionId", None))
|
|
107
107
|
connection_item._connection_type = connection_xml.get("type", connection_xml.get("dbClass", None))
|
|
108
108
|
connection_item.embed_password = string_to_bool(connection_xml.get("embedPassword", ""))
|
|
109
|
-
connection_item.server_address = connection_xml.get("serverAddress", None)
|
|
110
|
-
connection_item.server_port = connection_xml.get("serverPort", None)
|
|
109
|
+
connection_item.server_address = connection_xml.get("serverAddress", connection_xml.get("server", None))
|
|
110
|
+
connection_item.server_port = connection_xml.get("serverPort", connection_xml.get("port", None))
|
|
111
111
|
connection_item.username = connection_xml.get("userName", None)
|
|
112
112
|
connection_item._query_tagging = (
|
|
113
113
|
string_to_bool(s) if (s := connection_xml.get("queryTagging", None)) else None
|
{tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/datasource_item.py
RENAMED
|
@@ -6,9 +6,11 @@ from typing import Optional
|
|
|
6
6
|
from defusedxml.ElementTree import fromstring
|
|
7
7
|
|
|
8
8
|
from tableauserverclient.datetime_helpers import parse_datetime
|
|
9
|
+
from tableauserverclient.helpers.strings import nullable_str_to_bool, nullable_str_to_int
|
|
9
10
|
from tableauserverclient.models.connection_item import ConnectionItem
|
|
10
11
|
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
|
|
11
12
|
from tableauserverclient.models.permissions_item import PermissionsRule
|
|
13
|
+
from tableauserverclient.models.project_item import ProjectItem
|
|
12
14
|
from tableauserverclient.models.property_decorators import (
|
|
13
15
|
property_not_nullable,
|
|
14
16
|
property_is_boolean,
|
|
@@ -16,9 +18,118 @@ from tableauserverclient.models.property_decorators import (
|
|
|
16
18
|
)
|
|
17
19
|
from tableauserverclient.models.revision_item import RevisionItem
|
|
18
20
|
from tableauserverclient.models.tag_item import TagItem
|
|
21
|
+
from tableauserverclient.models.user_item import UserItem
|
|
19
22
|
|
|
20
23
|
|
|
21
24
|
class DatasourceItem:
|
|
25
|
+
"""
|
|
26
|
+
Represents a Tableau datasource item.
|
|
27
|
+
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
project_id : Optional[str]
|
|
31
|
+
The project ID that the datasource belongs to.
|
|
32
|
+
|
|
33
|
+
name : Optional[str]
|
|
34
|
+
The name of the datasource.
|
|
35
|
+
|
|
36
|
+
Attributes
|
|
37
|
+
----------
|
|
38
|
+
ask_data_enablement : Optional[str]
|
|
39
|
+
Determines if a data source allows use of Ask Data. The value can be
|
|
40
|
+
TSC.DatasourceItem.AskDataEnablement.Enabled,
|
|
41
|
+
TSC.DatasourceItem.AskDataEnablement.Disabled, or
|
|
42
|
+
TSC.DatasourceItem.AskDataEnablement.SiteDefault. If no setting is
|
|
43
|
+
specified, it will default to SiteDefault. See REST API Publish
|
|
44
|
+
Datasource for more information about ask_data_enablement.
|
|
45
|
+
|
|
46
|
+
connected_workbooks_count : Optional[int]
|
|
47
|
+
The number of workbooks connected to the datasource.
|
|
48
|
+
|
|
49
|
+
connections : list[ConnectionItem]
|
|
50
|
+
The list of data connections (ConnectionItem) for the specified data
|
|
51
|
+
source. You must first call the populate_connections method to access
|
|
52
|
+
this data. See the ConnectionItem class.
|
|
53
|
+
|
|
54
|
+
content_url : Optional[str]
|
|
55
|
+
The name of the data source as it would appear in a URL.
|
|
56
|
+
|
|
57
|
+
created_at : Optional[datetime.datetime]
|
|
58
|
+
The time the data source was created.
|
|
59
|
+
|
|
60
|
+
certified : Optional[bool]
|
|
61
|
+
A Boolean value that indicates whether the data source is certified.
|
|
62
|
+
|
|
63
|
+
certification_note : Optional[str]
|
|
64
|
+
The optional note that describes the certified data source.
|
|
65
|
+
|
|
66
|
+
datasource_type : Optional[str]
|
|
67
|
+
The type of data source, for example, sqlserver or excel-direct.
|
|
68
|
+
|
|
69
|
+
description : Optional[str]
|
|
70
|
+
The description for the data source.
|
|
71
|
+
|
|
72
|
+
encrypt_extracts : Optional[bool]
|
|
73
|
+
A Boolean value to determine if a datasource should be encrypted or not.
|
|
74
|
+
See Extract and Encryption Methods for more information.
|
|
75
|
+
|
|
76
|
+
favorites_total : Optional[int]
|
|
77
|
+
The number of users who have marked the data source as a favorite.
|
|
78
|
+
|
|
79
|
+
has_alert : Optional[bool]
|
|
80
|
+
A Boolean value that indicates whether the data source has an alert.
|
|
81
|
+
|
|
82
|
+
has_extracts : Optional[bool]
|
|
83
|
+
A Boolean value that indicates whether the datasource has extracts.
|
|
84
|
+
|
|
85
|
+
id : Optional[str]
|
|
86
|
+
The identifier for the data source. You need this value to query a
|
|
87
|
+
specific data source or to delete a data source with the get_by_id and
|
|
88
|
+
delete methods.
|
|
89
|
+
|
|
90
|
+
is_published : Optional[bool]
|
|
91
|
+
A Boolean value that indicates whether the data source is published.
|
|
92
|
+
|
|
93
|
+
name : Optional[str]
|
|
94
|
+
The name of the data source. If not specified, the name of the published
|
|
95
|
+
data source file is used.
|
|
96
|
+
|
|
97
|
+
owner: Optional[UserItem]
|
|
98
|
+
The owner of the data source.
|
|
99
|
+
|
|
100
|
+
owner_id : Optional[str]
|
|
101
|
+
The identifier of the owner of the data source.
|
|
102
|
+
|
|
103
|
+
project : Optional[ProjectItem]
|
|
104
|
+
The project that the data source belongs to.
|
|
105
|
+
|
|
106
|
+
project_id : Optional[str]
|
|
107
|
+
The identifier of the project associated with the data source. You must
|
|
108
|
+
provide this identifier when you create an instance of a DatasourceItem.
|
|
109
|
+
|
|
110
|
+
project_name : Optional[str]
|
|
111
|
+
The name of the project associated with the data source.
|
|
112
|
+
|
|
113
|
+
server_name : Optional[str]
|
|
114
|
+
The name of the server where the data source is published.
|
|
115
|
+
|
|
116
|
+
tags : Optional[set[str]]
|
|
117
|
+
The tags (list of strings) that have been added to the data source.
|
|
118
|
+
|
|
119
|
+
updated_at : Optional[datetime.datetime]
|
|
120
|
+
The date and time when the data source was last updated.
|
|
121
|
+
|
|
122
|
+
use_remote_query_agent : Optional[bool]
|
|
123
|
+
A Boolean value that indicates whether to allow or disallow your Tableau
|
|
124
|
+
Cloud site to use Tableau Bridge clients. Bridge allows you to maintain
|
|
125
|
+
data sources with live connections to supported on-premises data
|
|
126
|
+
sources. See Configure and Manage the Bridge Client Pool for more
|
|
127
|
+
information.
|
|
128
|
+
|
|
129
|
+
webpage_url : Optional[str]
|
|
130
|
+
The url of the datasource as displayed in browsers.
|
|
131
|
+
"""
|
|
132
|
+
|
|
22
133
|
class AskDataEnablement:
|
|
23
134
|
Enabled = "Enabled"
|
|
24
135
|
Disabled = "Disabled"
|
|
@@ -33,29 +144,36 @@ class DatasourceItem:
|
|
|
33
144
|
)
|
|
34
145
|
|
|
35
146
|
def __init__(self, project_id: Optional[str] = None, name: Optional[str] = None) -> None:
|
|
36
|
-
self._ask_data_enablement = None
|
|
37
|
-
self._certified = None
|
|
38
|
-
self._certification_note = None
|
|
39
|
-
self._connections = None
|
|
147
|
+
self._ask_data_enablement: Optional[str] = None
|
|
148
|
+
self._certified: Optional[bool] = None
|
|
149
|
+
self._certification_note: Optional[str] = None
|
|
150
|
+
self._connections: Optional[list[ConnectionItem]] = None
|
|
40
151
|
self._content_url: Optional[str] = None
|
|
41
|
-
self._created_at = None
|
|
42
|
-
self._datasource_type = None
|
|
43
|
-
self._description = None
|
|
44
|
-
self._encrypt_extracts = None
|
|
45
|
-
self._has_extracts = None
|
|
152
|
+
self._created_at: Optional[datetime.datetime] = None
|
|
153
|
+
self._datasource_type: Optional[str] = None
|
|
154
|
+
self._description: Optional[str] = None
|
|
155
|
+
self._encrypt_extracts: Optional[bool] = None
|
|
156
|
+
self._has_extracts: Optional[bool] = None
|
|
46
157
|
self._id: Optional[str] = None
|
|
47
158
|
self._initial_tags: set = set()
|
|
48
159
|
self._project_name: Optional[str] = None
|
|
49
160
|
self._revisions = None
|
|
50
161
|
self._size: Optional[int] = None
|
|
51
|
-
self._updated_at = None
|
|
52
|
-
self._use_remote_query_agent = None
|
|
53
|
-
self._webpage_url = None
|
|
54
|
-
self.description = None
|
|
55
|
-
self.name = name
|
|
162
|
+
self._updated_at: Optional[datetime.datetime] = None
|
|
163
|
+
self._use_remote_query_agent: Optional[bool] = None
|
|
164
|
+
self._webpage_url: Optional[str] = None
|
|
165
|
+
self.description: Optional[str] = None
|
|
166
|
+
self.name: Optional[str] = name
|
|
56
167
|
self.owner_id: Optional[str] = None
|
|
57
|
-
self.project_id = project_id
|
|
168
|
+
self.project_id: Optional[str] = project_id
|
|
58
169
|
self.tags: set[str] = set()
|
|
170
|
+
self._connected_workbooks_count: Optional[int] = None
|
|
171
|
+
self._favorites_total: Optional[int] = None
|
|
172
|
+
self._has_alert: Optional[bool] = None
|
|
173
|
+
self._is_published: Optional[bool] = None
|
|
174
|
+
self._server_name: Optional[str] = None
|
|
175
|
+
self._project: Optional[ProjectItem] = None
|
|
176
|
+
self._owner: Optional[UserItem] = None
|
|
59
177
|
|
|
60
178
|
self._permissions = None
|
|
61
179
|
self._data_quality_warnings = None
|
|
@@ -63,16 +181,16 @@ class DatasourceItem:
|
|
|
63
181
|
return None
|
|
64
182
|
|
|
65
183
|
@property
|
|
66
|
-
def ask_data_enablement(self) -> Optional[
|
|
184
|
+
def ask_data_enablement(self) -> Optional[str]:
|
|
67
185
|
return self._ask_data_enablement
|
|
68
186
|
|
|
69
187
|
@ask_data_enablement.setter
|
|
70
188
|
@property_is_enum(AskDataEnablement)
|
|
71
|
-
def ask_data_enablement(self, value: Optional[
|
|
189
|
+
def ask_data_enablement(self, value: Optional[str]):
|
|
72
190
|
self._ask_data_enablement = value
|
|
73
191
|
|
|
74
192
|
@property
|
|
75
|
-
def connections(self)
|
|
193
|
+
def connections(self):
|
|
76
194
|
if self._connections is None:
|
|
77
195
|
error = "Datasource item must be populated with connections first."
|
|
78
196
|
raise UnpopulatedPropertyError(error)
|
|
@@ -112,7 +230,7 @@ class DatasourceItem:
|
|
|
112
230
|
self._certification_note = value
|
|
113
231
|
|
|
114
232
|
@property
|
|
115
|
-
def encrypt_extracts(self):
|
|
233
|
+
def encrypt_extracts(self) -> Optional[bool]:
|
|
116
234
|
return self._encrypt_extracts
|
|
117
235
|
|
|
118
236
|
@encrypt_extracts.setter
|
|
@@ -156,7 +274,7 @@ class DatasourceItem:
|
|
|
156
274
|
return self._description
|
|
157
275
|
|
|
158
276
|
@description.setter
|
|
159
|
-
def description(self, value: str):
|
|
277
|
+
def description(self, value: Optional[str]):
|
|
160
278
|
self._description = value
|
|
161
279
|
|
|
162
280
|
@property
|
|
@@ -187,14 +305,42 @@ class DatasourceItem:
|
|
|
187
305
|
def size(self) -> Optional[int]:
|
|
188
306
|
return self._size
|
|
189
307
|
|
|
190
|
-
|
|
308
|
+
@property
|
|
309
|
+
def connected_workbooks_count(self) -> Optional[int]:
|
|
310
|
+
return self._connected_workbooks_count
|
|
311
|
+
|
|
312
|
+
@property
|
|
313
|
+
def favorites_total(self) -> Optional[int]:
|
|
314
|
+
return self._favorites_total
|
|
315
|
+
|
|
316
|
+
@property
|
|
317
|
+
def has_alert(self) -> Optional[bool]:
|
|
318
|
+
return self._has_alert
|
|
319
|
+
|
|
320
|
+
@property
|
|
321
|
+
def is_published(self) -> Optional[bool]:
|
|
322
|
+
return self._is_published
|
|
323
|
+
|
|
324
|
+
@property
|
|
325
|
+
def server_name(self) -> Optional[str]:
|
|
326
|
+
return self._server_name
|
|
327
|
+
|
|
328
|
+
@property
|
|
329
|
+
def project(self) -> Optional[ProjectItem]:
|
|
330
|
+
return self._project
|
|
331
|
+
|
|
332
|
+
@property
|
|
333
|
+
def owner(self) -> Optional[UserItem]:
|
|
334
|
+
return self._owner
|
|
335
|
+
|
|
336
|
+
def _set_connections(self, connections) -> None:
|
|
191
337
|
self._connections = connections
|
|
192
338
|
|
|
193
339
|
def _set_permissions(self, permissions):
|
|
194
340
|
self._permissions = permissions
|
|
195
341
|
|
|
196
|
-
def _set_data_quality_warnings(self,
|
|
197
|
-
self._data_quality_warnings =
|
|
342
|
+
def _set_data_quality_warnings(self, dqw):
|
|
343
|
+
self._data_quality_warnings = dqw
|
|
198
344
|
|
|
199
345
|
def _set_revisions(self, revisions):
|
|
200
346
|
self._revisions = revisions
|
|
@@ -223,6 +369,13 @@ class DatasourceItem:
|
|
|
223
369
|
use_remote_query_agent,
|
|
224
370
|
webpage_url,
|
|
225
371
|
size,
|
|
372
|
+
connected_workbooks_count,
|
|
373
|
+
favorites_total,
|
|
374
|
+
has_alert,
|
|
375
|
+
is_published,
|
|
376
|
+
server_name,
|
|
377
|
+
project,
|
|
378
|
+
owner,
|
|
226
379
|
) = self._parse_element(datasource_xml, ns)
|
|
227
380
|
self._set_values(
|
|
228
381
|
ask_data_enablement,
|
|
@@ -244,6 +397,13 @@ class DatasourceItem:
|
|
|
244
397
|
use_remote_query_agent,
|
|
245
398
|
webpage_url,
|
|
246
399
|
size,
|
|
400
|
+
connected_workbooks_count,
|
|
401
|
+
favorites_total,
|
|
402
|
+
has_alert,
|
|
403
|
+
is_published,
|
|
404
|
+
server_name,
|
|
405
|
+
project,
|
|
406
|
+
owner,
|
|
247
407
|
)
|
|
248
408
|
return self
|
|
249
409
|
|
|
@@ -268,6 +428,13 @@ class DatasourceItem:
|
|
|
268
428
|
use_remote_query_agent,
|
|
269
429
|
webpage_url,
|
|
270
430
|
size,
|
|
431
|
+
connected_workbooks_count,
|
|
432
|
+
favorites_total,
|
|
433
|
+
has_alert,
|
|
434
|
+
is_published,
|
|
435
|
+
server_name,
|
|
436
|
+
project,
|
|
437
|
+
owner,
|
|
271
438
|
):
|
|
272
439
|
if ask_data_enablement is not None:
|
|
273
440
|
self._ask_data_enablement = ask_data_enablement
|
|
@@ -307,6 +474,20 @@ class DatasourceItem:
|
|
|
307
474
|
self._webpage_url = webpage_url
|
|
308
475
|
if size is not None:
|
|
309
476
|
self._size = int(size)
|
|
477
|
+
if connected_workbooks_count is not None:
|
|
478
|
+
self._connected_workbooks_count = connected_workbooks_count
|
|
479
|
+
if favorites_total is not None:
|
|
480
|
+
self._favorites_total = favorites_total
|
|
481
|
+
if has_alert is not None:
|
|
482
|
+
self._has_alert = has_alert
|
|
483
|
+
if is_published is not None:
|
|
484
|
+
self._is_published = is_published
|
|
485
|
+
if server_name is not None:
|
|
486
|
+
self._server_name = server_name
|
|
487
|
+
if project is not None:
|
|
488
|
+
self._project = project
|
|
489
|
+
if owner is not None:
|
|
490
|
+
self._owner = owner
|
|
310
491
|
|
|
311
492
|
@classmethod
|
|
312
493
|
def from_response(cls, resp: str, ns: dict) -> list["DatasourceItem"]:
|
|
@@ -341,6 +522,11 @@ class DatasourceItem:
|
|
|
341
522
|
use_remote_query_agent = datasource_xml.get("useRemoteQueryAgent", None)
|
|
342
523
|
webpage_url = datasource_xml.get("webpageUrl", None)
|
|
343
524
|
size = datasource_xml.get("size", None)
|
|
525
|
+
connected_workbooks_count = nullable_str_to_int(datasource_xml.get("connectedWorkbooksCount", None))
|
|
526
|
+
favorites_total = nullable_str_to_int(datasource_xml.get("favoritesTotal", None))
|
|
527
|
+
has_alert = nullable_str_to_bool(datasource_xml.get("hasAlert", None))
|
|
528
|
+
is_published = nullable_str_to_bool(datasource_xml.get("isPublished", None))
|
|
529
|
+
server_name = datasource_xml.get("serverName", None)
|
|
344
530
|
|
|
345
531
|
tags = None
|
|
346
532
|
tags_elem = datasource_xml.find(".//t:tags", namespaces=ns)
|
|
@@ -351,12 +537,14 @@ class DatasourceItem:
|
|
|
351
537
|
project_name = None
|
|
352
538
|
project_elem = datasource_xml.find(".//t:project", namespaces=ns)
|
|
353
539
|
if project_elem is not None:
|
|
540
|
+
project = ProjectItem.from_xml(project_elem, ns)
|
|
354
541
|
project_id = project_elem.get("id", None)
|
|
355
542
|
project_name = project_elem.get("name", None)
|
|
356
543
|
|
|
357
544
|
owner_id = None
|
|
358
545
|
owner_elem = datasource_xml.find(".//t:owner", namespaces=ns)
|
|
359
546
|
if owner_elem is not None:
|
|
547
|
+
owner = UserItem.from_xml(owner_elem, ns)
|
|
360
548
|
owner_id = owner_elem.get("id", None)
|
|
361
549
|
|
|
362
550
|
ask_data_enablement = None
|
|
@@ -384,4 +572,11 @@ class DatasourceItem:
|
|
|
384
572
|
use_remote_query_agent,
|
|
385
573
|
webpage_url,
|
|
386
574
|
size,
|
|
575
|
+
connected_workbooks_count,
|
|
576
|
+
favorites_total,
|
|
577
|
+
has_alert,
|
|
578
|
+
is_published,
|
|
579
|
+
server_name,
|
|
580
|
+
project,
|
|
581
|
+
owner,
|
|
387
582
|
)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from typing import Optional, List
|
|
2
|
+
from defusedxml.ElementTree import fromstring
|
|
3
|
+
import xml.etree.ElementTree as ET
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ExtractItem:
|
|
7
|
+
"""
|
|
8
|
+
An extract refresh task item.
|
|
9
|
+
|
|
10
|
+
Attributes
|
|
11
|
+
----------
|
|
12
|
+
id : str
|
|
13
|
+
The ID of the extract refresh task
|
|
14
|
+
priority : int
|
|
15
|
+
The priority of the task
|
|
16
|
+
type : str
|
|
17
|
+
The type of extract refresh (incremental or full)
|
|
18
|
+
workbook_id : str, optional
|
|
19
|
+
The ID of the workbook if this is a workbook extract
|
|
20
|
+
datasource_id : str, optional
|
|
21
|
+
The ID of the datasource if this is a datasource extract
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def __init__(
|
|
25
|
+
self, priority: int, refresh_type: str, workbook_id: Optional[str] = None, datasource_id: Optional[str] = None
|
|
26
|
+
):
|
|
27
|
+
self._id: Optional[str] = None
|
|
28
|
+
self._priority = priority
|
|
29
|
+
self._type = refresh_type
|
|
30
|
+
self._workbook_id = workbook_id
|
|
31
|
+
self._datasource_id = datasource_id
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def id(self) -> Optional[str]:
|
|
35
|
+
return self._id
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def priority(self) -> int:
|
|
39
|
+
return self._priority
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def type(self) -> str:
|
|
43
|
+
return self._type
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def workbook_id(self) -> Optional[str]:
|
|
47
|
+
return self._workbook_id
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def datasource_id(self) -> Optional[str]:
|
|
51
|
+
return self._datasource_id
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_response(cls, resp: str, ns: dict) -> List["ExtractItem"]:
|
|
55
|
+
"""Create ExtractItem objects from XML response."""
|
|
56
|
+
parsed_response = fromstring(resp)
|
|
57
|
+
return cls.from_xml_element(parsed_response, ns)
|
|
58
|
+
|
|
59
|
+
@classmethod
|
|
60
|
+
def from_xml_element(cls, parsed_response: ET.Element, ns: dict) -> List["ExtractItem"]:
|
|
61
|
+
"""Create ExtractItem objects from XML element."""
|
|
62
|
+
all_extract_items = []
|
|
63
|
+
all_extract_xml = parsed_response.findall(".//t:extract", namespaces=ns)
|
|
64
|
+
|
|
65
|
+
for extract_xml in all_extract_xml:
|
|
66
|
+
extract_id = extract_xml.get("id", None)
|
|
67
|
+
priority = int(extract_xml.get("priority", 0))
|
|
68
|
+
refresh_type = extract_xml.get("type", "")
|
|
69
|
+
|
|
70
|
+
# Check for workbook or datasource
|
|
71
|
+
workbook_elem = extract_xml.find(".//t:workbook", namespaces=ns)
|
|
72
|
+
datasource_elem = extract_xml.find(".//t:datasource", namespaces=ns)
|
|
73
|
+
|
|
74
|
+
workbook_id = workbook_elem.get("id", None) if workbook_elem is not None else None
|
|
75
|
+
datasource_id = datasource_elem.get("id", None) if datasource_elem is not None else None
|
|
76
|
+
|
|
77
|
+
extract_item = cls(priority, refresh_type, workbook_id, datasource_id)
|
|
78
|
+
extract_item._id = extract_id
|
|
79
|
+
|
|
80
|
+
all_extract_items.append(extract_item)
|
|
81
|
+
|
|
82
|
+
return all_extract_items
|
{tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/flow_item.py
RENAMED
|
@@ -146,8 +146,8 @@ class FlowItem:
|
|
|
146
146
|
def _set_permissions(self, permissions):
|
|
147
147
|
self._permissions = permissions
|
|
148
148
|
|
|
149
|
-
def _set_data_quality_warnings(self,
|
|
150
|
-
self._data_quality_warnings =
|
|
149
|
+
def _set_data_quality_warnings(self, dqw):
|
|
150
|
+
self._data_quality_warnings = dqw
|
|
151
151
|
|
|
152
152
|
def _parse_common_elements(self, flow_xml, ns):
|
|
153
153
|
if not isinstance(flow_xml, ET.Element):
|
{tableauserverclient-0.36 → tableauserverclient-0.38}/tableauserverclient/models/group_item.py
RENAMED
|
@@ -44,6 +44,11 @@ class GroupItem:
|
|
|
44
44
|
login to a site. When the mode is onSync, a license is granted for group
|
|
45
45
|
members each time the domain is synced.
|
|
46
46
|
|
|
47
|
+
Attributes
|
|
48
|
+
----------
|
|
49
|
+
user_count: Optional[int]
|
|
50
|
+
The number of users in the group.
|
|
51
|
+
|
|
47
52
|
Examples
|
|
48
53
|
--------
|
|
49
54
|
>>> # Create a new group item
|
|
@@ -65,6 +70,7 @@ class GroupItem:
|
|
|
65
70
|
self._users: Optional[Callable[..., "Pager"]] = None
|
|
66
71
|
self.name: Optional[str] = name
|
|
67
72
|
self.domain_name: Optional[str] = domain_name
|
|
73
|
+
self._user_count: Optional[int] = None
|
|
68
74
|
|
|
69
75
|
def __repr__(self):
|
|
70
76
|
return f"{self.__class__.__name__}({self.__dict__!r})"
|
|
@@ -118,6 +124,10 @@ class GroupItem:
|
|
|
118
124
|
def _set_users(self, users: Callable[..., "Pager"]) -> None:
|
|
119
125
|
self._users = users
|
|
120
126
|
|
|
127
|
+
@property
|
|
128
|
+
def user_count(self) -> Optional[int]:
|
|
129
|
+
return self._user_count
|
|
130
|
+
|
|
121
131
|
@classmethod
|
|
122
132
|
def from_response(cls, resp, ns) -> list["GroupItem"]:
|
|
123
133
|
all_group_items = list()
|
|
@@ -127,6 +137,7 @@ class GroupItem:
|
|
|
127
137
|
name = group_xml.get("name", None)
|
|
128
138
|
group_item = cls(name)
|
|
129
139
|
group_item._id = group_xml.get("id", None)
|
|
140
|
+
group_item._user_count = int(count) if (count := group_xml.get("userCount", None)) else None
|
|
130
141
|
|
|
131
142
|
# Domain name is returned in a domain element for some calls
|
|
132
143
|
domain_elem = group_xml.find(".//t:domain", namespaces=ns)
|