tableauserverclient 0.33__tar.gz → 0.35__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.
Files changed (426) hide show
  1. {tableauserverclient-0.33 → tableauserverclient-0.35}/PKG-INFO +7 -7
  2. {tableauserverclient-0.33 → tableauserverclient-0.35}/pyproject.toml +20 -11
  3. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/add_default_permission.py +2 -2
  4. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_extract_task.py +12 -7
  5. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_group.py +6 -7
  6. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_project.py +1 -1
  7. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/create_schedules.py +4 -4
  8. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_datasource.py +11 -11
  9. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_favorites.py +7 -9
  10. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_site.py +1 -1
  11. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_webhooks.py +2 -2
  12. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/explore_workbook.py +14 -19
  13. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/export.py +16 -7
  14. tableauserverclient-0.35/samples/extracts.py +91 -0
  15. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/filter_sort_groups.py +25 -19
  16. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/filter_sort_projects.py +1 -1
  17. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/getting_started/1_hello_server.py +2 -2
  18. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/getting_started/2_hello_site.py +2 -2
  19. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/getting_started/3_hello_universe.py +11 -11
  20. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/initialize_server.py +5 -5
  21. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/list.py +4 -1
  22. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/login.py +14 -11
  23. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/move_workbook_sites.py +4 -4
  24. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/pagination_sample.py +4 -4
  25. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/publish_datasource.py +16 -9
  26. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/publish_workbook.py +34 -10
  27. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/query_permissions.py +3 -5
  28. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/refresh.py +25 -8
  29. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/refresh_tasks.py +2 -2
  30. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/set_refresh_schedule.py +1 -1
  31. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/update_connection.py +1 -1
  32. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/update_workbook_data_freshness_policy.py +1 -1
  33. tableauserverclient-0.35/setup.cfg +4 -0
  34. {tableauserverclient-0.33 → tableauserverclient-0.35}/setup.py +0 -9
  35. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/__init__.py +33 -23
  36. {tableauserverclient-0.33/tableauserverclient → tableauserverclient-0.35/tableauserverclient/bin}/_version.py +3 -3
  37. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/config.py +5 -3
  38. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/column_item.py +1 -1
  39. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/connection_credentials.py +18 -2
  40. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/connection_item.py +44 -6
  41. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/custom_view_item.py +78 -11
  42. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/data_acceleration_report_item.py +2 -2
  43. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/data_alert_item.py +5 -5
  44. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/data_freshness_policy_item.py +6 -6
  45. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/database_item.py +3 -3
  46. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/datasource_item.py +10 -10
  47. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/dqw_item.py +1 -1
  48. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/favorites_item.py +5 -6
  49. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/fileupload_item.py +1 -1
  50. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/flow_item.py +54 -9
  51. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/flow_run_item.py +3 -3
  52. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/group_item.py +44 -4
  53. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/groupset_item.py +4 -4
  54. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/interval_item.py +9 -9
  55. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/job_item.py +73 -8
  56. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/linked_tasks_item.py +5 -5
  57. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/metric_item.py +5 -5
  58. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/pagination_item.py +1 -1
  59. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/permissions_item.py +12 -10
  60. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/project_item.py +73 -19
  61. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/property_decorators.py +12 -11
  62. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/reference_item.py +2 -2
  63. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/revision_item.py +3 -3
  64. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/schedule_item.py +2 -2
  65. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/server_info_item.py +26 -6
  66. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/site_item.py +69 -3
  67. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/subscription_item.py +3 -3
  68. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/table_item.py +1 -1
  69. tableauserverclient-0.35/tableauserverclient/models/tableau_auth.py +216 -0
  70. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/tableau_types.py +2 -2
  71. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/tag_item.py +3 -4
  72. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/task_item.py +34 -4
  73. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/user_item.py +47 -17
  74. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/view_item.py +66 -13
  75. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/virtual_connection_item.py +6 -5
  76. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/webhook_item.py +39 -6
  77. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/workbook_item.py +116 -13
  78. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/namespace.py +1 -1
  79. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/__init__.py +2 -1
  80. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/auth_endpoint.py +69 -10
  81. tableauserverclient-0.35/tableauserverclient/server/endpoint/custom_views_endpoint.py +394 -0
  82. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +2 -2
  83. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/data_alert_endpoint.py +14 -14
  84. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/databases_endpoint.py +13 -12
  85. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/datasources_endpoint.py +61 -62
  86. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +19 -18
  87. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/dqw_endpoint.py +9 -9
  88. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/endpoint.py +19 -21
  89. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/exceptions.py +23 -7
  90. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/favorites_endpoint.py +31 -31
  91. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +9 -11
  92. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +15 -13
  93. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/flow_task_endpoint.py +2 -2
  94. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/flows_endpoint.py +344 -29
  95. tableauserverclient-0.35/tableauserverclient/server/endpoint/groups_endpoint.py +520 -0
  96. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/groupsets_endpoint.py +2 -2
  97. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/jobs_endpoint.py +116 -7
  98. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/linked_tasks_endpoint.py +2 -2
  99. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/metadata_endpoint.py +2 -2
  100. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/metrics_endpoint.py +10 -10
  101. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/permissions_endpoint.py +13 -15
  102. tableauserverclient-0.35/tableauserverclient/server/endpoint/projects_endpoint.py +850 -0
  103. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/resource_tagger.py +14 -13
  104. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/schedules_endpoint.py +17 -18
  105. tableauserverclient-0.35/tableauserverclient/server/endpoint/server_info_endpoint.py +82 -0
  106. tableauserverclient-0.35/tableauserverclient/server/endpoint/sites_endpoint.py +420 -0
  107. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +10 -10
  108. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/tables_endpoint.py +15 -14
  109. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/tasks_endpoint.py +86 -8
  110. tableauserverclient-0.35/tableauserverclient/server/endpoint/users_endpoint.py +554 -0
  111. tableauserverclient-0.35/tableauserverclient/server/endpoint/views_endpoint.py +502 -0
  112. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/virtual_connections_endpoint.py +6 -5
  113. tableauserverclient-0.35/tableauserverclient/server/endpoint/webhooks_endpoint.py +147 -0
  114. tableauserverclient-0.35/tableauserverclient/server/endpoint/workbooks_endpoint.py +1169 -0
  115. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/filter.py +2 -2
  116. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/pager.py +29 -6
  117. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/query.py +68 -19
  118. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/request_factory.py +57 -37
  119. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/request_options.py +243 -141
  120. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/server.py +76 -10
  121. tableauserverclient-0.35/tableauserverclient/server/sort.py +21 -0
  122. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/PKG-INFO +7 -7
  123. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/SOURCES.txt +3 -4
  124. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/requires.txt +4 -4
  125. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/_utils.py +14 -0
  126. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get.xml +1 -2
  127. tableauserverclient-0.35/test/assets/project_populate_virtualconnection_default_permissions.xml +19 -0
  128. tableauserverclient-0.35/test/assets/project_update_virtualconnection_default_permissions.xml +17 -0
  129. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_auth.py +8 -3
  130. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_custom_view.py +72 -0
  131. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_dataalert.py +1 -1
  132. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_datasource.py +10 -5
  133. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_endpoint.py +1 -1
  134. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_favorites.py +9 -9
  135. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_filesys_helpers.py +1 -1
  136. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_fileuploads.py +3 -3
  137. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_flowruns.py +17 -6
  138. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_flowtask.py +1 -1
  139. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_group.py +0 -1
  140. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_job.py +4 -4
  141. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_pager.py +12 -0
  142. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_project.py +125 -18
  143. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_regression_tests.py +1 -5
  144. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_request_option.py +17 -7
  145. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_schedule.py +9 -9
  146. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_server_info.py +10 -0
  147. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_site_model.py +0 -2
  148. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_tagging.py +2 -2
  149. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_task.py +4 -4
  150. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_user.py +2 -5
  151. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_user_model.py +4 -5
  152. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_view.py +3 -3
  153. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_view_acceleration.py +1 -1
  154. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_workbook.py +45 -6
  155. tableauserverclient-0.33/samples/extracts.py +0 -69
  156. tableauserverclient-0.33/samples/update_workbook_data_acceleration.py +0 -109
  157. tableauserverclient-0.33/setup.cfg +0 -11
  158. tableauserverclient-0.33/tableauserverclient/models/tableau_auth.py +0 -106
  159. tableauserverclient-0.33/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -165
  160. tableauserverclient-0.33/tableauserverclient/server/endpoint/groups_endpoint.py +0 -205
  161. tableauserverclient-0.33/tableauserverclient/server/endpoint/projects_endpoint.py +0 -199
  162. tableauserverclient-0.33/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -47
  163. tableauserverclient-0.33/tableauserverclient/server/endpoint/sites_endpoint.py +0 -155
  164. tableauserverclient-0.33/tableauserverclient/server/endpoint/users_endpoint.py +0 -207
  165. tableauserverclient-0.33/tableauserverclient/server/endpoint/views_endpoint.py +0 -260
  166. tableauserverclient-0.33/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -70
  167. tableauserverclient-0.33/tableauserverclient/server/endpoint/workbooks_endpoint.py +0 -581
  168. tableauserverclient-0.33/tableauserverclient/server/sort.py +0 -7
  169. tableauserverclient-0.33/versioneer.py +0 -1846
  170. {tableauserverclient-0.33 → tableauserverclient-0.35}/CHANGELOG.md +0 -0
  171. {tableauserverclient-0.33 → tableauserverclient-0.35}/CONTRIBUTORS.md +0 -0
  172. {tableauserverclient-0.33 → tableauserverclient-0.35}/LICENSE +0 -0
  173. {tableauserverclient-0.33 → tableauserverclient-0.35}/LICENSE.versioneer +0 -0
  174. {tableauserverclient-0.33 → tableauserverclient-0.35}/MANIFEST.in +0 -0
  175. {tableauserverclient-0.33 → tableauserverclient-0.35}/README.md +0 -0
  176. {tableauserverclient-0.33 → tableauserverclient-0.35}/contributing.md +0 -0
  177. {tableauserverclient-0.33 → tableauserverclient-0.35}/docs/README.md +0 -0
  178. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/kill_all_jobs.py +0 -0
  179. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/metadata_query.py +0 -0
  180. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/move_workbook_projects.py +0 -0
  181. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/name.txt +0 -0
  182. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/smoke_test.py +0 -0
  183. {tableauserverclient-0.33 → tableauserverclient-0.35}/samples/update_datasource_data.py +0 -0
  184. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/datetime_helpers.py +0 -0
  185. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/exponential_backoff.py +0 -0
  186. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/filesys_helpers.py +0 -0
  187. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/__init__.py +0 -0
  188. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/headers.py +0 -0
  189. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/logging.py +0 -0
  190. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/helpers/strings.py +0 -0
  191. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/__init__.py +0 -0
  192. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/exceptions.py +0 -0
  193. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/models/target.py +0 -0
  194. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/py.typed +0 -0
  195. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/endpoint/__init__.py +0 -0
  196. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient/server/exceptions.py +0 -0
  197. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/dependency_links.txt +0 -0
  198. {tableauserverclient-0.33 → tableauserverclient-0.35}/tableauserverclient.egg-info/top_level.txt +0 -0
  199. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/__init__.py +0 -0
  200. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
  201. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Data/user_details.csv +0 -0
  202. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Data/usernames.csv +0 -0
  203. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/RESTAPISample Image.png +0 -0
  204. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/Sample View Image.png +0 -0
  205. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/World Indicators.hyper +0 -0
  206. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/auth_sign_in.xml +0 -0
  207. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/auth_sign_in_error.xml +0 -0
  208. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/auth_sign_in_impersonate.xml +0 -0
  209. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_download.json +0 -0
  210. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_get.xml +0 -0
  211. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_get_id.xml +0 -0
  212. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/custom_view_update.xml +0 -0
  213. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_acceleration_report.xml +0 -0
  214. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_add_user.xml +0 -0
  215. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_get.xml +0 -0
  216. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_get_by_id.xml +0 -0
  217. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/data_alerts_update.xml +0 -0
  218. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/database_get.xml +0 -0
  219. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/database_populate_permissions.xml +0 -0
  220. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/database_update.xml +0 -0
  221. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_add_tags.xml +0 -0
  222. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_connection_update.xml +0 -0
  223. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_data_update.xml +0 -0
  224. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_get.xml +0 -0
  225. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_get_by_id.xml +0 -0
  226. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_get_empty.xml +0 -0
  227. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_populate_connections.xml +0 -0
  228. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_populate_permissions.xml +0 -0
  229. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_publish.xml +0 -0
  230. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_publish_async.xml +0 -0
  231. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_refresh.xml +0 -0
  232. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_revision.xml +0 -0
  233. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/datasource_update.xml +0 -0
  234. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/dqw_by_content_type.xml +0 -0
  235. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_datasource.xml +0 -0
  236. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_project.xml +0 -0
  237. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_view.xml +0 -0
  238. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_add_workbook.xml +0 -0
  239. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/favorites_get.xml +0 -0
  240. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/fileupload_append.xml +0 -0
  241. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/fileupload_initialize.xml +0 -0
  242. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_get.xml +0 -0
  243. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_get_by_id.xml +0 -0
  244. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_populate_connections.xml +0 -0
  245. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_populate_permissions.xml +0 -0
  246. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_publish.xml +0 -0
  247. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_refresh.xml +0 -0
  248. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get_by_id.xml +0 -0
  249. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
  250. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
  251. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/flow_update.xml +0 -0
  252. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_add_user.xml +0 -0
  253. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_add_users.xml +0 -0
  254. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_create.xml +0 -0
  255. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_create_ad.xml +0 -0
  256. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_create_async.xml +0 -0
  257. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_get.xml +0 -0
  258. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_populate_users.xml +0 -0
  259. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_populate_users_empty.xml +0 -0
  260. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_update.xml +0 -0
  261. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_update_async.xml +0 -0
  262. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/group_users_added.xml +0 -0
  263. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_create.xml +0 -0
  264. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_get.xml +0 -0
  265. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_get_by_id.xml +0 -0
  266. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/groupsets_update.xml +0 -0
  267. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get.xml +0 -0
  268. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id.xml +0 -0
  269. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id_failed.xml +0 -0
  270. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
  271. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/job_get_by_id_inprogress.xml +0 -0
  272. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/linked_tasks_get.xml +0 -0
  273. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/linked_tasks_run_now.xml +0 -0
  274. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_paged_1.json +0 -0
  275. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_paged_2.json +0 -0
  276. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_paged_3.json +0 -0
  277. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_query_error.json +0 -0
  278. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_query_expected_dict.dict +0 -0
  279. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metadata_query_success.json +0 -0
  280. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metrics_get.xml +0 -0
  281. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metrics_get_by_id.xml +0 -0
  282. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/metrics_update.xml +0 -0
  283. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/odata_connection.xml +0 -0
  284. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/populate_csv.csv +0 -0
  285. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/populate_pdf.pdf +0 -0
  286. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_content_permission.xml +0 -0
  287. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_create.xml +0 -0
  288. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_get.xml +0 -0
  289. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_populate_permissions.xml +0 -0
  290. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
  291. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_update.xml +0 -0
  292. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/project_update_datasource_default_permissions.xml +0 -0
  293. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/queryset_slicing_page_1.xml +0 -0
  294. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/queryset_slicing_page_2.xml +0 -0
  295. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_filter_equals.xml +0 -0
  296. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_filter_name_in.xml +0 -0
  297. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_filter_tags_in.xml +0 -0
  298. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_page_number.xml +0 -0
  299. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_page_size.xml +0 -0
  300. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_pagination.xml +0 -0
  301. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/request_option_slicing_queryset.xml +0 -0
  302. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_datasource.xml +0 -0
  303. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_flow.xml +0 -0
  304. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_workbook.xml +0 -0
  305. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
  306. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_daily.xml +0 -0
  307. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_hourly.xml +0 -0
  308. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_monthly.xml +0 -0
  309. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_create_weekly.xml +0 -0
  310. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get.xml +0 -0
  311. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_by_id.xml +0 -0
  312. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_daily_id.xml +0 -0
  313. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_empty.xml +0 -0
  314. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_hourly_id.xml +0 -0
  315. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_monthly_id.xml +0 -0
  316. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_get_monthly_id_2.xml +0 -0
  317. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/schedule_update.xml +0 -0
  318. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_25.xml +0 -0
  319. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_404.xml +0 -0
  320. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_auth_info.xml +0 -0
  321. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/server_info_get.xml +0 -0
  322. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_create.xml +0 -0
  323. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_get.xml +0 -0
  324. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_get_by_id.xml +0 -0
  325. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_get_by_name.xml +0 -0
  326. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/site_update.xml +0 -0
  327. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/subscription_create.xml +0 -0
  328. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/subscription_get.xml +0 -0
  329. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/subscription_get_by_id.xml +0 -0
  330. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/table_get.xml +0 -0
  331. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/table_update.xml +0 -0
  332. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_create_extract_task.xml +0 -0
  333. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_create_flow_task.xml +0 -0
  334. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
  335. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_run_now_response.xml +0 -0
  336. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
  337. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_datasource.xml +0 -0
  338. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_interval.xml +0 -0
  339. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_workbook.xml +0 -0
  340. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
  341. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/tasks_without_schedule.xml +0 -0
  342. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_add.xml +0 -0
  343. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_add_favorite.xml +0 -0
  344. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_get.xml +0 -0
  345. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_get_by_id.xml +0 -0
  346. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_get_empty.xml +0 -0
  347. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_populate_groups.xml +0 -0
  348. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_populate_workbooks.xml +0 -0
  349. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/user_update.xml +0 -0
  350. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_add_tags.xml +0 -0
  351. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get.xml +0 -0
  352. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get_id.xml +0 -0
  353. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get_id_usage.xml +0 -0
  354. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_get_usage.xml +0 -0
  355. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_populate_permissions.xml +0 -0
  356. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/view_update_permissions.xml +0 -0
  357. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connection_add_permissions.xml +0 -0
  358. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connection_database_connection_update.xml +0 -0
  359. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connection_populate_connections.xml +0 -0
  360. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_download.xml +0 -0
  361. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_get.xml +0 -0
  362. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_publish.xml +0 -0
  363. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_revisions.xml +0 -0
  364. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/virtual_connections_update.xml +0 -0
  365. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/webhook_create.xml +0 -0
  366. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/webhook_create_request.xml +0 -0
  367. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/webhook_get.xml +0 -0
  368. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_add_tags.xml +0 -0
  369. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get.xml +0 -0
  370. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_by_id.xml +0 -0
  371. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
  372. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_by_id_personal.xml +0 -0
  373. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_empty.xml +0 -0
  374. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_invalid_date.xml +0 -0
  375. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_page_1.xml +0 -0
  376. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_page_2.xml +0 -0
  377. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_get_page_3.xml +0 -0
  378. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_connections.xml +0 -0
  379. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_permissions.xml +0 -0
  380. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_views.xml +0 -0
  381. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_populate_views_usage.xml +0 -0
  382. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_publish.xml +0 -0
  383. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_publish_async.xml +0 -0
  384. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_refresh.xml +0 -0
  385. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_revision.xml +0 -0
  386. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update.xml +0 -0
  387. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_acceleration_status.xml +0 -0
  388. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
  389. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
  390. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
  391. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
  392. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
  393. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
  394. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_permissions.xml +0 -0
  395. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
  396. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/http/test_http_requests.py +0 -0
  397. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/models/_models.py +0 -0
  398. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/models/test_repr.py +0 -0
  399. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/request_factory/__init__.py +0 -0
  400. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/request_factory/test_datasource_requests.py +0 -0
  401. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/request_factory/test_workbook_requests.py +0 -0
  402. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_connection_.py +0 -0
  403. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_data_acceleration_report.py +0 -0
  404. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_data_freshness_policy.py +0 -0
  405. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_database.py +0 -0
  406. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_datasource_model.py +0 -0
  407. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_dqw.py +0 -0
  408. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_exponential_backoff.py +0 -0
  409. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_filter.py +0 -0
  410. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_flow.py +0 -0
  411. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_group_model.py +0 -0
  412. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_groupsets.py +0 -0
  413. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_linked_tasks.py +0 -0
  414. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_metadata.py +0 -0
  415. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_metrics.py +0 -0
  416. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_permissionsrule.py +0 -0
  417. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_project_model.py +0 -0
  418. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_requests.py +0 -0
  419. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_site.py +0 -0
  420. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_sort.py +0 -0
  421. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_subscription.py +0 -0
  422. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_table.py +0 -0
  423. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_tableauauth_model.py +0 -0
  424. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_virtual_connection.py +0 -0
  425. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_webhook.py +0 -0
  426. {tableauserverclient-0.33 → tableauserverclient-0.35}/test/test_workbook_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tableauserverclient
3
- Version: 0.33
3
+ Version: 0.35
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,22 +28,22 @@ 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.8
32
31
  Classifier: Programming Language :: Python :: 3.9
33
32
  Classifier: Programming Language :: Python :: 3.10
34
33
  Classifier: Programming Language :: Python :: 3.11
35
34
  Classifier: Programming Language :: Python :: 3.12
36
- Requires-Python: >=3.7
35
+ Classifier: Programming Language :: Python :: 3.13
36
+ Requires-Python: >=3.9
37
37
  Description-Content-Type: text/markdown
38
38
  License-File: LICENSE
39
39
  License-File: LICENSE.versioneer
40
40
  Requires-Dist: defusedxml>=0.7.1
41
41
  Requires-Dist: packaging>=23.1
42
- Requires-Dist: requests>=2.31
43
- Requires-Dist: urllib3==2.2.2
44
- Requires-Dist: typing_extensions>=4.0.1
42
+ Requires-Dist: requests>=2.32
43
+ Requires-Dist: urllib3<3,>=2.2.2
44
+ Requires-Dist: typing_extensions>=4.0
45
45
  Provides-Extra: test
46
- Requires-Dist: black==23.7; extra == "test"
46
+ Requires-Dist: black==24.8; extra == "test"
47
47
  Requires-Dist: build; extra == "test"
48
48
  Requires-Dist: mypy==1.4; extra == "test"
49
49
  Requires-Dist: pytest>=7.0; extra == "test"
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools>=68.0", "versioneer>=0.29", "wheel"]
2
+ requires = ["setuptools>=75.0", "versioneer[toml]==0.29", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
@@ -14,43 +14,52 @@ readme = "README.md"
14
14
  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
- 'requests>=2.31', # latest as at 7/31/23
18
- 'urllib3==2.2.2', # dependabot
19
- 'typing_extensions>=4.0.1',
17
+ 'requests>=2.32', # latest as at 7/31/23
18
+ 'urllib3>=2.2.2,<3',
19
+ 'typing_extensions>=4.0',
20
20
  ]
21
- requires-python = ">=3.7"
21
+ requires-python = ">=3.9"
22
22
  classifiers = [
23
23
  "Programming Language :: Python",
24
24
  "Programming Language :: Python :: 3",
25
- "Programming Language :: Python :: 3.8",
26
25
  "Programming Language :: Python :: 3.9",
27
26
  "Programming Language :: Python :: 3.10",
28
27
  "Programming Language :: Python :: 3.11",
29
- "Programming Language :: Python :: 3.12"
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13"
30
30
  ]
31
31
  [project.urls]
32
32
  repository = "https://github.com/tableau/server-client-python"
33
33
 
34
34
  [project.optional-dependencies]
35
- test = ["black==23.7", "build", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
35
+ test = ["black==24.8", "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]
39
39
  line-length = 120
40
- target-version = ['py37', 'py38', 'py39', 'py310', 'py311', 'py312']
40
+ target-version = ['py39', 'py310', 'py311', 'py312', 'py313']
41
+ force-exclude = "tableauserverclient/bin/*"
41
42
 
42
43
  [tool.mypy]
43
44
  check_untyped_defs = false
44
45
  disable_error_code = [
45
46
  'misc',
46
- # tableauserverclient\server\endpoint\datasources_endpoint.py:48: error: Cannot assign multiple types to name "FilePath" without an explicit "Type[...]" annotation [misc]
47
47
  'annotation-unchecked' # can be removed when check_untyped_defs = true
48
48
  ]
49
- files = ["tableauserverclient", "test"]
49
+ files = ["tableauserverclient", "test", "samples"]
50
50
  show_error_codes = true
51
51
  ignore_missing_imports = true # defusedxml library has no types
52
52
  no_implicit_reexport = true
53
+ implicit_optional = true
54
+ exclude = ['/bin/']
53
55
 
54
56
  [tool.pytest.ini_options]
55
57
  testpaths = ["test"]
56
58
  addopts = "--junitxml=./test.junit.xml"
59
+
60
+ [tool.versioneer]
61
+ VCS = "git"
62
+ style = "pep440-pre"
63
+ versionfile_source = "tableauserverclient/bin/_version.py"
64
+ versionfile_build = "tableauserverclient/bin/_version.py"
65
+ tag_prefix = "v"
@@ -63,10 +63,10 @@ def main():
63
63
  for permission in new_default_permissions:
64
64
  grantee = permission.grantee
65
65
  capabilities = permission.capabilities
66
- print("\nCapabilities for {0} {1}:".format(grantee.tag_name, grantee.id))
66
+ print(f"\nCapabilities for {grantee.tag_name} {grantee.id}:")
67
67
 
68
68
  for capability in capabilities:
69
- print("\t{0} - {1}".format(capability, capabilities[capability]))
69
+ print(f"\t{capability} - {capabilities[capability]}")
70
70
 
71
71
  # Uncomment lines below to DELETE the new capability and the new project
72
72
  # rules_to_delete = TSC.PermissionsRule(
@@ -29,7 +29,9 @@ def main():
29
29
  help="desired logging level (set to error by default)",
30
30
  )
31
31
  # Options specific to this sample:
32
- # This sample has no additional options, yet. If you add some, please add them here
32
+ parser.add_argument("resource_type", choices=["workbook", "datasource"])
33
+ parser.add_argument("resource_id")
34
+ parser.add_argument("--incremental", default=False)
33
35
 
34
36
  args = parser.parse_args()
35
37
 
@@ -45,6 +47,7 @@ def main():
45
47
  # Monthly Schedule
46
48
  # This schedule will run on the 15th of every month at 11:30PM
47
49
  monthly_interval = TSC.MonthlyInterval(start_time=time(23, 30), interval_value=15)
50
+ print(monthly_interval)
48
51
  monthly_schedule = TSC.ScheduleItem(
49
52
  None,
50
53
  None,
@@ -53,18 +56,20 @@ def main():
53
56
  monthly_interval,
54
57
  )
55
58
 
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
+ my_workbook: TSC.WorkbookItem = server.workbooks.get_by_id(args.resource_id)
59
60
 
60
61
  target_item = TSC.Target(
61
62
  my_workbook.id, # the id of the workbook or datasource
62
63
  "workbook", # alternatively can be "datasource"
63
64
  )
64
65
 
65
- extract_item = TSC.TaskItem(
66
+ refresh_type = "FullRefresh"
67
+ if args.incremental:
68
+ refresh_type = "Incremental"
69
+
70
+ scheduled_extract_item = TSC.TaskItem(
66
71
  None,
67
- "FullRefresh",
72
+ refresh_type,
68
73
  None,
69
74
  None,
70
75
  None,
@@ -74,7 +79,7 @@ def main():
74
79
  )
75
80
 
76
81
  try:
77
- response = server.tasks.create(extract_item)
82
+ response = server.tasks.create(scheduled_extract_item)
78
83
  print(response)
79
84
  except Exception as e:
80
85
  print(e)
@@ -11,7 +11,6 @@ import logging
11
11
  import os
12
12
 
13
13
  from datetime import time
14
- from typing import List
15
14
 
16
15
  import tableauserverclient as TSC
17
16
  from tableauserverclient import ServerResponseError
@@ -63,23 +62,23 @@ def main():
63
62
 
64
63
  if args.file:
65
64
  filepath = os.path.abspath(args.file)
66
- print("Add users to site from file {}:".format(filepath))
67
- added: List[TSC.UserItem]
68
- failed: List[TSC.UserItem, TSC.ServerResponseError]
65
+ print(f"Add users to site from file {filepath}:")
66
+ added: list[TSC.UserItem]
67
+ failed: list[TSC.UserItem, TSC.ServerResponseError]
69
68
  added, failed = server.users.create_from_file(filepath)
70
69
  for user, error in failed:
71
70
  print(user, error.code)
72
71
  if error.code == "409017":
73
72
  user = server.users.filter(name=user.name)[0]
74
73
  added.append(user)
75
- print("Adding users to group:{}".format(added))
74
+ print(f"Adding users to group:{added}")
76
75
  for user in added:
77
- print("Adding user {}".format(user))
76
+ print(f"Adding user {user}")
78
77
  try:
79
78
  server.groups.add_user(group, user.id)
80
79
  except ServerResponseError as serverError:
81
80
  if serverError.code == "409011":
82
- print("user {} is already a member of group {}".format(user.name, group.name))
81
+ print(f"user {user.name} is already a member of group {group.name}")
83
82
  else:
84
83
  raise rError
85
84
 
@@ -84,7 +84,7 @@ def main():
84
84
  server.projects.populate_datasource_default_permissions(changed_project),
85
85
  server.projects.populate_permissions(changed_project)
86
86
  # Projects have default permissions set for the object types they contain
87
- print("Permissions from project {}:".format(changed_project.id))
87
+ print(f"Permissions from project {changed_project.id}:")
88
88
  print(changed_project.permissions)
89
89
  print(
90
90
  changed_project.default_workbook_permissions,
@@ -55,7 +55,7 @@ def main():
55
55
  )
56
56
  try:
57
57
  hourly_schedule = server.schedules.create(hourly_schedule)
58
- print("Hourly schedule created (ID: {}).".format(hourly_schedule.id))
58
+ print(f"Hourly schedule created (ID: {hourly_schedule.id}).")
59
59
  except Exception as e:
60
60
  print(e)
61
61
 
@@ -71,7 +71,7 @@ def main():
71
71
  )
72
72
  try:
73
73
  daily_schedule = server.schedules.create(daily_schedule)
74
- print("Daily schedule created (ID: {}).".format(daily_schedule.id))
74
+ print(f"Daily schedule created (ID: {daily_schedule.id}).")
75
75
  except Exception as e:
76
76
  print(e)
77
77
 
@@ -89,7 +89,7 @@ def main():
89
89
  )
90
90
  try:
91
91
  weekly_schedule = server.schedules.create(weekly_schedule)
92
- print("Weekly schedule created (ID: {}).".format(weekly_schedule.id))
92
+ print(f"Weekly schedule created (ID: {weekly_schedule.id}).")
93
93
  except Exception as e:
94
94
  print(e)
95
95
  options = TSC.RequestOptions()
@@ -112,7 +112,7 @@ def main():
112
112
  )
113
113
  try:
114
114
  monthly_schedule = server.schedules.create(monthly_schedule)
115
- print("Monthly schedule created (ID: {}).".format(monthly_schedule.id))
115
+ print(f"Monthly schedule created (ID: {monthly_schedule.id}).")
116
116
  except Exception as e:
117
117
  print(e)
118
118
 
@@ -51,16 +51,17 @@ def main():
51
51
  if args.publish:
52
52
  if default_project is not None:
53
53
  new_datasource = TSC.DatasourceItem(default_project.id)
54
+ new_datasource.description = "Published with a description"
54
55
  new_datasource = server.datasources.publish(
55
56
  new_datasource, args.publish, TSC.Server.PublishMode.Overwrite
56
57
  )
57
- print("Datasource published. ID: {}".format(new_datasource.id))
58
+ print(f"Datasource published. ID: {new_datasource.id}")
58
59
  else:
59
60
  print("Publish failed. Could not find the default project.")
60
61
 
61
62
  # Gets all datasource items
62
63
  all_datasources, pagination_item = server.datasources.get()
63
- print("\nThere are {} datasources on site: ".format(pagination_item.total_available))
64
+ print(f"\nThere are {pagination_item.total_available} datasources on site: ")
64
65
  print([datasource.name for datasource in all_datasources])
65
66
 
66
67
  if all_datasources:
@@ -69,20 +70,19 @@ def main():
69
70
 
70
71
  # Populate connections
71
72
  server.datasources.populate_connections(sample_datasource)
72
- print("\nConnections for {}: ".format(sample_datasource.name))
73
- print(
74
- [
75
- "{0}({1})".format(connection.id, connection.datasource_name)
76
- for connection in sample_datasource.connections
77
- ]
78
- )
73
+ print(f"\nConnections for {sample_datasource.name}: ")
74
+ print([f"{connection.id}({connection.datasource_name})" for connection in sample_datasource.connections])
75
+
76
+ # Demonstrate that description is editable
77
+ sample_datasource.description = "Description updated by TSC"
78
+ server.datasources.update(sample_datasource)
79
79
 
80
80
  # Add some tags to the datasource
81
81
  original_tag_set = set(sample_datasource.tags)
82
82
  sample_datasource.tags.update("a", "b", "c", "d")
83
83
  server.datasources.update(sample_datasource)
84
- print("\nOld tag set: {}".format(original_tag_set))
85
- print("New tag set: {}".format(sample_datasource.tags))
84
+ print(f"\nOld tag set: {original_tag_set}")
85
+ print(f"New tag set: {sample_datasource.tags}")
86
86
 
87
87
  # Delete all tags that were added by setting tags to original
88
88
  sample_datasource.tags = original_tag_set
@@ -3,7 +3,7 @@
3
3
  import argparse
4
4
  import logging
5
5
  import tableauserverclient as TSC
6
- from tableauserverclient import Resource
6
+ from tableauserverclient.models import Resource
7
7
 
8
8
 
9
9
  def main():
@@ -39,15 +39,15 @@ def main():
39
39
  # get all favorites on site for the logged on user
40
40
  user: TSC.UserItem = TSC.UserItem()
41
41
  user.id = server.user_id
42
- print("Favorites for user: {}".format(user.id))
42
+ print(f"Favorites for user: {user.id}")
43
43
  server.favorites.get(user)
44
44
  print(user.favorites)
45
45
 
46
46
  # get list of workbooks
47
47
  all_workbook_items, pagination_item = server.workbooks.get()
48
48
  if all_workbook_items is not None and len(all_workbook_items) > 0:
49
- my_workbook: TSC.WorkbookItem = all_workbook_items[0]
50
- server.favorites.add_favorite(server, user, Resource.Workbook.name(), all_workbook_items[0])
49
+ my_workbook = all_workbook_items[0]
50
+ server.favorites.add_favorite(user, Resource.Workbook, all_workbook_items[0])
51
51
  print(
52
52
  "Workbook added to favorites. Workbook Name: {}, Workbook ID: {}".format(
53
53
  my_workbook.name, my_workbook.id
@@ -57,7 +57,7 @@ def main():
57
57
  if views is not None and len(views) > 0:
58
58
  my_view = views[0]
59
59
  server.favorites.add_favorite_view(user, my_view)
60
- print("View added to favorites. View Name: {}, View ID: {}".format(my_view.name, my_view.id))
60
+ print(f"View added to favorites. View Name: {my_view.name}, View ID: {my_view.id}")
61
61
 
62
62
  all_datasource_items, pagination_item = server.datasources.get()
63
63
  if all_datasource_items:
@@ -70,12 +70,10 @@ def main():
70
70
  )
71
71
 
72
72
  server.favorites.delete_favorite_workbook(user, my_workbook)
73
- print(
74
- "Workbook deleted from favorites. Workbook Name: {}, Workbook ID: {}".format(my_workbook.name, my_workbook.id)
75
- )
73
+ print(f"Workbook deleted from favorites. Workbook Name: {my_workbook.name}, Workbook ID: {my_workbook.id}")
76
74
 
77
75
  server.favorites.delete_favorite_view(user, my_view)
78
- print("View deleted from favorites. View Name: {}, View ID: {}".format(my_view.name, my_view.id))
76
+ print(f"View deleted from favorites. View Name: {my_view.name}, View ID: {my_view.id}")
79
77
 
80
78
  server.favorites.delete_favorite_datasource(user, my_datasource)
81
79
  print(
@@ -49,7 +49,7 @@ def main():
49
49
 
50
50
  if args.delete:
51
51
  print("You can only delete the site you are currently in")
52
- print("Delete site `{}`?".format(current_site.name))
52
+ print(f"Delete site `{current_site.name}`?")
53
53
  # server.sites.delete(server.site_id)
54
54
 
55
55
  elif args.create:
@@ -52,11 +52,11 @@ def main():
52
52
  new_webhook.event = "datasource-created"
53
53
  print(new_webhook)
54
54
  new_webhook = server.webhooks.create(new_webhook)
55
- print("Webhook created. ID: {}".format(new_webhook.id))
55
+ print(f"Webhook created. ID: {new_webhook.id}")
56
56
 
57
57
  # Gets all webhook items
58
58
  all_webhooks, pagination_item = server.webhooks.get()
59
- print("\nThere are {} webhooks on site: ".format(pagination_item.total_available))
59
+ print(f"\nThere are {pagination_item.total_available} webhooks on site: ")
60
60
  print([webhook.name for webhook in all_webhooks])
61
61
 
62
62
  if all_webhooks:
@@ -59,13 +59,13 @@ def main():
59
59
  if default_project is not None:
60
60
  new_workbook = TSC.WorkbookItem(default_project.id)
61
61
  new_workbook = server.workbooks.publish(new_workbook, args.publish, overwrite_true)
62
- print("Workbook published. ID: {}".format(new_workbook.id))
62
+ print(f"Workbook published. ID: {new_workbook.id}")
63
63
  else:
64
64
  print("Publish failed. Could not find the default project.")
65
65
 
66
66
  # Gets all workbook items
67
67
  all_workbooks, pagination_item = server.workbooks.get()
68
- print("\nThere are {} workbooks on site: ".format(pagination_item.total_available))
68
+ print(f"\nThere are {pagination_item.total_available} workbooks on site: ")
69
69
  print([workbook.name for workbook in all_workbooks])
70
70
 
71
71
  if all_workbooks:
@@ -78,27 +78,22 @@ def main():
78
78
 
79
79
  # Populate views
80
80
  server.workbooks.populate_views(sample_workbook)
81
- print("\nName of views in {}: ".format(sample_workbook.name))
81
+ print(f"\nName of views in {sample_workbook.name}: ")
82
82
  print([view.name for view in sample_workbook.views])
83
83
 
84
84
  # Populate connections
85
85
  server.workbooks.populate_connections(sample_workbook)
86
- print("\nConnections for {}: ".format(sample_workbook.name))
87
- print(
88
- [
89
- "{0}({1})".format(connection.id, connection.datasource_name)
90
- for connection in sample_workbook.connections
91
- ]
92
- )
86
+ print(f"\nConnections for {sample_workbook.name}: ")
87
+ print([f"{connection.id}({connection.datasource_name})" for connection in sample_workbook.connections])
93
88
 
94
89
  # Update tags and show_tabs flag
95
90
  original_tag_set = set(sample_workbook.tags)
96
91
  sample_workbook.tags.update("a", "b", "c", "d")
97
92
  sample_workbook.show_tabs = True
98
93
  server.workbooks.update(sample_workbook)
99
- print("\nWorkbook's old tag set: {}".format(original_tag_set))
100
- print("Workbook's new tag set: {}".format(sample_workbook.tags))
101
- print("Workbook tabbed: {}".format(sample_workbook.show_tabs))
94
+ print(f"\nWorkbook's old tag set: {original_tag_set}")
95
+ print(f"Workbook's new tag set: {sample_workbook.tags}")
96
+ print(f"Workbook tabbed: {sample_workbook.show_tabs}")
102
97
 
103
98
  # Delete all tags that were added by setting tags to original
104
99
  sample_workbook.tags = original_tag_set
@@ -109,8 +104,8 @@ def main():
109
104
  original_tag_set = set(sample_view.tags)
110
105
  sample_view.tags.add("view_tag")
111
106
  server.views.update(sample_view)
112
- print("\nView's old tag set: {}".format(original_tag_set))
113
- print("View's new tag set: {}".format(sample_view.tags))
107
+ print(f"\nView's old tag set: {original_tag_set}")
108
+ print(f"View's new tag set: {sample_view.tags}")
114
109
 
115
110
  # Delete tag from just one view
116
111
  sample_view.tags = original_tag_set
@@ -119,14 +114,14 @@ def main():
119
114
  if args.download:
120
115
  # Download
121
116
  path = server.workbooks.download(sample_workbook.id, args.download)
122
- print("\nDownloaded workbook to {}".format(path))
117
+ print(f"\nDownloaded workbook to {path}")
123
118
 
124
119
  if args.preview_image:
125
120
  # Populate workbook preview image
126
121
  server.workbooks.populate_preview_image(sample_workbook)
127
122
  with open(args.preview_image, "wb") as f:
128
123
  f.write(sample_workbook.preview_image)
129
- print("\nDownloaded preview image of workbook to {}".format(os.path.abspath(args.preview_image)))
124
+ print(f"\nDownloaded preview image of workbook to {os.path.abspath(args.preview_image)}")
130
125
 
131
126
  # get custom views
132
127
  cvs, _ = server.custom_views.get()
@@ -153,10 +148,10 @@ def main():
153
148
  server.workbooks.populate_powerpoint(sample_workbook)
154
149
  with open(args.powerpoint, "wb") as f:
155
150
  f.write(sample_workbook.powerpoint)
156
- print("\nDownloaded powerpoint of workbook to {}".format(os.path.abspath(args.powerpoint)))
151
+ print(f"\nDownloaded powerpoint of workbook to {os.path.abspath(args.powerpoint)}")
157
152
 
158
153
  if args.delete:
159
- print("deleting {}".format(c.id))
154
+ print(f"deleting {c.id}")
160
155
  unlucky = TSC.CustomViewItem(c.id)
161
156
  server.custom_views.delete(unlucky.id)
162
157
 
@@ -37,8 +37,11 @@ def main():
37
37
  "--csv", dest="type", action="store_const", const=("populate_csv", "CSVRequestOptions", "csv", "csv")
38
38
  )
39
39
  # other options shown in explore_workbooks: workbook.download, workbook.preview_image
40
-
40
+ parser.add_argument(
41
+ "--language", help="Text such as 'Average' will appear in this language. Use values like fr, de, es, en"
42
+ )
41
43
  parser.add_argument("--workbook", action="store_true")
44
+ parser.add_argument("--custom_view", action="store_true")
42
45
 
43
46
  parser.add_argument("--file", "-f", help="filename to store the exported data")
44
47
  parser.add_argument("--filter", "-vf", metavar="COLUMN:VALUE", help="View filter to apply to the view")
@@ -56,14 +59,16 @@ def main():
56
59
  print("Connected")
57
60
  if args.workbook:
58
61
  item = server.workbooks.get_by_id(args.resource_id)
62
+ elif args.custom_view:
63
+ item = server.custom_views.get_by_id(args.resource_id)
59
64
  else:
60
65
  item = server.views.get_by_id(args.resource_id)
61
66
 
62
67
  if not item:
63
- print("No item found for id {}".format(args.resource_id))
68
+ print(f"No item found for id {args.resource_id}")
64
69
  exit(1)
65
70
 
66
- print("Item found: {}".format(item.name))
71
+ print(f"Item found: {item.name}")
67
72
  # We have a number of different types and functions for each different export type.
68
73
  # We encode that information above in the const=(...) parameter to the add_argument function to make
69
74
  # the code automatically adapt for the type of export the user is doing.
@@ -72,18 +77,22 @@ def main():
72
77
  populate = getattr(server.views, populate_func_name)
73
78
  if args.workbook:
74
79
  populate = getattr(server.workbooks, populate_func_name)
80
+ elif args.custom_view:
81
+ populate = getattr(server.custom_views, populate_func_name)
75
82
 
76
83
  option_factory = getattr(TSC, option_factory_name)
84
+ options: TSC.PDFRequestOptions = option_factory()
77
85
 
78
86
  if args.filter:
79
- options = option_factory().vf(*args.filter.split(":"))
80
- else:
81
- options = None
87
+ options = options.vf(*args.filter.split(":"))
88
+
89
+ if args.language:
90
+ options.language = args.language
82
91
 
83
92
  if args.file:
84
93
  filename = args.file
85
94
  else:
86
- filename = "out.{}".format(extension)
95
+ filename = f"out-{options.language}.{extension}"
87
96
 
88
97
  populate(item, options)
89
98
  with open(filename, "wb") as f:
@@ -0,0 +1,91 @@
1
+ ####
2
+ # This script demonstrates how to use the Tableau Server Client to interact with extracts.
3
+ # It explores the different functions that the REST API supports on extracts.
4
+ #####
5
+
6
+ import argparse
7
+ import logging
8
+ import os.path
9
+
10
+ import tableauserverclient as TSC
11
+
12
+
13
+ def main():
14
+ parser = argparse.ArgumentParser(description="Explore extract functions supported by the Server API.")
15
+ # Common options; please keep those in sync across all samples
16
+ parser.add_argument("--server", "-s", help="server address")
17
+ parser.add_argument("--site", help="site name")
18
+ parser.add_argument("--token-name", "-tn", help="name of the personal access token used to sign into the server")
19
+ parser.add_argument("--token-value", "-tv", help="value of the personal access token used to sign into the server")
20
+ parser.add_argument(
21
+ "--logging-level",
22
+ "-l",
23
+ choices=["debug", "info", "error"],
24
+ default="error",
25
+ help="desired logging level (set to error by default)",
26
+ )
27
+ # Options specific to this sample
28
+ parser.add_argument("--create", action="store_true")
29
+ parser.add_argument("--delete", action="store_true")
30
+ parser.add_argument("--refresh", action="store_true")
31
+ parser.add_argument("--workbook", required=False)
32
+ parser.add_argument("--datasource", required=False)
33
+ args = parser.parse_args()
34
+
35
+ # Set logging level based on user input, or error by default
36
+ logging_level = getattr(logging, args.logging_level.upper())
37
+ logging.basicConfig(level=logging_level)
38
+
39
+ # SIGN IN
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
+
46
+ wb = None
47
+ ds = None
48
+ if args.workbook:
49
+ wb = server.workbooks.get_by_id(args.workbook)
50
+ if wb is None:
51
+ raise ValueError(f"Workbook not found for id {args.workbook}")
52
+ elif args.datasource:
53
+ ds = server.datasources.get_by_id(args.datasource)
54
+ if ds is None:
55
+ raise ValueError(f"Datasource not found for id {args.datasource}")
56
+ else:
57
+ # Gets all workbook items
58
+ all_workbooks, pagination_item = server.workbooks.get()
59
+ print(f"\nThere are {pagination_item.total_available} workbooks on site: ")
60
+ print([workbook.name for workbook in all_workbooks])
61
+
62
+ if all_workbooks:
63
+ # Pick one workbook from the list
64
+ wb = all_workbooks[3]
65
+
66
+ if args.create:
67
+ print("create extract on wb ", wb.name)
68
+ extract_job = server.workbooks.create_extract(wb, includeAll=True)
69
+ print(extract_job)
70
+
71
+ if args.refresh:
72
+ extract_job = None
73
+ if ds is not None:
74
+ print(f"refresh extract on datasource {ds.name}")
75
+ extract_job = server.datasources.refresh(ds, includeAll=True, incremental=True)
76
+ elif wb is not None:
77
+ print(f"refresh extract on workbook {wb.name}")
78
+ extract_job = server.workbooks.refresh(wb)
79
+ else:
80
+ print("no content item selected to refresh")
81
+
82
+ print(extract_job)
83
+
84
+ if args.delete:
85
+ print("delete extract on wb ", wb.name)
86
+ jj = server.workbooks.delete_extract(wb)
87
+ print(jj)
88
+
89
+
90
+ if __name__ == "__main__":
91
+ main()