tableauserverclient 0.30.post0.dev1__tar.gz → 0.32__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.30.post0.dev1 → tableauserverclient-0.32}/PKG-INFO +3 -4
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/pyproject.toml +4 -2
- tableauserverclient-0.32/tableauserverclient/__init__.py +119 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/_version.py +3 -3
- tableauserverclient-0.32/tableauserverclient/models/__init__.py +94 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/datasource_item.py +18 -6
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/favorites_item.py +7 -7
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/permissions_item.py +46 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/project_item.py +4 -3
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/reference_item.py +5 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/tableau_auth.py +22 -23
- tableauserverclient-0.32/tableauserverclient/server/__init__.py +91 -0
- tableauserverclient-0.32/tableauserverclient/server/endpoint/__init__.py +61 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/custom_views_endpoint.py +1 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/databases_endpoint.py +0 -11
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/datasources_endpoint.py +12 -28
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/endpoint.py +23 -8
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/favorites_endpoint.py +1 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +1 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/flows_endpoint.py +1 -11
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/groups_endpoint.py +3 -17
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/jobs_endpoint.py +1 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/metadata_endpoint.py +3 -3
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/metrics_endpoint.py +1 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/projects_endpoint.py +7 -18
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/tables_endpoint.py +0 -10
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/users_endpoint.py +1 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/views_endpoint.py +4 -2
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/workbooks_endpoint.py +7 -36
- tableauserverclient-0.32/tableauserverclient/server/pager.py +72 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/query.py +61 -33
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/request_factory.py +14 -42
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/server.py +5 -6
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient.egg-info/PKG-INFO +3 -4
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient.egg-info/SOURCES.txt +3 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient.egg-info/requires.txt +2 -3
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_get.xml +3 -3
- tableauserverclient-0.32/test/assets/odata_connection.xml +7 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_update.xml +3 -1
- tableauserverclient-0.32/test/assets/view_get_id_usage.xml +13 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_datasource.py +2 -0
- tableauserverclient-0.32/test/test_permissionsrule.py +104 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_project.py +3 -1
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_project_model.py +0 -5
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_request_option.py +27 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_site.py +4 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_tableauauth_model.py +0 -9
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_view.py +20 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_workbook.py +32 -82
- tableauserverclient-0.30.post0.dev1/tableauserverclient/__init__.py +0 -59
- tableauserverclient-0.30.post0.dev1/tableauserverclient/models/__init__.py +0 -43
- tableauserverclient-0.30.post0.dev1/tableauserverclient/server/__init__.py +0 -16
- tableauserverclient-0.30.post0.dev1/tableauserverclient/server/endpoint/__init__.py +0 -28
- tableauserverclient-0.30.post0.dev1/tableauserverclient/server/pager.py +0 -71
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/CHANGELOG.md +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/CONTRIBUTORS.md +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/LICENSE +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/MANIFEST.in +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/README.md +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/contributing.md +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/docs/README.md +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/add_default_permission.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/create_extract_task.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/create_group.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/create_project.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/create_schedules.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/explore_datasource.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/explore_favorites.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/explore_site.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/explore_webhooks.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/explore_workbook.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/export.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/extracts.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/filter_sort_groups.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/filter_sort_projects.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/getting_started/1_hello_server.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/getting_started/2_hello_site.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/getting_started/3_hello_universe.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/initialize_server.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/kill_all_jobs.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/list.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/login.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/metadata_query.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/move_workbook_projects.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/move_workbook_sites.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/name.txt +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/pagination_sample.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/publish_datasource.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/publish_workbook.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/query_permissions.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/refresh.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/refresh_tasks.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/set_refresh_schedule.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/smoke_test.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/update_connection.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/update_datasource_data.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/update_workbook_data_acceleration.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/samples/update_workbook_data_freshness_policy.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/setup.cfg +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/setup.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/config.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/datetime_helpers.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/exponential_backoff.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/filesys_helpers.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/helpers/__init__.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/helpers/headers.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/helpers/logging.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/helpers/strings.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/column_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/connection_credentials.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/connection_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/custom_view_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/data_acceleration_report_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/data_alert_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/data_freshness_policy_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/database_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/dqw_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/exceptions.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/fileupload_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/flow_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/flow_run_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/group_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/interval_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/job_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/metric_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/pagination_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/property_decorators.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/revision_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/schedule_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/server_info_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/site_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/subscription_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/table_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/tableau_types.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/tag_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/target.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/task_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/user_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/view_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/webhook_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/models/workbook_item.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/namespace.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/auth_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/dqw_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/exceptions.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/flow_task_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/schedules_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/sites_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/tasks_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/exceptions.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/filter.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/request_options.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/server/sort.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient.egg-info/dependency_links.txt +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient.egg-info/top_level.txt +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/__init__.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/_utils.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/Data/user_details.csv +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/Data/usernames.csv +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/RESTAPISample Image.png +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/Sample View Image.png +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/World Indicators.hyper +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/auth_sign_in.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/auth_sign_in_error.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/auth_sign_in_impersonate.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/custom_view_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/custom_view_get_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/custom_view_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/data_acceleration_report.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/data_alerts_add_user.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/data_alerts_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/data_alerts_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/data_alerts_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/database_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/database_populate_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/database_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_add_tags.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_connection_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_data_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_get_empty.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_populate_connections.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_populate_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_publish.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_publish_async.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_refresh.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_revision.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/datasource_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/dqw_by_content_type.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/favorites_add_datasource.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/favorites_add_project.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/favorites_add_view.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/favorites_add_workbook.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/favorites_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/fileupload_append.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/fileupload_initialize.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_populate_connections.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_populate_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_publish.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_refresh.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_runs_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_runs_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/flow_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_add_user.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_create.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_create_ad.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_create_async.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_populate_users.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_populate_users_empty.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_update_async.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/group_users_added.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/job_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/job_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/job_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/job_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metadata_paged_1.json +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metadata_paged_2.json +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metadata_paged_3.json +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metadata_query_error.json +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metadata_query_expected_dict.dict +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metadata_query_success.json +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metrics_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metrics_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/metrics_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/populate_csv.csv +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/populate_pdf.pdf +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_content_permission.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_create.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_populate_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/project_update_datasource_default_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/queryset_slicing_page_1.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/queryset_slicing_page_2.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_filter_equals.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_filter_name_in.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_filter_tags_in.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_page_number.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_page_size.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_pagination.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/request_option_slicing_queryset.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_add_datasource.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_add_flow.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_add_workbook.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_create_daily.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_create_hourly.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_create_monthly.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_create_weekly.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_get_daily_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_get_empty.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_get_hourly_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_get_monthly_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/schedule_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/server_info_25.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/server_info_404.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/server_info_auth_info.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/server_info_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/site_create.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/site_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/site_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/site_get_by_name.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/site_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/subscription_create.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/subscription_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/subscription_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/table_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/table_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_create_extract_task.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_create_flow_task.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_run_now_response.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_with_datasource.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_with_interval.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_with_workbook.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/tasks_without_schedule.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_add.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_add_favorite.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_get_empty.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_populate_groups.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_populate_workbooks.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/user_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/view_add_tags.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/view_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/view_get_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/view_get_usage.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/view_populate_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/view_update_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/webhook_create.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/webhook_create_request.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/webhook_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_add_tags.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_by_id.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_by_id_personal.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_empty.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_invalid_date.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_page_1.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_page_2.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_get_page_3.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_populate_connections.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_populate_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_populate_views.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_populate_views_usage.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_publish.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_publish_async.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_refresh.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_revision.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_acceleration_status.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_permissions.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/http/test_http_requests.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/models/_models.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/models/test_repr.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/request_factory/__init__.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/request_factory/test_datasource_requests.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/request_factory/test_workbook_requests.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_auth.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_connection_.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_custom_view.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_data_acceleration_report.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_data_freshness_policy.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_dataalert.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_database.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_datasource_model.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_dqw.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_endpoint.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_exponential_backoff.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_favorites.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_filesys_helpers.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_fileuploads.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_filter.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_flow.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_flowruns.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_flowtask.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_group.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_group_model.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_job.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_metadata.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_metrics.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_pager.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_regression_tests.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_requests.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_schedule.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_server_info.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_site_model.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_sort.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_subscription.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_table.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_task.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_user.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_user_model.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_view_acceleration.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_webhook.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/test/test_workbook_model.py +0 -0
- {tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tableauserverclient
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.32
|
|
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)
|
|
@@ -40,12 +40,11 @@ License-File: LICENSE.versioneer
|
|
|
40
40
|
Requires-Dist: defusedxml>=0.7.1
|
|
41
41
|
Requires-Dist: packaging>=23.1
|
|
42
42
|
Requires-Dist: requests>=2.31
|
|
43
|
-
Requires-Dist: urllib3==2.
|
|
43
|
+
Requires-Dist: urllib3==2.2.2
|
|
44
44
|
Requires-Dist: typing_extensions>=4.0.1
|
|
45
45
|
Provides-Extra: test
|
|
46
|
-
Requires-Dist: argparse; extra == "test"
|
|
47
46
|
Requires-Dist: black==23.7; extra == "test"
|
|
48
|
-
Requires-Dist:
|
|
47
|
+
Requires-Dist: build; extra == "test"
|
|
49
48
|
Requires-Dist: mypy==1.4; extra == "test"
|
|
50
49
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
51
50
|
Requires-Dist: pytest-cov; extra == "test"
|
|
@@ -15,7 +15,7 @@ dependencies = [
|
|
|
15
15
|
'defusedxml>=0.7.1', # latest as at 7/31/23
|
|
16
16
|
'packaging>=23.1', # latest as at 7/31/23
|
|
17
17
|
'requests>=2.31', # latest as at 7/31/23
|
|
18
|
-
'urllib3==2.
|
|
18
|
+
'urllib3==2.2.2', # dependabot
|
|
19
19
|
'typing_extensions>=4.0.1',
|
|
20
20
|
]
|
|
21
21
|
requires-python = ">=3.7"
|
|
@@ -32,7 +32,7 @@ classifiers = [
|
|
|
32
32
|
repository = "https://github.com/tableau/server-client-python"
|
|
33
33
|
|
|
34
34
|
[project.optional-dependencies]
|
|
35
|
-
test = ["
|
|
35
|
+
test = ["black==23.7", "build", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
|
|
36
36
|
"requests-mock>=1.0,<2.0"]
|
|
37
37
|
|
|
38
38
|
[tool.black]
|
|
@@ -49,6 +49,8 @@ disable_error_code = [
|
|
|
49
49
|
files = ["tableauserverclient", "test"]
|
|
50
50
|
show_error_codes = true
|
|
51
51
|
ignore_missing_imports = true # defusedxml library has no types
|
|
52
|
+
no_implicit_reexport = true
|
|
53
|
+
|
|
52
54
|
[tool.pytest.ini_options]
|
|
53
55
|
testpaths = ["test"]
|
|
54
56
|
addopts = "--junitxml=./test.junit.xml"
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
from tableauserverclient._version import get_versions
|
|
2
|
+
from tableauserverclient.namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
|
|
3
|
+
from tableauserverclient.models import (
|
|
4
|
+
BackgroundJobItem,
|
|
5
|
+
ColumnItem,
|
|
6
|
+
ConnectionCredentials,
|
|
7
|
+
ConnectionItem,
|
|
8
|
+
CustomViewItem,
|
|
9
|
+
DQWItem,
|
|
10
|
+
DailyInterval,
|
|
11
|
+
DataAlertItem,
|
|
12
|
+
DatabaseItem,
|
|
13
|
+
DataFreshnessPolicyItem,
|
|
14
|
+
DatasourceItem,
|
|
15
|
+
FavoriteItem,
|
|
16
|
+
FlowItem,
|
|
17
|
+
FlowRunItem,
|
|
18
|
+
FileuploadItem,
|
|
19
|
+
GroupItem,
|
|
20
|
+
HourlyInterval,
|
|
21
|
+
IntervalItem,
|
|
22
|
+
JobItem,
|
|
23
|
+
JWTAuth,
|
|
24
|
+
MetricItem,
|
|
25
|
+
MonthlyInterval,
|
|
26
|
+
PaginationItem,
|
|
27
|
+
Permission,
|
|
28
|
+
PermissionsRule,
|
|
29
|
+
PersonalAccessTokenAuth,
|
|
30
|
+
ProjectItem,
|
|
31
|
+
RevisionItem,
|
|
32
|
+
ScheduleItem,
|
|
33
|
+
SiteItem,
|
|
34
|
+
ServerInfoItem,
|
|
35
|
+
SubscriptionItem,
|
|
36
|
+
TableItem,
|
|
37
|
+
TableauAuth,
|
|
38
|
+
Target,
|
|
39
|
+
TaskItem,
|
|
40
|
+
UserItem,
|
|
41
|
+
ViewItem,
|
|
42
|
+
WebhookItem,
|
|
43
|
+
WeeklyInterval,
|
|
44
|
+
WorkbookItem,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
from tableauserverclient.server import (
|
|
48
|
+
CSVRequestOptions,
|
|
49
|
+
ExcelRequestOptions,
|
|
50
|
+
ImageRequestOptions,
|
|
51
|
+
PDFRequestOptions,
|
|
52
|
+
RequestOptions,
|
|
53
|
+
MissingRequiredFieldError,
|
|
54
|
+
NotSignedInError,
|
|
55
|
+
ServerResponseError,
|
|
56
|
+
Filter,
|
|
57
|
+
Pager,
|
|
58
|
+
Server,
|
|
59
|
+
Sort,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
__all__ = [
|
|
63
|
+
"get_versions",
|
|
64
|
+
"DEFAULT_NAMESPACE",
|
|
65
|
+
"BackgroundJobItem",
|
|
66
|
+
"BackgroundJobItem",
|
|
67
|
+
"ColumnItem",
|
|
68
|
+
"ConnectionCredentials",
|
|
69
|
+
"ConnectionItem",
|
|
70
|
+
"CustomViewItem",
|
|
71
|
+
"DQWItem",
|
|
72
|
+
"DailyInterval",
|
|
73
|
+
"DataAlertItem",
|
|
74
|
+
"DatabaseItem",
|
|
75
|
+
"DataFreshnessPolicyItem",
|
|
76
|
+
"DatasourceItem",
|
|
77
|
+
"FavoriteItem",
|
|
78
|
+
"FlowItem",
|
|
79
|
+
"FlowRunItem",
|
|
80
|
+
"FileuploadItem",
|
|
81
|
+
"GroupItem",
|
|
82
|
+
"HourlyInterval",
|
|
83
|
+
"IntervalItem",
|
|
84
|
+
"JobItem",
|
|
85
|
+
"JWTAuth",
|
|
86
|
+
"MetricItem",
|
|
87
|
+
"MonthlyInterval",
|
|
88
|
+
"PaginationItem",
|
|
89
|
+
"Permission",
|
|
90
|
+
"PermissionsRule",
|
|
91
|
+
"PersonalAccessTokenAuth",
|
|
92
|
+
"ProjectItem",
|
|
93
|
+
"RevisionItem",
|
|
94
|
+
"ScheduleItem",
|
|
95
|
+
"SiteItem",
|
|
96
|
+
"ServerInfoItem",
|
|
97
|
+
"SubscriptionItem",
|
|
98
|
+
"TableItem",
|
|
99
|
+
"TableauAuth",
|
|
100
|
+
"Target",
|
|
101
|
+
"TaskItem",
|
|
102
|
+
"UserItem",
|
|
103
|
+
"ViewItem",
|
|
104
|
+
"WebhookItem",
|
|
105
|
+
"WeeklyInterval",
|
|
106
|
+
"WorkbookItem",
|
|
107
|
+
"CSVRequestOptions",
|
|
108
|
+
"ExcelRequestOptions",
|
|
109
|
+
"ImageRequestOptions",
|
|
110
|
+
"PDFRequestOptions",
|
|
111
|
+
"RequestOptions",
|
|
112
|
+
"MissingRequiredFieldError",
|
|
113
|
+
"NotSignedInError",
|
|
114
|
+
"ServerResponseError",
|
|
115
|
+
"Filter",
|
|
116
|
+
"Pager",
|
|
117
|
+
"Server",
|
|
118
|
+
"Sort",
|
|
119
|
+
]
|
{tableauserverclient-0.30.post0.dev1 → tableauserverclient-0.32}/tableauserverclient/_version.py
RENAMED
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2024-
|
|
11
|
+
"date": "2024-07-27T15:44:04-0700",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"full-revisionid": "257cf616f35cc36b24a73e9e102886a52ead1853",
|
|
15
|
+
"version": "0.32"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
from tableauserverclient.models.column_item import ColumnItem
|
|
2
|
+
from tableauserverclient.models.connection_credentials import ConnectionCredentials
|
|
3
|
+
from tableauserverclient.models.connection_item import ConnectionItem
|
|
4
|
+
from tableauserverclient.models.custom_view_item import CustomViewItem
|
|
5
|
+
from tableauserverclient.models.data_acceleration_report_item import DataAccelerationReportItem
|
|
6
|
+
from tableauserverclient.models.data_alert_item import DataAlertItem
|
|
7
|
+
from tableauserverclient.models.database_item import DatabaseItem
|
|
8
|
+
from tableauserverclient.models.data_freshness_policy_item import DataFreshnessPolicyItem
|
|
9
|
+
from tableauserverclient.models.datasource_item import DatasourceItem
|
|
10
|
+
from tableauserverclient.models.dqw_item import DQWItem
|
|
11
|
+
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
|
|
12
|
+
from tableauserverclient.models.favorites_item import FavoriteItem
|
|
13
|
+
from tableauserverclient.models.fileupload_item import FileuploadItem
|
|
14
|
+
from tableauserverclient.models.flow_item import FlowItem
|
|
15
|
+
from tableauserverclient.models.flow_run_item import FlowRunItem
|
|
16
|
+
from tableauserverclient.models.group_item import GroupItem
|
|
17
|
+
from tableauserverclient.models.interval_item import (
|
|
18
|
+
IntervalItem,
|
|
19
|
+
DailyInterval,
|
|
20
|
+
WeeklyInterval,
|
|
21
|
+
MonthlyInterval,
|
|
22
|
+
HourlyInterval,
|
|
23
|
+
)
|
|
24
|
+
from tableauserverclient.models.job_item import JobItem, BackgroundJobItem
|
|
25
|
+
from tableauserverclient.models.metric_item import MetricItem
|
|
26
|
+
from tableauserverclient.models.pagination_item import PaginationItem
|
|
27
|
+
from tableauserverclient.models.permissions_item import PermissionsRule, Permission
|
|
28
|
+
from tableauserverclient.models.project_item import ProjectItem
|
|
29
|
+
from tableauserverclient.models.revision_item import RevisionItem
|
|
30
|
+
from tableauserverclient.models.schedule_item import ScheduleItem
|
|
31
|
+
from tableauserverclient.models.server_info_item import ServerInfoItem
|
|
32
|
+
from tableauserverclient.models.site_item import SiteItem
|
|
33
|
+
from tableauserverclient.models.subscription_item import SubscriptionItem
|
|
34
|
+
from tableauserverclient.models.table_item import TableItem
|
|
35
|
+
from tableauserverclient.models.tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
|
|
36
|
+
from tableauserverclient.models.tableau_types import Resource, TableauItem, plural_type
|
|
37
|
+
from tableauserverclient.models.tag_item import TagItem
|
|
38
|
+
from tableauserverclient.models.target import Target
|
|
39
|
+
from tableauserverclient.models.task_item import TaskItem
|
|
40
|
+
from tableauserverclient.models.user_item import UserItem
|
|
41
|
+
from tableauserverclient.models.view_item import ViewItem
|
|
42
|
+
from tableauserverclient.models.webhook_item import WebhookItem
|
|
43
|
+
from tableauserverclient.models.workbook_item import WorkbookItem
|
|
44
|
+
|
|
45
|
+
__all__ = [
|
|
46
|
+
"ColumnItem",
|
|
47
|
+
"ConnectionCredentials",
|
|
48
|
+
"ConnectionItem",
|
|
49
|
+
"Credentials",
|
|
50
|
+
"CustomViewItem",
|
|
51
|
+
"DataAccelerationReportItem",
|
|
52
|
+
"DataAlertItem",
|
|
53
|
+
"DatabaseItem",
|
|
54
|
+
"DataFreshnessPolicyItem",
|
|
55
|
+
"DatasourceItem",
|
|
56
|
+
"DQWItem",
|
|
57
|
+
"UnpopulatedPropertyError",
|
|
58
|
+
"FavoriteItem",
|
|
59
|
+
"FileuploadItem",
|
|
60
|
+
"FlowItem",
|
|
61
|
+
"FlowRunItem",
|
|
62
|
+
"GroupItem",
|
|
63
|
+
"IntervalItem",
|
|
64
|
+
"JobItem",
|
|
65
|
+
"DailyInterval",
|
|
66
|
+
"WeeklyInterval",
|
|
67
|
+
"MonthlyInterval",
|
|
68
|
+
"HourlyInterval",
|
|
69
|
+
"BackgroundJobItem",
|
|
70
|
+
"MetricItem",
|
|
71
|
+
"PaginationItem",
|
|
72
|
+
"Permission",
|
|
73
|
+
"PermissionsRule",
|
|
74
|
+
"ProjectItem",
|
|
75
|
+
"RevisionItem",
|
|
76
|
+
"ScheduleItem",
|
|
77
|
+
"ServerInfoItem",
|
|
78
|
+
"SiteItem",
|
|
79
|
+
"SubscriptionItem",
|
|
80
|
+
"TableItem",
|
|
81
|
+
"TableauAuth",
|
|
82
|
+
"PersonalAccessTokenAuth",
|
|
83
|
+
"JWTAuth",
|
|
84
|
+
"Resource",
|
|
85
|
+
"TableauItem",
|
|
86
|
+
"plural_type",
|
|
87
|
+
"TagItem",
|
|
88
|
+
"Target",
|
|
89
|
+
"TaskItem",
|
|
90
|
+
"UserItem",
|
|
91
|
+
"ViewItem",
|
|
92
|
+
"WebhookItem",
|
|
93
|
+
"WorkbookItem",
|
|
94
|
+
]
|
|
@@ -6,16 +6,16 @@ from typing import Dict, List, Optional, Set, Tuple
|
|
|
6
6
|
from defusedxml.ElementTree import fromstring
|
|
7
7
|
|
|
8
8
|
from tableauserverclient.datetime_helpers import parse_datetime
|
|
9
|
-
from .connection_item import ConnectionItem
|
|
10
|
-
from .exceptions import UnpopulatedPropertyError
|
|
11
|
-
from .permissions_item import PermissionsRule
|
|
12
|
-
from .property_decorators import (
|
|
9
|
+
from tableauserverclient.models.connection_item import ConnectionItem
|
|
10
|
+
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
|
|
11
|
+
from tableauserverclient.models.permissions_item import PermissionsRule
|
|
12
|
+
from tableauserverclient.models.property_decorators import (
|
|
13
13
|
property_not_nullable,
|
|
14
14
|
property_is_boolean,
|
|
15
15
|
property_is_enum,
|
|
16
16
|
)
|
|
17
|
-
from .revision_item import RevisionItem
|
|
18
|
-
from .tag_item import TagItem
|
|
17
|
+
from tableauserverclient.models.revision_item import RevisionItem
|
|
18
|
+
from tableauserverclient.models.tag_item import TagItem
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class DatasourceItem(object):
|
|
@@ -47,6 +47,7 @@ class DatasourceItem(object):
|
|
|
47
47
|
self._initial_tags: Set = set()
|
|
48
48
|
self._project_name: Optional[str] = None
|
|
49
49
|
self._revisions = None
|
|
50
|
+
self._size: Optional[int] = None
|
|
50
51
|
self._updated_at = None
|
|
51
52
|
self._use_remote_query_agent = None
|
|
52
53
|
self._webpage_url = None
|
|
@@ -182,6 +183,10 @@ class DatasourceItem(object):
|
|
|
182
183
|
raise UnpopulatedPropertyError(error)
|
|
183
184
|
return self._revisions()
|
|
184
185
|
|
|
186
|
+
@property
|
|
187
|
+
def size(self) -> Optional[int]:
|
|
188
|
+
return self._size
|
|
189
|
+
|
|
185
190
|
def _set_connections(self, connections):
|
|
186
191
|
self._connections = connections
|
|
187
192
|
|
|
@@ -217,6 +222,7 @@ class DatasourceItem(object):
|
|
|
217
222
|
updated_at,
|
|
218
223
|
use_remote_query_agent,
|
|
219
224
|
webpage_url,
|
|
225
|
+
size,
|
|
220
226
|
) = self._parse_element(datasource_xml, ns)
|
|
221
227
|
self._set_values(
|
|
222
228
|
ask_data_enablement,
|
|
@@ -237,6 +243,7 @@ class DatasourceItem(object):
|
|
|
237
243
|
updated_at,
|
|
238
244
|
use_remote_query_agent,
|
|
239
245
|
webpage_url,
|
|
246
|
+
size,
|
|
240
247
|
)
|
|
241
248
|
return self
|
|
242
249
|
|
|
@@ -260,6 +267,7 @@ class DatasourceItem(object):
|
|
|
260
267
|
updated_at,
|
|
261
268
|
use_remote_query_agent,
|
|
262
269
|
webpage_url,
|
|
270
|
+
size,
|
|
263
271
|
):
|
|
264
272
|
if ask_data_enablement is not None:
|
|
265
273
|
self._ask_data_enablement = ask_data_enablement
|
|
@@ -297,6 +305,8 @@ class DatasourceItem(object):
|
|
|
297
305
|
self._use_remote_query_agent = str(use_remote_query_agent).lower() == "true"
|
|
298
306
|
if webpage_url:
|
|
299
307
|
self._webpage_url = webpage_url
|
|
308
|
+
if size is not None:
|
|
309
|
+
self._size = int(size)
|
|
300
310
|
|
|
301
311
|
@classmethod
|
|
302
312
|
def from_response(cls, resp: str, ns: Dict) -> List["DatasourceItem"]:
|
|
@@ -330,6 +340,7 @@ class DatasourceItem(object):
|
|
|
330
340
|
has_extracts = datasource_xml.get("hasExtracts", None)
|
|
331
341
|
use_remote_query_agent = datasource_xml.get("useRemoteQueryAgent", None)
|
|
332
342
|
webpage_url = datasource_xml.get("webpageUrl", None)
|
|
343
|
+
size = datasource_xml.get("size", None)
|
|
333
344
|
|
|
334
345
|
tags = None
|
|
335
346
|
tags_elem = datasource_xml.find(".//t:tags", namespaces=ns)
|
|
@@ -372,4 +383,5 @@ class DatasourceItem(object):
|
|
|
372
383
|
updated_at,
|
|
373
384
|
use_remote_query_agent,
|
|
374
385
|
webpage_url,
|
|
386
|
+
size,
|
|
375
387
|
)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
|
|
3
3
|
from defusedxml.ElementTree import fromstring
|
|
4
|
-
from .tableau_types import TableauItem
|
|
4
|
+
from tableauserverclient.models.tableau_types import TableauItem
|
|
5
5
|
|
|
6
|
-
from .datasource_item import DatasourceItem
|
|
7
|
-
from .flow_item import FlowItem
|
|
8
|
-
from .project_item import ProjectItem
|
|
9
|
-
from .metric_item import MetricItem
|
|
10
|
-
from .view_item import ViewItem
|
|
11
|
-
from .workbook_item import WorkbookItem
|
|
6
|
+
from tableauserverclient.models.datasource_item import DatasourceItem
|
|
7
|
+
from tableauserverclient.models.flow_item import FlowItem
|
|
8
|
+
from tableauserverclient.models.project_item import ProjectItem
|
|
9
|
+
from tableauserverclient.models.metric_item import MetricItem
|
|
10
|
+
from tableauserverclient.models.view_item import ViewItem
|
|
11
|
+
from tableauserverclient.models.workbook_item import WorkbookItem
|
|
12
12
|
from typing import Dict, List
|
|
13
13
|
|
|
14
14
|
from tableauserverclient.helpers.logging import logger
|
|
@@ -45,7 +45,7 @@ class Permission:
|
|
|
45
45
|
return "<Enum Capability: AddComment | ChangeHierarchy | ChangePermission ... (17 more) >"
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
class PermissionsRule
|
|
48
|
+
class PermissionsRule:
|
|
49
49
|
def __init__(self, grantee: ResourceReference, capabilities: Dict[str, str]) -> None:
|
|
50
50
|
self.grantee = grantee
|
|
51
51
|
self.capabilities = capabilities
|
|
@@ -53,6 +53,51 @@ class PermissionsRule(object):
|
|
|
53
53
|
def __repr__(self):
|
|
54
54
|
return "<PermissionsRule grantee={}, capabilities={}>".format(self.grantee, self.capabilities)
|
|
55
55
|
|
|
56
|
+
def __eq__(self, other: object) -> bool:
|
|
57
|
+
if not hasattr(other, "grantee") or not hasattr(other, "capabilities"):
|
|
58
|
+
return False
|
|
59
|
+
return self.grantee == other.grantee and self.capabilities == other.capabilities
|
|
60
|
+
|
|
61
|
+
def __and__(self, other: "PermissionsRule") -> "PermissionsRule":
|
|
62
|
+
if self.grantee != other.grantee:
|
|
63
|
+
raise ValueError("Cannot AND two permissions rules with different grantees")
|
|
64
|
+
|
|
65
|
+
if self.capabilities == other.capabilities:
|
|
66
|
+
return self
|
|
67
|
+
|
|
68
|
+
capabilities = set((*self.capabilities.keys(), *other.capabilities.keys()))
|
|
69
|
+
new_capabilities = {}
|
|
70
|
+
for capability in capabilities:
|
|
71
|
+
if (self.capabilities.get(capability), other.capabilities.get(capability)) == (
|
|
72
|
+
Permission.Mode.Allow,
|
|
73
|
+
Permission.Mode.Allow,
|
|
74
|
+
):
|
|
75
|
+
new_capabilities[capability] = Permission.Mode.Allow
|
|
76
|
+
elif Permission.Mode.Deny in (self.capabilities.get(capability), other.capabilities.get(capability)):
|
|
77
|
+
new_capabilities[capability] = Permission.Mode.Deny
|
|
78
|
+
|
|
79
|
+
return PermissionsRule(self.grantee, new_capabilities)
|
|
80
|
+
|
|
81
|
+
def __or__(self, other: "PermissionsRule") -> "PermissionsRule":
|
|
82
|
+
if self.grantee != other.grantee:
|
|
83
|
+
raise ValueError("Cannot OR two permissions rules with different grantees")
|
|
84
|
+
|
|
85
|
+
if self.capabilities == other.capabilities:
|
|
86
|
+
return self
|
|
87
|
+
|
|
88
|
+
capabilities = set((*self.capabilities.keys(), *other.capabilities.keys()))
|
|
89
|
+
new_capabilities = {}
|
|
90
|
+
for capability in capabilities:
|
|
91
|
+
if Permission.Mode.Allow in (self.capabilities.get(capability), other.capabilities.get(capability)):
|
|
92
|
+
new_capabilities[capability] = Permission.Mode.Allow
|
|
93
|
+
elif (self.capabilities.get(capability), other.capabilities.get(capability)) == (
|
|
94
|
+
Permission.Mode.Deny,
|
|
95
|
+
Permission.Mode.Deny,
|
|
96
|
+
):
|
|
97
|
+
new_capabilities[capability] = Permission.Mode.Deny
|
|
98
|
+
|
|
99
|
+
return PermissionsRule(self.grantee, new_capabilities)
|
|
100
|
+
|
|
56
101
|
@classmethod
|
|
57
102
|
def from_response(cls, resp, ns=None) -> List["PermissionsRule"]:
|
|
58
103
|
parsed_response = fromstring(resp)
|
|
@@ -4,8 +4,8 @@ from typing import List, Optional
|
|
|
4
4
|
|
|
5
5
|
from defusedxml.ElementTree import fromstring
|
|
6
6
|
|
|
7
|
-
from .exceptions import UnpopulatedPropertyError
|
|
8
|
-
from .property_decorators import property_is_enum, property_not_empty
|
|
7
|
+
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
|
|
8
|
+
from tableauserverclient.models.property_decorators import property_is_enum, property_not_empty
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ProjectItem(object):
|
|
@@ -34,6 +34,7 @@ class ProjectItem(object):
|
|
|
34
34
|
self.content_permissions: Optional[str] = content_permissions
|
|
35
35
|
self.parent_id: Optional[str] = parent_id
|
|
36
36
|
self._samples: Optional[bool] = samples
|
|
37
|
+
self._owner_id: Optional[str] = None
|
|
37
38
|
|
|
38
39
|
self._permissions = None
|
|
39
40
|
self._default_workbook_permissions = None
|
|
@@ -119,7 +120,7 @@ class ProjectItem(object):
|
|
|
119
120
|
|
|
120
121
|
@owner_id.setter
|
|
121
122
|
def owner_id(self, value: str) -> None:
|
|
122
|
-
|
|
123
|
+
self._owner_id = value
|
|
123
124
|
|
|
124
125
|
def is_default(self):
|
|
125
126
|
return self.name.lower() == "default"
|
|
@@ -8,6 +8,11 @@ class ResourceReference(object):
|
|
|
8
8
|
|
|
9
9
|
__repr__ = __str__
|
|
10
10
|
|
|
11
|
+
def __eq__(self, other: object) -> bool:
|
|
12
|
+
if not hasattr(other, "id") or not hasattr(other, "tag_name"):
|
|
13
|
+
return False
|
|
14
|
+
return (self.id == other.id) and (self.tag_name == other.tag_name)
|
|
15
|
+
|
|
11
16
|
@property
|
|
12
17
|
def id(self):
|
|
13
18
|
return self._id
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import abc
|
|
2
|
+
from typing import Dict, Optional
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
class Credentials(abc.ABC):
|
|
5
|
-
def __init__(self, site_id=None, user_id_to_impersonate=None):
|
|
6
|
+
def __init__(self, site_id: Optional[str] = None, user_id_to_impersonate: Optional[str] = None) -> None:
|
|
6
7
|
self.site_id = site_id or ""
|
|
7
8
|
self.user_id_to_impersonate = user_id_to_impersonate or None
|
|
8
9
|
|
|
9
10
|
@property
|
|
10
11
|
@abc.abstractmethod
|
|
11
|
-
def credentials(self):
|
|
12
|
-
credentials =
|
|
13
|
-
|
|
12
|
+
def credentials(self) -> Dict[str, str]:
|
|
13
|
+
credentials = (
|
|
14
|
+
"Credentials can be username/password, Personal Access Token, or JWT"
|
|
15
|
+
"This method returns values to set as an attribute on the credentials element of the request"
|
|
16
|
+
)
|
|
17
|
+
return {"key": "value"}
|
|
14
18
|
|
|
15
19
|
@abc.abstractmethod
|
|
16
20
|
def __repr__(self):
|
|
@@ -28,10 +32,9 @@ def deprecate_site_attribute():
|
|
|
28
32
|
|
|
29
33
|
# The traditional auth type: username/password
|
|
30
34
|
class TableauAuth(Credentials):
|
|
31
|
-
def __init__(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
site_id = site
|
|
35
|
+
def __init__(
|
|
36
|
+
self, username: str, password: str, site_id: Optional[str] = None, user_id_to_impersonate: Optional[str] = None
|
|
37
|
+
) -> None:
|
|
35
38
|
super().__init__(site_id, user_id_to_impersonate)
|
|
36
39
|
if password is None:
|
|
37
40
|
raise TabError("Must provide a password when using traditional authentication")
|
|
@@ -39,7 +42,7 @@ class TableauAuth(Credentials):
|
|
|
39
42
|
self.username = username
|
|
40
43
|
|
|
41
44
|
@property
|
|
42
|
-
def credentials(self):
|
|
45
|
+
def credentials(self) -> Dict[str, str]:
|
|
43
46
|
return {"name": self.username, "password": self.password}
|
|
44
47
|
|
|
45
48
|
def __repr__(self):
|
|
@@ -49,20 +52,16 @@ class TableauAuth(Credentials):
|
|
|
49
52
|
uid = ""
|
|
50
53
|
return f"<Credentials username={self.username} password=redacted (site={self.site_id}{uid})>"
|
|
51
54
|
|
|
52
|
-
@property
|
|
53
|
-
def site(self):
|
|
54
|
-
deprecate_site_attribute()
|
|
55
|
-
return self.site_id
|
|
56
|
-
|
|
57
|
-
@site.setter
|
|
58
|
-
def site(self, value):
|
|
59
|
-
deprecate_site_attribute()
|
|
60
|
-
self.site_id = value
|
|
61
|
-
|
|
62
55
|
|
|
63
56
|
# A Tableau-generated Personal Access Token
|
|
64
57
|
class PersonalAccessTokenAuth(Credentials):
|
|
65
|
-
def __init__(
|
|
58
|
+
def __init__(
|
|
59
|
+
self,
|
|
60
|
+
token_name: str,
|
|
61
|
+
personal_access_token: str,
|
|
62
|
+
site_id: Optional[str] = None,
|
|
63
|
+
user_id_to_impersonate: Optional[str] = None,
|
|
64
|
+
) -> None:
|
|
66
65
|
if personal_access_token is None or token_name is None:
|
|
67
66
|
raise TabError("Must provide a token and token name when using PAT authentication")
|
|
68
67
|
super().__init__(site_id=site_id, user_id_to_impersonate=user_id_to_impersonate)
|
|
@@ -70,7 +69,7 @@ class PersonalAccessTokenAuth(Credentials):
|
|
|
70
69
|
self.personal_access_token = personal_access_token
|
|
71
70
|
|
|
72
71
|
@property
|
|
73
|
-
def credentials(self):
|
|
72
|
+
def credentials(self) -> Dict[str, str]:
|
|
74
73
|
return {
|
|
75
74
|
"personalAccessTokenName": self.token_name,
|
|
76
75
|
"personalAccessTokenSecret": self.personal_access_token,
|
|
@@ -89,14 +88,14 @@ class PersonalAccessTokenAuth(Credentials):
|
|
|
89
88
|
|
|
90
89
|
# A standard JWT generated specifically for Tableau
|
|
91
90
|
class JWTAuth(Credentials):
|
|
92
|
-
def __init__(self, jwt: str, site_id=None, user_id_to_impersonate=None):
|
|
91
|
+
def __init__(self, jwt: str, site_id: Optional[str] = None, user_id_to_impersonate: Optional[str] = None) -> None:
|
|
93
92
|
if jwt is None:
|
|
94
93
|
raise TabError("Must provide a JWT token when using JWT authentication")
|
|
95
94
|
super().__init__(site_id, user_id_to_impersonate)
|
|
96
95
|
self.jwt = jwt
|
|
97
96
|
|
|
98
97
|
@property
|
|
99
|
-
def credentials(self):
|
|
98
|
+
def credentials(self) -> Dict[str, str]:
|
|
100
99
|
return {"jwt": self.jwt}
|
|
101
100
|
|
|
102
101
|
def __repr__(self):
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# These two imports must come first
|
|
2
|
+
from tableauserverclient.server.request_factory import RequestFactory
|
|
3
|
+
from tableauserverclient.server.request_options import (
|
|
4
|
+
CSVRequestOptions,
|
|
5
|
+
ExcelRequestOptions,
|
|
6
|
+
ImageRequestOptions,
|
|
7
|
+
PDFRequestOptions,
|
|
8
|
+
RequestOptions,
|
|
9
|
+
)
|
|
10
|
+
from tableauserverclient.server.filter import Filter
|
|
11
|
+
from tableauserverclient.server.sort import Sort
|
|
12
|
+
from tableauserverclient.server.server import Server
|
|
13
|
+
from tableauserverclient.server.pager import Pager
|
|
14
|
+
from tableauserverclient.server.endpoint.exceptions import NotSignedInError
|
|
15
|
+
|
|
16
|
+
from tableauserverclient.server.endpoint import (
|
|
17
|
+
Auth,
|
|
18
|
+
CustomViews,
|
|
19
|
+
DataAccelerationReport,
|
|
20
|
+
DataAlerts,
|
|
21
|
+
Databases,
|
|
22
|
+
Datasources,
|
|
23
|
+
QuerysetEndpoint,
|
|
24
|
+
MissingRequiredFieldError,
|
|
25
|
+
Endpoint,
|
|
26
|
+
Favorites,
|
|
27
|
+
Fileuploads,
|
|
28
|
+
FlowRuns,
|
|
29
|
+
Flows,
|
|
30
|
+
FlowTasks,
|
|
31
|
+
Groups,
|
|
32
|
+
Jobs,
|
|
33
|
+
Metadata,
|
|
34
|
+
Metrics,
|
|
35
|
+
Projects,
|
|
36
|
+
Schedules,
|
|
37
|
+
ServerInfo,
|
|
38
|
+
ServerResponseError,
|
|
39
|
+
Sites,
|
|
40
|
+
Subscriptions,
|
|
41
|
+
Tables,
|
|
42
|
+
Tasks,
|
|
43
|
+
Users,
|
|
44
|
+
Views,
|
|
45
|
+
Webhooks,
|
|
46
|
+
Workbooks,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
__all__ = [
|
|
50
|
+
"RequestFactory",
|
|
51
|
+
"CSVRequestOptions",
|
|
52
|
+
"ExcelRequestOptions",
|
|
53
|
+
"ImageRequestOptions",
|
|
54
|
+
"PDFRequestOptions",
|
|
55
|
+
"RequestOptions",
|
|
56
|
+
"Filter",
|
|
57
|
+
"Sort",
|
|
58
|
+
"Server",
|
|
59
|
+
"Pager",
|
|
60
|
+
"NotSignedInError",
|
|
61
|
+
"Auth",
|
|
62
|
+
"CustomViews",
|
|
63
|
+
"DataAccelerationReport",
|
|
64
|
+
"DataAlerts",
|
|
65
|
+
"Databases",
|
|
66
|
+
"Datasources",
|
|
67
|
+
"QuerysetEndpoint",
|
|
68
|
+
"MissingRequiredFieldError",
|
|
69
|
+
"Endpoint",
|
|
70
|
+
"Favorites",
|
|
71
|
+
"Fileuploads",
|
|
72
|
+
"FlowRuns",
|
|
73
|
+
"Flows",
|
|
74
|
+
"FlowTasks",
|
|
75
|
+
"Groups",
|
|
76
|
+
"Jobs",
|
|
77
|
+
"Metadata",
|
|
78
|
+
"Metrics",
|
|
79
|
+
"Projects",
|
|
80
|
+
"Schedules",
|
|
81
|
+
"ServerInfo",
|
|
82
|
+
"ServerResponseError",
|
|
83
|
+
"Sites",
|
|
84
|
+
"Subscriptions",
|
|
85
|
+
"Tables",
|
|
86
|
+
"Tasks",
|
|
87
|
+
"Users",
|
|
88
|
+
"Views",
|
|
89
|
+
"Webhooks",
|
|
90
|
+
"Workbooks",
|
|
91
|
+
]
|