tableauserverclient 0.37__tar.gz → 0.38__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 (425) hide show
  1. {tableauserverclient-0.37 → tableauserverclient-0.38}/PKG-INFO +1 -1
  2. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/extracts.py +0 -1
  3. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/__init__.py +4 -0
  4. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/bin/_version.py +3 -3
  5. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/helpers/strings.py +25 -1
  6. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/__init__.py +6 -1
  7. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/datasource_item.py +110 -2
  8. tableauserverclient-0.38/tableauserverclient/models/extract_item.py +82 -0
  9. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/flow_item.py +2 -2
  10. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/group_item.py +11 -0
  11. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/interval_item.py +40 -0
  12. tableauserverclient-0.38/tableauserverclient/models/location_item.py +53 -0
  13. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/project_item.py +138 -27
  14. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/schedule_item.py +57 -0
  15. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/site_item.py +28 -0
  16. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/table_item.py +7 -3
  17. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/tableau_types.py +13 -1
  18. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/user_item.py +101 -1
  19. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/view_item.py +79 -5
  20. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/workbook_item.py +151 -1
  21. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/databases_endpoint.py +101 -18
  22. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/datasources_endpoint.py +3 -3
  23. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/dqw_endpoint.py +16 -6
  24. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/endpoint.py +39 -0
  25. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/schedules_endpoint.py +132 -2
  26. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/sites_endpoint.py +18 -1
  27. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/tables_endpoint.py +140 -17
  28. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/users_endpoint.py +22 -5
  29. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/query.py +36 -0
  30. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/request_factory.py +5 -0
  31. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/request_options.py +128 -2
  32. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/server.py +42 -0
  33. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient.egg-info/PKG-INFO +1 -1
  34. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient.egg-info/SOURCES.txt +11 -0
  35. tableauserverclient-0.38/test/assets/datasource_get_all_fields.xml +10 -0
  36. tableauserverclient-0.38/test/assets/group_get_all_fields.xml +14 -0
  37. tableauserverclient-0.38/test/assets/project_get_all_fields.xml +9 -0
  38. tableauserverclient-0.38/test/assets/schedule_get_extract_refresh_tasks.xml +15 -0
  39. tableauserverclient-0.38/test/assets/site_auth_configurations.xml +18 -0
  40. tableauserverclient-0.38/test/assets/user_get_all_fields.xml +11 -0
  41. tableauserverclient-0.38/test/assets/view_get_all_fields.xml +35 -0
  42. tableauserverclient-0.38/test/assets/workbook_get_all_fields.xml +46 -0
  43. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/request_factory/test_task_requests.py +0 -1
  44. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_datasource.py +38 -1
  45. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_group.py +23 -0
  46. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_project.py +26 -0
  47. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_request_option.py +11 -1
  48. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_schedule.py +18 -0
  49. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_site.py +26 -0
  50. tableauserverclient-0.38/test/test_ssl_config.py +77 -0
  51. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_user.py +88 -1
  52. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_view.py +115 -1
  53. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_workbook.py +105 -1
  54. {tableauserverclient-0.37 → tableauserverclient-0.38}/CHANGELOG.md +0 -0
  55. {tableauserverclient-0.37 → tableauserverclient-0.38}/CONTRIBUTORS.md +0 -0
  56. {tableauserverclient-0.37 → tableauserverclient-0.38}/LICENSE +0 -0
  57. {tableauserverclient-0.37 → tableauserverclient-0.38}/LICENSE.versioneer +0 -0
  58. {tableauserverclient-0.37 → tableauserverclient-0.38}/MANIFEST.in +0 -0
  59. {tableauserverclient-0.37 → tableauserverclient-0.38}/README.md +0 -0
  60. {tableauserverclient-0.37 → tableauserverclient-0.38}/contributing.md +0 -0
  61. {tableauserverclient-0.37 → tableauserverclient-0.38}/docs/README.md +0 -0
  62. {tableauserverclient-0.37 → tableauserverclient-0.38}/pyproject.toml +0 -0
  63. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/add_default_permission.py +0 -0
  64. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/create_extract_task.py +0 -0
  65. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/create_group.py +0 -0
  66. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/create_project.py +0 -0
  67. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/create_schedules.py +0 -0
  68. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/explore_datasource.py +0 -0
  69. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/explore_favorites.py +0 -0
  70. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/explore_site.py +0 -0
  71. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/explore_webhooks.py +0 -0
  72. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/explore_workbook.py +0 -0
  73. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/export.py +0 -0
  74. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/filter_sort_groups.py +0 -0
  75. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/filter_sort_projects.py +0 -0
  76. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/getting_started/1_hello_server.py +0 -0
  77. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/getting_started/2_hello_site.py +0 -0
  78. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/getting_started/3_hello_universe.py +0 -0
  79. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/initialize_server.py +0 -0
  80. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/kill_all_jobs.py +0 -0
  81. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/list.py +0 -0
  82. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/login.py +0 -0
  83. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/metadata_query.py +0 -0
  84. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/move_workbook_projects.py +0 -0
  85. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/move_workbook_sites.py +0 -0
  86. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/name.txt +0 -0
  87. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/pagination_sample.py +0 -0
  88. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/publish_datasource.py +0 -0
  89. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/publish_workbook.py +0 -0
  90. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/query_permissions.py +0 -0
  91. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/refresh.py +0 -0
  92. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/refresh_tasks.py +0 -0
  93. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/set_refresh_schedule.py +0 -0
  94. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/smoke_test.py +0 -0
  95. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/update_connection.py +0 -0
  96. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/update_datasource_data.py +0 -0
  97. {tableauserverclient-0.37 → tableauserverclient-0.38}/samples/update_workbook_data_freshness_policy.py +0 -0
  98. {tableauserverclient-0.37 → tableauserverclient-0.38}/setup.cfg +0 -0
  99. {tableauserverclient-0.37 → tableauserverclient-0.38}/setup.py +0 -0
  100. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/config.py +0 -0
  101. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/datetime_helpers.py +0 -0
  102. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/exponential_backoff.py +0 -0
  103. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/filesys_helpers.py +0 -0
  104. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/helpers/__init__.py +0 -0
  105. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/helpers/headers.py +0 -0
  106. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/helpers/logging.py +0 -0
  107. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/column_item.py +0 -0
  108. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/connection_credentials.py +0 -0
  109. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/connection_item.py +0 -0
  110. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/custom_view_item.py +0 -0
  111. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/data_acceleration_report_item.py +0 -0
  112. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/data_alert_item.py +0 -0
  113. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/data_freshness_policy_item.py +0 -0
  114. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/database_item.py +0 -0
  115. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/dqw_item.py +0 -0
  116. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/exceptions.py +0 -0
  117. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/favorites_item.py +0 -0
  118. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/fileupload_item.py +0 -0
  119. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/flow_run_item.py +0 -0
  120. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/groupset_item.py +0 -0
  121. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/job_item.py +0 -0
  122. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/linked_tasks_item.py +0 -0
  123. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/metric_item.py +0 -0
  124. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/pagination_item.py +0 -0
  125. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/permissions_item.py +0 -0
  126. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/property_decorators.py +0 -0
  127. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/reference_item.py +0 -0
  128. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/revision_item.py +0 -0
  129. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/server_info_item.py +0 -0
  130. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/subscription_item.py +0 -0
  131. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/tableau_auth.py +0 -0
  132. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/tag_item.py +0 -0
  133. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/target.py +0 -0
  134. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/task_item.py +0 -0
  135. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/virtual_connection_item.py +0 -0
  136. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/models/webhook_item.py +0 -0
  137. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/namespace.py +0 -0
  138. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/py.typed +0 -0
  139. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/__init__.py +0 -0
  140. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/__init__.py +0 -0
  141. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/auth_endpoint.py +0 -0
  142. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/custom_views_endpoint.py +0 -0
  143. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/data_acceleration_report_endpoint.py +0 -0
  144. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/data_alert_endpoint.py +0 -0
  145. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/default_permissions_endpoint.py +0 -0
  146. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/exceptions.py +0 -0
  147. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/favorites_endpoint.py +0 -0
  148. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/fileuploads_endpoint.py +0 -0
  149. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/flow_runs_endpoint.py +0 -0
  150. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/flow_task_endpoint.py +0 -0
  151. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/flows_endpoint.py +0 -0
  152. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/groups_endpoint.py +0 -0
  153. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/groupsets_endpoint.py +0 -0
  154. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/jobs_endpoint.py +0 -0
  155. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/linked_tasks_endpoint.py +0 -0
  156. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/metadata_endpoint.py +0 -0
  157. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/metrics_endpoint.py +0 -0
  158. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/permissions_endpoint.py +0 -0
  159. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/projects_endpoint.py +0 -0
  160. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/resource_tagger.py +0 -0
  161. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/server_info_endpoint.py +0 -0
  162. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/subscriptions_endpoint.py +0 -0
  163. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/tasks_endpoint.py +0 -0
  164. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/views_endpoint.py +0 -0
  165. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/virtual_connections_endpoint.py +0 -0
  166. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/webhooks_endpoint.py +0 -0
  167. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/endpoint/workbooks_endpoint.py +0 -0
  168. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/exceptions.py +0 -0
  169. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/filter.py +0 -0
  170. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/pager.py +0 -0
  171. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient/server/sort.py +0 -0
  172. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient.egg-info/dependency_links.txt +0 -0
  173. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient.egg-info/requires.txt +0 -0
  174. {tableauserverclient-0.37 → tableauserverclient-0.38}/tableauserverclient.egg-info/top_level.txt +0 -0
  175. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/__init__.py +0 -0
  176. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/_utils.py +0 -0
  177. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/Data/Tableau Samples/World Indicators.tde +0 -0
  178. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/Data/user_details.csv +0 -0
  179. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/Data/usernames.csv +0 -0
  180. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/RESTAPISample Image.png +0 -0
  181. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/Sample View Image.png +0 -0
  182. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/World Indicators.hyper +0 -0
  183. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/auth_sign_in.xml +0 -0
  184. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/auth_sign_in_error.xml +0 -0
  185. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/auth_sign_in_impersonate.xml +0 -0
  186. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/custom_view_download.json +0 -0
  187. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/custom_view_get.xml +0 -0
  188. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/custom_view_get_id.xml +0 -0
  189. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/custom_view_update.xml +0 -0
  190. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/data_acceleration_report.xml +0 -0
  191. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/data_alerts_add_user.xml +0 -0
  192. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/data_alerts_get.xml +0 -0
  193. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/data_alerts_get_by_id.xml +0 -0
  194. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/data_alerts_update.xml +0 -0
  195. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/database_get.xml +0 -0
  196. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/database_populate_permissions.xml +0 -0
  197. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/database_update.xml +0 -0
  198. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_add_tags.xml +0 -0
  199. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_connection_update.xml +0 -0
  200. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_data_update.xml +0 -0
  201. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_get.xml +0 -0
  202. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_get_by_id.xml +0 -0
  203. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_get_empty.xml +0 -0
  204. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_populate_connections.xml +0 -0
  205. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_populate_permissions.xml +0 -0
  206. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_publish.xml +0 -0
  207. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_publish_async.xml +0 -0
  208. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_refresh.xml +0 -0
  209. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_revision.xml +0 -0
  210. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/datasource_update.xml +0 -0
  211. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/dqw_by_content_type.xml +0 -0
  212. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/favorites_add_datasource.xml +0 -0
  213. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/favorites_add_project.xml +0 -0
  214. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/favorites_add_view.xml +0 -0
  215. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/favorites_add_workbook.xml +0 -0
  216. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/favorites_get.xml +0 -0
  217. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/fileupload_append.xml +0 -0
  218. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/fileupload_initialize.xml +0 -0
  219. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_get.xml +0 -0
  220. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_get_by_id.xml +0 -0
  221. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_populate_connections.xml +0 -0
  222. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_populate_permissions.xml +0 -0
  223. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_publish.xml +0 -0
  224. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_refresh.xml +0 -0
  225. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_runs_get.xml +0 -0
  226. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_runs_get_by_id.xml +0 -0
  227. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_runs_get_by_id_failed.xml +0 -0
  228. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_runs_get_by_id_inprogress.xml +0 -0
  229. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/flow_update.xml +0 -0
  230. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_add_user.xml +0 -0
  231. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_add_users.xml +0 -0
  232. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_create.xml +0 -0
  233. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_create_ad.xml +0 -0
  234. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_create_async.xml +0 -0
  235. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_get.xml +0 -0
  236. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_populate_users.xml +0 -0
  237. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_populate_users_empty.xml +0 -0
  238. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_update.xml +0 -0
  239. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_update_async.xml +0 -0
  240. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/group_users_added.xml +0 -0
  241. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/groupsets_create.xml +0 -0
  242. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/groupsets_get.xml +0 -0
  243. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/groupsets_get_by_id.xml +0 -0
  244. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/groupsets_update.xml +0 -0
  245. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/job_get.xml +0 -0
  246. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/job_get_by_id.xml +0 -0
  247. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/job_get_by_id_completed.xml +0 -0
  248. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/job_get_by_id_failed.xml +0 -0
  249. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/job_get_by_id_failed_workbook.xml +0 -0
  250. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/job_get_by_id_inprogress.xml +0 -0
  251. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/linked_tasks_get.xml +0 -0
  252. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/linked_tasks_run_now.xml +0 -0
  253. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metadata_paged_1.json +0 -0
  254. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metadata_paged_2.json +0 -0
  255. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metadata_paged_3.json +0 -0
  256. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metadata_query_error.json +0 -0
  257. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metadata_query_expected_dict.dict +0 -0
  258. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metadata_query_success.json +0 -0
  259. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metrics_get.xml +0 -0
  260. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metrics_get_by_id.xml +0 -0
  261. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/metrics_update.xml +0 -0
  262. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/odata_connection.xml +0 -0
  263. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/populate_csv.csv +0 -0
  264. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/populate_pdf.pdf +0 -0
  265. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_content_permission.xml +0 -0
  266. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_create.xml +0 -0
  267. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_get.xml +0 -0
  268. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_populate_permissions.xml +0 -0
  269. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_populate_virtualconnection_default_permissions.xml +0 -0
  270. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_populate_workbook_default_permissions.xml +0 -0
  271. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_update.xml +0 -0
  272. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_update_datasource_default_permissions.xml +0 -0
  273. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/project_update_virtualconnection_default_permissions.xml +0 -0
  274. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/queryset_slicing_page_1.xml +0 -0
  275. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/queryset_slicing_page_2.xml +0 -0
  276. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_filter_equals.xml +0 -0
  277. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_filter_name_in.xml +0 -0
  278. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_filter_tags_in.xml +0 -0
  279. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_page_number.xml +0 -0
  280. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_page_size.xml +0 -0
  281. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_pagination.xml +0 -0
  282. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/request_option_slicing_queryset.xml +0 -0
  283. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_add_datasource.xml +0 -0
  284. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_add_flow.xml +0 -0
  285. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_add_workbook.xml +0 -0
  286. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_add_workbook_with_warnings.xml +0 -0
  287. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_create_daily.xml +0 -0
  288. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_create_hourly.xml +0 -0
  289. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_create_monthly.xml +0 -0
  290. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_create_weekly.xml +0 -0
  291. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get.xml +0 -0
  292. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get_by_id.xml +0 -0
  293. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get_daily_id.xml +0 -0
  294. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get_empty.xml +0 -0
  295. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get_hourly_id.xml +0 -0
  296. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get_monthly_id.xml +0 -0
  297. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_get_monthly_id_2.xml +0 -0
  298. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/schedule_update.xml +0 -0
  299. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/server_info_25.xml +0 -0
  300. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/server_info_404.xml +0 -0
  301. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/server_info_auth_info.xml +0 -0
  302. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/server_info_get.xml +0 -0
  303. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/site_create.xml +0 -0
  304. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/site_get.xml +0 -0
  305. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/site_get_by_id.xml +0 -0
  306. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/site_get_by_name.xml +0 -0
  307. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/site_update.xml +0 -0
  308. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/subscription_create.xml +0 -0
  309. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/subscription_get.xml +0 -0
  310. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/subscription_get_by_id.xml +0 -0
  311. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/table_get.xml +0 -0
  312. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/table_update.xml +0 -0
  313. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_create_extract_task.xml +0 -0
  314. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_create_flow_task.xml +0 -0
  315. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_no_workbook_or_datasource.xml +0 -0
  316. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_run_now_response.xml +0 -0
  317. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_with_dataacceleration_task.xml +0 -0
  318. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_with_datasource.xml +0 -0
  319. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_with_interval.xml +0 -0
  320. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_with_workbook.xml +0 -0
  321. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_with_workbook_and_datasource.xml +0 -0
  322. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/tasks_without_schedule.xml +0 -0
  323. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_add.xml +0 -0
  324. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_add_favorite.xml +0 -0
  325. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_get.xml +0 -0
  326. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_get_by_id.xml +0 -0
  327. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_get_empty.xml +0 -0
  328. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_populate_groups.xml +0 -0
  329. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_populate_workbooks.xml +0 -0
  330. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/user_update.xml +0 -0
  331. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_add_tags.xml +0 -0
  332. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_get.xml +0 -0
  333. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_get_id.xml +0 -0
  334. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_get_id_usage.xml +0 -0
  335. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_get_usage.xml +0 -0
  336. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_populate_permissions.xml +0 -0
  337. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/view_update_permissions.xml +0 -0
  338. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connection_add_permissions.xml +0 -0
  339. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connection_database_connection_update.xml +0 -0
  340. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connection_populate_connections.xml +0 -0
  341. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connection_populate_connections2.xml +0 -0
  342. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connections_download.xml +0 -0
  343. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connections_get.xml +0 -0
  344. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connections_publish.xml +0 -0
  345. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connections_revisions.xml +0 -0
  346. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/virtual_connections_update.xml +0 -0
  347. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/webhook_create.xml +0 -0
  348. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/webhook_create_request.xml +0 -0
  349. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/webhook_get.xml +0 -0
  350. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_add_tags.xml +0 -0
  351. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get.xml +0 -0
  352. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_by_id.xml +0 -0
  353. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_by_id_acceleration_status.xml +0 -0
  354. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_by_id_personal.xml +0 -0
  355. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_empty.xml +0 -0
  356. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_invalid_date.xml +0 -0
  357. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_page_1.xml +0 -0
  358. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_page_2.xml +0 -0
  359. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_get_page_3.xml +0 -0
  360. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_populate_connections.xml +0 -0
  361. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_populate_permissions.xml +0 -0
  362. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_populate_views.xml +0 -0
  363. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_populate_views_usage.xml +0 -0
  364. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_publish.xml +0 -0
  365. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_publish_async.xml +0 -0
  366. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_refresh.xml +0 -0
  367. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_revision.xml +0 -0
  368. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update.xml +0 -0
  369. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_acceleration_status.xml +0 -0
  370. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy.xml +0 -0
  371. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy2.xml +0 -0
  372. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy3.xml +0 -0
  373. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy4.xml +0 -0
  374. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy5.xml +0 -0
  375. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_data_freshness_policy6.xml +0 -0
  376. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_permissions.xml +0 -0
  377. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/assets/workbook_update_views_acceleration_status.xml +0 -0
  378. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/http/test_http_requests.py +0 -0
  379. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/models/_models.py +0 -0
  380. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/models/test_repr.py +0 -0
  381. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/request_factory/__init__.py +0 -0
  382. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/request_factory/test_datasource_requests.py +0 -0
  383. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/request_factory/test_workbook_requests.py +0 -0
  384. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_auth.py +0 -0
  385. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_connection_.py +0 -0
  386. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_custom_view.py +0 -0
  387. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_data_acceleration_report.py +0 -0
  388. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_data_freshness_policy.py +0 -0
  389. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_dataalert.py +0 -0
  390. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_database.py +0 -0
  391. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_datasource_model.py +0 -0
  392. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_dqw.py +0 -0
  393. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_endpoint.py +0 -0
  394. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_exponential_backoff.py +0 -0
  395. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_favorites.py +0 -0
  396. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_filesys_helpers.py +0 -0
  397. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_fileuploads.py +0 -0
  398. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_filter.py +0 -0
  399. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_flow.py +0 -0
  400. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_flowruns.py +0 -0
  401. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_flowtask.py +0 -0
  402. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_group_model.py +0 -0
  403. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_groupsets.py +0 -0
  404. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_job.py +0 -0
  405. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_linked_tasks.py +0 -0
  406. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_metadata.py +0 -0
  407. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_metrics.py +0 -0
  408. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_pager.py +0 -0
  409. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_permissionsrule.py +0 -0
  410. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_project_model.py +0 -0
  411. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_regression_tests.py +0 -0
  412. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_requests.py +0 -0
  413. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_server_info.py +0 -0
  414. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_site_model.py +0 -0
  415. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_sort.py +0 -0
  416. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_subscription.py +0 -0
  417. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_table.py +0 -0
  418. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_tableauauth_model.py +0 -0
  419. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_tagging.py +0 -0
  420. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_task.py +0 -0
  421. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_user_model.py +0 -0
  422. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_view_acceleration.py +0 -0
  423. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_virtual_connection.py +0 -0
  424. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_webhook.py +0 -0
  425. {tableauserverclient-0.37 → tableauserverclient-0.38}/test/test_workbook_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tableauserverclient
3
- Version: 0.37
3
+ Version: 0.38
4
4
  Summary: A Python module for working with the Tableau Server REST API.
5
5
  Author-email: Tableau <github@tableau.com>
6
6
  License: The MIT License (MIT)
@@ -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:
@@ -25,6 +25,7 @@ from tableauserverclient.models import (
25
25
  LinkedTaskItem,
26
26
  LinkedTaskStepItem,
27
27
  LinkedTaskFlowRunItem,
28
+ LocationItem,
28
29
  MetricItem,
29
30
  MonthlyInterval,
30
31
  PaginationItem,
@@ -35,6 +36,7 @@ from tableauserverclient.models import (
35
36
  Resource,
36
37
  RevisionItem,
37
38
  ScheduleItem,
39
+ SiteAuthConfiguration,
38
40
  SiteItem,
39
41
  ServerInfoItem,
40
42
  SubscriptionItem,
@@ -101,6 +103,7 @@ __all__ = [
101
103
  "LinkedTaskFlowRunItem",
102
104
  "LinkedTaskItem",
103
105
  "LinkedTaskStepItem",
106
+ "LocationItem",
104
107
  "MetricItem",
105
108
  "MissingRequiredFieldError",
106
109
  "MonthlyInterval",
@@ -121,6 +124,7 @@ __all__ = [
121
124
  "ServerInfoItem",
122
125
  "ServerResponseError",
123
126
  "SiteItem",
127
+ "SiteAuthConfiguration",
124
128
  "Sort",
125
129
  "SubscriptionItem",
126
130
  "TableauAuth",
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-03-24T09:59:27-0700",
11
+ "date": "2025-05-15T14:21:50-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "bf857041ed16dccf9c2aa494dbd0e6a6e6a62d66",
15
- "version": "0.37"
14
+ "full-revisionid": "cda018b684c98200f3f9de11e379ba2ca3b1b3fe",
15
+ "version": "0.38"
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
@@ -28,6 +28,7 @@ from tableauserverclient.models.linked_tasks_item import (
28
28
  LinkedTaskStepItem,
29
29
  LinkedTaskFlowRunItem,
30
30
  )
31
+ from tableauserverclient.models.location_item import LocationItem
31
32
  from tableauserverclient.models.metric_item import MetricItem
32
33
  from tableauserverclient.models.pagination_item import PaginationItem
33
34
  from tableauserverclient.models.permissions_item import PermissionsRule, Permission
@@ -35,7 +36,7 @@ from tableauserverclient.models.project_item import ProjectItem
35
36
  from tableauserverclient.models.revision_item import RevisionItem
36
37
  from tableauserverclient.models.schedule_item import ScheduleItem
37
38
  from tableauserverclient.models.server_info_item import ServerInfoItem
38
- from tableauserverclient.models.site_item import SiteItem
39
+ from tableauserverclient.models.site_item import SiteItem, SiteAuthConfiguration
39
40
  from tableauserverclient.models.subscription_item import SubscriptionItem
40
41
  from tableauserverclient.models.table_item import TableItem
41
42
  from tableauserverclient.models.tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
@@ -48,6 +49,7 @@ from tableauserverclient.models.view_item import ViewItem
48
49
  from tableauserverclient.models.virtual_connection_item import VirtualConnectionItem
49
50
  from tableauserverclient.models.webhook_item import WebhookItem
50
51
  from tableauserverclient.models.workbook_item import WorkbookItem
52
+ from tableauserverclient.models.extract_item import ExtractItem
51
53
 
52
54
  __all__ = [
53
55
  "ColumnItem",
@@ -75,6 +77,7 @@ __all__ = [
75
77
  "MonthlyInterval",
76
78
  "HourlyInterval",
77
79
  "BackgroundJobItem",
80
+ "LocationItem",
78
81
  "MetricItem",
79
82
  "PaginationItem",
80
83
  "Permission",
@@ -83,6 +86,7 @@ __all__ = [
83
86
  "RevisionItem",
84
87
  "ScheduleItem",
85
88
  "ServerInfoItem",
89
+ "SiteAuthConfiguration",
86
90
  "SiteItem",
87
91
  "SubscriptionItem",
88
92
  "TableItem",
@@ -103,4 +107,5 @@ __all__ = [
103
107
  "LinkedTaskItem",
104
108
  "LinkedTaskStepItem",
105
109
  "LinkedTaskFlowRunItem",
110
+ "ExtractItem",
106
111
  ]
@@ -6,9 +6,11 @@ from typing import Optional
6
6
  from defusedxml.ElementTree import fromstring
7
7
 
8
8
  from tableauserverclient.datetime_helpers import parse_datetime
9
+ from tableauserverclient.helpers.strings import nullable_str_to_bool, nullable_str_to_int
9
10
  from tableauserverclient.models.connection_item import ConnectionItem
10
11
  from tableauserverclient.models.exceptions import UnpopulatedPropertyError
11
12
  from tableauserverclient.models.permissions_item import PermissionsRule
13
+ from tableauserverclient.models.project_item import ProjectItem
12
14
  from tableauserverclient.models.property_decorators import (
13
15
  property_not_nullable,
14
16
  property_is_boolean,
@@ -16,6 +18,7 @@ from tableauserverclient.models.property_decorators import (
16
18
  )
17
19
  from tableauserverclient.models.revision_item import RevisionItem
18
20
  from tableauserverclient.models.tag_item import TagItem
21
+ from tableauserverclient.models.user_item import UserItem
19
22
 
20
23
 
21
24
  class DatasourceItem:
@@ -40,6 +43,9 @@ class DatasourceItem:
40
43
  specified, it will default to SiteDefault. See REST API Publish
41
44
  Datasource for more information about ask_data_enablement.
42
45
 
46
+ connected_workbooks_count : Optional[int]
47
+ The number of workbooks connected to the datasource.
48
+
43
49
  connections : list[ConnectionItem]
44
50
  The list of data connections (ConnectionItem) for the specified data
45
51
  source. You must first call the populate_connections method to access
@@ -67,6 +73,12 @@ class DatasourceItem:
67
73
  A Boolean value to determine if a datasource should be encrypted or not.
68
74
  See Extract and Encryption Methods for more information.
69
75
 
76
+ favorites_total : Optional[int]
77
+ The number of users who have marked the data source as a favorite.
78
+
79
+ has_alert : Optional[bool]
80
+ A Boolean value that indicates whether the data source has an alert.
81
+
70
82
  has_extracts : Optional[bool]
71
83
  A Boolean value that indicates whether the datasource has extracts.
72
84
 
@@ -75,13 +87,22 @@ class DatasourceItem:
75
87
  specific data source or to delete a data source with the get_by_id and
76
88
  delete methods.
77
89
 
90
+ is_published : Optional[bool]
91
+ A Boolean value that indicates whether the data source is published.
92
+
78
93
  name : Optional[str]
79
94
  The name of the data source. If not specified, the name of the published
80
95
  data source file is used.
81
96
 
97
+ owner: Optional[UserItem]
98
+ The owner of the data source.
99
+
82
100
  owner_id : Optional[str]
83
101
  The identifier of the owner of the data source.
84
102
 
103
+ project : Optional[ProjectItem]
104
+ The project that the data source belongs to.
105
+
85
106
  project_id : Optional[str]
86
107
  The identifier of the project associated with the data source. You must
87
108
  provide this identifier when you create an instance of a DatasourceItem.
@@ -89,6 +110,9 @@ class DatasourceItem:
89
110
  project_name : Optional[str]
90
111
  The name of the project associated with the data source.
91
112
 
113
+ server_name : Optional[str]
114
+ The name of the server where the data source is published.
115
+
92
116
  tags : Optional[set[str]]
93
117
  The tags (list of strings) that have been added to the data source.
94
118
 
@@ -143,6 +167,13 @@ class DatasourceItem:
143
167
  self.owner_id: Optional[str] = None
144
168
  self.project_id: Optional[str] = project_id
145
169
  self.tags: set[str] = set()
170
+ self._connected_workbooks_count: Optional[int] = None
171
+ self._favorites_total: Optional[int] = None
172
+ self._has_alert: Optional[bool] = None
173
+ self._is_published: Optional[bool] = None
174
+ self._server_name: Optional[str] = None
175
+ self._project: Optional[ProjectItem] = None
176
+ self._owner: Optional[UserItem] = None
146
177
 
147
178
  self._permissions = None
148
179
  self._data_quality_warnings = None
@@ -274,14 +305,42 @@ class DatasourceItem:
274
305
  def size(self) -> Optional[int]:
275
306
  return self._size
276
307
 
308
+ @property
309
+ def connected_workbooks_count(self) -> Optional[int]:
310
+ return self._connected_workbooks_count
311
+
312
+ @property
313
+ def favorites_total(self) -> Optional[int]:
314
+ return self._favorites_total
315
+
316
+ @property
317
+ def has_alert(self) -> Optional[bool]:
318
+ return self._has_alert
319
+
320
+ @property
321
+ def is_published(self) -> Optional[bool]:
322
+ return self._is_published
323
+
324
+ @property
325
+ def server_name(self) -> Optional[str]:
326
+ return self._server_name
327
+
328
+ @property
329
+ def project(self) -> Optional[ProjectItem]:
330
+ return self._project
331
+
332
+ @property
333
+ def owner(self) -> Optional[UserItem]:
334
+ return self._owner
335
+
277
336
  def _set_connections(self, connections) -> None:
278
337
  self._connections = connections
279
338
 
280
339
  def _set_permissions(self, permissions):
281
340
  self._permissions = permissions
282
341
 
283
- def _set_data_quality_warnings(self, dqws):
284
- self._data_quality_warnings = dqws
342
+ def _set_data_quality_warnings(self, dqw):
343
+ self._data_quality_warnings = dqw
285
344
 
286
345
  def _set_revisions(self, revisions):
287
346
  self._revisions = revisions
@@ -310,6 +369,13 @@ class DatasourceItem:
310
369
  use_remote_query_agent,
311
370
  webpage_url,
312
371
  size,
372
+ connected_workbooks_count,
373
+ favorites_total,
374
+ has_alert,
375
+ is_published,
376
+ server_name,
377
+ project,
378
+ owner,
313
379
  ) = self._parse_element(datasource_xml, ns)
314
380
  self._set_values(
315
381
  ask_data_enablement,
@@ -331,6 +397,13 @@ class DatasourceItem:
331
397
  use_remote_query_agent,
332
398
  webpage_url,
333
399
  size,
400
+ connected_workbooks_count,
401
+ favorites_total,
402
+ has_alert,
403
+ is_published,
404
+ server_name,
405
+ project,
406
+ owner,
334
407
  )
335
408
  return self
336
409
 
@@ -355,6 +428,13 @@ class DatasourceItem:
355
428
  use_remote_query_agent,
356
429
  webpage_url,
357
430
  size,
431
+ connected_workbooks_count,
432
+ favorites_total,
433
+ has_alert,
434
+ is_published,
435
+ server_name,
436
+ project,
437
+ owner,
358
438
  ):
359
439
  if ask_data_enablement is not None:
360
440
  self._ask_data_enablement = ask_data_enablement
@@ -394,6 +474,20 @@ class DatasourceItem:
394
474
  self._webpage_url = webpage_url
395
475
  if size is not None:
396
476
  self._size = int(size)
477
+ if connected_workbooks_count is not None:
478
+ self._connected_workbooks_count = connected_workbooks_count
479
+ if favorites_total is not None:
480
+ self._favorites_total = favorites_total
481
+ if has_alert is not None:
482
+ self._has_alert = has_alert
483
+ if is_published is not None:
484
+ self._is_published = is_published
485
+ if server_name is not None:
486
+ self._server_name = server_name
487
+ if project is not None:
488
+ self._project = project
489
+ if owner is not None:
490
+ self._owner = owner
397
491
 
398
492
  @classmethod
399
493
  def from_response(cls, resp: str, ns: dict) -> list["DatasourceItem"]:
@@ -428,6 +522,11 @@ class DatasourceItem:
428
522
  use_remote_query_agent = datasource_xml.get("useRemoteQueryAgent", None)
429
523
  webpage_url = datasource_xml.get("webpageUrl", None)
430
524
  size = datasource_xml.get("size", None)
525
+ connected_workbooks_count = nullable_str_to_int(datasource_xml.get("connectedWorkbooksCount", None))
526
+ favorites_total = nullable_str_to_int(datasource_xml.get("favoritesTotal", None))
527
+ has_alert = nullable_str_to_bool(datasource_xml.get("hasAlert", None))
528
+ is_published = nullable_str_to_bool(datasource_xml.get("isPublished", None))
529
+ server_name = datasource_xml.get("serverName", None)
431
530
 
432
531
  tags = None
433
532
  tags_elem = datasource_xml.find(".//t:tags", namespaces=ns)
@@ -438,12 +537,14 @@ class DatasourceItem:
438
537
  project_name = None
439
538
  project_elem = datasource_xml.find(".//t:project", namespaces=ns)
440
539
  if project_elem is not None:
540
+ project = ProjectItem.from_xml(project_elem, ns)
441
541
  project_id = project_elem.get("id", None)
442
542
  project_name = project_elem.get("name", None)
443
543
 
444
544
  owner_id = None
445
545
  owner_elem = datasource_xml.find(".//t:owner", namespaces=ns)
446
546
  if owner_elem is not None:
547
+ owner = UserItem.from_xml(owner_elem, ns)
447
548
  owner_id = owner_elem.get("id", None)
448
549
 
449
550
  ask_data_enablement = None
@@ -471,4 +572,11 @@ class DatasourceItem:
471
572
  use_remote_query_agent,
472
573
  webpage_url,
473
574
  size,
575
+ connected_workbooks_count,
576
+ favorites_total,
577
+ has_alert,
578
+ is_published,
579
+ server_name,
580
+ project,
581
+ owner,
474
582
  )
@@ -0,0 +1,82 @@
1
+ from typing import Optional, List
2
+ from defusedxml.ElementTree import fromstring
3
+ import xml.etree.ElementTree as ET
4
+
5
+
6
+ class ExtractItem:
7
+ """
8
+ An extract refresh task item.
9
+
10
+ Attributes
11
+ ----------
12
+ id : str
13
+ The ID of the extract refresh task
14
+ priority : int
15
+ The priority of the task
16
+ type : str
17
+ The type of extract refresh (incremental or full)
18
+ workbook_id : str, optional
19
+ The ID of the workbook if this is a workbook extract
20
+ datasource_id : str, optional
21
+ The ID of the datasource if this is a datasource extract
22
+ """
23
+
24
+ def __init__(
25
+ self, priority: int, refresh_type: str, workbook_id: Optional[str] = None, datasource_id: Optional[str] = None
26
+ ):
27
+ self._id: Optional[str] = None
28
+ self._priority = priority
29
+ self._type = refresh_type
30
+ self._workbook_id = workbook_id
31
+ self._datasource_id = datasource_id
32
+
33
+ @property
34
+ def id(self) -> Optional[str]:
35
+ return self._id
36
+
37
+ @property
38
+ def priority(self) -> int:
39
+ return self._priority
40
+
41
+ @property
42
+ def type(self) -> str:
43
+ return self._type
44
+
45
+ @property
46
+ def workbook_id(self) -> Optional[str]:
47
+ return self._workbook_id
48
+
49
+ @property
50
+ def datasource_id(self) -> Optional[str]:
51
+ return self._datasource_id
52
+
53
+ @classmethod
54
+ def from_response(cls, resp: str, ns: dict) -> List["ExtractItem"]:
55
+ """Create ExtractItem objects from XML response."""
56
+ parsed_response = fromstring(resp)
57
+ return cls.from_xml_element(parsed_response, ns)
58
+
59
+ @classmethod
60
+ def from_xml_element(cls, parsed_response: ET.Element, ns: dict) -> List["ExtractItem"]:
61
+ """Create ExtractItem objects from XML element."""
62
+ all_extract_items = []
63
+ all_extract_xml = parsed_response.findall(".//t:extract", namespaces=ns)
64
+
65
+ for extract_xml in all_extract_xml:
66
+ extract_id = extract_xml.get("id", None)
67
+ priority = int(extract_xml.get("priority", 0))
68
+ refresh_type = extract_xml.get("type", "")
69
+
70
+ # Check for workbook or datasource
71
+ workbook_elem = extract_xml.find(".//t:workbook", namespaces=ns)
72
+ datasource_elem = extract_xml.find(".//t:datasource", namespaces=ns)
73
+
74
+ workbook_id = workbook_elem.get("id", None) if workbook_elem is not None else None
75
+ datasource_id = datasource_elem.get("id", None) if datasource_elem is not None else None
76
+
77
+ extract_item = cls(priority, refresh_type, workbook_id, datasource_id)
78
+ extract_item._id = extract_id
79
+
80
+ all_extract_items.append(extract_item)
81
+
82
+ return all_extract_items
@@ -146,8 +146,8 @@ class FlowItem:
146
146
  def _set_permissions(self, permissions):
147
147
  self._permissions = permissions
148
148
 
149
- def _set_data_quality_warnings(self, dqws):
150
- self._data_quality_warnings = dqws
149
+ def _set_data_quality_warnings(self, dqw):
150
+ self._data_quality_warnings = dqw
151
151
 
152
152
  def _parse_common_elements(self, flow_xml, ns):
153
153
  if not isinstance(flow_xml, ET.Element):
@@ -44,6 +44,11 @@ class GroupItem:
44
44
  login to a site. When the mode is onSync, a license is granted for group
45
45
  members each time the domain is synced.
46
46
 
47
+ Attributes
48
+ ----------
49
+ user_count: Optional[int]
50
+ The number of users in the group.
51
+
47
52
  Examples
48
53
  --------
49
54
  >>> # Create a new group item
@@ -65,6 +70,7 @@ class GroupItem:
65
70
  self._users: Optional[Callable[..., "Pager"]] = None
66
71
  self.name: Optional[str] = name
67
72
  self.domain_name: Optional[str] = domain_name
73
+ self._user_count: Optional[int] = None
68
74
 
69
75
  def __repr__(self):
70
76
  return f"{self.__class__.__name__}({self.__dict__!r})"
@@ -118,6 +124,10 @@ class GroupItem:
118
124
  def _set_users(self, users: Callable[..., "Pager"]) -> None:
119
125
  self._users = users
120
126
 
127
+ @property
128
+ def user_count(self) -> Optional[int]:
129
+ return self._user_count
130
+
121
131
  @classmethod
122
132
  def from_response(cls, resp, ns) -> list["GroupItem"]:
123
133
  all_group_items = list()
@@ -127,6 +137,7 @@ class GroupItem:
127
137
  name = group_xml.get("name", None)
128
138
  group_item = cls(name)
129
139
  group_item._id = group_xml.get("id", None)
140
+ group_item._user_count = int(count) if (count := group_xml.get("userCount", None)) else None
130
141
 
131
142
  # Domain name is returned in a domain element for some calls
132
143
  domain_elem = group_xml.find(".//t:domain", namespaces=ns)
@@ -2,6 +2,13 @@ from .property_decorators import property_is_valid_time, property_not_nullable
2
2
 
3
3
 
4
4
  class IntervalItem:
5
+ """
6
+ This class sets the frequency and start time of the scheduled item. This
7
+ class contains the classes for the hourly, daily, weekly, and monthly
8
+ intervals. This class mirrors the options you can set using the REST API and
9
+ the Tableau Server interface.
10
+ """
11
+
5
12
  class Frequency:
6
13
  Hourly = "Hourly"
7
14
  Daily = "Daily"
@@ -26,6 +33,19 @@ class IntervalItem:
26
33
 
27
34
 
28
35
  class HourlyInterval:
36
+ """
37
+ Runs scheduled item hourly. To set the hourly interval, you create an
38
+ instance of the HourlyInterval class and assign the following values:
39
+ start_time, end_time, and interval_value. To set the start_time and
40
+ end_time, assign the time value using this syntax: start_time=time(hour, minute)
41
+ and end_time=time(hour, minute). The hour is specified in 24 hour time.
42
+ The interval_value specifies how often the to run the task within the
43
+ start and end time. The options are expressed in hours. For example,
44
+ interval_value=.25 is every 15 minutes. The values are .25, .5, 1, 2, 4, 6,
45
+ 8, 12. Hourly schedules that run more frequently than every 60 minutes must
46
+ have start and end times that are on the hour.
47
+ """
48
+
29
49
  def __init__(self, start_time, end_time, interval_value):
30
50
  self.start_time = start_time
31
51
  self.end_time = end_time
@@ -109,6 +129,12 @@ class HourlyInterval:
109
129
 
110
130
 
111
131
  class DailyInterval:
132
+ """
133
+ Runs the scheduled item daily. To set the daily interval, you create an
134
+ instance of the DailyInterval and assign the start_time. The start time uses
135
+ the syntax start_time=time(hour, minute).
136
+ """
137
+
112
138
  def __init__(self, start_time, *interval_values):
113
139
  self.start_time = start_time
114
140
  self.interval = interval_values
@@ -177,6 +203,15 @@ class DailyInterval:
177
203
 
178
204
 
179
205
  class WeeklyInterval:
206
+ """
207
+ Runs the scheduled item once a week. To set the weekly interval, you create
208
+ an instance of the WeeklyInterval and assign the start time and multiple
209
+ instances for the interval_value (days of week and start time). The start
210
+ time uses the syntax time(hour, minute). The interval_value is the day of
211
+ the week, expressed as a IntervalItem. For example
212
+ TSC.IntervalItem.Day.Monday for Monday.
213
+ """
214
+
180
215
  def __init__(self, start_time, *interval_values):
181
216
  self.start_time = start_time
182
217
  self.interval = interval_values
@@ -214,6 +249,11 @@ class WeeklyInterval:
214
249
 
215
250
 
216
251
  class MonthlyInterval:
252
+ """
253
+ Runs the scheduled item once a month. To set the monthly interval, you
254
+ create an instance of the MonthlyInterval and assign the start time and day.
255
+ """
256
+
217
257
  def __init__(self, start_time, interval_value):
218
258
  self.start_time = start_time
219
259
 
@@ -0,0 +1,53 @@
1
+ from typing import Optional
2
+ import xml.etree.ElementTree as ET
3
+
4
+
5
+ class LocationItem:
6
+ """
7
+ Details of where an item is located, such as a personal space or project.
8
+
9
+ Attributes
10
+ ----------
11
+ id : str | None
12
+ The ID of the location.
13
+
14
+ type : str | None
15
+ The type of location, such as PersonalSpace or Project.
16
+
17
+ name : str | None
18
+ The name of the location.
19
+ """
20
+
21
+ class Type:
22
+ PersonalSpace = "PersonalSpace"
23
+ Project = "Project"
24
+
25
+ def __init__(self):
26
+ self._id: Optional[str] = None
27
+ self._type: Optional[str] = None
28
+ self._name: Optional[str] = None
29
+
30
+ def __repr__(self):
31
+ return f"{self.__class__.__name__}({self.__dict__!r})"
32
+
33
+ @property
34
+ def id(self) -> Optional[str]:
35
+ return self._id
36
+
37
+ @property
38
+ def type(self) -> Optional[str]:
39
+ return self._type
40
+
41
+ @property
42
+ def name(self) -> Optional[str]:
43
+ return self._name
44
+
45
+ @classmethod
46
+ def from_xml(cls, xml: ET.Element, ns: Optional[dict] = None) -> "LocationItem":
47
+ if ns is None:
48
+ ns = {}
49
+ location = cls()
50
+ location._id = xml.get("id", None)
51
+ location._type = xml.get("type", None)
52
+ location._name = xml.get("name", None)
53
+ return location