tableauserverclient 0.26__tar.gz → 0.28__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tableauserverclient-0.26 → tableauserverclient-0.28}/PKG-INFO +16 -3
- {tableauserverclient-0.26 → tableauserverclient-0.28}/README.md +1 -1
- tableauserverclient-0.28/pyproject.toml +53 -0
- tableauserverclient-0.28/samples/create_extract_task.py +84 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/create_project.py +8 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/explore_workbook.py +10 -0
- tableauserverclient-0.28/samples/getting_started/1_hello_server.py +21 -0
- tableauserverclient-0.28/samples/getting_started/2_hello_site.py +50 -0
- tableauserverclient-0.28/samples/getting_started/3_hello_universe.py +96 -0
- tableauserverclient-0.28/tableauserverclient/__init__.py +58 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/_version.py +4 -4
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/helpers/logging.py +0 -2
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/__init__.py +1 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/column_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/connection_credentials.py +7 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/custom_view_item.py +5 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/data_acceleration_report_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/datasource_item.py +0 -9
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/group_item.py +1 -4
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/interval_item.py +12 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/job_item.py +10 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/metric_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/pagination_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/permissions_item.py +7 -4
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/project_item.py +2 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/schedule_item.py +6 -7
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/server_info_item.py +1 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/site_item.py +3 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/subscription_item.py +8 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/table_item.py +6 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/tableau_auth.py +41 -6
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/user_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/view_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/workbook_item.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/auth_endpoint.py +28 -7
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/groups_endpoint.py +4 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/projects_endpoint.py +2 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/tasks_endpoint.py +11 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/filter.py +5 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/request_factory.py +28 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/request_options.py +1 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient.egg-info/PKG-INFO +16 -3
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient.egg-info/SOURCES.txt +8 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient.egg-info/requires.txt +6 -5
- tableauserverclient-0.28/test/assets/group_update_async.xml +10 -0
- tableauserverclient-0.28/test/assets/request_option_filter_name_in.xml +12 -0
- tableauserverclient-0.28/test/assets/tasks_create_extract_task.xml +12 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/models/_models.py +23 -26
- tableauserverclient-0.28/test/models/test_repr.py +51 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_custom_view.py +2 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_datasource.py +4 -2
- tableauserverclient-0.28/test/test_filter.py +22 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_group.py +18 -1
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_group_model.py +0 -10
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_request_option.py +25 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_task.py +26 -1
- tableauserverclient-0.26/pyproject.toml +0 -50
- tableauserverclient-0.26/tableauserverclient/__init__.py +0 -17
- tableauserverclient-0.26/test/models/test_repr.py +0 -40
- {tableauserverclient-0.26 → tableauserverclient-0.28}/CHANGELOG.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/CONTRIBUTORS.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/LICENSE +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/LICENSE.versioneer +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/MANIFEST.in +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/contributing.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/docs/README.md +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/add_default_permission.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/create_group.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/create_schedules.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/explore_datasource.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/explore_favorites.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/explore_site.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/explore_webhooks.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/export.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/extracts.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/filter_sort_groups.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/filter_sort_projects.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/initialize_server.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/kill_all_jobs.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/list.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/login.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/metadata_query.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/move_workbook_projects.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/move_workbook_sites.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/name.txt +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/pagination_sample.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/publish_datasource.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/publish_workbook.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/query_permissions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/refresh.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/refresh_tasks.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/set_refresh_schedule.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/smoke_test.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/update_connection.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/samples/update_datasource_data.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/setup.cfg +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/setup.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/config.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/datetime_helpers.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/exponential_backoff.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/filesys_helpers.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/helpers/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/helpers/strings.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/connection_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/data_alert_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/database_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/dqw_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/exceptions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/favorites_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/fileupload_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/flow_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/flow_run_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/property_decorators.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/reference_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/revision_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/tableau_types.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/tag_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/target.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/task_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/webhook_item.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/namespace.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/py.typed +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/databases_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/datasources_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/dqw_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/exceptions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/flows_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/jobs_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/metadata_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/metrics_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/schedules_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/sites_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/tables_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/users_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/views_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/endpoint/workbooks_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/exceptions.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/pager.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/query.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/server.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/server/sort.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient.egg-info/dependency_links.txt +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient.egg-info/top_level.txt +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/_utils.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/Data/user_details.csv +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/Data/usernames.csv +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/RESTAPISample Image.png +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/Sample View Image.png +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/World Indicators.hyper +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/auth_sign_in.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/auth_sign_in_error.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/auth_sign_in_impersonate.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/custom_view_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/custom_view_get_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/custom_view_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/data_acceleration_report.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/data_alerts_add_user.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/data_alerts_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/data_alerts_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/data_alerts_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/database_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/database_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/database_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_add_tags.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_connection_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_data_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_populate_connections.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_publish.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_publish_async.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_refresh.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_revision.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/datasource_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/dqw_by_content_type.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/favorites_add_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/favorites_add_project.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/favorites_add_view.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/favorites_add_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/favorites_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/fileupload_append.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/fileupload_initialize.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_populate_connections.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_publish.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_refresh.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_runs_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_runs_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/flow_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_add_user.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_create_ad.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_create_async.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_populate_users.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_populate_users_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/group_users_added.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/job_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/job_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/job_get_by_id_failed.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/job_get_by_id_inprogress.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metadata_paged_1.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metadata_paged_2.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metadata_paged_3.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metadata_query_error.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metadata_query_expected_dict.dict +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metadata_query_success.json +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metrics_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metrics_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/metrics_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/populate_csv.csv +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/populate_pdf.pdf +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_content_permission.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/project_update_datasource_default_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/queryset_slicing_page_1.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/queryset_slicing_page_2.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/request_option_filter_equals.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/request_option_filter_tags_in.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/request_option_page_number.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/request_option_page_size.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/request_option_pagination.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/request_option_slicing_queryset.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_add_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_add_flow.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_add_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_create_daily.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_create_hourly.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_create_monthly.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_create_weekly.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/schedule_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/server_info_25.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/server_info_404.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/server_info_auth_info.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/server_info_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/site_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/site_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/site_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/site_get_by_name.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/site_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/subscription_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/subscription_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/subscription_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/table_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/table_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/tasks_run_now_response.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/tasks_with_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/tasks_with_workbook.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_add.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_add_favorite.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_populate_groups.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_populate_workbooks.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/user_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/view_add_tags.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/view_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/view_get_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/view_get_usage.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/view_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/view_update_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/webhook_create.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/webhook_create_request.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/webhook_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_add_tags.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_by_id.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_by_id_personal.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_empty.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_invalid_date.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_page_1.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_page_2.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_get_page_3.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_populate_connections.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_populate_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_populate_views.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_populate_views_usage.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_publish.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_publish_async.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_refresh.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_revision.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_update.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/assets/workbook_update_permissions.xml +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/http/test_http_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/request_factory/__init__.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/request_factory/test_datasource_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/request_factory/test_workbook_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_auth.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_connection_.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_data_acceleration_report.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_dataalert.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_database.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_datasource_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_dqw.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_endpoint.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_exponential_backoff.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_favorites.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_filesys_helpers.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_fileuploads.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_flow.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_flowruns.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_job.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_metadata.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_metrics.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_pager.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_project.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_project_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_regression_tests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_requests.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_schedule.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_server_info.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_site.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_site_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_sort.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_subscription.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_table.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_tableauauth_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_user.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_user_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_view.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_webhook.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_workbook.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/test/test_workbook_model.py +0 -0
- {tableauserverclient-0.26 → tableauserverclient-0.28}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tableauserverclient
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.28
|
|
4
4
|
Summary: A Python module for working with the Tableau Server REST API.
|
|
5
5
|
Author-email: Tableau <github@tableau.com>
|
|
6
6
|
License: The MIT License (MIT)
|
|
@@ -28,15 +28,28 @@ License: The MIT License (MIT)
|
|
|
28
28
|
Project-URL: repository, https://github.com/tableau/server-client-python
|
|
29
29
|
Classifier: Programming Language :: Python
|
|
30
30
|
Classifier: Programming Language :: Python :: 3
|
|
31
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
32
31
|
Classifier: Programming Language :: Python :: 3.8
|
|
33
32
|
Classifier: Programming Language :: Python :: 3.9
|
|
34
33
|
Classifier: Programming Language :: Python :: 3.10
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
35
36
|
Requires-Python: >=3.7
|
|
36
37
|
Description-Content-Type: text/markdown
|
|
37
|
-
Provides-Extra: test
|
|
38
38
|
License-File: LICENSE
|
|
39
39
|
License-File: LICENSE.versioneer
|
|
40
|
+
Requires-Dist: defusedxml>=0.7.1
|
|
41
|
+
Requires-Dist: packaging>=23.1
|
|
42
|
+
Requires-Dist: requests>=2.31
|
|
43
|
+
Requires-Dist: urllib3==2.0.6
|
|
44
|
+
Provides-Extra: test
|
|
45
|
+
Requires-Dist: argparse; extra == "test"
|
|
46
|
+
Requires-Dist: black==23.7; extra == "test"
|
|
47
|
+
Requires-Dist: mock; extra == "test"
|
|
48
|
+
Requires-Dist: mypy==1.4; extra == "test"
|
|
49
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
51
|
+
Requires-Dist: pytest-subtests; extra == "test"
|
|
52
|
+
Requires-Dist: requests-mock<2.0,>=1.0; extra == "test"
|
|
40
53
|
|
|
41
54
|
# Tableau Server Client (Python)
|
|
42
55
|
|
|
@@ -19,4 +19,4 @@ For more information on installing and using TSC, see the documentation:
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
## License
|
|
22
|
-
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftableau%2Fserver-client-python?ref=badge_large)
|
|
22
|
+
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftableau%2Fserver-client-python?ref=badge_large)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "versioneer>=0.29", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name="tableauserverclient"
|
|
7
|
+
|
|
8
|
+
dynamic = ["version"]
|
|
9
|
+
description='A Python module for working with the Tableau Server REST API.'
|
|
10
|
+
authors = [{name="Tableau", email="github@tableau.com"}]
|
|
11
|
+
license = {file = "LICENSE"}
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
|
|
14
|
+
dependencies = [
|
|
15
|
+
'defusedxml>=0.7.1', # latest as at 7/31/23
|
|
16
|
+
'packaging>=23.1', # latest as at 7/31/23
|
|
17
|
+
'requests>=2.31', # latest as at 7/31/23
|
|
18
|
+
'urllib3==2.0.6', # latest as at 7/31/23
|
|
19
|
+
]
|
|
20
|
+
requires-python = ">=3.7"
|
|
21
|
+
classifiers = [
|
|
22
|
+
"Programming Language :: Python",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Programming Language :: Python :: 3.8",
|
|
25
|
+
"Programming Language :: Python :: 3.9",
|
|
26
|
+
"Programming Language :: Python :: 3.10",
|
|
27
|
+
"Programming Language :: Python :: 3.11",
|
|
28
|
+
"Programming Language :: Python :: 3.12"
|
|
29
|
+
]
|
|
30
|
+
[project.urls]
|
|
31
|
+
repository = "https://github.com/tableau/server-client-python"
|
|
32
|
+
|
|
33
|
+
[project.optional-dependencies]
|
|
34
|
+
test = ["argparse", "black==23.7", "mock", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
|
|
35
|
+
"requests-mock>=1.0,<2.0"]
|
|
36
|
+
|
|
37
|
+
[tool.black]
|
|
38
|
+
line-length = 120
|
|
39
|
+
target-version = ['py37', 'py38', 'py39', 'py310', 'py311', 'py312']
|
|
40
|
+
|
|
41
|
+
[tool.mypy]
|
|
42
|
+
check_untyped_defs = false
|
|
43
|
+
disable_error_code = [
|
|
44
|
+
'misc',
|
|
45
|
+
# tableauserverclient\server\endpoint\datasources_endpoint.py:48: error: Cannot assign multiple types to name "FilePath" without an explicit "Type[...]" annotation [misc]
|
|
46
|
+
'annotation-unchecked' # can be removed when check_untyped_defs = true
|
|
47
|
+
]
|
|
48
|
+
files = ["tableauserverclient", "test"]
|
|
49
|
+
show_error_codes = true
|
|
50
|
+
ignore_missing_imports = true # defusedxml library has no types
|
|
51
|
+
[tool.pytest.ini_options]
|
|
52
|
+
testpaths = ["test"]
|
|
53
|
+
addopts = "--junitxml=./test.junit.xml"
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
####
|
|
2
|
+
# This script demonstrates how to create extract tasks in Tableau Cloud
|
|
3
|
+
# using the Tableau Server Client.
|
|
4
|
+
#
|
|
5
|
+
# To run the script, you must have installed Python 3.7 or later.
|
|
6
|
+
####
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
import argparse
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
from datetime import time
|
|
13
|
+
|
|
14
|
+
import tableauserverclient as TSC
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
parser = argparse.ArgumentParser(description="Creates sample extract refresh task.")
|
|
19
|
+
# Common options; please keep those in sync across all samples
|
|
20
|
+
parser.add_argument("--server", "-s", help="server address")
|
|
21
|
+
parser.add_argument("--site", "-S", help="site name")
|
|
22
|
+
parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
|
|
23
|
+
parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
|
|
24
|
+
parser.add_argument(
|
|
25
|
+
"--logging-level",
|
|
26
|
+
"-l",
|
|
27
|
+
choices=["debug", "info", "error"],
|
|
28
|
+
default="error",
|
|
29
|
+
help="desired logging level (set to error by default)",
|
|
30
|
+
)
|
|
31
|
+
# Options specific to this sample:
|
|
32
|
+
# This sample has no additional options, yet. If you add some, please add them here
|
|
33
|
+
|
|
34
|
+
args = parser.parse_args()
|
|
35
|
+
|
|
36
|
+
# Set logging level based on user input, or error by default
|
|
37
|
+
logging_level = getattr(logging, args.logging_level.upper())
|
|
38
|
+
logging.basicConfig(level=logging_level)
|
|
39
|
+
|
|
40
|
+
tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
|
|
41
|
+
server = TSC.Server(args.server, use_server_version=False)
|
|
42
|
+
server.add_http_options({"verify": False})
|
|
43
|
+
server.use_server_version()
|
|
44
|
+
with server.auth.sign_in(tableau_auth):
|
|
45
|
+
# Monthly Schedule
|
|
46
|
+
# This schedule will run on the 15th of every month at 11:30PM
|
|
47
|
+
monthly_interval = TSC.MonthlyInterval(start_time=time(23, 30), interval_value=15)
|
|
48
|
+
monthly_schedule = TSC.ScheduleItem(
|
|
49
|
+
None,
|
|
50
|
+
None,
|
|
51
|
+
None,
|
|
52
|
+
None,
|
|
53
|
+
monthly_interval,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Default to using first workbook found in server
|
|
57
|
+
all_workbook_items, pagination_item = server.workbooks.get()
|
|
58
|
+
my_workbook: TSC.WorkbookItem = all_workbook_items[0]
|
|
59
|
+
|
|
60
|
+
target_item = TSC.Target(
|
|
61
|
+
my_workbook.id, # the id of the workbook or datasource
|
|
62
|
+
"workbook", # alternatively can be "datasource"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
extract_item = TSC.TaskItem(
|
|
66
|
+
None,
|
|
67
|
+
"FullRefresh",
|
|
68
|
+
None,
|
|
69
|
+
None,
|
|
70
|
+
None,
|
|
71
|
+
monthly_schedule,
|
|
72
|
+
None,
|
|
73
|
+
target_item,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
try:
|
|
77
|
+
response = server.tasks.create(extract_item)
|
|
78
|
+
print(response)
|
|
79
|
+
except Exception as e:
|
|
80
|
+
print(e)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
if __name__ == "__main__":
|
|
84
|
+
main()
|
|
@@ -57,7 +57,14 @@ def main():
|
|
|
57
57
|
server.use_server_version()
|
|
58
58
|
|
|
59
59
|
# Without parent_id specified, projects are created at the top level.
|
|
60
|
-
|
|
60
|
+
# With the publish-samples attribute, the project will be created with sample items
|
|
61
|
+
top_level_project = TSC.ProjectItem(
|
|
62
|
+
name="Top Level Project",
|
|
63
|
+
description="A sample tsc project",
|
|
64
|
+
content_permissions=None,
|
|
65
|
+
parent_id=None,
|
|
66
|
+
samples=True,
|
|
67
|
+
)
|
|
61
68
|
top_level_project = create_project(server, top_level_project)
|
|
62
69
|
|
|
63
70
|
# Specifying parent_id creates a nested projects.
|
|
@@ -36,6 +36,9 @@ def main():
|
|
|
36
36
|
parser.add_argument(
|
|
37
37
|
"--preview-image", "-i", metavar="FILENAME", help="filename (a .png file) to save the preview image"
|
|
38
38
|
)
|
|
39
|
+
parser.add_argument(
|
|
40
|
+
"--powerpoint", "-ppt", metavar="FILENAME", help="filename (a .ppt file) to save the powerpoint deck"
|
|
41
|
+
)
|
|
39
42
|
|
|
40
43
|
args = parser.parse_args()
|
|
41
44
|
|
|
@@ -145,6 +148,13 @@ def main():
|
|
|
145
148
|
f.write(c.image)
|
|
146
149
|
print("saved to " + filename)
|
|
147
150
|
|
|
151
|
+
if args.powerpoint:
|
|
152
|
+
# Populate workbook preview image
|
|
153
|
+
server.workbooks.populate_powerpoint(sample_workbook)
|
|
154
|
+
with open(args.powerpoint, "wb") as f:
|
|
155
|
+
f.write(sample_workbook.powerpoint)
|
|
156
|
+
print("\nDownloaded powerpoint of workbook to {}".format(os.path.abspath(args.powerpoint)))
|
|
157
|
+
|
|
148
158
|
if args.delete:
|
|
149
159
|
print("deleting {}".format(c.id))
|
|
150
160
|
unlucky = TSC.CustomViewItem(c.id)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
####
|
|
2
|
+
# Getting started Part One of Three
|
|
3
|
+
# This script demonstrates how to use the Tableau Server Client to connect to a server
|
|
4
|
+
# You don't need to have a site or any experience with Tableau to run it
|
|
5
|
+
#
|
|
6
|
+
####
|
|
7
|
+
|
|
8
|
+
import tableauserverclient as TSC
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def main():
|
|
12
|
+
# This is the domain for Tableau's Developer Program
|
|
13
|
+
server_url = "https://10ax.online.tableau.com"
|
|
14
|
+
server = TSC.Server(server_url)
|
|
15
|
+
print("Connected to {}".format(server.server_info.baseurl))
|
|
16
|
+
print("Server information: {}".format(server.server_info))
|
|
17
|
+
print("Sign up for a test site at https://www.tableau.com/developer")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
main()
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
####
|
|
2
|
+
# Getting started Part Two of Three
|
|
3
|
+
# This script demonstrates how to use the Tableau Server Client to
|
|
4
|
+
# view the content on an existing site on Tableau Server/Online
|
|
5
|
+
# It assumes that you have already got a site and can visit it in a browser
|
|
6
|
+
#
|
|
7
|
+
####
|
|
8
|
+
|
|
9
|
+
import getpass
|
|
10
|
+
import tableauserverclient as TSC
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# 0 - launch your Tableau site in a web browser and look at the url to set the values below
|
|
14
|
+
def main():
|
|
15
|
+
# 1 - replace with your server domain: stop at the slash
|
|
16
|
+
server_url = "https://10ax.online.tableau.com"
|
|
17
|
+
|
|
18
|
+
# 2 - optional - change to false **for testing only** if you get a certificate error
|
|
19
|
+
use_ssl = True
|
|
20
|
+
|
|
21
|
+
server = TSC.Server(server_url, use_server_version=True, http_options={"verify": use_ssl})
|
|
22
|
+
print("Connected to {}".format(server.server_info.baseurl))
|
|
23
|
+
|
|
24
|
+
# 3 - replace with your site name exactly as it looks in the url
|
|
25
|
+
# e.g https://my-server/#/site/this-is-your-site-url-name/not-this-part
|
|
26
|
+
site_url_name = "" # leave empty if there is no site name in the url (you are on the default site)
|
|
27
|
+
|
|
28
|
+
# 4 - replace with your username.
|
|
29
|
+
# REMEMBER: if you are using Tableau Online, your username is the entire email address
|
|
30
|
+
username = "your-username-here"
|
|
31
|
+
password = getpass.getpass("Your password:") # so you don't save it in this file
|
|
32
|
+
tableau_auth = TSC.TableauAuth(username, password, site_id=site_url_name)
|
|
33
|
+
|
|
34
|
+
# OR instead of username+password, uncomment this section to use a Personal Access Token
|
|
35
|
+
# token_name = "your-token-name"
|
|
36
|
+
# token_value = "your-token-value-long-random-string"
|
|
37
|
+
# tableau_auth = TSC.PersonalAccessTokenAuth(token_name, token_value, site_id=site_url_name)
|
|
38
|
+
|
|
39
|
+
with server.auth.sign_in(tableau_auth):
|
|
40
|
+
projects, pagination = server.projects.get()
|
|
41
|
+
if projects:
|
|
42
|
+
print("{} projects".format(pagination.total_available))
|
|
43
|
+
project = projects[0]
|
|
44
|
+
print(project.name)
|
|
45
|
+
|
|
46
|
+
print("Done")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
main()
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
####
|
|
2
|
+
# Getting Started Part Three of Three
|
|
3
|
+
# This script demonstrates all the different types of 'content' a server contains
|
|
4
|
+
#
|
|
5
|
+
# To make it easy to run, it doesn't take any arguments - you need to edit the code with your info
|
|
6
|
+
####
|
|
7
|
+
|
|
8
|
+
import getpass
|
|
9
|
+
import tableauserverclient as TSC
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
# 1 - replace with your server url
|
|
14
|
+
server_url = "https://10ax.online.tableau.com"
|
|
15
|
+
|
|
16
|
+
# 2 - change to false **for testing only** if you get a certificate error
|
|
17
|
+
use_ssl = True
|
|
18
|
+
server = TSC.Server(server_url, use_server_version=True, http_options={"verify": use_ssl})
|
|
19
|
+
|
|
20
|
+
print("Connected to {}".format(server.server_info.baseurl))
|
|
21
|
+
|
|
22
|
+
# 3 - replace with your site name exactly as it looks in a url
|
|
23
|
+
# e.g https://my-server/#/this-is-your-site-url-name/
|
|
24
|
+
site_url_name = "" # leave empty if there is no site name in the url (you are on the default site)
|
|
25
|
+
|
|
26
|
+
# 4
|
|
27
|
+
username = "your-username-here"
|
|
28
|
+
password = getpass.getpass("Your password:") # so you don't save it in this file
|
|
29
|
+
tableau_auth = TSC.TableauAuth(username, password, site_id=site_url_name)
|
|
30
|
+
|
|
31
|
+
# OR instead of username+password, use a Personal Access Token (PAT) (required by Tableau Cloud)
|
|
32
|
+
# token_name = "your-token-name"
|
|
33
|
+
# token_value = "your-token-value-long-random-string"
|
|
34
|
+
# tableau_auth = TSC.PersonalAccessTokenAuth(token_name, token_value, site_id=site_url_name)
|
|
35
|
+
|
|
36
|
+
with server.auth.sign_in(tableau_auth):
|
|
37
|
+
projects, pagination = server.projects.get()
|
|
38
|
+
if projects:
|
|
39
|
+
print("{} projects".format(pagination.total_available))
|
|
40
|
+
for project in projects:
|
|
41
|
+
print(project.name)
|
|
42
|
+
|
|
43
|
+
workbooks, pagination = server.datasources.get()
|
|
44
|
+
if workbooks:
|
|
45
|
+
print("{} workbooks".format(pagination.total_available))
|
|
46
|
+
print(workbooks[0])
|
|
47
|
+
|
|
48
|
+
views, pagination = server.views.get()
|
|
49
|
+
if views:
|
|
50
|
+
print("{} views".format(pagination.total_available))
|
|
51
|
+
print(views[0])
|
|
52
|
+
|
|
53
|
+
datasources, pagination = server.datasources.get()
|
|
54
|
+
if datasources:
|
|
55
|
+
print("{} datasources".format(pagination.total_available))
|
|
56
|
+
print(datasources[0])
|
|
57
|
+
|
|
58
|
+
# I think all these other content types can go to a hello_universe script
|
|
59
|
+
# data alert, dqw, flow, ... do any of these require any add-ons?
|
|
60
|
+
jobs, pagination = server.jobs.get()
|
|
61
|
+
if jobs:
|
|
62
|
+
print("{} jobs".format(pagination.total_available))
|
|
63
|
+
print(jobs[0])
|
|
64
|
+
|
|
65
|
+
metrics, pagination = server.metrics.get()
|
|
66
|
+
if metrics:
|
|
67
|
+
print("{} metrics".format(pagination.total_available))
|
|
68
|
+
print(metrics[0])
|
|
69
|
+
|
|
70
|
+
schedules, pagination = server.schedules.get()
|
|
71
|
+
if schedules:
|
|
72
|
+
print("{} schedules".format(pagination.total_available))
|
|
73
|
+
print(schedules[0])
|
|
74
|
+
|
|
75
|
+
tasks, pagination = server.tasks.get()
|
|
76
|
+
if tasks:
|
|
77
|
+
print("{} tasks".format(pagination.total_available))
|
|
78
|
+
print(tasks[0])
|
|
79
|
+
|
|
80
|
+
webhooks, pagination = server.webhooks.get()
|
|
81
|
+
if webhooks:
|
|
82
|
+
print("{} webhooks".format(pagination.total_available))
|
|
83
|
+
print(webhooks[0])
|
|
84
|
+
|
|
85
|
+
users, pagination = server.metrics.get()
|
|
86
|
+
if users:
|
|
87
|
+
print("{} users".format(pagination.total_available))
|
|
88
|
+
print(users[0])
|
|
89
|
+
|
|
90
|
+
groups, pagination = server.groups.get()
|
|
91
|
+
if groups:
|
|
92
|
+
print("{} groups".format(pagination.total_available))
|
|
93
|
+
print(groups[0])
|
|
94
|
+
|
|
95
|
+
if __name__ == "__main__":
|
|
96
|
+
main()
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from ._version import get_versions
|
|
2
|
+
from .namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
|
|
3
|
+
from .models import (
|
|
4
|
+
BackgroundJobItem,
|
|
5
|
+
ColumnItem,
|
|
6
|
+
ConnectionCredentials,
|
|
7
|
+
ConnectionItem,
|
|
8
|
+
CustomViewItem,
|
|
9
|
+
DQWItem,
|
|
10
|
+
DailyInterval,
|
|
11
|
+
DataAlertItem,
|
|
12
|
+
DatabaseItem,
|
|
13
|
+
DatasourceItem,
|
|
14
|
+
FavoriteItem,
|
|
15
|
+
FlowItem,
|
|
16
|
+
FlowRunItem,
|
|
17
|
+
FileuploadItem,
|
|
18
|
+
GroupItem,
|
|
19
|
+
HourlyInterval,
|
|
20
|
+
IntervalItem,
|
|
21
|
+
JobItem,
|
|
22
|
+
JWTAuth,
|
|
23
|
+
MetricItem,
|
|
24
|
+
MonthlyInterval,
|
|
25
|
+
PaginationItem,
|
|
26
|
+
Permission,
|
|
27
|
+
PermissionsRule,
|
|
28
|
+
PersonalAccessTokenAuth,
|
|
29
|
+
ProjectItem,
|
|
30
|
+
RevisionItem,
|
|
31
|
+
ScheduleItem,
|
|
32
|
+
SiteItem,
|
|
33
|
+
ServerInfoItem,
|
|
34
|
+
SubscriptionItem,
|
|
35
|
+
TableItem,
|
|
36
|
+
TableauAuth,
|
|
37
|
+
Target,
|
|
38
|
+
TaskItem,
|
|
39
|
+
UserItem,
|
|
40
|
+
ViewItem,
|
|
41
|
+
WebhookItem,
|
|
42
|
+
WeeklyInterval,
|
|
43
|
+
WorkbookItem,
|
|
44
|
+
)
|
|
45
|
+
from .server import (
|
|
46
|
+
CSVRequestOptions,
|
|
47
|
+
ExcelRequestOptions,
|
|
48
|
+
ImageRequestOptions,
|
|
49
|
+
PDFRequestOptions,
|
|
50
|
+
RequestOptions,
|
|
51
|
+
MissingRequiredFieldError,
|
|
52
|
+
NotSignedInError,
|
|
53
|
+
ServerResponseError,
|
|
54
|
+
Filter,
|
|
55
|
+
Pager,
|
|
56
|
+
Server,
|
|
57
|
+
Sort,
|
|
58
|
+
)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
# This file was generated by 'versioneer.py' (0.
|
|
2
|
+
# This file was generated by 'versioneer.py' (0.29) from
|
|
3
3
|
# revision-control system data, or from the parent directory name of an
|
|
4
4
|
# unpacked source archive. Distribution tarballs contain a pre-generated copy
|
|
5
5
|
# of this file.
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2023-
|
|
11
|
+
"date": "2023-10-04T00:33:03-0700",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.
|
|
14
|
+
"full-revisionid": "72eb3c8500193e4f20defa20c8a6f8bbf34b2f43",
|
|
15
|
+
"version": "0.28"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/__init__.py
RENAMED
|
@@ -31,7 +31,7 @@ from .server_info_item import ServerInfoItem
|
|
|
31
31
|
from .site_item import SiteItem
|
|
32
32
|
from .subscription_item import SubscriptionItem
|
|
33
33
|
from .table_item import TableItem
|
|
34
|
-
from .tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth
|
|
34
|
+
from .tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
|
|
35
35
|
from .tableau_types import Resource, TableauItem, plural_type
|
|
36
36
|
from .tag_item import TagItem
|
|
37
37
|
from .target import Target
|
|
@@ -15,6 +15,13 @@ class ConnectionCredentials(object):
|
|
|
15
15
|
self.embed = embed
|
|
16
16
|
self.oauth = oauth
|
|
17
17
|
|
|
18
|
+
def __repr__(self):
|
|
19
|
+
if self.password:
|
|
20
|
+
print = "redacted"
|
|
21
|
+
else:
|
|
22
|
+
print = "None"
|
|
23
|
+
return f"<{self.__class__.__name__} name={self.name} password={print} embed={self.embed} oauth={self.oauth} >"
|
|
24
|
+
|
|
18
25
|
@property
|
|
19
26
|
def embed(self):
|
|
20
27
|
return self._embed
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/custom_view_item.py
RENAMED
|
@@ -134,6 +134,7 @@ class CustomViewItem(object):
|
|
|
134
134
|
cv_item._content_url = custom_view_xml.get("contentUrl", None)
|
|
135
135
|
cv_item._id = custom_view_xml.get("id", None)
|
|
136
136
|
cv_item._name = custom_view_xml.get("name", None)
|
|
137
|
+
cv_item._shared = string_to_bool(custom_view_xml.get("shared", None))
|
|
137
138
|
|
|
138
139
|
if owner_elem is not None:
|
|
139
140
|
parsed_owners = UserItem.from_response_as_owner(tostring(custom_view_xml), ns)
|
|
@@ -154,3 +155,7 @@ class CustomViewItem(object):
|
|
|
154
155
|
|
|
155
156
|
all_view_items.append(cv_item)
|
|
156
157
|
return all_view_items
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def string_to_bool(s: Optional[str]) -> bool:
|
|
161
|
+
return (s or "").lower() == "true"
|
|
@@ -46,6 +46,9 @@ class DataAccelerationReportItem(object):
|
|
|
46
46
|
def __init__(self, comparison_records):
|
|
47
47
|
self._comparison_records = comparison_records
|
|
48
48
|
|
|
49
|
+
def __repr__(self):
|
|
50
|
+
return f"<(deprecated)DataAccelerationReportItem site={self.site} sheet={sheet_uri}>"
|
|
51
|
+
|
|
49
52
|
@property
|
|
50
53
|
def comparison_records(self):
|
|
51
54
|
return self._comparison_records
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/datasource_item.py
RENAMED
|
@@ -326,17 +326,8 @@ class DatasourceItem(object):
|
|
|
326
326
|
updated_at = parse_datetime(datasource_xml.get("updatedAt", None))
|
|
327
327
|
certification_note = datasource_xml.get("certificationNote", None)
|
|
328
328
|
certified = str(datasource_xml.get("isCertified", None)).lower() == "true"
|
|
329
|
-
certification_note = datasource_xml.get("certificationNote", None)
|
|
330
|
-
certified = str(datasource_xml.get("isCertified", None)).lower() == "true"
|
|
331
|
-
content_url = datasource_xml.get("contentUrl", None)
|
|
332
|
-
created_at = parse_datetime(datasource_xml.get("createdAt", None))
|
|
333
|
-
datasource_type = datasource_xml.get("type", None)
|
|
334
|
-
description = datasource_xml.get("description", None)
|
|
335
329
|
encrypt_extracts = datasource_xml.get("encryptExtracts", None)
|
|
336
330
|
has_extracts = datasource_xml.get("hasExtracts", None)
|
|
337
|
-
id_ = datasource_xml.get("id", None)
|
|
338
|
-
name = datasource_xml.get("name", None)
|
|
339
|
-
updated_at = parse_datetime(datasource_xml.get("updatedAt", None))
|
|
340
331
|
use_remote_query_agent = datasource_xml.get("useRemoteQueryAgent", None)
|
|
341
332
|
webpage_url = datasource_xml.get("webpageUrl", None)
|
|
342
333
|
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/group_item.py
RENAMED
|
@@ -26,11 +26,9 @@ class GroupItem(object):
|
|
|
26
26
|
self.name: Optional[str] = name
|
|
27
27
|
self.domain_name: Optional[str] = domain_name
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def __repr__(self):
|
|
30
30
|
return "{}({!r})".format(self.__class__.__name__, self.__dict__)
|
|
31
31
|
|
|
32
|
-
__repr__ = __str__
|
|
33
|
-
|
|
34
32
|
@property
|
|
35
33
|
def domain_name(self) -> Optional[str]:
|
|
36
34
|
return self._domain_name
|
|
@@ -48,7 +46,6 @@ class GroupItem(object):
|
|
|
48
46
|
return self._name
|
|
49
47
|
|
|
50
48
|
@name.setter
|
|
51
|
-
@property_not_empty
|
|
52
49
|
def name(self, value: str) -> None:
|
|
53
50
|
self._name = value
|
|
54
51
|
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/interval_item.py
RENAMED
|
@@ -31,6 +31,9 @@ class HourlyInterval(object):
|
|
|
31
31
|
self.end_time = end_time
|
|
32
32
|
self.interval = interval_value
|
|
33
33
|
|
|
34
|
+
def __repr__(self):
|
|
35
|
+
return f"<{self.__class__.__name__} start={self.start_time} end={self.end_time} interval={self.interval}>"
|
|
36
|
+
|
|
34
37
|
@property
|
|
35
38
|
def _frequency(self):
|
|
36
39
|
return IntervalItem.Frequency.Hourly
|
|
@@ -86,6 +89,9 @@ class DailyInterval(object):
|
|
|
86
89
|
self.start_time = start_time
|
|
87
90
|
self.interval = interval_values
|
|
88
91
|
|
|
92
|
+
def __repr__(self):
|
|
93
|
+
return f"<{self.__class__.__name__} start={self.start_time} interval={self.interval}>"
|
|
94
|
+
|
|
89
95
|
@property
|
|
90
96
|
def _frequency(self):
|
|
91
97
|
return IntervalItem.Frequency.Daily
|
|
@@ -114,6 +120,9 @@ class WeeklyInterval(object):
|
|
|
114
120
|
self.start_time = start_time
|
|
115
121
|
self.interval = interval_values
|
|
116
122
|
|
|
123
|
+
def __repr__(self):
|
|
124
|
+
return f"<{self.__class__.__name__} start={self.start_time} interval={self.interval}>"
|
|
125
|
+
|
|
117
126
|
@property
|
|
118
127
|
def _frequency(self):
|
|
119
128
|
return IntervalItem.Frequency.Weekly
|
|
@@ -148,6 +157,9 @@ class MonthlyInterval(object):
|
|
|
148
157
|
self.start_time = start_time
|
|
149
158
|
self.interval = str(interval_value)
|
|
150
159
|
|
|
160
|
+
def __repr__(self):
|
|
161
|
+
return f"<{self.__class__.__name__} start={self.start_time} interval={self.interval}>"
|
|
162
|
+
|
|
151
163
|
@property
|
|
152
164
|
def _frequency(self):
|
|
153
165
|
return IntervalItem.Frequency.Monthly
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/job_item.py
RENAMED
|
@@ -117,12 +117,15 @@ class JobItem(object):
|
|
|
117
117
|
def updated_at(self) -> Optional[datetime.datetime]:
|
|
118
118
|
return self._updated_at
|
|
119
119
|
|
|
120
|
-
def
|
|
120
|
+
def __str__(self):
|
|
121
121
|
return (
|
|
122
122
|
"<Job#{_id} {_type} created_at({_created_at}) started_at({_started_at}) updated_at({_updated_at}) completed_at({_completed_at})"
|
|
123
123
|
" progress ({_progress}) finish_code({_finish_code})>".format(**self.__dict__)
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
+
def __repr__(self):
|
|
127
|
+
return self.__str__() + " { " + ", ".join(" % s: % s" % item for item in vars(self).items()) + "}"
|
|
128
|
+
|
|
126
129
|
@classmethod
|
|
127
130
|
def from_response(cls, xml, ns) -> List["JobItem"]:
|
|
128
131
|
parsed_response = fromstring(xml)
|
|
@@ -202,6 +205,12 @@ class BackgroundJobItem(object):
|
|
|
202
205
|
self._title = title
|
|
203
206
|
self._subtitle = subtitle
|
|
204
207
|
|
|
208
|
+
def __str__(self):
|
|
209
|
+
return f"<{self.__class__.name} {self._id} {self._type}>"
|
|
210
|
+
|
|
211
|
+
def __repr__(self):
|
|
212
|
+
return self.__str__() + " { " + ", ".join(" % s: % s" % item for item in vars(self).items()) + "}"
|
|
213
|
+
|
|
205
214
|
@property
|
|
206
215
|
def id(self) -> str:
|
|
207
216
|
return self._id
|
{tableauserverclient-0.26 → tableauserverclient-0.28}/tableauserverclient/models/metric_item.py
RENAMED
|
@@ -115,9 +115,12 @@ class MetricItem(object):
|
|
|
115
115
|
def _set_permissions(self, permissions):
|
|
116
116
|
self._permissions = permissions
|
|
117
117
|
|
|
118
|
-
def
|
|
118
|
+
def __str__(self):
|
|
119
119
|
return "<MetricItem# name={_name} id={_id} owner_id={_owner_id}>".format(**vars(self))
|
|
120
120
|
|
|
121
|
+
def __repr__(self):
|
|
122
|
+
return self.__str__() + " { " + ", ".join(" % s: % s" % item for item in vars(self).items()) + "}"
|
|
123
|
+
|
|
121
124
|
@classmethod
|
|
122
125
|
def from_response(
|
|
123
126
|
cls,
|