gooddata-sdk 1.40.1.dev3__tar.gz → 1.40.1.dev5__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 (145) hide show
  1. {gooddata_sdk-1.40.1.dev3/gooddata_sdk.egg-info → gooddata_sdk-1.40.1.dev5}/PKG-INFO +4 -4
  2. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/README.md +1 -1
  3. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/__init__.py +17 -0
  4. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/export/request.py +30 -1
  5. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/export/service.py +33 -1
  6. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/common/__init__.py +1 -0
  7. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/common/dashboard_slides_template.py +20 -0
  8. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/common/running_section.py +10 -0
  9. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/common/slide_template.py +38 -0
  10. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/common/widget_slides_template.py +12 -0
  11. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/entity_model/export_template.py +34 -0
  12. gooddata_sdk-1.40.1.dev5/gooddata_sdk/catalog/organization/layout/export_template.py +22 -0
  13. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/service.py +119 -0
  14. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/model/execution.py +23 -5
  15. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/service.py +23 -0
  16. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5/gooddata_sdk.egg-info}/PKG-INFO +4 -4
  17. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk.egg-info/SOURCES.txt +7 -0
  18. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk.egg-info/requires.txt +1 -1
  19. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/setup.py +3 -3
  20. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/LICENSE.txt +0 -0
  21. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/MANIFEST.in +0 -0
  22. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/bin/gdc +0 -0
  23. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/_version.py +0 -0
  24. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/__init__.py +0 -0
  25. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/base.py +0 -0
  26. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/catalog_service_base.py +0 -0
  27. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/__init__.py +0 -0
  28. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/__init__.py +0 -0
  29. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/requests/__init__.py +0 -0
  30. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/requests/ldm_request.py +0 -0
  31. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/requests/scan_model_request.py +0 -0
  32. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/requests/scan_sql_request.py +0 -0
  33. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/responses/__init__.py +0 -0
  34. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/responses/scan_sql_response.py +0 -0
  35. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/action_model/sql_column.py +0 -0
  36. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/declarative_model/__init__.py +0 -0
  37. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/declarative_model/data_source.py +0 -0
  38. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/__init__.py +0 -0
  39. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/column.py +0 -0
  40. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/pdm.py +0 -0
  41. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/table.py +0 -0
  42. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/entity_model/__init__.py +0 -0
  43. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/entity_model/content_objects/__init__.py +0 -0
  44. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/entity_model/data_source.py +0 -0
  45. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/service.py +0 -0
  46. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/validation/__init__.py +0 -0
  47. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/data_source/validation/data_source.py +0 -0
  48. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/depends_on.py +0 -0
  49. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/entity.py +0 -0
  50. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/export/__init__.py +0 -0
  51. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/filter_by.py +0 -0
  52. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/identifier.py +0 -0
  53. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/__init__.py +0 -0
  54. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/entity_model/__init__.py +0 -0
  55. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/entity_model/directive.py +0 -0
  56. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/entity_model/identity_provider.py +0 -0
  57. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/entity_model/jwk.py +0 -0
  58. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/entity_model/organization.py +0 -0
  59. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/entity_model/setting.py +0 -0
  60. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/layout/__init__.py +0 -0
  61. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/layout/identity_provider.py +0 -0
  62. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/organization/layout/notification_channel.py +0 -0
  63. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/parameter.py +0 -0
  64. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/__init__.py +0 -0
  65. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/declarative_model/__init__.py +0 -0
  66. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/declarative_model/dashboard_assignees.py +0 -0
  67. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/declarative_model/dashboard_permissions.py +0 -0
  68. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/declarative_model/manage_dashboard_permissions.py +0 -0
  69. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/declarative_model/permission.py +0 -0
  70. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/permission/service.py +0 -0
  71. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/rule.py +0 -0
  72. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/setting.py +0 -0
  73. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/types.py +0 -0
  74. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/__init__.py +0 -0
  75. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/declarative_model/__init__.py +0 -0
  76. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/declarative_model/user.py +0 -0
  77. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/declarative_model/user_and_user_groups.py +0 -0
  78. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/declarative_model/user_group.py +0 -0
  79. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/entity_model/__init__.py +0 -0
  80. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/entity_model/api_token.py +0 -0
  81. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/entity_model/user.py +0 -0
  82. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/entity_model/user_group.py +0 -0
  83. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/management_model/__init__.py +0 -0
  84. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/management_model/management.py +0 -0
  85. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/user/service.py +0 -0
  86. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/validate_by_item.py +0 -0
  87. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/__init__.py +0 -0
  88. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/content_service.py +0 -0
  89. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/__init__.py +0 -0
  90. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/__init__.py +0 -0
  91. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/__init__.py +0 -0
  92. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py +0 -0
  93. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/base.py +0 -0
  94. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/export_definition.py +0 -0
  95. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/automation.py +0 -0
  96. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/__init__.py +0 -0
  97. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/data_filter_references.py +0 -0
  98. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/__init__.py +0 -0
  99. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/dataset.py +0 -0
  100. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/__init__.py +0 -0
  101. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/dataset_extension.py +0 -0
  102. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/__init__.py +0 -0
  103. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/date_dataset.py +0 -0
  104. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/ldm.py +0 -0
  105. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py +0 -0
  106. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/__init__.py +0 -0
  107. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/content_objects/__init__.py +0 -0
  108. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py +0 -0
  109. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/content_objects/metric.py +0 -0
  110. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/content_objects/workspace_setting.py +0 -0
  111. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/filter_view.py +0 -0
  112. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/__init__.py +0 -0
  113. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/graph.py +0 -0
  114. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/user_data_filter.py +0 -0
  115. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/entity_model/workspace.py +0 -0
  116. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/model_container.py +0 -0
  117. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/catalog/workspace/service.py +0 -0
  118. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/__init__.py +0 -0
  119. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/clone.py +0 -0
  120. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/constants.py +0 -0
  121. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/deploy.py +0 -0
  122. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/gdc_core.py +0 -0
  123. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/package.json +0 -0
  124. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/cli/utils.py +0 -0
  125. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/client.py +0 -0
  126. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/__init__.py +0 -0
  127. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/compute_to_sdk_converter.py +0 -0
  128. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/model/__init__.py +0 -0
  129. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/model/attribute.py +0 -0
  130. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/model/base.py +0 -0
  131. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/model/filter.py +0 -0
  132. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/compute/model/metric.py +0 -0
  133. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/config.py +0 -0
  134. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/py.typed +0 -0
  135. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/sdk.py +0 -0
  136. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/support.py +0 -0
  137. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/table.py +0 -0
  138. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/type_converter.py +0 -0
  139. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/utils.py +0 -0
  140. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk/visualization.py +0 -0
  141. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk.egg-info/dependency_links.txt +0 -0
  142. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/gooddata_sdk.egg-info/top_level.txt +0 -0
  143. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/setup.cfg +0 -0
  144. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/tests/test_client.py +0 -0
  145. {gooddata_sdk-1.40.1.dev3 → gooddata_sdk-1.40.1.dev5}/tests/test_type_converter.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gooddata-sdk
3
- Version: 1.40.1.dev3
3
+ Version: 1.40.1.dev5
4
4
  Summary: GoodData Cloud Python SDK
5
5
  Author: GoodData
6
6
  Author-email: support@gooddata.com
7
7
  License: MIT
8
- Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.40.1.dev3
8
+ Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.40.1.dev5
9
9
  Project-URL: Source, https://github.com/gooddata/gooddata-python-sdk
10
10
  Keywords: gooddata,sdk,api,analytics,headless,business,intelligence,headless-bi,cloud,native,semantic,layer,sql,metrics
11
11
  Classifier: Development Status :: 5 - Production/Stable
@@ -23,7 +23,7 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.9.0
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE.txt
26
- Requires-Dist: gooddata-api-client~=1.40.1.dev3
26
+ Requires-Dist: gooddata-api-client~=1.40.1.dev5
27
27
  Requires-Dist: python-dateutil>=2.5.3
28
28
  Requires-Dist: pyyaml>=6.0
29
29
  Requires-Dist: attrs<=24.2.0,>=21.4.0
@@ -59,7 +59,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
59
59
  * Compute Service
60
60
  * Table Service
61
61
 
62
- See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.40.1.dev3) for more details.
62
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.40.1.dev5) for more details.
63
63
 
64
64
  ## Requirements
65
65
 
@@ -13,7 +13,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
13
13
  * Compute Service
14
14
  * Table Service
15
15
 
16
- See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.40.1.dev3) for more details.
16
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.40.1.dev5) for more details.
17
17
 
18
18
  ## Requirements
19
19
 
@@ -66,6 +66,7 @@ from gooddata_sdk.catalog.export.request import (
66
66
  ExportCustomOverride,
67
67
  ExportRequest,
68
68
  ExportSettings,
69
+ SlidesExportRequest,
69
70
  VisualExportRequest,
70
71
  )
71
72
  from gooddata_sdk.catalog.filter_by import CatalogFilterBy
@@ -78,7 +79,20 @@ from gooddata_sdk.catalog.identifier import (
78
79
  CatalogUserIdentifier,
79
80
  CatalogWorkspaceIdentifier,
80
81
  )
82
+ from gooddata_sdk.catalog.organization.common.dashboard_slides_template import CatalogDashboardSlidesTemplate
83
+ from gooddata_sdk.catalog.organization.common.running_section import CatalogRunningSection
84
+ from gooddata_sdk.catalog.organization.common.slide_template import (
85
+ CatalogContentSlideTemplate,
86
+ CatalogCoverSlideTemplate,
87
+ CatalogIntroSlideTemplate,
88
+ CatalogSectionSlideTemplate,
89
+ )
90
+ from gooddata_sdk.catalog.organization.common.widget_slides_template import CatalogWidgetSlidesTemplate
81
91
  from gooddata_sdk.catalog.organization.entity_model.directive import CatalogCspDirective
92
+ from gooddata_sdk.catalog.organization.entity_model.export_template import (
93
+ CatalogExportTemplate,
94
+ CatalogExportTemplateAttributes,
95
+ )
82
96
  from gooddata_sdk.catalog.organization.entity_model.jwk import (
83
97
  CatalogJwk,
84
98
  CatalogJwkAttributes,
@@ -87,6 +101,9 @@ from gooddata_sdk.catalog.organization.entity_model.jwk import (
87
101
  )
88
102
  from gooddata_sdk.catalog.organization.entity_model.organization import CatalogOrganization
89
103
  from gooddata_sdk.catalog.organization.entity_model.setting import CatalogOrganizationSetting
104
+ from gooddata_sdk.catalog.organization.layout.export_template import (
105
+ CatalogDeclarativeExportTemplate,
106
+ )
90
107
  from gooddata_sdk.catalog.organization.layout.notification_channel import (
91
108
  CatalogDeclarativeNotificationChannel,
92
109
  CatalogWebhook,
@@ -1,11 +1,12 @@
1
1
  # (C) 2023 GoodData Corporation
2
- from typing import Optional
2
+ from typing import Literal, Optional
3
3
 
4
4
  from attrs import define
5
5
  from gooddata_api_client.model.custom_label import CustomLabel as ApiCustomLabel
6
6
  from gooddata_api_client.model.custom_metric import CustomMetric as ApiCustomMetric
7
7
  from gooddata_api_client.model.custom_override import CustomOverride as ApiCustomOverride
8
8
  from gooddata_api_client.model.settings import Settings as ApiSettings
9
+ from gooddata_api_client.model.slides_export_request import SlidesExportRequest as SlidesExportRequestApi
9
10
  from gooddata_api_client.model.tabular_export_request import TabularExportRequest
10
11
  from gooddata_api_client.model.visual_export_request import VisualExportRequest as VisualExportRequestApi
11
12
 
@@ -121,3 +122,31 @@ class VisualExportRequest(Base):
121
122
  type[TabularExportRequest]: VisualExportRequest class
122
123
  """
123
124
  return VisualExportRequestApi
125
+
126
+
127
+ @define(auto_attribs=True, kw_only=True)
128
+ class SlidesExportRequest(Base):
129
+ """
130
+ SlidesExportRequest class is used to create a slide export request in the desired format, filename, and settings.
131
+ Attributes:
132
+ dashboard_id (str): Dashboard identifier.
133
+ file_name (str): File name to be used for retrieving the PDF document.
134
+ metadata (Optional[Dict[str, bool]]): Optional dictionary containing settings for the export request.
135
+ """
136
+
137
+ file_name: str
138
+ format: Literal["PDF", "PPTX"]
139
+ dashboard_id: Optional[str] = None
140
+ widget_ids: Optional[list[str]] = None
141
+ visualization_ids: Optional[list[str]] = None
142
+ metadata: Optional[dict] = None
143
+ templateId: Optional[str] = None
144
+
145
+ @staticmethod
146
+ def client_class() -> type[SlidesExportRequestApi]:
147
+ """
148
+ Returns the appropriate client class for the visual export request.
149
+ Returns:
150
+ type[SlidesExportRequestApi]: SlidesExportRequestApi class
151
+ """
152
+ return SlidesExportRequestApi
@@ -4,6 +4,7 @@ from pathlib import Path
4
4
  from typing import Any, Callable, Optional, Union
5
5
 
6
6
  from gooddata_api_client.exceptions import NotFoundException
7
+ from gooddata_api_client.model.slides_export_request import SlidesExportRequest as SlidesExportRequestApi
7
8
  from gooddata_api_client.model.tabular_export_request import TabularExportRequest
8
9
  from gooddata_api_client.model.visual_export_request import VisualExportRequest
9
10
 
@@ -11,6 +12,7 @@ from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
11
12
  from gooddata_sdk.catalog.export.request import (
12
13
  ExportRequest,
13
14
  ExportSettings,
15
+ SlidesExportRequest,
14
16
  )
15
17
  from gooddata_sdk.client import GoodDataApiClient
16
18
  from gooddata_sdk.visualization import VisualizationService
@@ -140,7 +142,7 @@ class ExportService(CatalogServiceBase):
140
142
  def _export_common(
141
143
  self,
142
144
  workspace_id: str,
143
- request: Union[VisualExportRequest, TabularExportRequest],
145
+ request: Union[VisualExportRequest, TabularExportRequest, SlidesExportRequestApi],
144
146
  file_path: Path,
145
147
  create_func: Callable,
146
148
  get_func: Callable,
@@ -314,3 +316,33 @@ class ExportService(CatalogServiceBase):
314
316
  retry=retry,
315
317
  max_retry=max_retry,
316
318
  )
319
+
320
+ def export_slides(
321
+ self,
322
+ workspace_id: str,
323
+ request: SlidesExportRequest,
324
+ store_path: Union[str, Path] = Path.cwd(),
325
+ timeout: float = 60.0,
326
+ retry: float = 0.2,
327
+ max_retry: float = 5.0,
328
+ ) -> None:
329
+ """
330
+ Exports slides based on slide export request.
331
+
332
+ Args:
333
+ workspace_id (str): The workspace id from which the visualization is to be exported.
334
+ request (SlidesExportRequest): The request object containing the export parameters.
335
+ store_path (Union[str, Path], optional): The path to store the exported file. Default to Path.cwd().
336
+ timeout (float, optional): The maximum time to wait for the export to finish. Defaults to 60.0.
337
+ retry (float, optional):
338
+ Initial wait time (in seconds) before retrying to get the exported content. Defaults to 0.2.
339
+ max_retry (float, optional): The maximum retry wait time (in seconds). Defaults to 5.0.
340
+
341
+ Returns:
342
+ None
343
+ """
344
+ store_path = store_path if isinstance(store_path, Path) else Path(store_path)
345
+ file_path = store_path / f"{request.file_name}.{request.format.lower()}"
346
+ create_func = self._actions_api.create_slides_export
347
+ get_func = self._actions_api.get_slides_export
348
+ self._export_common(workspace_id, request.to_api(), file_path, create_func, get_func, timeout, retry, max_retry)
@@ -0,0 +1 @@
1
+ # (C) 2025 GoodData Corporation
@@ -0,0 +1,20 @@
1
+ # (C) 2025 GoodData Corporation
2
+ from typing import Literal, Optional
3
+
4
+ from attrs import define
5
+
6
+ from gooddata_sdk.catalog.organization.common.slide_template import (
7
+ CatalogContentSlideTemplate,
8
+ CatalogCoverSlideTemplate,
9
+ CatalogIntroSlideTemplate,
10
+ CatalogSectionSlideTemplate,
11
+ )
12
+
13
+
14
+ @define
15
+ class CatalogDashboardSlidesTemplate:
16
+ applied_on: list[Literal["PDF", "PPTX"]]
17
+ cover_slide: Optional[CatalogCoverSlideTemplate] = None
18
+ intro_slide: Optional[CatalogIntroSlideTemplate] = None
19
+ section_slide: Optional[CatalogSectionSlideTemplate] = None
20
+ content_slide: Optional[CatalogContentSlideTemplate] = None
@@ -0,0 +1,10 @@
1
+ # (C) 2025 GoodData Corporation
2
+ from typing import Optional
3
+
4
+ from attrs import define
5
+
6
+
7
+ @define
8
+ class CatalogRunningSection:
9
+ left: Optional[str] = None
10
+ right: Optional[str] = None
@@ -0,0 +1,38 @@
1
+ # (C) 2025 GoodData Corporation
2
+ from typing import Optional
3
+
4
+ from attrs import define
5
+
6
+ from gooddata_sdk.catalog.base import Base
7
+ from gooddata_sdk.catalog.organization.common.running_section import CatalogRunningSection
8
+
9
+
10
+ @define
11
+ class CatalogCoverSlideTemplate(Base):
12
+ background_image: bool
13
+ description_field: Optional[str] = None
14
+ header: Optional[CatalogRunningSection] = None
15
+ footer: Optional[CatalogRunningSection] = None
16
+
17
+
18
+ @define
19
+ class CatalogIntroSlideTemplate(Base):
20
+ background_image: bool
21
+ title_field: Optional[str] = None
22
+ description_field: Optional[str] = None
23
+ header: Optional[CatalogRunningSection] = None
24
+ footer: Optional[CatalogRunningSection] = None
25
+
26
+
27
+ @define
28
+ class CatalogSectionSlideTemplate(Base):
29
+ background_image: bool
30
+ header: Optional[CatalogRunningSection] = None
31
+ footer: Optional[CatalogRunningSection] = None
32
+
33
+
34
+ @define
35
+ class CatalogContentSlideTemplate(Base):
36
+ description_field: Optional[str] = None
37
+ header: Optional[CatalogRunningSection] = None
38
+ footer: Optional[CatalogRunningSection] = None
@@ -0,0 +1,12 @@
1
+ # (C) 2025 GoodData Corporation
2
+ from typing import Literal, Optional
3
+
4
+ from attrs import define
5
+
6
+ from gooddata_sdk.catalog.organization.common.slide_template import CatalogContentSlideTemplate
7
+
8
+
9
+ @define
10
+ class CatalogWidgetSlidesTemplate:
11
+ applied_on: list[Literal["PDF", "PPTX"]]
12
+ content_slide: Optional[CatalogContentSlideTemplate] = None
@@ -0,0 +1,34 @@
1
+ # (C) 2025 GoodData Corporation
2
+ from __future__ import annotations
3
+
4
+ import builtins
5
+ from typing import Optional
6
+
7
+ from attrs import define
8
+ from gooddata_api_client.model.json_api_export_template_in_attributes import JsonApiExportTemplateInAttributes
9
+ from gooddata_api_client.model.json_api_export_template_post_optional_id import JsonApiExportTemplatePostOptionalId
10
+
11
+ from gooddata_sdk.catalog.base import Base
12
+ from gooddata_sdk.catalog.organization.common.dashboard_slides_template import CatalogDashboardSlidesTemplate
13
+ from gooddata_sdk.catalog.organization.common.widget_slides_template import CatalogWidgetSlidesTemplate
14
+
15
+
16
+ @define(auto_attribs=True, kw_only=True)
17
+ class CatalogExportTemplate(Base):
18
+ id: str
19
+ attributes: Optional[CatalogExportTemplateAttributes] = None
20
+
21
+ @staticmethod
22
+ def client_class() -> builtins.type[JsonApiExportTemplatePostOptionalId]:
23
+ return JsonApiExportTemplatePostOptionalId
24
+
25
+
26
+ @define(auto_attribs=True, kw_only=True)
27
+ class CatalogExportTemplateAttributes(Base):
28
+ name: str
29
+ dashboard_slides_template: Optional[CatalogDashboardSlidesTemplate] = None
30
+ widget_slides_template: Optional[CatalogWidgetSlidesTemplate] = None
31
+
32
+ @staticmethod
33
+ def client_class() -> builtins.type[JsonApiExportTemplateInAttributes]:
34
+ return JsonApiExportTemplateInAttributes
@@ -0,0 +1,22 @@
1
+ # (C) 2025 GoodData Corporation
2
+ import builtins
3
+ from typing import Optional
4
+
5
+ from attrs import define
6
+ from gooddata_api_client.model.declarative_export_template import DeclarativeExportTemplate
7
+
8
+ from gooddata_sdk.catalog.base import Base
9
+ from gooddata_sdk.catalog.organization.common.dashboard_slides_template import CatalogDashboardSlidesTemplate
10
+ from gooddata_sdk.catalog.organization.common.widget_slides_template import CatalogWidgetSlidesTemplate
11
+
12
+
13
+ @define
14
+ class CatalogDeclarativeExportTemplate(Base):
15
+ id: str
16
+ name: str
17
+ dashboard_slides_template: Optional[CatalogDashboardSlidesTemplate] = None
18
+ widget_slides_template: Optional[CatalogWidgetSlidesTemplate] = None
19
+
20
+ @staticmethod
21
+ def client_class() -> builtins.type[DeclarativeExportTemplate]:
22
+ return DeclarativeExportTemplate
@@ -5,11 +5,17 @@ import functools
5
5
  from typing import Optional
6
6
 
7
7
  from gooddata_api_client.exceptions import NotFoundException
8
+ from gooddata_api_client.model.declarative_export_templates import DeclarativeExportTemplates
8
9
  from gooddata_api_client.model.declarative_notification_channels import DeclarativeNotificationChannels
9
10
  from gooddata_api_client.model.json_api_csp_directive_in_document import JsonApiCspDirectiveInDocument
11
+ from gooddata_api_client.model.json_api_export_template_in_document import JsonApiExportTemplateInDocument
12
+ from gooddata_api_client.model.json_api_export_template_post_optional_id_document import (
13
+ JsonApiExportTemplatePostOptionalIdDocument,
14
+ )
10
15
  from gooddata_api_client.model.json_api_identity_provider_in_document import JsonApiIdentityProviderInDocument
11
16
  from gooddata_api_client.model.json_api_organization_setting_in_document import JsonApiOrganizationSettingInDocument
12
17
 
18
+ from gooddata_sdk import CatalogDeclarativeExportTemplate, CatalogExportTemplate
13
19
  from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
14
20
  from gooddata_sdk.catalog.organization.entity_model.directive import CatalogCspDirective
15
21
  from gooddata_sdk.catalog.organization.entity_model.identity_provider import CatalogIdentityProvider
@@ -424,6 +430,86 @@ class CatalogOrganizationService(CatalogServiceBase):
424
430
  identity_provider_id, CatalogIdentityProvider.to_api_patch(identity_provider_id, attributes)
425
431
  )
426
432
 
433
+ def create_or_update_export_template(self, export_template: CatalogExportTemplate) -> None:
434
+ """Create a new export template or overwrite an existing export template with the same id.
435
+
436
+ Args:
437
+ export_template (CatalogExportTemplate):
438
+ Catalog export template object to be created or updated.
439
+
440
+ Returns:
441
+ None
442
+
443
+ Raises:
444
+ ValueError: Export template cannot be updated.
445
+ """
446
+ try:
447
+ self.get_export_template(export_template.id)
448
+ self._entities_api.update_entity_export_templates(
449
+ id=export_template.id,
450
+ json_api_export_template_in_document=JsonApiExportTemplateInDocument.from_dict(
451
+ {"data": export_template.to_dict()}
452
+ ),
453
+ )
454
+ except NotFoundException:
455
+ self._entities_api.create_entity_export_templates(
456
+ json_api_export_template_post_optional_id_document=JsonApiExportTemplatePostOptionalIdDocument(
457
+ data=export_template.to_api()
458
+ )
459
+ )
460
+
461
+ def get_export_template(self, export_template_id: str) -> CatalogExportTemplate:
462
+ """Get an individual export template.
463
+
464
+ Args:
465
+ export_template_id (str):
466
+ Export template identification string e.g. "demo"
467
+
468
+ Returns:
469
+ CatalogJwk:
470
+ Catalog export template object containing the structure of the export template.
471
+ """
472
+ export_template_api = self._entities_api.get_entity_export_templates(id=export_template_id).data
473
+ return CatalogExportTemplate.from_api(export_template_api)
474
+
475
+ def delete_export_template(self, export_template_id: str) -> None:
476
+ """Delete an export template.
477
+
478
+ Args:
479
+ export_template_id (str):
480
+ Export template identification string e.g. "demo"
481
+
482
+ Returns:
483
+ None
484
+
485
+ Raises:
486
+ ValueError:
487
+ Export template does not exist.
488
+ """
489
+ try:
490
+ self._entities_api.delete_entity_export_templates(export_template_id)
491
+ except NotFoundException:
492
+ raise ValueError(
493
+ f"Can not delete {export_template_id} export template. This export template does not exist."
494
+ )
495
+
496
+ def list_export_templates(self) -> list[CatalogExportTemplate]:
497
+ """Returns a list of all export templates in the current organization.
498
+
499
+ Returns:
500
+ list[CatalogExportTemplate]:
501
+ List of export templates in the current organization.
502
+ """
503
+ get_export_templates = functools.partial(
504
+ self._entities_api.get_all_entities_export_templates,
505
+ _check_return_type=False,
506
+ )
507
+ export_templates = load_all_entities_dict(get_export_templates, camel_case=False)
508
+ return [
509
+ CatalogExportTemplate.from_dict(export_template, camel_case=False)
510
+ for export_template in export_templates["data"]
511
+ ]
512
+
427
513
  # Layout APIs
428
514
 
429
515
  def get_declarative_notification_channels(self) -> list[CatalogDeclarativeNotificationChannel]:
@@ -480,3 +566,36 @@ class CatalogOrganizationService(CatalogServiceBase):
480
566
  """
481
567
  api_idps = [idp.to_api() for idp in identity_providers]
482
568
  self._layout_api.set_identity_providers(declarative_identity_provider=api_idps)
569
+
570
+ def get_declarative_export_templates(self) -> list[CatalogDeclarativeExportTemplate]:
571
+ """
572
+ Get all declarative export templates in the current organization.
573
+
574
+ Returns:
575
+ list[CatalogDeclarativeExportTemplate]:
576
+ List of declarative export templates.
577
+ """
578
+ export_templates_api = self._layout_api.get_export_templates_layout()
579
+ if hasattr(export_templates_api, "export_templates"):
580
+ return [
581
+ CatalogDeclarativeExportTemplate.from_api(template)
582
+ for template in export_templates_api.export_templates
583
+ ]
584
+ else:
585
+ return []
586
+
587
+ def put_declarative_export_templates(self, export_templates: list[CatalogDeclarativeExportTemplate]) -> None:
588
+ """
589
+ Put declarative export templates in the current organization.
590
+
591
+ Args:
592
+ export_templates (list[CatalogDeclarativeExportTemplate]):
593
+ List of declarative export templates.
594
+
595
+ Returns:
596
+ None
597
+ """
598
+ api_export_templates = [export_template.to_api() for export_template in export_templates]
599
+ self._layout_api.set_export_templates(
600
+ declarative_export_templates=DeclarativeExportTemplates(export_templates=api_export_templates)
601
+ )
@@ -60,12 +60,14 @@ class ExecutionDefinition:
60
60
  filters: Optional[list[Filter]],
61
61
  dimensions: list[TableDimension],
62
62
  totals: Optional[list[TotalDefinition]] = None,
63
+ is_cancellable: bool = False,
63
64
  ) -> None:
64
65
  self._attributes = attributes or []
65
66
  self._metrics = metrics or []
66
67
  self._filters = filters or []
67
68
  self._dimensions = [dim for dim in dimensions if dim.item_ids is not None]
68
69
  self._totals = totals
70
+ self._is_cancellable = is_cancellable
69
71
 
70
72
  @property
71
73
  def attributes(self) -> list[Attribute]:
@@ -98,6 +100,10 @@ class ExecutionDefinition:
98
100
  def is_two_dim(self) -> bool:
99
101
  return len(self.dimensions) == 2
100
102
 
103
+ @property
104
+ def is_cancellable(self) -> bool:
105
+ return self._is_cancellable
106
+
101
107
  def _create_value_sort_key(self, sort_key: dict) -> models.SortKey:
102
108
  sort_key_value = sort_key["value"]
103
109
  return models.SortKey(
@@ -296,6 +302,7 @@ class BareExecutionResponse:
296
302
  api_client: GoodDataApiClient,
297
303
  workspace_id: str,
298
304
  execution_response: models.AfmExecutionResponse,
305
+ cancel_token: Optional[str] = None,
299
306
  ):
300
307
  self._api_client = api_client
301
308
  self._actions_api = self._api_client.actions_api
@@ -303,6 +310,7 @@ class BareExecutionResponse:
303
310
 
304
311
  self._exec_response: models.ExecutionResponse = execution_response["execution_response"]
305
312
  self._afm_exec_response = execution_response
313
+ self._cancel_token = cancel_token
306
314
 
307
315
  @property
308
316
  def workspace_id(self) -> str:
@@ -316,6 +324,10 @@ class BareExecutionResponse:
316
324
  def dimensions(self) -> Any:
317
325
  return self._exec_response["dimensions"]
318
326
 
327
+ @property
328
+ def cancel_token(self) -> Optional[str]:
329
+ return self._cancel_token
330
+
319
331
  def read_result(self, limit: Union[int, list[int]], offset: Union[None, int, list[int]] = None) -> ExecutionResult:
320
332
  """
321
333
  Reads from the execution result.
@@ -335,6 +347,7 @@ class BareExecutionResponse:
335
347
  limit=_limit,
336
348
  _check_return_type=False,
337
349
  _return_http_data_only=False,
350
+ **({"x_gdc_cancel_token": self.cancel_token} if self.cancel_token else {}),
338
351
  )
339
352
  custom_headers = self._api_client.custom_headers
340
353
  if "X-GDC-TRACE-ID" in custom_headers and "X-GDC-TRACE-ID" in http_headers:
@@ -351,7 +364,7 @@ class BareExecutionResponse:
351
364
  return self.__repr__()
352
365
 
353
366
  def __repr__(self) -> str:
354
- return f"BareExecutionResponse(workspace_id={self.workspace_id}, result_id={self.result_id})"
367
+ return f"BareExecutionResponse(workspace_id={self.workspace_id}, result_id={self.result_id}, cancel_token={self.cancel_token})"
355
368
 
356
369
 
357
370
  class Execution:
@@ -367,12 +380,11 @@ class Execution:
367
380
  workspace_id: str,
368
381
  exec_def: ExecutionDefinition,
369
382
  response: models.AfmExecutionResponse,
383
+ cancel_token: Optional[str] = None,
370
384
  ):
371
385
  self._exec_def = exec_def
372
386
  self._bare_exec_response = BareExecutionResponse(
373
- api_client=api_client,
374
- workspace_id=workspace_id,
375
- execution_response=response,
387
+ api_client=api_client, workspace_id=workspace_id, execution_response=response, cancel_token=cancel_token
376
388
  )
377
389
 
378
390
  @property
@@ -395,6 +407,10 @@ class Execution:
395
407
  def dimensions(self) -> Any:
396
408
  return self.bare_exec_response._exec_response["dimensions"]
397
409
 
410
+ @property
411
+ def cancel_token(self) -> Optional[str]:
412
+ return self.bare_exec_response.cancel_token
413
+
398
414
  def get_labels_and_formats(self) -> tuple[dict[str, str], dict[str, str]]:
399
415
  """
400
416
  Extracts labels and custom measure formats from the execution response.
@@ -425,7 +441,9 @@ class Execution:
425
441
  return self.__repr__()
426
442
 
427
443
  def __repr__(self) -> str:
428
- return f"Execution(workspace_id={self.workspace_id}, result_id={self.bare_exec_response.result_id})"
444
+ return (
445
+ f"Execution(workspace_id={self.workspace_id}, result_id={self.result_id}, cancel_token={self.cancel_token})"
446
+ )
429
447
 
430
448
 
431
449
  # Originally ExecutionResponse contained also ExecutionDefinition which was not correct, therefore Execution class was
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  import logging
5
5
 
6
+ from gooddata_api_client.model.afm_cancel_tokens import AfmCancelTokens
6
7
  from gooddata_api_client.model.chat_history_request import ChatHistoryRequest
7
8
  from gooddata_api_client.model.chat_history_result import ChatHistoryResult
8
9
  from gooddata_api_client.model.chat_request import ChatRequest
@@ -41,6 +42,7 @@ class ComputeService:
41
42
  workspace_id=workspace_id,
42
43
  exec_def=exec_def,
43
44
  response=response,
45
+ cancel_token=response.headers.get("X-GDC-CANCEL-TOKEN") if exec_def.is_cancellable else None,
44
46
  )
45
47
 
46
48
  def retrieve_result_cache_metadata(self, workspace_id: str, result_id: str) -> ResultCacheMetadata:
@@ -107,3 +109,24 @@ class ComputeService:
107
109
  """
108
110
  chat_history_request = ChatHistoryRequest(reset=True)
109
111
  self._actions_api.ai_chat_history(workspace_id, chat_history_request, _check_return_type=False)
112
+
113
+ def cancel_executions(self, executions: list[Execution]) -> None:
114
+ """
115
+ Try to cancel given executions using the cancel api endpoint.
116
+
117
+ *Note that this is currently a noop, we will be enabling this functionality soon.*
118
+
119
+ Args:
120
+ executions: list of executions to send for cancellation
121
+ """
122
+ workspace_to_tokens: dict[str, set[str]] = {}
123
+
124
+ for execution in executions:
125
+ if not workspace_to_tokens[execution.workspace_id]:
126
+ workspace_to_tokens[execution.workspace_id] = set()
127
+
128
+ if execution.cancel_token:
129
+ workspace_to_tokens[execution.workspace_id].add(execution.cancel_token)
130
+
131
+ for workspace_id, token_ids in workspace_to_tokens.items():
132
+ self._actions_api.cancel_executions(workspace_id, AfmCancelTokens(list(token_ids)))
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gooddata-sdk
3
- Version: 1.40.1.dev3
3
+ Version: 1.40.1.dev5
4
4
  Summary: GoodData Cloud Python SDK
5
5
  Author: GoodData
6
6
  Author-email: support@gooddata.com
7
7
  License: MIT
8
- Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.40.1.dev3
8
+ Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.40.1.dev5
9
9
  Project-URL: Source, https://github.com/gooddata/gooddata-python-sdk
10
10
  Keywords: gooddata,sdk,api,analytics,headless,business,intelligence,headless-bi,cloud,native,semantic,layer,sql,metrics
11
11
  Classifier: Development Status :: 5 - Production/Stable
@@ -23,7 +23,7 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.9.0
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE.txt
26
- Requires-Dist: gooddata-api-client~=1.40.1.dev3
26
+ Requires-Dist: gooddata-api-client~=1.40.1.dev5
27
27
  Requires-Dist: python-dateutil>=2.5.3
28
28
  Requires-Dist: pyyaml>=6.0
29
29
  Requires-Dist: attrs<=24.2.0,>=21.4.0
@@ -59,7 +59,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
59
59
  * Compute Service
60
60
  * Table Service
61
61
 
62
- See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.40.1.dev3) for more details.
62
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.40.1.dev5) for more details.
63
63
 
64
64
  ## Requirements
65
65
 
@@ -57,13 +57,20 @@ gooddata_sdk/catalog/export/request.py
57
57
  gooddata_sdk/catalog/export/service.py
58
58
  gooddata_sdk/catalog/organization/__init__.py
59
59
  gooddata_sdk/catalog/organization/service.py
60
+ gooddata_sdk/catalog/organization/common/__init__.py
61
+ gooddata_sdk/catalog/organization/common/dashboard_slides_template.py
62
+ gooddata_sdk/catalog/organization/common/running_section.py
63
+ gooddata_sdk/catalog/organization/common/slide_template.py
64
+ gooddata_sdk/catalog/organization/common/widget_slides_template.py
60
65
  gooddata_sdk/catalog/organization/entity_model/__init__.py
61
66
  gooddata_sdk/catalog/organization/entity_model/directive.py
67
+ gooddata_sdk/catalog/organization/entity_model/export_template.py
62
68
  gooddata_sdk/catalog/organization/entity_model/identity_provider.py
63
69
  gooddata_sdk/catalog/organization/entity_model/jwk.py
64
70
  gooddata_sdk/catalog/organization/entity_model/organization.py
65
71
  gooddata_sdk/catalog/organization/entity_model/setting.py
66
72
  gooddata_sdk/catalog/organization/layout/__init__.py
73
+ gooddata_sdk/catalog/organization/layout/export_template.py
67
74
  gooddata_sdk/catalog/organization/layout/identity_provider.py
68
75
  gooddata_sdk/catalog/organization/layout/notification_channel.py
69
76
  gooddata_sdk/catalog/permission/__init__.py