tableauserverclient 0.38__tar.gz → 0.39__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 (509) hide show
  1. {tableauserverclient-0.38 → tableauserverclient-0.39}/MANIFEST.in +0 -3
  2. {tableauserverclient-0.38 → tableauserverclient-0.39}/PKG-INFO +5 -26
  3. {tableauserverclient-0.38 → tableauserverclient-0.39}/pyproject.toml +11 -6
  4. tableauserverclient-0.39/samples/create_user.py +73 -0
  5. tableauserverclient-0.39/samples/metadata_paginated_query.py +87 -0
  6. tableauserverclient-0.39/samples/update_connection_auth.py +62 -0
  7. tableauserverclient-0.39/samples/update_connections_auth.py +64 -0
  8. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/update_datasource_data.py +1 -1
  9. tableauserverclient-0.39/setup.py +8 -0
  10. tableauserverclient-0.39/tableauserverclient/bin/__init__.py +3 -0
  11. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/bin/_version.py +3 -3
  12. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/__init__.py +9 -0
  13. tableauserverclient-0.39/tableauserverclient/models/collection_item.py +52 -0
  14. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/connection_item.py +16 -2
  15. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/custom_view_item.py +8 -0
  16. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/data_freshness_policy_item.py +3 -3
  17. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/datasource_item.py +3 -1
  18. tableauserverclient-0.39/tableauserverclient/models/extensions_item.py +186 -0
  19. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/favorites_item.py +21 -8
  20. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/flow_item.py +1 -1
  21. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/group_item.py +7 -1
  22. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/groupset_item.py +14 -0
  23. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/interval_item.py +2 -1
  24. tableauserverclient-0.39/tableauserverclient/models/oidc_item.py +82 -0
  25. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/permissions_item.py +2 -0
  26. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/project_item.py +3 -2
  27. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/property_decorators.py +2 -2
  28. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/reference_item.py +12 -6
  29. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/schedule_item.py +10 -1
  30. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/site_item.py +26 -0
  31. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/tableau_auth.py +13 -6
  32. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/user_item.py +10 -3
  33. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/workbook_item.py +2 -2
  34. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/__init__.py +4 -0
  35. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/datasources_endpoint.py +152 -22
  36. tableauserverclient-0.39/tableauserverclient/server/endpoint/extensions_endpoint.py +79 -0
  37. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/flow_task_endpoint.py +1 -1
  38. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/flows_endpoint.py +5 -4
  39. tableauserverclient-0.39/tableauserverclient/server/endpoint/oidc_endpoint.py +157 -0
  40. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/projects_endpoint.py +12 -0
  41. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/schedules_endpoint.py +48 -1
  42. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/users_endpoint.py +274 -5
  43. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/views_endpoint.py +23 -0
  44. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/workbooks_endpoint.py +124 -9
  45. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/request_factory.py +281 -2
  46. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/request_options.py +12 -2
  47. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/server.py +4 -0
  48. {tableauserverclient-0.38 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/PKG-INFO +5 -26
  49. {tableauserverclient-0.38 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/SOURCES.txt +31 -11
  50. {tableauserverclient-0.38 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/requires.txt +4 -2
  51. tableauserverclient-0.39/tableauserverclient/tableauserverclient.egg-info/top_level.txt +4 -0
  52. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/_utils.py +14 -0
  53. tableauserverclient-0.39/test/assets/datasource_connections_update.xml +21 -0
  54. tableauserverclient-0.39/test/assets/datasource_get_no_owner.xml +16 -0
  55. tableauserverclient-0.39/test/assets/extensions_server_settings_false.xml +6 -0
  56. tableauserverclient-0.39/test/assets/extensions_server_settings_true.xml +8 -0
  57. tableauserverclient-0.39/test/assets/extensions_site_settings.xml +16 -0
  58. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/favorites_add_view.xml +3 -1
  59. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/favorites_get.xml +13 -1
  60. tableauserverclient-0.39/test/assets/oidc_create.xml +30 -0
  61. tableauserverclient-0.39/test/assets/oidc_get.xml +30 -0
  62. tableauserverclient-0.39/test/assets/oidc_update.xml +30 -0
  63. tableauserverclient-0.39/test/assets/schedule_batch_update_state.xml +7 -0
  64. tableauserverclient-0.39/test/assets/schedule_get_customized_monthly_id.xml +10 -0
  65. tableauserverclient-0.39/test/assets/users_bulk_add_job.xml +4 -0
  66. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connection_populate_connections.xml +1 -1
  67. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connection_populate_connections2.xml +1 -1
  68. tableauserverclient-0.39/test/assets/workbook_update_connections.xml +21 -0
  69. tableauserverclient-0.39/test/http/test_http_requests.py +129 -0
  70. tableauserverclient-0.39/test/models/__init__.py +0 -0
  71. tableauserverclient-0.39/test/models/_models.py +37 -0
  72. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/models/test_repr.py +25 -28
  73. tableauserverclient-0.39/test/request_factory/__init__.py +0 -0
  74. tableauserverclient-0.39/test/request_factory/test_datasource_requests.py +13 -0
  75. tableauserverclient-0.39/test/request_factory/test_task_requests.py +61 -0
  76. tableauserverclient-0.39/test/request_factory/test_workbook_requests.py +58 -0
  77. tableauserverclient-0.39/test/test_auth.py +146 -0
  78. tableauserverclient-0.39/test/test_connection_.py +25 -0
  79. tableauserverclient-0.39/test/test_custom_view.py +342 -0
  80. tableauserverclient-0.39/test/test_data_acceleration_report.py +45 -0
  81. tableauserverclient-0.39/test/test_data_freshness_policy.py +182 -0
  82. tableauserverclient-0.39/test/test_dataalert.py +120 -0
  83. tableauserverclient-0.39/test/test_database.py +112 -0
  84. tableauserverclient-0.39/test/test_datasource.py +907 -0
  85. tableauserverclient-0.39/test/test_datasource_model.py +20 -0
  86. tableauserverclient-0.39/test/test_dqw.py +9 -0
  87. tableauserverclient-0.39/test/test_endpoint.py +93 -0
  88. tableauserverclient-0.39/test/test_exponential_backoff.py +62 -0
  89. tableauserverclient-0.39/test/test_extensions.py +195 -0
  90. tableauserverclient-0.39/test/test_favorites.py +146 -0
  91. tableauserverclient-0.39/test/test_filesys_helpers.py +113 -0
  92. tableauserverclient-0.39/test/test_fileuploads.py +92 -0
  93. tableauserverclient-0.39/test/test_filter.py +16 -0
  94. tableauserverclient-0.39/test/test_flow.py +242 -0
  95. tableauserverclient-0.39/test/test_flowruns.py +121 -0
  96. tableauserverclient-0.39/test/test_flowtask.py +46 -0
  97. tableauserverclient-0.39/test/test_group.py +342 -0
  98. tableauserverclient-0.39/test/test_group_model.py +15 -0
  99. tableauserverclient-0.39/test/test_groupsets.py +146 -0
  100. tableauserverclient-0.39/test/test_job.py +174 -0
  101. tableauserverclient-0.39/test/test_linked_tasks.py +137 -0
  102. tableauserverclient-0.39/test/test_metadata.py +109 -0
  103. tableauserverclient-0.39/test/test_metrics.py +111 -0
  104. tableauserverclient-0.39/test/test_oidc.py +159 -0
  105. tableauserverclient-0.39/test/test_pager.py +138 -0
  106. tableauserverclient-0.39/test/test_permissionsrule.py +104 -0
  107. tableauserverclient-0.39/test/test_project.py +466 -0
  108. tableauserverclient-0.39/test/test_project_model.py +22 -0
  109. tableauserverclient-0.39/test/test_regression_tests.py +84 -0
  110. tableauserverclient-0.39/test/test_request_option.py +443 -0
  111. tableauserverclient-0.39/test/test_requests.py +69 -0
  112. tableauserverclient-0.39/test/test_schedule.py +494 -0
  113. tableauserverclient-0.39/test/test_server_info.py +81 -0
  114. tableauserverclient-0.39/test/test_site.py +339 -0
  115. tableauserverclient-0.39/test/test_site_model.py +73 -0
  116. tableauserverclient-0.39/test/test_sort.py +107 -0
  117. tableauserverclient-0.39/test/test_ssl_config.py +68 -0
  118. tableauserverclient-0.39/test/test_subscription.py +102 -0
  119. tableauserverclient-0.39/test/test_table.py +65 -0
  120. tableauserverclient-0.39/test/test_tableauauth_model.py +8 -0
  121. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/test_tagging.py +15 -1
  122. tableauserverclient-0.39/test/test_task.py +199 -0
  123. tableauserverclient-0.39/test/test_user.py +573 -0
  124. tableauserverclient-0.39/test/test_user_model.py +138 -0
  125. tableauserverclient-0.39/test/test_view.py +539 -0
  126. tableauserverclient-0.39/test/test_view_acceleration.py +120 -0
  127. tableauserverclient-0.39/test/test_virtual_connection.py +269 -0
  128. tableauserverclient-0.39/test/test_webhook.py +89 -0
  129. tableauserverclient-0.39/test/test_workbook.py +1135 -0
  130. tableauserverclient-0.39/test/test_workbook_model.py +12 -0
  131. tableauserverclient-0.38/setup.py +0 -15
  132. tableauserverclient-0.38/tableauserverclient/__init__.py +0 -145
  133. tableauserverclient-0.38/tableauserverclient/config.py +0 -27
  134. tableauserverclient-0.38/tableauserverclient/datetime_helpers.py +0 -45
  135. tableauserverclient-0.38/tableauserverclient/exponential_backoff.py +0 -30
  136. tableauserverclient-0.38/tableauserverclient/filesys_helpers.py +0 -63
  137. tableauserverclient-0.38/tableauserverclient/namespace.py +0 -37
  138. tableauserverclient-0.38/tableauserverclient.egg-info/top_level.txt +0 -1
  139. tableauserverclient-0.38/test/http/test_http_requests.py +0 -117
  140. tableauserverclient-0.38/test/models/_models.py +0 -58
  141. tableauserverclient-0.38/test/request_factory/test_datasource_requests.py +0 -15
  142. tableauserverclient-0.38/test/request_factory/test_task_requests.py +0 -47
  143. tableauserverclient-0.38/test/request_factory/test_workbook_requests.py +0 -55
  144. tableauserverclient-0.38/test/test_auth.py +0 -133
  145. tableauserverclient-0.38/test/test_connection_.py +0 -34
  146. tableauserverclient-0.38/test/test_custom_view.py +0 -320
  147. tableauserverclient-0.38/test/test_data_acceleration_report.py +0 -42
  148. tableauserverclient-0.38/test/test_data_freshness_policy.py +0 -189
  149. tableauserverclient-0.38/test/test_dataalert.py +0 -112
  150. tableauserverclient-0.38/test/test_database.py +0 -113
  151. tableauserverclient-0.38/test/test_datasource.py +0 -772
  152. tableauserverclient-0.38/test/test_datasource_model.py +0 -18
  153. tableauserverclient-0.38/test/test_dqw.py +0 -11
  154. tableauserverclient-0.38/test/test_endpoint.py +0 -83
  155. tableauserverclient-0.38/test/test_exponential_backoff.py +0 -60
  156. tableauserverclient-0.38/test/test_favorites.py +0 -119
  157. tableauserverclient-0.38/test/test_filesys_helpers.py +0 -99
  158. tableauserverclient-0.38/test/test_fileuploads.py +0 -89
  159. tableauserverclient-0.38/test/test_filter.py +0 -22
  160. tableauserverclient-0.38/test/test_flow.py +0 -225
  161. tableauserverclient-0.38/test/test_flowruns.py +0 -111
  162. tableauserverclient-0.38/test/test_flowtask.py +0 -47
  163. tableauserverclient-0.38/test/test_group.py +0 -335
  164. tableauserverclient-0.38/test/test_group_model.py +0 -15
  165. tableauserverclient-0.38/test/test_groupsets.py +0 -139
  166. tableauserverclient-0.38/test/test_job.py +0 -158
  167. tableauserverclient-0.38/test/test_linked_tasks.py +0 -129
  168. tableauserverclient-0.38/test/test_metadata.py +0 -102
  169. tableauserverclient-0.38/test/test_metrics.py +0 -105
  170. tableauserverclient-0.38/test/test_pager.py +0 -136
  171. tableauserverclient-0.38/test/test_permissionsrule.py +0 -104
  172. tableauserverclient-0.38/test/test_project.py +0 -438
  173. tableauserverclient-0.38/test/test_project_model.py +0 -21
  174. tableauserverclient-0.38/test/test_regression_tests.py +0 -83
  175. tableauserverclient-0.38/test/test_request_option.py +0 -380
  176. tableauserverclient-0.38/test/test_requests.py +0 -61
  177. tableauserverclient-0.38/test/test_schedule.py +0 -425
  178. tableauserverclient-0.38/test/test_server_info.py +0 -75
  179. tableauserverclient-0.38/test/test_site.py +0 -288
  180. tableauserverclient-0.38/test/test_site_model.py +0 -65
  181. tableauserverclient-0.38/test/test_sort.py +0 -103
  182. tableauserverclient-0.38/test/test_ssl_config.py +0 -77
  183. tableauserverclient-0.38/test/test_subscription.py +0 -100
  184. tableauserverclient-0.38/test/test_table.py +0 -59
  185. tableauserverclient-0.38/test/test_tableauauth_model.py +0 -12
  186. tableauserverclient-0.38/test/test_task.py +0 -189
  187. tableauserverclient-0.38/test/test_user.py +0 -322
  188. tableauserverclient-0.38/test/test_user_model.py +0 -127
  189. tableauserverclient-0.38/test/test_view.py +0 -518
  190. tableauserverclient-0.38/test/test_view_acceleration.py +0 -119
  191. tableauserverclient-0.38/test/test_virtual_connection.py +0 -248
  192. tableauserverclient-0.38/test/test_webhook.py +0 -84
  193. tableauserverclient-0.38/test/test_workbook.py +0 -1084
  194. tableauserverclient-0.38/test/test_workbook_model.py +0 -13
  195. {tableauserverclient-0.38 → tableauserverclient-0.39}/CHANGELOG.md +0 -0
  196. {tableauserverclient-0.38 → tableauserverclient-0.39}/CONTRIBUTORS.md +0 -0
  197. {tableauserverclient-0.38 → tableauserverclient-0.39}/LICENSE +0 -0
  198. {tableauserverclient-0.38 → tableauserverclient-0.39}/LICENSE.versioneer +0 -0
  199. {tableauserverclient-0.38 → tableauserverclient-0.39}/README.md +0 -0
  200. {tableauserverclient-0.38 → tableauserverclient-0.39}/contributing.md +0 -0
  201. {tableauserverclient-0.38 → tableauserverclient-0.39}/docs/README.md +0 -0
  202. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/add_default_permission.py +0 -0
  203. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/create_extract_task.py +0 -0
  204. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/create_group.py +0 -0
  205. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/create_project.py +0 -0
  206. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/create_schedules.py +0 -0
  207. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/explore_datasource.py +0 -0
  208. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/explore_favorites.py +0 -0
  209. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/explore_site.py +0 -0
  210. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/explore_webhooks.py +0 -0
  211. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/explore_workbook.py +0 -0
  212. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/export.py +0 -0
  213. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/extracts.py +0 -0
  214. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/filter_sort_groups.py +0 -0
  215. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/filter_sort_projects.py +0 -0
  216. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/getting_started/1_hello_server.py +0 -0
  217. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/getting_started/2_hello_site.py +0 -0
  218. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/getting_started/3_hello_universe.py +0 -0
  219. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/initialize_server.py +0 -0
  220. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/kill_all_jobs.py +0 -0
  221. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/list.py +0 -0
  222. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/login.py +0 -0
  223. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/metadata_query.py +0 -0
  224. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/move_workbook_projects.py +0 -0
  225. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/move_workbook_sites.py +0 -0
  226. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/name.txt +0 -0
  227. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/pagination_sample.py +0 -0
  228. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/publish_datasource.py +0 -0
  229. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/publish_workbook.py +0 -0
  230. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/query_permissions.py +0 -0
  231. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/refresh.py +0 -0
  232. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/refresh_tasks.py +0 -0
  233. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/set_refresh_schedule.py +0 -0
  234. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/smoke_test.py +0 -0
  235. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/update_connection.py +0 -0
  236. {tableauserverclient-0.38 → tableauserverclient-0.39}/samples/update_workbook_data_freshness_policy.py +0 -0
  237. {tableauserverclient-0.38 → tableauserverclient-0.39}/setup.cfg +0 -0
  238. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/helpers/__init__.py +0 -0
  239. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/helpers/headers.py +0 -0
  240. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/helpers/logging.py +0 -0
  241. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/helpers/strings.py +0 -0
  242. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/column_item.py +0 -0
  243. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/connection_credentials.py +0 -0
  244. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/data_acceleration_report_item.py +0 -0
  245. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/data_alert_item.py +0 -0
  246. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/database_item.py +0 -0
  247. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/dqw_item.py +0 -0
  248. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/exceptions.py +0 -0
  249. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/extract_item.py +0 -0
  250. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/fileupload_item.py +0 -0
  251. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/flow_run_item.py +0 -0
  252. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/job_item.py +0 -0
  253. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/linked_tasks_item.py +0 -0
  254. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/location_item.py +0 -0
  255. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/metric_item.py +0 -0
  256. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/pagination_item.py +0 -0
  257. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/revision_item.py +0 -0
  258. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/server_info_item.py +0 -0
  259. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/subscription_item.py +0 -0
  260. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/table_item.py +0 -0
  261. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/tableau_types.py +0 -0
  262. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/tag_item.py +0 -0
  263. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/target.py +0 -0
  264. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/task_item.py +0 -0
  265. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/view_item.py +0 -0
  266. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/virtual_connection_item.py +0 -0
  267. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/models/webhook_item.py +0 -0
  268. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/py.typed +0 -0
  269. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/__init__.py +0 -0
  270. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/auth_endpoint.py +0 -0
  271. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -0
  272. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
  273. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
  274. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/databases_endpoint.py +0 -0
  275. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
  276. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/dqw_endpoint.py +0 -0
  277. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/endpoint.py +0 -0
  278. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/exceptions.py +0 -0
  279. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -0
  280. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +0 -0
  281. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +0 -0
  282. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/groups_endpoint.py +0 -0
  283. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/groupsets_endpoint.py +0 -0
  284. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/jobs_endpoint.py +0 -0
  285. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/linked_tasks_endpoint.py +0 -0
  286. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/metadata_endpoint.py +0 -0
  287. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/metrics_endpoint.py +0 -0
  288. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
  289. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
  290. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
  291. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/sites_endpoint.py +0 -0
  292. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
  293. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/tables_endpoint.py +0 -0
  294. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/tasks_endpoint.py +0 -0
  295. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/virtual_connections_endpoint.py +0 -0
  296. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
  297. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/exceptions.py +0 -0
  298. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/filter.py +0 -0
  299. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/pager.py +0 -0
  300. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/query.py +0 -0
  301. {tableauserverclient-0.38 → tableauserverclient-0.39}/tableauserverclient/server/sort.py +0 -0
  302. {tableauserverclient-0.38 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/dependency_links.txt +0 -0
  303. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/__init__.py +0 -0
  304. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
  305. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/Data/user_details.csv +0 -0
  306. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/Data/usernames.csv +0 -0
  307. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/RESTAPISample Image.png +0 -0
  308. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/Sample View Image.png +0 -0
  309. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/World Indicators.hyper +0 -0
  310. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/auth_sign_in.xml +0 -0
  311. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/auth_sign_in_error.xml +0 -0
  312. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/auth_sign_in_impersonate.xml +0 -0
  313. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/custom_view_download.json +0 -0
  314. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/custom_view_get.xml +0 -0
  315. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/custom_view_get_id.xml +0 -0
  316. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/custom_view_update.xml +0 -0
  317. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/data_acceleration_report.xml +0 -0
  318. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/data_alerts_add_user.xml +0 -0
  319. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/data_alerts_get.xml +0 -0
  320. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/data_alerts_get_by_id.xml +0 -0
  321. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/data_alerts_update.xml +0 -0
  322. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/database_get.xml +0 -0
  323. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/database_populate_permissions.xml +0 -0
  324. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/database_update.xml +0 -0
  325. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_add_tags.xml +0 -0
  326. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_connection_update.xml +0 -0
  327. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_data_update.xml +0 -0
  328. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_get.xml +0 -0
  329. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_get_all_fields.xml +0 -0
  330. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_get_by_id.xml +0 -0
  331. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_get_empty.xml +0 -0
  332. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_populate_connections.xml +0 -0
  333. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_populate_permissions.xml +0 -0
  334. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_publish.xml +0 -0
  335. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_publish_async.xml +0 -0
  336. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_refresh.xml +0 -0
  337. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_revision.xml +0 -0
  338. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/datasource_update.xml +0 -0
  339. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/dqw_by_content_type.xml +0 -0
  340. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/favorites_add_datasource.xml +0 -0
  341. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/favorites_add_project.xml +0 -0
  342. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/favorites_add_workbook.xml +0 -0
  343. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/fileupload_append.xml +0 -0
  344. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/fileupload_initialize.xml +0 -0
  345. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_get.xml +0 -0
  346. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_get_by_id.xml +0 -0
  347. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_populate_connections.xml +0 -0
  348. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_populate_permissions.xml +0 -0
  349. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_publish.xml +0 -0
  350. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_refresh.xml +0 -0
  351. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_runs_get.xml +0 -0
  352. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_runs_get_by_id.xml +0 -0
  353. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
  354. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
  355. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/flow_update.xml +0 -0
  356. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_add_user.xml +0 -0
  357. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_add_users.xml +0 -0
  358. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_create.xml +0 -0
  359. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_create_ad.xml +0 -0
  360. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_create_async.xml +0 -0
  361. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_get.xml +0 -0
  362. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_get_all_fields.xml +0 -0
  363. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_populate_users.xml +0 -0
  364. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_populate_users_empty.xml +0 -0
  365. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_update.xml +0 -0
  366. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_update_async.xml +0 -0
  367. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/group_users_added.xml +0 -0
  368. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/groupsets_create.xml +0 -0
  369. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/groupsets_get.xml +0 -0
  370. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/groupsets_get_by_id.xml +0 -0
  371. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/groupsets_update.xml +0 -0
  372. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/job_get.xml +0 -0
  373. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/job_get_by_id.xml +0 -0
  374. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/job_get_by_id_completed.xml +0 -0
  375. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/job_get_by_id_failed.xml +0 -0
  376. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
  377. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/job_get_by_id_inprogress.xml +0 -0
  378. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/linked_tasks_get.xml +0 -0
  379. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/linked_tasks_run_now.xml +0 -0
  380. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metadata_paged_1.json +0 -0
  381. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metadata_paged_2.json +0 -0
  382. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metadata_paged_3.json +0 -0
  383. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metadata_query_error.json +0 -0
  384. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metadata_query_expected_dict.dict +0 -0
  385. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metadata_query_success.json +0 -0
  386. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metrics_get.xml +0 -0
  387. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metrics_get_by_id.xml +0 -0
  388. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/metrics_update.xml +0 -0
  389. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/odata_connection.xml +0 -0
  390. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/populate_csv.csv +0 -0
  391. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/populate_pdf.pdf +0 -0
  392. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_content_permission.xml +0 -0
  393. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_create.xml +0 -0
  394. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_get.xml +0 -0
  395. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_get_all_fields.xml +0 -0
  396. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_populate_permissions.xml +0 -0
  397. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_populate_virtualconnection_default_permissions.xml +0 -0
  398. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
  399. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_update.xml +0 -0
  400. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_update_datasource_default_permissions.xml +0 -0
  401. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/project_update_virtualconnection_default_permissions.xml +0 -0
  402. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/queryset_slicing_page_1.xml +0 -0
  403. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/queryset_slicing_page_2.xml +0 -0
  404. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_filter_equals.xml +0 -0
  405. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_filter_name_in.xml +0 -0
  406. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_filter_tags_in.xml +0 -0
  407. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_page_number.xml +0 -0
  408. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_page_size.xml +0 -0
  409. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_pagination.xml +0 -0
  410. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/request_option_slicing_queryset.xml +0 -0
  411. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_add_datasource.xml +0 -0
  412. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_add_flow.xml +0 -0
  413. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_add_workbook.xml +0 -0
  414. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
  415. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_create_daily.xml +0 -0
  416. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_create_hourly.xml +0 -0
  417. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_create_monthly.xml +0 -0
  418. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_create_weekly.xml +0 -0
  419. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get.xml +0 -0
  420. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_by_id.xml +0 -0
  421. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_daily_id.xml +0 -0
  422. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_empty.xml +0 -0
  423. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_extract_refresh_tasks.xml +0 -0
  424. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_hourly_id.xml +0 -0
  425. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_monthly_id.xml +0 -0
  426. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_get_monthly_id_2.xml +0 -0
  427. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/schedule_update.xml +0 -0
  428. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/server_info_25.xml +0 -0
  429. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/server_info_404.xml +0 -0
  430. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/server_info_auth_info.xml +0 -0
  431. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/server_info_get.xml +0 -0
  432. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/site_auth_configurations.xml +0 -0
  433. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/site_create.xml +0 -0
  434. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/site_get.xml +0 -0
  435. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/site_get_by_id.xml +0 -0
  436. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/site_get_by_name.xml +0 -0
  437. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/site_update.xml +0 -0
  438. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/subscription_create.xml +0 -0
  439. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/subscription_get.xml +0 -0
  440. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/subscription_get_by_id.xml +0 -0
  441. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/table_get.xml +0 -0
  442. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/table_update.xml +0 -0
  443. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_create_extract_task.xml +0 -0
  444. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_create_flow_task.xml +0 -0
  445. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
  446. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_run_now_response.xml +0 -0
  447. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
  448. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_with_datasource.xml +0 -0
  449. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_with_interval.xml +0 -0
  450. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_with_workbook.xml +0 -0
  451. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
  452. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/tasks_without_schedule.xml +0 -0
  453. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_add.xml +0 -0
  454. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_add_favorite.xml +0 -0
  455. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_get.xml +0 -0
  456. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_get_all_fields.xml +0 -0
  457. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_get_by_id.xml +0 -0
  458. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_get_empty.xml +0 -0
  459. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_populate_groups.xml +0 -0
  460. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_populate_workbooks.xml +0 -0
  461. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/user_update.xml +0 -0
  462. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_add_tags.xml +0 -0
  463. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_get.xml +0 -0
  464. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_get_all_fields.xml +0 -0
  465. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_get_id.xml +0 -0
  466. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_get_id_usage.xml +0 -0
  467. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_get_usage.xml +0 -0
  468. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_populate_permissions.xml +0 -0
  469. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/view_update_permissions.xml +0 -0
  470. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connection_add_permissions.xml +0 -0
  471. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connection_database_connection_update.xml +0 -0
  472. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connections_download.xml +0 -0
  473. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connections_get.xml +0 -0
  474. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connections_publish.xml +0 -0
  475. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connections_revisions.xml +0 -0
  476. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/virtual_connections_update.xml +0 -0
  477. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/webhook_create.xml +0 -0
  478. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/webhook_create_request.xml +0 -0
  479. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/webhook_get.xml +0 -0
  480. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_add_tags.xml +0 -0
  481. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get.xml +0 -0
  482. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_all_fields.xml +0 -0
  483. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_by_id.xml +0 -0
  484. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
  485. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_by_id_personal.xml +0 -0
  486. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_empty.xml +0 -0
  487. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_invalid_date.xml +0 -0
  488. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_page_1.xml +0 -0
  489. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_page_2.xml +0 -0
  490. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_get_page_3.xml +0 -0
  491. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_populate_connections.xml +0 -0
  492. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_populate_permissions.xml +0 -0
  493. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_populate_views.xml +0 -0
  494. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_populate_views_usage.xml +0 -0
  495. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_publish.xml +0 -0
  496. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_publish_async.xml +0 -0
  497. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_refresh.xml +0 -0
  498. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_revision.xml +0 -0
  499. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update.xml +0 -0
  500. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_acceleration_status.xml +0 -0
  501. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
  502. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
  503. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
  504. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
  505. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
  506. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
  507. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_permissions.xml +0 -0
  508. {tableauserverclient-0.38 → tableauserverclient-0.39}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
  509. {tableauserverclient-0.38/test/request_factory → tableauserverclient-0.39/test/http}/__init__.py +0 -0
@@ -4,8 +4,6 @@ include CONTRIBUTORS.md
4
4
  include LICENSE
5
5
  include LICENSE.versioneer
6
6
  include README.md
7
- include tableauserverclient/_version.py
8
- include versioneer.py
9
7
  recursive-include docs *.md
10
8
  recursive-include samples *.py
11
9
  recursive-include samples *.txt
@@ -18,5 +16,4 @@ recursive-include test *.png
18
16
  recursive-include test *.py
19
17
  recursive-include test *.xml
20
18
  recursive-include test *.tde
21
- global-include *.pyi
22
19
  global-include *.typed
@@ -1,30 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tableauserverclient
3
- Version: 0.38
3
+ Version: 0.39
4
4
  Summary: A Python module for working with the Tableau Server REST API.
5
5
  Author-email: Tableau <github@tableau.com>
6
- License: The MIT License (MIT)
7
-
8
- Copyright (c) 2022 Tableau
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of this software and associated documentation files (the "Software"), to deal
12
- in the Software without restriction, including without limitation the rights
13
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
- copies of the Software, and to permit persons to whom the Software is
15
- furnished to do so, subject to the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be included in all
18
- copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
- SOFTWARE.
27
-
28
6
  Project-URL: repository, https://github.com/tableau/server-client-python
29
7
  Classifier: Programming Language :: Python
30
8
  Classifier: Programming Language :: Python :: 3
@@ -36,20 +14,21 @@ Classifier: Programming Language :: Python :: 3.13
36
14
  Requires-Python: >=3.9
37
15
  Description-Content-Type: text/markdown
38
16
  License-File: LICENSE
39
- License-File: LICENSE.versioneer
40
17
  Requires-Dist: defusedxml>=0.7.1
41
18
  Requires-Dist: packaging>=23.1
42
19
  Requires-Dist: requests>=2.32
43
- Requires-Dist: urllib3<3,>=2.2.2
20
+ Requires-Dist: urllib3<3,>=2.6.0
44
21
  Requires-Dist: typing_extensions>=4.0
45
22
  Provides-Extra: test
46
- Requires-Dist: black==24.8; extra == "test"
23
+ Requires-Dist: black==24.10; extra == "test"
47
24
  Requires-Dist: build; extra == "test"
48
25
  Requires-Dist: mypy==1.4; extra == "test"
49
26
  Requires-Dist: pytest>=7.0; extra == "test"
50
27
  Requires-Dist: pytest-cov; extra == "test"
51
28
  Requires-Dist: pytest-subtests; extra == "test"
29
+ Requires-Dist: pytest-xdist; extra == "test"
52
30
  Requires-Dist: requests-mock<2.0,>=1.0; extra == "test"
31
+ Requires-Dist: types-requests>=2.32.4.20250913; extra == "test"
53
32
  Dynamic: license-file
54
33
 
55
34
  # Tableau Server Client (Python)
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools>=75.0", "versioneer[toml]==0.29", "wheel"]
2
+ requires = ["setuptools>=77.0", "versioneer[toml]==0.29", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
@@ -8,14 +8,14 @@ name="tableauserverclient"
8
8
  dynamic = ["version"]
9
9
  description='A Python module for working with the Tableau Server REST API.'
10
10
  authors = [{name="Tableau", email="github@tableau.com"}]
11
- license = {file = "LICENSE"}
11
+ license-files = ["LICENSE"]
12
12
  readme = "README.md"
13
13
 
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
17
  'requests>=2.32', # latest as at 7/31/23
18
- 'urllib3>=2.2.2,<3',
18
+ 'urllib3>=2.6.0,<3',
19
19
  'typing_extensions>=4.0',
20
20
  ]
21
21
  requires-python = ">=3.9"
@@ -32,8 +32,13 @@ classifiers = [
32
32
  repository = "https://github.com/tableau/server-client-python"
33
33
 
34
34
  [project.optional-dependencies]
35
- test = ["black==24.8", "build", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
36
- "requests-mock>=1.0,<2.0"]
35
+ test = ["black==24.10", "build", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
36
+ "pytest-xdist", "requests-mock>=1.0,<2.0", "types-requests>=2.32.4.20250913"]
37
+
38
+ [tool.setuptools.packages.find]
39
+ where = ["tableauserverclient"]
40
+ [tool.setuptools.dynamic]
41
+ version = {attr = "versioneer.get_version"}
37
42
 
38
43
  [tool.black]
39
44
  line-length = 120
@@ -61,5 +66,5 @@ addopts = "--junitxml=./test.junit.xml"
61
66
  VCS = "git"
62
67
  style = "pep440-pre"
63
68
  versionfile_source = "tableauserverclient/bin/_version.py"
64
- versionfile_build = "tableauserverclient/bin/_version.py"
69
+ versionfile_build = "_version.py"
65
70
  tag_prefix = "v"
@@ -0,0 +1,73 @@
1
+ ####
2
+ # This script demonstrates how to create a user using the Tableau
3
+ # 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
+ import os
12
+ import sys
13
+ from typing import Sequence
14
+
15
+ import tableauserverclient as TSC
16
+
17
+
18
+ def parse_args(args: Sequence[str] | None) -> argparse.Namespace:
19
+ """
20
+ Parse command line parameters
21
+ """
22
+ if args is None:
23
+ args = sys.argv[1:]
24
+ parser = argparse.ArgumentParser(description="Creates a sample user group.")
25
+ # Common options; please keep those in sync across all samples
26
+ parser.add_argument("--server", "-s", help="server address")
27
+ parser.add_argument("--site", "-S", help="site name")
28
+ parser.add_argument("--token-name", "-p", help="name of the personal access token used to sign into the server")
29
+ parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
30
+ parser.add_argument(
31
+ "--logging-level",
32
+ "-l",
33
+ choices=["debug", "info", "error"],
34
+ default="error",
35
+ help="desired logging level (set to error by default)",
36
+ )
37
+ # Options specific to this sample
38
+ # This sample has no additional options, yet. If you add some, please add them here
39
+ parser.add_argument("--role", "-r", help="Site Role for the new user", default="Unlicensed")
40
+ parser.add_argument(
41
+ "--user",
42
+ "-u",
43
+ help="Username for the new user. If using active directory, it should be in the format of SAMAccountName@FullyQualifiedDomainName",
44
+ )
45
+ parser.add_argument(
46
+ "--email", "-e", help="Email address of the new user. If using active directory, this field is optional."
47
+ )
48
+
49
+ return parser.parse_args(args)
50
+
51
+
52
+ def main():
53
+ args = parse_args(None)
54
+
55
+ # Set logging level based on user input, or error by default
56
+ logging_level = getattr(logging, args.logging_level.upper())
57
+ logging.basicConfig(level=logging_level)
58
+
59
+ tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
60
+ server = TSC.Server(args.server, use_server_version=True, http_options={"verify": False})
61
+ with server.auth.sign_in(tableau_auth):
62
+ # this code shows 2 different error codes for common mistakes
63
+ # 400013: Invalid site role
64
+ # 409000: user already exists on site
65
+
66
+ user = TSC.UserItem(args.user, args.role)
67
+ if args.email:
68
+ user.email = args.email
69
+ user = server.users.add(user)
70
+
71
+
72
+ if __name__ == "__main__":
73
+ main()
@@ -0,0 +1,87 @@
1
+ ####
2
+ # This script demonstrates how to use the metadata API to query information on a published data source
3
+ #
4
+ # To run the script, you must have installed Python 3.7 or later.
5
+ ####
6
+
7
+ import argparse
8
+ import logging
9
+ from pprint import pprint
10
+
11
+ import tableauserverclient as TSC
12
+
13
+
14
+ def main():
15
+ parser = argparse.ArgumentParser(description="Use the metadata API to get information on a published data source.")
16
+ # Common options; please keep those in sync across all samples
17
+ parser.add_argument("--server", "-s", help="server address")
18
+ parser.add_argument("--site", "-S", help="site name")
19
+ parser.add_argument("--token-name", "-n", help="name of the personal access token used to sign into the server")
20
+ parser.add_argument("--token-value", "-v", help="value of the personal access token used to sign into the server")
21
+ parser.add_argument(
22
+ "--logging-level",
23
+ "-l",
24
+ choices=["debug", "info", "error"],
25
+ default="error",
26
+ help="desired logging level (set to error by default)",
27
+ )
28
+ # Options specific to this sample
29
+ parser.add_argument(
30
+ "datasource_name",
31
+ nargs="?",
32
+ help="The name of the published datasource. If not present, we query all data sources.",
33
+ )
34
+
35
+ args = parser.parse_args()
36
+
37
+ # Set logging level based on user input, or error by default
38
+ logging_level = getattr(logging, args.logging_level.upper())
39
+ logging.basicConfig(level=logging_level)
40
+
41
+ # Sign in to server
42
+ tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
43
+ server = TSC.Server(args.server, use_server_version=True)
44
+ with server.auth.sign_in(tableau_auth):
45
+ # Execute the query
46
+ result = server.metadata.query(
47
+ """
48
+ # Query must declare that it accepts first and afterToken variables
49
+ query paged($first:Int, $afterToken:String) {
50
+ workbooksConnection(first: $first, after:$afterToken) {
51
+ nodes {
52
+ luid
53
+ name
54
+ projectName
55
+ description
56
+ }
57
+ totalCount
58
+ pageInfo {
59
+ endCursor
60
+ hasNextPage
61
+ }
62
+ }
63
+ }
64
+ """,
65
+ # "first" adjusts the page size. Here we set it to 5 to demonstrate pagination.
66
+ # Set it to a higher number to reduce the number of pages. Including
67
+ # first and afterToken is optional, and if not included, TSC will
68
+ # use its default page size of 100.
69
+ variables={"first": 5, "afterToken": None},
70
+ )
71
+
72
+ # Multiple pages are captured in result["pages"]. Each page contains
73
+ # the result of one execution of the query above.
74
+ for page in result["pages"]:
75
+ # Display warnings/errors (if any)
76
+ if page.get("errors"):
77
+ print("### Errors/Warnings:")
78
+ pprint(result["errors"])
79
+
80
+ # Print the results
81
+ if result.get("data"):
82
+ print("### Results:")
83
+ pprint(result["data"]["workbooksConnection"]["nodes"])
84
+
85
+
86
+ if __name__ == "__main__":
87
+ main()
@@ -0,0 +1,62 @@
1
+ import argparse
2
+ import logging
3
+ import tableauserverclient as TSC
4
+
5
+
6
+ def main():
7
+ parser = argparse.ArgumentParser(
8
+ description="Update a single connection on a datasource or workbook to embed credentials"
9
+ )
10
+
11
+ # Common options
12
+ parser.add_argument("--server", "-s", help="Server address", required=True)
13
+ parser.add_argument("--site", "-S", help="Site name", required=True)
14
+ parser.add_argument("--token-name", "-p", help="Personal access token name", required=True)
15
+ parser.add_argument("--token-value", "-v", help="Personal access token value", required=True)
16
+ parser.add_argument(
17
+ "--logging-level",
18
+ "-l",
19
+ choices=["debug", "info", "error"],
20
+ default="error",
21
+ help="Logging level (default: error)",
22
+ )
23
+
24
+ # Resource and connection details
25
+ parser.add_argument("resource_type", choices=["workbook", "datasource"])
26
+ parser.add_argument("resource_id", help="Workbook or datasource ID")
27
+ parser.add_argument("connection_id", help="Connection ID to update")
28
+ parser.add_argument("datasource_username", help="Username to set for the connection")
29
+ parser.add_argument("datasource_password", help="Password to set for the connection")
30
+ parser.add_argument("authentication_type", help="Authentication type")
31
+
32
+ args = parser.parse_args()
33
+
34
+ # Logging setup
35
+ logging_level = getattr(logging, args.logging_level.upper())
36
+ logging.basicConfig(level=logging_level)
37
+
38
+ tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
39
+ server = TSC.Server(args.server, use_server_version=True)
40
+
41
+ with server.auth.sign_in(tableau_auth):
42
+ endpoint = {"workbook": server.workbooks, "datasource": server.datasources}.get(args.resource_type)
43
+
44
+ update_function = endpoint.update_connection
45
+ resource = endpoint.get_by_id(args.resource_id)
46
+ endpoint.populate_connections(resource)
47
+
48
+ connections = [conn for conn in resource.connections if conn.id == args.connection_id]
49
+ assert len(connections) == 1, f"Connection ID '{args.connection_id}' not found."
50
+
51
+ connection = connections[0]
52
+ connection.username = args.datasource_username
53
+ connection.password = args.datasource_password
54
+ connection.auth_type = args.authentication_type
55
+ connection.embed_password = True
56
+
57
+ updated_connection = update_function(resource, connection)
58
+ print(f"Updated connection: {updated_connection.__dict__}")
59
+
60
+
61
+ if __name__ == "__main__":
62
+ main()
@@ -0,0 +1,64 @@
1
+ import argparse
2
+ import logging
3
+ import tableauserverclient as TSC
4
+
5
+
6
+ def main():
7
+ parser = argparse.ArgumentParser(description="Bulk update all workbook or datasource connections")
8
+
9
+ # Common options
10
+ parser.add_argument("--server", "-s", help="Server address", required=True)
11
+ parser.add_argument("--site", "-S", help="Site name", required=True)
12
+ parser.add_argument("--token-name", "-p", help="Personal access token name", required=True)
13
+ parser.add_argument("--token-value", "-v", help="Personal access token value", required=True)
14
+ parser.add_argument(
15
+ "--logging-level",
16
+ "-l",
17
+ choices=["debug", "info", "error"],
18
+ default="error",
19
+ help="Logging level (default: error)",
20
+ )
21
+
22
+ # Resource-specific
23
+ parser.add_argument("resource_type", choices=["workbook", "datasource"])
24
+ parser.add_argument("resource_id")
25
+ parser.add_argument("datasource_username")
26
+ parser.add_argument("authentication_type")
27
+ parser.add_argument("--datasource_password", default=None, help="Datasource password (optional)")
28
+ parser.add_argument(
29
+ "--embed_password", default="true", choices=["true", "false"], help="Embed password (default: true)"
30
+ )
31
+
32
+ args = parser.parse_args()
33
+
34
+ # Set logging level
35
+ logging_level = getattr(logging, args.logging_level.upper())
36
+ logging.basicConfig(level=logging_level)
37
+
38
+ tableau_auth = TSC.PersonalAccessTokenAuth(args.token_name, args.token_value, site_id=args.site)
39
+ server = TSC.Server(args.server, use_server_version=True)
40
+
41
+ with server.auth.sign_in(tableau_auth):
42
+ endpoint = {"workbook": server.workbooks, "datasource": server.datasources}.get(args.resource_type)
43
+
44
+ resource = endpoint.get_by_id(args.resource_id)
45
+ endpoint.populate_connections(resource)
46
+
47
+ connection_luids = [conn.id for conn in resource.connections]
48
+ embed_password = args.embed_password.lower() == "true"
49
+
50
+ # Call unified update_connections method
51
+ connection_items = endpoint.update_connections(
52
+ resource,
53
+ connection_luids=connection_luids,
54
+ authentication_type=args.authentication_type,
55
+ username=args.datasource_username,
56
+ password=args.datasource_password,
57
+ embed_password=embed_password,
58
+ )
59
+
60
+ print(f"Updated connections on {args.resource_type} {args.resource_id}: {connection_items}")
61
+
62
+
63
+ if __name__ == "__main__":
64
+ main()
@@ -76,7 +76,7 @@ def main():
76
76
  print("Waiting for job...")
77
77
  # `wait_for_job` will throw if the job isn't executed successfully
78
78
  job = server.jobs.wait_for_job(job)
79
- print("Job finished succesfully")
79
+ print("Job finished successfully")
80
80
 
81
81
 
82
82
  if __name__ == "__main__":
@@ -0,0 +1,8 @@
1
+ import versioneer
2
+ from setuptools import setup
3
+
4
+ setup(
5
+ # This line is required to set the version number when building the wheel
6
+ # not yet sure how to move this to pyproject.toml - it may require work in versioneer
7
+ cmdclass=versioneer.get_cmdclass()
8
+ )
@@ -0,0 +1,3 @@
1
+ # generated during initial setup of versioneer
2
+ from . import _version
3
+ __version__ = _version.get_versions()['version']
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-05-15T14:21:50-0700",
11
+ "date": "2026-02-02T11:01:51-0800",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "cda018b684c98200f3f9de11e379ba2ca3b1b3fe",
15
- "version": "0.38"
14
+ "full-revisionid": "34ac954b8edd87e367e4e1f54b4179aee54e2816",
15
+ "version": "0.39"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -1,3 +1,4 @@
1
+ from tableauserverclient.models.collection_item import CollectionItem
1
2
  from tableauserverclient.models.column_item import ColumnItem
2
3
  from tableauserverclient.models.connection_credentials import ConnectionCredentials
3
4
  from tableauserverclient.models.connection_item import ConnectionItem
@@ -9,6 +10,7 @@ from tableauserverclient.models.data_freshness_policy_item import DataFreshnessP
9
10
  from tableauserverclient.models.datasource_item import DatasourceItem
10
11
  from tableauserverclient.models.dqw_item import DQWItem
11
12
  from tableauserverclient.models.exceptions import UnpopulatedPropertyError
13
+ from tableauserverclient.models.extensions_item import ExtensionsServer, ExtensionsSiteSettings, SafeExtension
12
14
  from tableauserverclient.models.favorites_item import FavoriteItem
13
15
  from tableauserverclient.models.fileupload_item import FileuploadItem
14
16
  from tableauserverclient.models.flow_item import FlowItem
@@ -30,6 +32,7 @@ from tableauserverclient.models.linked_tasks_item import (
30
32
  )
31
33
  from tableauserverclient.models.location_item import LocationItem
32
34
  from tableauserverclient.models.metric_item import MetricItem
35
+ from tableauserverclient.models.oidc_item import SiteOIDCConfiguration
33
36
  from tableauserverclient.models.pagination_item import PaginationItem
34
37
  from tableauserverclient.models.permissions_item import PermissionsRule, Permission
35
38
  from tableauserverclient.models.project_item import ProjectItem
@@ -52,6 +55,7 @@ from tableauserverclient.models.workbook_item import WorkbookItem
52
55
  from tableauserverclient.models.extract_item import ExtractItem
53
56
 
54
57
  __all__ = [
58
+ "CollectionItem",
55
59
  "ColumnItem",
56
60
  "ConnectionCredentials",
57
61
  "ConnectionItem",
@@ -79,6 +83,7 @@ __all__ = [
79
83
  "BackgroundJobItem",
80
84
  "LocationItem",
81
85
  "MetricItem",
86
+ "SiteOIDCConfiguration",
82
87
  "PaginationItem",
83
88
  "Permission",
84
89
  "PermissionsRule",
@@ -88,6 +93,7 @@ __all__ = [
88
93
  "ServerInfoItem",
89
94
  "SiteAuthConfiguration",
90
95
  "SiteItem",
96
+ "SiteOIDCConfiguration",
91
97
  "SubscriptionItem",
92
98
  "TableItem",
93
99
  "TableauAuth",
@@ -108,4 +114,7 @@ __all__ = [
108
114
  "LinkedTaskStepItem",
109
115
  "LinkedTaskFlowRunItem",
110
116
  "ExtractItem",
117
+ "ExtensionsServer",
118
+ "ExtensionsSiteSettings",
119
+ "SafeExtension",
111
120
  ]
@@ -0,0 +1,52 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+ from xml.etree.ElementTree import Element
4
+
5
+ from defusedxml.ElementTree import fromstring
6
+ from typing_extensions import Self
7
+
8
+ from tableauserverclient.datetime_helpers import parse_datetime
9
+ from tableauserverclient.models.user_item import UserItem
10
+
11
+
12
+ class CollectionItem:
13
+ def __init__(self) -> None:
14
+ self.id: Optional[str] = None
15
+ self.name: Optional[str] = None
16
+ self.description: Optional[str] = None
17
+ self.created_at: Optional[datetime] = None
18
+ self.updated_at: Optional[datetime] = None
19
+ self.owner: Optional[UserItem] = None
20
+ self.total_item_count: Optional[int] = None
21
+ self.permissioned_item_count: Optional[int] = None
22
+ self.visibility: Optional[str] = None # Assuming visibility is a string, adjust as necessary
23
+
24
+ @classmethod
25
+ def from_response(cls, response: bytes, ns) -> list[Self]:
26
+ parsed_response = fromstring(response)
27
+
28
+ collection_elements = parsed_response.findall(".//t:collection", namespaces=ns)
29
+ if not collection_elements:
30
+ raise ValueError("No collection element found in the response")
31
+
32
+ collections = [cls.from_xml(c, ns) for c in collection_elements]
33
+ return collections
34
+
35
+ @classmethod
36
+ def from_xml(cls, xml: Element, ns) -> Self:
37
+ collection_item = cls()
38
+ collection_item.id = xml.get("id")
39
+ collection_item.name = xml.get("name")
40
+ collection_item.description = xml.get("description")
41
+ collection_item.created_at = parse_datetime(xml.get("createdAt"))
42
+ collection_item.updated_at = parse_datetime(xml.get("updatedAt"))
43
+ owner_element = xml.find(".//t:owner", namespaces=ns)
44
+ if owner_element is not None:
45
+ collection_item.owner = UserItem.from_xml(owner_element, ns)
46
+ else:
47
+ collection_item.owner = None
48
+ collection_item.total_item_count = int(xml.get("totalItemCount", 0))
49
+ collection_item.permissioned_item_count = int(xml.get("permissionedItemCount", 0))
50
+ collection_item.visibility = xml.get("visibility")
51
+
52
+ return collection_item
@@ -41,6 +41,9 @@ class ConnectionItem:
41
41
  server_port: str
42
42
  The port used for the connection.
43
43
 
44
+ auth_type: str
45
+ Specifies the type of authentication used by the connection.
46
+
44
47
  connection_credentials: ConnectionCredentials
45
48
  The Connection Credentials object containing authentication details for
46
49
  the connection. Replaces username/password/embed_password when
@@ -59,6 +62,7 @@ class ConnectionItem:
59
62
  self.username: Optional[str] = None
60
63
  self.connection_credentials: Optional[ConnectionCredentials] = None
61
64
  self._query_tagging: Optional[bool] = None
65
+ self._auth_type: Optional[str] = None
62
66
 
63
67
  @property
64
68
  def datasource_id(self) -> Optional[str]:
@@ -91,8 +95,16 @@ class ConnectionItem:
91
95
  return
92
96
  self._query_tagging = value
93
97
 
98
+ @property
99
+ def auth_type(self) -> Optional[str]:
100
+ return self._auth_type
101
+
102
+ @auth_type.setter
103
+ def auth_type(self, value: Optional[str]):
104
+ self._auth_type = value
105
+
94
106
  def __repr__(self):
95
- return "<ConnectionItem#{_id} embed={embed_password} type={_connection_type} username={username}>".format(
107
+ return "<ConnectionItem#{_id} embed={embed_password} type={_connection_type} auth={_auth_type} username={username}>".format(
96
108
  **self.__dict__
97
109
  )
98
110
 
@@ -108,10 +120,11 @@ class ConnectionItem:
108
120
  connection_item.embed_password = string_to_bool(connection_xml.get("embedPassword", ""))
109
121
  connection_item.server_address = connection_xml.get("serverAddress", connection_xml.get("server", None))
110
122
  connection_item.server_port = connection_xml.get("serverPort", connection_xml.get("port", None))
111
- connection_item.username = connection_xml.get("userName", None)
123
+ connection_item.username = connection_xml.get("userName", connection_xml.get("username", None))
112
124
  connection_item._query_tagging = (
113
125
  string_to_bool(s) if (s := connection_xml.get("queryTagging", None)) else None
114
126
  )
127
+ connection_item._auth_type = connection_xml.get("authenticationType", None)
115
128
  datasource_elem = connection_xml.find(".//t:datasource", namespaces=ns)
116
129
  if datasource_elem is not None:
117
130
  connection_item._datasource_id = datasource_elem.get("id", None)
@@ -139,6 +152,7 @@ class ConnectionItem:
139
152
 
140
153
  connection_item.server_address = connection_xml.get("serverAddress", None)
141
154
  connection_item.server_port = connection_xml.get("serverPort", None)
155
+ connection_item._auth_type = connection_xml.get("authenticationType", None)
142
156
 
143
157
  connection_credentials = connection_xml.find(".//t:connectionCredentials", namespaces=ns)
144
158
 
@@ -158,10 +158,18 @@ class CustomViewItem:
158
158
  def workbook(self) -> Optional[WorkbookItem]:
159
159
  return self._workbook
160
160
 
161
+ @workbook.setter
162
+ def workbook(self, value: WorkbookItem) -> None:
163
+ self._workbook = value
164
+
161
165
  @property
162
166
  def view(self) -> Optional[ViewItem]:
163
167
  return self._view
164
168
 
169
+ @view.setter
170
+ def view(self, value: ViewItem) -> None:
171
+ self._view = value
172
+
165
173
  @classmethod
166
174
  def from_response(cls, resp, ns, workbook_id="") -> Optional["CustomViewItem"]:
167
175
  item = cls.list_from_response(resp, ns, workbook_id)
@@ -66,7 +66,7 @@ class DataFreshnessPolicyItem:
66
66
  return self._interval_item
67
67
 
68
68
  @interval_item.setter
69
- def interval_item(self, value: list[str]):
69
+ def interval_item(self, value: Optional[list[str]]):
70
70
  self._interval_item = value
71
71
 
72
72
  @property
@@ -127,7 +127,7 @@ class DataFreshnessPolicyItem:
127
127
  return self._fresh_every_schedule
128
128
 
129
129
  @fresh_every_schedule.setter
130
- def fresh_every_schedule(self, value: FreshEvery):
130
+ def fresh_every_schedule(self, value: Optional[FreshEvery]):
131
131
  self._fresh_every_schedule = value
132
132
 
133
133
  @property
@@ -135,7 +135,7 @@ class DataFreshnessPolicyItem:
135
135
  return self._fresh_at_schedule
136
136
 
137
137
  @fresh_at_schedule.setter
138
- def fresh_at_schedule(self, value: FreshAt):
138
+ def fresh_at_schedule(self, value: Optional[FreshAt]):
139
139
  self._fresh_at_schedule = value
140
140
 
141
141
  @classmethod