tableauserverclient 0.37__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.37 → tableauserverclient-0.39}/MANIFEST.in +0 -3
  2. {tableauserverclient-0.37 → tableauserverclient-0.39}/PKG-INFO +5 -26
  3. {tableauserverclient-0.37 → tableauserverclient-0.39}/pyproject.toml +11 -6
  4. tableauserverclient-0.39/samples/create_user.py +73 -0
  5. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/extracts.py +0 -1
  6. tableauserverclient-0.39/samples/metadata_paginated_query.py +87 -0
  7. tableauserverclient-0.39/samples/update_connection_auth.py +62 -0
  8. tableauserverclient-0.39/samples/update_connections_auth.py +64 -0
  9. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/update_datasource_data.py +1 -1
  10. tableauserverclient-0.39/setup.py +8 -0
  11. tableauserverclient-0.39/tableauserverclient/bin/__init__.py +3 -0
  12. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/bin/_version.py +3 -3
  13. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/helpers/strings.py +25 -1
  14. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/__init__.py +15 -1
  15. tableauserverclient-0.39/tableauserverclient/models/collection_item.py +52 -0
  16. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/connection_item.py +16 -2
  17. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/custom_view_item.py +8 -0
  18. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/data_freshness_policy_item.py +3 -3
  19. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/datasource_item.py +113 -3
  20. tableauserverclient-0.39/tableauserverclient/models/extensions_item.py +186 -0
  21. tableauserverclient-0.39/tableauserverclient/models/extract_item.py +82 -0
  22. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/favorites_item.py +21 -8
  23. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/flow_item.py +3 -3
  24. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/group_item.py +18 -1
  25. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/groupset_item.py +14 -0
  26. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/interval_item.py +42 -1
  27. tableauserverclient-0.39/tableauserverclient/models/location_item.py +53 -0
  28. tableauserverclient-0.39/tableauserverclient/models/oidc_item.py +82 -0
  29. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/permissions_item.py +2 -0
  30. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/project_item.py +141 -29
  31. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/property_decorators.py +2 -2
  32. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/reference_item.py +12 -6
  33. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/schedule_item.py +67 -1
  34. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/site_item.py +54 -0
  35. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/table_item.py +7 -3
  36. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/tableau_auth.py +13 -6
  37. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/tableau_types.py +13 -1
  38. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/user_item.py +111 -4
  39. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/view_item.py +79 -5
  40. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/workbook_item.py +153 -3
  41. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/__init__.py +4 -0
  42. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/databases_endpoint.py +101 -18
  43. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/datasources_endpoint.py +155 -25
  44. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/dqw_endpoint.py +16 -6
  45. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/endpoint.py +39 -0
  46. tableauserverclient-0.39/tableauserverclient/server/endpoint/extensions_endpoint.py +79 -0
  47. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/flow_task_endpoint.py +1 -1
  48. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/flows_endpoint.py +5 -4
  49. tableauserverclient-0.39/tableauserverclient/server/endpoint/oidc_endpoint.py +157 -0
  50. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/projects_endpoint.py +12 -0
  51. tableauserverclient-0.39/tableauserverclient/server/endpoint/schedules_endpoint.py +328 -0
  52. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/sites_endpoint.py +18 -1
  53. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/tables_endpoint.py +140 -17
  54. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/users_endpoint.py +296 -10
  55. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/views_endpoint.py +23 -0
  56. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/workbooks_endpoint.py +124 -9
  57. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/query.py +36 -0
  58. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/request_factory.py +286 -2
  59. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/request_options.py +139 -3
  60. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/server.py +46 -0
  61. {tableauserverclient-0.37 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/PKG-INFO +5 -26
  62. {tableauserverclient-0.37 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/SOURCES.txt +42 -11
  63. {tableauserverclient-0.37 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/requires.txt +4 -2
  64. tableauserverclient-0.39/tableauserverclient/tableauserverclient.egg-info/top_level.txt +4 -0
  65. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/_utils.py +14 -0
  66. tableauserverclient-0.39/test/assets/datasource_connections_update.xml +21 -0
  67. tableauserverclient-0.39/test/assets/datasource_get_all_fields.xml +10 -0
  68. tableauserverclient-0.39/test/assets/datasource_get_no_owner.xml +16 -0
  69. tableauserverclient-0.39/test/assets/extensions_server_settings_false.xml +6 -0
  70. tableauserverclient-0.39/test/assets/extensions_server_settings_true.xml +8 -0
  71. tableauserverclient-0.39/test/assets/extensions_site_settings.xml +16 -0
  72. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/favorites_add_view.xml +3 -1
  73. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/favorites_get.xml +13 -1
  74. tableauserverclient-0.39/test/assets/group_get_all_fields.xml +14 -0
  75. tableauserverclient-0.39/test/assets/oidc_create.xml +30 -0
  76. tableauserverclient-0.39/test/assets/oidc_get.xml +30 -0
  77. tableauserverclient-0.39/test/assets/oidc_update.xml +30 -0
  78. tableauserverclient-0.39/test/assets/project_get_all_fields.xml +9 -0
  79. tableauserverclient-0.39/test/assets/schedule_batch_update_state.xml +7 -0
  80. tableauserverclient-0.39/test/assets/schedule_get_customized_monthly_id.xml +10 -0
  81. tableauserverclient-0.39/test/assets/schedule_get_extract_refresh_tasks.xml +15 -0
  82. tableauserverclient-0.39/test/assets/site_auth_configurations.xml +18 -0
  83. tableauserverclient-0.39/test/assets/user_get_all_fields.xml +11 -0
  84. tableauserverclient-0.39/test/assets/users_bulk_add_job.xml +4 -0
  85. tableauserverclient-0.39/test/assets/view_get_all_fields.xml +35 -0
  86. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connection_populate_connections.xml +1 -1
  87. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connection_populate_connections2.xml +1 -1
  88. tableauserverclient-0.39/test/assets/workbook_get_all_fields.xml +46 -0
  89. tableauserverclient-0.39/test/assets/workbook_update_connections.xml +21 -0
  90. tableauserverclient-0.39/test/http/test_http_requests.py +129 -0
  91. tableauserverclient-0.39/test/models/__init__.py +0 -0
  92. tableauserverclient-0.39/test/models/_models.py +37 -0
  93. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/models/test_repr.py +25 -28
  94. tableauserverclient-0.39/test/request_factory/__init__.py +0 -0
  95. tableauserverclient-0.39/test/request_factory/test_datasource_requests.py +13 -0
  96. tableauserverclient-0.39/test/request_factory/test_task_requests.py +61 -0
  97. tableauserverclient-0.39/test/request_factory/test_workbook_requests.py +58 -0
  98. tableauserverclient-0.39/test/test_auth.py +146 -0
  99. tableauserverclient-0.39/test/test_connection_.py +25 -0
  100. tableauserverclient-0.39/test/test_custom_view.py +342 -0
  101. tableauserverclient-0.39/test/test_data_acceleration_report.py +45 -0
  102. tableauserverclient-0.39/test/test_data_freshness_policy.py +182 -0
  103. tableauserverclient-0.39/test/test_dataalert.py +120 -0
  104. tableauserverclient-0.39/test/test_database.py +112 -0
  105. tableauserverclient-0.39/test/test_datasource.py +907 -0
  106. tableauserverclient-0.39/test/test_datasource_model.py +20 -0
  107. tableauserverclient-0.39/test/test_dqw.py +9 -0
  108. tableauserverclient-0.39/test/test_endpoint.py +93 -0
  109. tableauserverclient-0.39/test/test_exponential_backoff.py +62 -0
  110. tableauserverclient-0.39/test/test_extensions.py +195 -0
  111. tableauserverclient-0.39/test/test_favorites.py +146 -0
  112. tableauserverclient-0.39/test/test_filesys_helpers.py +113 -0
  113. tableauserverclient-0.39/test/test_fileuploads.py +92 -0
  114. tableauserverclient-0.39/test/test_filter.py +16 -0
  115. tableauserverclient-0.39/test/test_flow.py +242 -0
  116. tableauserverclient-0.39/test/test_flowruns.py +121 -0
  117. tableauserverclient-0.39/test/test_flowtask.py +46 -0
  118. tableauserverclient-0.39/test/test_group.py +342 -0
  119. tableauserverclient-0.39/test/test_group_model.py +15 -0
  120. tableauserverclient-0.39/test/test_groupsets.py +146 -0
  121. tableauserverclient-0.39/test/test_job.py +174 -0
  122. tableauserverclient-0.39/test/test_linked_tasks.py +137 -0
  123. tableauserverclient-0.39/test/test_metadata.py +109 -0
  124. tableauserverclient-0.39/test/test_metrics.py +111 -0
  125. tableauserverclient-0.39/test/test_oidc.py +159 -0
  126. tableauserverclient-0.39/test/test_pager.py +138 -0
  127. tableauserverclient-0.39/test/test_permissionsrule.py +104 -0
  128. tableauserverclient-0.39/test/test_project.py +466 -0
  129. tableauserverclient-0.39/test/test_project_model.py +22 -0
  130. tableauserverclient-0.39/test/test_regression_tests.py +84 -0
  131. tableauserverclient-0.39/test/test_request_option.py +443 -0
  132. tableauserverclient-0.39/test/test_requests.py +69 -0
  133. tableauserverclient-0.39/test/test_schedule.py +494 -0
  134. tableauserverclient-0.39/test/test_server_info.py +81 -0
  135. tableauserverclient-0.39/test/test_site.py +339 -0
  136. tableauserverclient-0.39/test/test_site_model.py +73 -0
  137. tableauserverclient-0.39/test/test_sort.py +107 -0
  138. tableauserverclient-0.39/test/test_ssl_config.py +68 -0
  139. tableauserverclient-0.39/test/test_subscription.py +102 -0
  140. tableauserverclient-0.39/test/test_table.py +65 -0
  141. tableauserverclient-0.39/test/test_tableauauth_model.py +8 -0
  142. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/test_tagging.py +15 -1
  143. tableauserverclient-0.39/test/test_task.py +199 -0
  144. tableauserverclient-0.39/test/test_user.py +573 -0
  145. tableauserverclient-0.39/test/test_user_model.py +138 -0
  146. tableauserverclient-0.39/test/test_view.py +539 -0
  147. tableauserverclient-0.39/test/test_view_acceleration.py +120 -0
  148. tableauserverclient-0.39/test/test_virtual_connection.py +269 -0
  149. tableauserverclient-0.39/test/test_webhook.py +89 -0
  150. tableauserverclient-0.39/test/test_workbook.py +1135 -0
  151. tableauserverclient-0.39/test/test_workbook_model.py +12 -0
  152. tableauserverclient-0.37/setup.py +0 -15
  153. tableauserverclient-0.37/tableauserverclient/__init__.py +0 -141
  154. tableauserverclient-0.37/tableauserverclient/config.py +0 -27
  155. tableauserverclient-0.37/tableauserverclient/datetime_helpers.py +0 -45
  156. tableauserverclient-0.37/tableauserverclient/exponential_backoff.py +0 -30
  157. tableauserverclient-0.37/tableauserverclient/filesys_helpers.py +0 -63
  158. tableauserverclient-0.37/tableauserverclient/namespace.py +0 -37
  159. tableauserverclient-0.37/tableauserverclient/server/endpoint/schedules_endpoint.py +0 -151
  160. tableauserverclient-0.37/tableauserverclient.egg-info/top_level.txt +0 -1
  161. tableauserverclient-0.37/test/http/test_http_requests.py +0 -117
  162. tableauserverclient-0.37/test/models/_models.py +0 -58
  163. tableauserverclient-0.37/test/request_factory/test_datasource_requests.py +0 -15
  164. tableauserverclient-0.37/test/request_factory/test_task_requests.py +0 -48
  165. tableauserverclient-0.37/test/request_factory/test_workbook_requests.py +0 -55
  166. tableauserverclient-0.37/test/test_auth.py +0 -133
  167. tableauserverclient-0.37/test/test_connection_.py +0 -34
  168. tableauserverclient-0.37/test/test_custom_view.py +0 -320
  169. tableauserverclient-0.37/test/test_data_acceleration_report.py +0 -42
  170. tableauserverclient-0.37/test/test_data_freshness_policy.py +0 -189
  171. tableauserverclient-0.37/test/test_dataalert.py +0 -112
  172. tableauserverclient-0.37/test/test_database.py +0 -113
  173. tableauserverclient-0.37/test/test_datasource.py +0 -735
  174. tableauserverclient-0.37/test/test_datasource_model.py +0 -18
  175. tableauserverclient-0.37/test/test_dqw.py +0 -11
  176. tableauserverclient-0.37/test/test_endpoint.py +0 -83
  177. tableauserverclient-0.37/test/test_exponential_backoff.py +0 -60
  178. tableauserverclient-0.37/test/test_favorites.py +0 -119
  179. tableauserverclient-0.37/test/test_filesys_helpers.py +0 -99
  180. tableauserverclient-0.37/test/test_fileuploads.py +0 -89
  181. tableauserverclient-0.37/test/test_filter.py +0 -22
  182. tableauserverclient-0.37/test/test_flow.py +0 -225
  183. tableauserverclient-0.37/test/test_flowruns.py +0 -111
  184. tableauserverclient-0.37/test/test_flowtask.py +0 -47
  185. tableauserverclient-0.37/test/test_group.py +0 -312
  186. tableauserverclient-0.37/test/test_group_model.py +0 -15
  187. tableauserverclient-0.37/test/test_groupsets.py +0 -139
  188. tableauserverclient-0.37/test/test_job.py +0 -158
  189. tableauserverclient-0.37/test/test_linked_tasks.py +0 -129
  190. tableauserverclient-0.37/test/test_metadata.py +0 -102
  191. tableauserverclient-0.37/test/test_metrics.py +0 -105
  192. tableauserverclient-0.37/test/test_pager.py +0 -136
  193. tableauserverclient-0.37/test/test_permissionsrule.py +0 -104
  194. tableauserverclient-0.37/test/test_project.py +0 -412
  195. tableauserverclient-0.37/test/test_project_model.py +0 -21
  196. tableauserverclient-0.37/test/test_regression_tests.py +0 -83
  197. tableauserverclient-0.37/test/test_request_option.py +0 -370
  198. tableauserverclient-0.37/test/test_requests.py +0 -61
  199. tableauserverclient-0.37/test/test_schedule.py +0 -407
  200. tableauserverclient-0.37/test/test_server_info.py +0 -75
  201. tableauserverclient-0.37/test/test_site.py +0 -262
  202. tableauserverclient-0.37/test/test_site_model.py +0 -65
  203. tableauserverclient-0.37/test/test_sort.py +0 -103
  204. tableauserverclient-0.37/test/test_subscription.py +0 -100
  205. tableauserverclient-0.37/test/test_table.py +0 -59
  206. tableauserverclient-0.37/test/test_tableauauth_model.py +0 -12
  207. tableauserverclient-0.37/test/test_task.py +0 -189
  208. tableauserverclient-0.37/test/test_user.py +0 -235
  209. tableauserverclient-0.37/test/test_user_model.py +0 -127
  210. tableauserverclient-0.37/test/test_view.py +0 -404
  211. tableauserverclient-0.37/test/test_view_acceleration.py +0 -119
  212. tableauserverclient-0.37/test/test_virtual_connection.py +0 -248
  213. tableauserverclient-0.37/test/test_webhook.py +0 -84
  214. tableauserverclient-0.37/test/test_workbook.py +0 -980
  215. tableauserverclient-0.37/test/test_workbook_model.py +0 -13
  216. {tableauserverclient-0.37 → tableauserverclient-0.39}/CHANGELOG.md +0 -0
  217. {tableauserverclient-0.37 → tableauserverclient-0.39}/CONTRIBUTORS.md +0 -0
  218. {tableauserverclient-0.37 → tableauserverclient-0.39}/LICENSE +0 -0
  219. {tableauserverclient-0.37 → tableauserverclient-0.39}/LICENSE.versioneer +0 -0
  220. {tableauserverclient-0.37 → tableauserverclient-0.39}/README.md +0 -0
  221. {tableauserverclient-0.37 → tableauserverclient-0.39}/contributing.md +0 -0
  222. {tableauserverclient-0.37 → tableauserverclient-0.39}/docs/README.md +0 -0
  223. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/add_default_permission.py +0 -0
  224. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/create_extract_task.py +0 -0
  225. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/create_group.py +0 -0
  226. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/create_project.py +0 -0
  227. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/create_schedules.py +0 -0
  228. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/explore_datasource.py +0 -0
  229. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/explore_favorites.py +0 -0
  230. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/explore_site.py +0 -0
  231. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/explore_webhooks.py +0 -0
  232. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/explore_workbook.py +0 -0
  233. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/export.py +0 -0
  234. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/filter_sort_groups.py +0 -0
  235. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/filter_sort_projects.py +0 -0
  236. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/getting_started/1_hello_server.py +0 -0
  237. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/getting_started/2_hello_site.py +0 -0
  238. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/getting_started/3_hello_universe.py +0 -0
  239. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/initialize_server.py +0 -0
  240. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/kill_all_jobs.py +0 -0
  241. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/list.py +0 -0
  242. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/login.py +0 -0
  243. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/metadata_query.py +0 -0
  244. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/move_workbook_projects.py +0 -0
  245. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/move_workbook_sites.py +0 -0
  246. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/name.txt +0 -0
  247. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/pagination_sample.py +0 -0
  248. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/publish_datasource.py +0 -0
  249. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/publish_workbook.py +0 -0
  250. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/query_permissions.py +0 -0
  251. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/refresh.py +0 -0
  252. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/refresh_tasks.py +0 -0
  253. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/set_refresh_schedule.py +0 -0
  254. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/smoke_test.py +0 -0
  255. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/update_connection.py +0 -0
  256. {tableauserverclient-0.37 → tableauserverclient-0.39}/samples/update_workbook_data_freshness_policy.py +0 -0
  257. {tableauserverclient-0.37 → tableauserverclient-0.39}/setup.cfg +0 -0
  258. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/helpers/__init__.py +0 -0
  259. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/helpers/headers.py +0 -0
  260. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/helpers/logging.py +0 -0
  261. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/column_item.py +0 -0
  262. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/connection_credentials.py +0 -0
  263. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/data_acceleration_report_item.py +0 -0
  264. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/data_alert_item.py +0 -0
  265. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/database_item.py +0 -0
  266. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/dqw_item.py +0 -0
  267. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/exceptions.py +0 -0
  268. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/fileupload_item.py +0 -0
  269. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/flow_run_item.py +0 -0
  270. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/job_item.py +0 -0
  271. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/linked_tasks_item.py +0 -0
  272. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/metric_item.py +0 -0
  273. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/pagination_item.py +0 -0
  274. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/revision_item.py +0 -0
  275. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/server_info_item.py +0 -0
  276. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/subscription_item.py +0 -0
  277. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/tag_item.py +0 -0
  278. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/target.py +0 -0
  279. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/task_item.py +0 -0
  280. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/virtual_connection_item.py +0 -0
  281. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/models/webhook_item.py +0 -0
  282. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/py.typed +0 -0
  283. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/__init__.py +0 -0
  284. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/auth_endpoint.py +0 -0
  285. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -0
  286. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
  287. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
  288. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
  289. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/exceptions.py +0 -0
  290. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -0
  291. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +0 -0
  292. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +0 -0
  293. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/groups_endpoint.py +0 -0
  294. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/groupsets_endpoint.py +0 -0
  295. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/jobs_endpoint.py +0 -0
  296. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/linked_tasks_endpoint.py +0 -0
  297. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/metadata_endpoint.py +0 -0
  298. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/metrics_endpoint.py +0 -0
  299. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
  300. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
  301. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
  302. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
  303. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/tasks_endpoint.py +0 -0
  304. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/virtual_connections_endpoint.py +0 -0
  305. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
  306. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/exceptions.py +0 -0
  307. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/filter.py +0 -0
  308. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/pager.py +0 -0
  309. {tableauserverclient-0.37 → tableauserverclient-0.39}/tableauserverclient/server/sort.py +0 -0
  310. {tableauserverclient-0.37 → tableauserverclient-0.39/tableauserverclient}/tableauserverclient.egg-info/dependency_links.txt +0 -0
  311. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/__init__.py +0 -0
  312. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
  313. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/Data/user_details.csv +0 -0
  314. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/Data/usernames.csv +0 -0
  315. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/RESTAPISample Image.png +0 -0
  316. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/Sample View Image.png +0 -0
  317. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/World Indicators.hyper +0 -0
  318. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/auth_sign_in.xml +0 -0
  319. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/auth_sign_in_error.xml +0 -0
  320. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/auth_sign_in_impersonate.xml +0 -0
  321. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/custom_view_download.json +0 -0
  322. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/custom_view_get.xml +0 -0
  323. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/custom_view_get_id.xml +0 -0
  324. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/custom_view_update.xml +0 -0
  325. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/data_acceleration_report.xml +0 -0
  326. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/data_alerts_add_user.xml +0 -0
  327. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/data_alerts_get.xml +0 -0
  328. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/data_alerts_get_by_id.xml +0 -0
  329. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/data_alerts_update.xml +0 -0
  330. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/database_get.xml +0 -0
  331. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/database_populate_permissions.xml +0 -0
  332. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/database_update.xml +0 -0
  333. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_add_tags.xml +0 -0
  334. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_connection_update.xml +0 -0
  335. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_data_update.xml +0 -0
  336. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_get.xml +0 -0
  337. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_get_by_id.xml +0 -0
  338. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_get_empty.xml +0 -0
  339. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_populate_connections.xml +0 -0
  340. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_populate_permissions.xml +0 -0
  341. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_publish.xml +0 -0
  342. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_publish_async.xml +0 -0
  343. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_refresh.xml +0 -0
  344. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_revision.xml +0 -0
  345. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/datasource_update.xml +0 -0
  346. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/dqw_by_content_type.xml +0 -0
  347. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/favorites_add_datasource.xml +0 -0
  348. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/favorites_add_project.xml +0 -0
  349. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/favorites_add_workbook.xml +0 -0
  350. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/fileupload_append.xml +0 -0
  351. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/fileupload_initialize.xml +0 -0
  352. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_get.xml +0 -0
  353. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_get_by_id.xml +0 -0
  354. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_populate_connections.xml +0 -0
  355. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_populate_permissions.xml +0 -0
  356. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_publish.xml +0 -0
  357. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_refresh.xml +0 -0
  358. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_runs_get.xml +0 -0
  359. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_runs_get_by_id.xml +0 -0
  360. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
  361. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
  362. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/flow_update.xml +0 -0
  363. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_add_user.xml +0 -0
  364. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_add_users.xml +0 -0
  365. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_create.xml +0 -0
  366. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_create_ad.xml +0 -0
  367. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_create_async.xml +0 -0
  368. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_get.xml +0 -0
  369. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_populate_users.xml +0 -0
  370. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_populate_users_empty.xml +0 -0
  371. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_update.xml +0 -0
  372. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_update_async.xml +0 -0
  373. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/group_users_added.xml +0 -0
  374. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/groupsets_create.xml +0 -0
  375. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/groupsets_get.xml +0 -0
  376. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/groupsets_get_by_id.xml +0 -0
  377. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/groupsets_update.xml +0 -0
  378. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/job_get.xml +0 -0
  379. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/job_get_by_id.xml +0 -0
  380. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/job_get_by_id_completed.xml +0 -0
  381. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/job_get_by_id_failed.xml +0 -0
  382. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
  383. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/job_get_by_id_inprogress.xml +0 -0
  384. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/linked_tasks_get.xml +0 -0
  385. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/linked_tasks_run_now.xml +0 -0
  386. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metadata_paged_1.json +0 -0
  387. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metadata_paged_2.json +0 -0
  388. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metadata_paged_3.json +0 -0
  389. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metadata_query_error.json +0 -0
  390. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metadata_query_expected_dict.dict +0 -0
  391. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metadata_query_success.json +0 -0
  392. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metrics_get.xml +0 -0
  393. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metrics_get_by_id.xml +0 -0
  394. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/metrics_update.xml +0 -0
  395. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/odata_connection.xml +0 -0
  396. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/populate_csv.csv +0 -0
  397. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/populate_pdf.pdf +0 -0
  398. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_content_permission.xml +0 -0
  399. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_create.xml +0 -0
  400. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_get.xml +0 -0
  401. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_populate_permissions.xml +0 -0
  402. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_populate_virtualconnection_default_permissions.xml +0 -0
  403. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
  404. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_update.xml +0 -0
  405. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_update_datasource_default_permissions.xml +0 -0
  406. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/project_update_virtualconnection_default_permissions.xml +0 -0
  407. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/queryset_slicing_page_1.xml +0 -0
  408. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/queryset_slicing_page_2.xml +0 -0
  409. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_filter_equals.xml +0 -0
  410. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_filter_name_in.xml +0 -0
  411. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_filter_tags_in.xml +0 -0
  412. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_page_number.xml +0 -0
  413. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_page_size.xml +0 -0
  414. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_pagination.xml +0 -0
  415. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/request_option_slicing_queryset.xml +0 -0
  416. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_add_datasource.xml +0 -0
  417. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_add_flow.xml +0 -0
  418. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_add_workbook.xml +0 -0
  419. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
  420. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_create_daily.xml +0 -0
  421. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_create_hourly.xml +0 -0
  422. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_create_monthly.xml +0 -0
  423. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_create_weekly.xml +0 -0
  424. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get.xml +0 -0
  425. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get_by_id.xml +0 -0
  426. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get_daily_id.xml +0 -0
  427. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get_empty.xml +0 -0
  428. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get_hourly_id.xml +0 -0
  429. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get_monthly_id.xml +0 -0
  430. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_get_monthly_id_2.xml +0 -0
  431. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/schedule_update.xml +0 -0
  432. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/server_info_25.xml +0 -0
  433. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/server_info_404.xml +0 -0
  434. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/server_info_auth_info.xml +0 -0
  435. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/server_info_get.xml +0 -0
  436. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/site_create.xml +0 -0
  437. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/site_get.xml +0 -0
  438. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/site_get_by_id.xml +0 -0
  439. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/site_get_by_name.xml +0 -0
  440. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/site_update.xml +0 -0
  441. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/subscription_create.xml +0 -0
  442. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/subscription_get.xml +0 -0
  443. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/subscription_get_by_id.xml +0 -0
  444. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/table_get.xml +0 -0
  445. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/table_update.xml +0 -0
  446. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_create_extract_task.xml +0 -0
  447. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_create_flow_task.xml +0 -0
  448. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
  449. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_run_now_response.xml +0 -0
  450. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
  451. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_with_datasource.xml +0 -0
  452. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_with_interval.xml +0 -0
  453. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_with_workbook.xml +0 -0
  454. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
  455. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/tasks_without_schedule.xml +0 -0
  456. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_add.xml +0 -0
  457. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_add_favorite.xml +0 -0
  458. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_get.xml +0 -0
  459. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_get_by_id.xml +0 -0
  460. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_get_empty.xml +0 -0
  461. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_populate_groups.xml +0 -0
  462. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_populate_workbooks.xml +0 -0
  463. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/user_update.xml +0 -0
  464. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_add_tags.xml +0 -0
  465. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_get.xml +0 -0
  466. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_get_id.xml +0 -0
  467. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_get_id_usage.xml +0 -0
  468. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_get_usage.xml +0 -0
  469. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_populate_permissions.xml +0 -0
  470. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/view_update_permissions.xml +0 -0
  471. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connection_add_permissions.xml +0 -0
  472. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connection_database_connection_update.xml +0 -0
  473. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connections_download.xml +0 -0
  474. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connections_get.xml +0 -0
  475. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connections_publish.xml +0 -0
  476. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connections_revisions.xml +0 -0
  477. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/virtual_connections_update.xml +0 -0
  478. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/webhook_create.xml +0 -0
  479. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/webhook_create_request.xml +0 -0
  480. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/webhook_get.xml +0 -0
  481. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_add_tags.xml +0 -0
  482. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get.xml +0 -0
  483. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_by_id.xml +0 -0
  484. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
  485. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_by_id_personal.xml +0 -0
  486. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_empty.xml +0 -0
  487. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_invalid_date.xml +0 -0
  488. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_page_1.xml +0 -0
  489. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_page_2.xml +0 -0
  490. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_get_page_3.xml +0 -0
  491. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_populate_connections.xml +0 -0
  492. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_populate_permissions.xml +0 -0
  493. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_populate_views.xml +0 -0
  494. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_populate_views_usage.xml +0 -0
  495. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_publish.xml +0 -0
  496. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_publish_async.xml +0 -0
  497. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_refresh.xml +0 -0
  498. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_revision.xml +0 -0
  499. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update.xml +0 -0
  500. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_acceleration_status.xml +0 -0
  501. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
  502. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
  503. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
  504. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
  505. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
  506. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
  507. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_permissions.xml +0 -0
  508. {tableauserverclient-0.37 → tableauserverclient-0.39}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
  509. {tableauserverclient-0.37/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.37
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()
@@ -42,7 +42,6 @@ def main():
42
42
  server.add_http_options({"verify": False})
43
43
  server.use_server_version()
44
44
  with server.auth.sign_in(tableau_auth):
45
-
46
45
  wb = None
47
46
  ds = None
48
47
  if args.workbook:
@@ -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-03-24T09:59:27-0700",
11
+ "date": "2026-02-02T11:01:51-0800",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "bf857041ed16dccf9c2aa494dbd0e6a6e6a62d66",
15
- "version": "0.37"
14
+ "full-revisionid": "34ac954b8edd87e367e4e1f54b4179aee54e2816",
15
+ "version": "0.39"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -1,6 +1,6 @@
1
1
  from defusedxml.ElementTree import fromstring, tostring
2
2
  from functools import singledispatch
3
- from typing import TypeVar
3
+ from typing import TypeVar, overload
4
4
 
5
5
 
6
6
  # the redact method can handle either strings or bytes, but it can't mix them.
@@ -41,3 +41,27 @@ def _(xml: str) -> str:
41
41
  @redact_xml.register # type: ignore[no-redef]
42
42
  def _(xml: bytes) -> bytes:
43
43
  return _redact_any_type(bytearray(xml), b"password", b"..[redacted]")
44
+
45
+
46
+ @overload
47
+ def nullable_str_to_int(value: None) -> None: ...
48
+
49
+
50
+ @overload
51
+ def nullable_str_to_int(value: str) -> int: ...
52
+
53
+
54
+ def nullable_str_to_int(value):
55
+ return int(value) if value is not None else None
56
+
57
+
58
+ @overload
59
+ def nullable_str_to_bool(value: None) -> None: ...
60
+
61
+
62
+ @overload
63
+ def nullable_str_to_bool(value: str) -> bool: ...
64
+
65
+
66
+ def nullable_str_to_bool(value):
67
+ return str(value).lower() == "true" if value is not None else None
@@ -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
@@ -28,14 +30,16 @@ from tableauserverclient.models.linked_tasks_item import (
28
30
  LinkedTaskStepItem,
29
31
  LinkedTaskFlowRunItem,
30
32
  )
33
+ from tableauserverclient.models.location_item import LocationItem
31
34
  from tableauserverclient.models.metric_item import MetricItem
35
+ from tableauserverclient.models.oidc_item import SiteOIDCConfiguration
32
36
  from tableauserverclient.models.pagination_item import PaginationItem
33
37
  from tableauserverclient.models.permissions_item import PermissionsRule, Permission
34
38
  from tableauserverclient.models.project_item import ProjectItem
35
39
  from tableauserverclient.models.revision_item import RevisionItem
36
40
  from tableauserverclient.models.schedule_item import ScheduleItem
37
41
  from tableauserverclient.models.server_info_item import ServerInfoItem
38
- from tableauserverclient.models.site_item import SiteItem
42
+ from tableauserverclient.models.site_item import SiteItem, SiteAuthConfiguration
39
43
  from tableauserverclient.models.subscription_item import SubscriptionItem
40
44
  from tableauserverclient.models.table_item import TableItem
41
45
  from tableauserverclient.models.tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
@@ -48,8 +52,10 @@ from tableauserverclient.models.view_item import ViewItem
48
52
  from tableauserverclient.models.virtual_connection_item import VirtualConnectionItem
49
53
  from tableauserverclient.models.webhook_item import WebhookItem
50
54
  from tableauserverclient.models.workbook_item import WorkbookItem
55
+ from tableauserverclient.models.extract_item import ExtractItem
51
56
 
52
57
  __all__ = [
58
+ "CollectionItem",
53
59
  "ColumnItem",
54
60
  "ConnectionCredentials",
55
61
  "ConnectionItem",
@@ -75,7 +81,9 @@ __all__ = [
75
81
  "MonthlyInterval",
76
82
  "HourlyInterval",
77
83
  "BackgroundJobItem",
84
+ "LocationItem",
78
85
  "MetricItem",
86
+ "SiteOIDCConfiguration",
79
87
  "PaginationItem",
80
88
  "Permission",
81
89
  "PermissionsRule",
@@ -83,7 +91,9 @@ __all__ = [
83
91
  "RevisionItem",
84
92
  "ScheduleItem",
85
93
  "ServerInfoItem",
94
+ "SiteAuthConfiguration",
86
95
  "SiteItem",
96
+ "SiteOIDCConfiguration",
87
97
  "SubscriptionItem",
88
98
  "TableItem",
89
99
  "TableauAuth",
@@ -103,4 +113,8 @@ __all__ = [
103
113
  "LinkedTaskItem",
104
114
  "LinkedTaskStepItem",
105
115
  "LinkedTaskFlowRunItem",
116
+ "ExtractItem",
117
+ "ExtensionsServer",
118
+ "ExtensionsSiteSettings",
119
+ "SafeExtension",
106
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