gooddata-sdk 1.23.1.dev2__tar.gz → 1.24.1.dev1__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 (130) hide show
  1. {gooddata_sdk-1.23.1.dev2/gooddata_sdk.egg-info → gooddata_sdk-1.24.1.dev1}/PKG-INFO +4 -4
  2. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/README.md +1 -1
  3. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/__init__.py +3 -0
  4. gooddata_sdk-1.24.1.dev1/gooddata_sdk/catalog/filter_by.py +18 -0
  5. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/content_service.py +15 -0
  6. gooddata_sdk-1.24.1.dev1/gooddata_sdk/compute/compute_to_sdk_converter.py +183 -0
  7. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/utils.py +31 -0
  8. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/visualization.py +15 -34
  9. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1/gooddata_sdk.egg-info}/PKG-INFO +4 -4
  10. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk.egg-info/SOURCES.txt +2 -0
  11. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk.egg-info/requires.txt +1 -1
  12. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/setup.py +3 -3
  13. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/LICENSE.txt +0 -0
  14. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/MANIFEST.in +0 -0
  15. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/bin/gdc +0 -0
  16. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/_version.py +0 -0
  17. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/__init__.py +0 -0
  18. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/base.py +0 -0
  19. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/catalog_service_base.py +0 -0
  20. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/__init__.py +0 -0
  21. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/__init__.py +0 -0
  22. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/__init__.py +0 -0
  23. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/ldm_request.py +0 -0
  24. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/scan_model_request.py +0 -0
  25. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/scan_sql_request.py +0 -0
  26. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/responses/__init__.py +0 -0
  27. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/responses/scan_sql_response.py +0 -0
  28. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/action_model/sql_column.py +0 -0
  29. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/__init__.py +0 -0
  30. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/data_source.py +0 -0
  31. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/__init__.py +0 -0
  32. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/column.py +0 -0
  33. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/pdm.py +0 -0
  34. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/table.py +0 -0
  35. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/__init__.py +0 -0
  36. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/content_objects/__init__.py +0 -0
  37. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/content_objects/table.py +0 -0
  38. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/data_source.py +0 -0
  39. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/service.py +0 -0
  40. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/validation/__init__.py +0 -0
  41. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/data_source/validation/data_source.py +0 -0
  42. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/depends_on.py +0 -0
  43. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/entity.py +0 -0
  44. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/export/__init__.py +0 -0
  45. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/export/request.py +0 -0
  46. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/export/service.py +0 -0
  47. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/identifier.py +0 -0
  48. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/__init__.py +0 -0
  49. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/entity_model/__init__.py +0 -0
  50. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/entity_model/directive.py +0 -0
  51. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/entity_model/jwk.py +0 -0
  52. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/entity_model/organization.py +0 -0
  53. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/entity_model/setting.py +0 -0
  54. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/organization/service.py +0 -0
  55. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/parameter.py +0 -0
  56. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/__init__.py +0 -0
  57. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/__init__.py +0 -0
  58. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/dashboard_assignees.py +0 -0
  59. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/dashboard_permissions.py +0 -0
  60. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/manage_dashboard_permissions.py +0 -0
  61. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/permission.py +0 -0
  62. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/permission/service.py +0 -0
  63. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/rule.py +0 -0
  64. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/setting.py +0 -0
  65. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/types.py +0 -0
  66. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/__init__.py +0 -0
  67. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/declarative_model/__init__.py +0 -0
  68. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/declarative_model/user.py +0 -0
  69. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/declarative_model/user_and_user_groups.py +0 -0
  70. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/declarative_model/user_group.py +0 -0
  71. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/entity_model/__init__.py +0 -0
  72. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/entity_model/user.py +0 -0
  73. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/entity_model/user_group.py +0 -0
  74. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/management_model/__init__.py +0 -0
  75. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/management_model/management.py +0 -0
  76. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/user/service.py +0 -0
  77. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/validate_by_item.py +0 -0
  78. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/__init__.py +0 -0
  79. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/__init__.py +0 -0
  80. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/__init__.py +0 -0
  81. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/__init__.py +0 -0
  82. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py +0 -0
  83. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/__init__.py +0 -0
  84. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/data_filter_references.py +0 -0
  85. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/__init__.py +0 -0
  86. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/dataset.py +0 -0
  87. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/__init__.py +0 -0
  88. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/dataset_extension.py +0 -0
  89. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/__init__.py +0 -0
  90. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/date_dataset.py +0 -0
  91. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/ldm.py +0 -0
  92. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py +0 -0
  93. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/__init__.py +0 -0
  94. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/__init__.py +0 -0
  95. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py +0 -0
  96. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/metric.py +0 -0
  97. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/workspace_setting.py +0 -0
  98. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/__init__.py +0 -0
  99. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/graph.py +0 -0
  100. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/user_data_filter.py +0 -0
  101. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/workspace.py +0 -0
  102. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/model_container.py +0 -0
  103. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/catalog/workspace/service.py +0 -0
  104. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/__init__.py +0 -0
  105. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/clone.py +0 -0
  106. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/constants.py +0 -0
  107. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/deploy.py +0 -0
  108. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/gdc_core.py +0 -0
  109. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/package.json +0 -0
  110. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/cli/utils.py +0 -0
  111. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/client.py +0 -0
  112. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/__init__.py +0 -0
  113. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/model/__init__.py +0 -0
  114. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/model/attribute.py +0 -0
  115. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/model/base.py +0 -0
  116. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/model/execution.py +0 -0
  117. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/model/filter.py +0 -0
  118. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/model/metric.py +0 -0
  119. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/compute/service.py +0 -0
  120. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/config.py +0 -0
  121. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/py.typed +0 -0
  122. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/sdk.py +0 -0
  123. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/support.py +0 -0
  124. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/table.py +0 -0
  125. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk/type_converter.py +0 -0
  126. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk.egg-info/dependency_links.txt +0 -0
  127. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/gooddata_sdk.egg-info/top_level.txt +0 -0
  128. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/setup.cfg +0 -0
  129. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/tests/test_client.py +0 -0
  130. {gooddata_sdk-1.23.1.dev2 → gooddata_sdk-1.24.1.dev1}/tests/test_type_converter.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gooddata-sdk
3
- Version: 1.23.1.dev2
3
+ Version: 1.24.1.dev1
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.23.1.dev2
8
+ Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.24.1.dev1
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.8.0
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE.txt
26
- Requires-Dist: gooddata-api-client~=1.23.1.dev2
26
+ Requires-Dist: gooddata-api-client~=1.24.1.dev1
27
27
  Requires-Dist: python-dateutil>=2.5.3
28
28
  Requires-Dist: pyyaml>=5.1
29
29
  Requires-Dist: attrs<=23.2.0,>=21.4.0
@@ -47,7 +47,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
47
47
  * Compute Service
48
48
  * Table Service
49
49
 
50
- See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.23.1.dev2) for more details.
50
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.24.1.dev1) for more details.
51
51
 
52
52
  ## Requirements
53
53
 
@@ -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.23.1.dev2) for more details.
16
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.24.1.dev1) for more details.
17
17
 
18
18
  ## Requirements
19
19
 
@@ -67,6 +67,7 @@ from gooddata_sdk.catalog.export.request import (
67
67
  ExportRequest,
68
68
  ExportSettings,
69
69
  )
70
+ from gooddata_sdk.catalog.filter_by import CatalogFilterBy
70
71
  from gooddata_sdk.catalog.identifier import (
71
72
  CatalogAssigneeIdentifier,
72
73
  CatalogDatasetWorkspaceDataFilterIdentifier,
@@ -190,6 +191,7 @@ from gooddata_sdk.catalog.workspace.entity_model.user_data_filter import (
190
191
  )
191
192
  from gooddata_sdk.catalog.workspace.entity_model.workspace import CatalogWorkspace
192
193
  from gooddata_sdk.client import GoodDataApiClient
194
+ from gooddata_sdk.compute.compute_to_sdk_converter import ComputeToSdkConverter
193
195
  from gooddata_sdk.compute.model.attribute import Attribute
194
196
  from gooddata_sdk.compute.model.base import ExecModelEntity, ObjId
195
197
  from gooddata_sdk.compute.model.execution import (
@@ -234,6 +236,7 @@ from gooddata_sdk.visualization import (
234
236
  Visualization,
235
237
  VisualizationAttribute,
236
238
  VisualizationBucket,
239
+ VisualizationFilter,
237
240
  VisualizationMetric,
238
241
  VisualizationService,
239
242
  )
@@ -0,0 +1,18 @@
1
+ # (C) 2024 GoodData Corporation
2
+ from __future__ import annotations
3
+
4
+ from typing import Type
5
+
6
+ import attr
7
+ from gooddata_api_client.model.filter_by import FilterBy
8
+
9
+ from gooddata_sdk.catalog.base import Base
10
+
11
+
12
+ @attr.s(auto_attribs=True, kw_only=True)
13
+ class CatalogFilterBy(Base):
14
+ label_type: str
15
+
16
+ @staticmethod
17
+ def client_class() -> Type[FilterBy]:
18
+ return FilterBy
@@ -12,6 +12,7 @@ from gooddata_api_client.model.elements_request import ElementsRequest
12
12
  from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
13
13
  from gooddata_sdk.catalog.data_source.validation.data_source import DataSourceValidator
14
14
  from gooddata_sdk.catalog.depends_on import CatalogDependsOn, CatalogDependsOnDateFilter
15
+ from gooddata_sdk.catalog.filter_by import CatalogFilterBy
15
16
  from gooddata_sdk.catalog.types import ValidObjects
16
17
  from gooddata_sdk.catalog.validate_by_item import CatalogValidateByItem
17
18
  from gooddata_sdk.catalog.workspace.declarative_model.workspace.analytics_model.analytics_model import (
@@ -564,6 +565,8 @@ class CatalogWorkspaceContentService(CatalogServiceBase):
564
565
  label_id: LabelElementsInputType,
565
566
  depends_on: Optional[List[DependsOnItem]] = None,
566
567
  validate_by: Optional[List[CatalogValidateByItem]] = None,
568
+ exact_filter: Optional[List[str]] = None,
569
+ filter_by: Optional[CatalogFilterBy] = None,
567
570
  ) -> List[str]:
568
571
  """
569
572
  Get existing values for a label.
@@ -580,6 +583,11 @@ class CatalogWorkspaceContentService(CatalogServiceBase):
580
583
  Optional parameter specifying dependencies on other labels or date filters.
581
584
  validate_by (Optional[List[CatalogValidateByItem]]):
582
585
  Optional parameter specifying validation metrics, attributes, labels or facts.
586
+ exact_filter (Optional[List[str]]):
587
+ Optional parameter specifying exact filter values.
588
+ filter_by (Optional[CatalogFilterBy]):
589
+ Optional parameter specifying which label is used for filtering - primary or requested.
590
+ If omitted the server will use the default value of "REQUESTED"
583
591
  Returns:
584
592
  list of label values
585
593
  """
@@ -597,6 +605,13 @@ class CatalogWorkspaceContentService(CatalogServiceBase):
597
605
  request = ElementsRequest(
598
606
  label=label_id, depends_on=[d.to_api() for d in depends_on], validate_by=[v.to_api() for v in validate_by]
599
607
  )
608
+
609
+ if exact_filter is not None:
610
+ request.exact_filter = exact_filter
611
+
612
+ if filter_by is not None:
613
+ request.filter_by = filter_by.to_api()
614
+
600
615
  # TODO - fix return type of Paging.next in Backend + add support for this API to SDK
601
616
  values = self._actions_api.compute_label_elements_post(workspace_id, request, _check_return_type=False)
602
617
  return [v["title"] for v in values["elements"]]
@@ -0,0 +1,183 @@
1
+ # (C) 2024 GoodData Corporation
2
+ from typing import Any, Dict, Union, cast
3
+
4
+ from gooddata_sdk.compute.model.attribute import Attribute
5
+ from gooddata_sdk.compute.model.base import ObjId
6
+ from gooddata_sdk.compute.model.filter import (
7
+ AbsoluteDateFilter,
8
+ AllTimeFilter,
9
+ Filter,
10
+ MetricValueFilter,
11
+ NegativeAttributeFilter,
12
+ PositiveAttributeFilter,
13
+ RankingFilter,
14
+ RelativeDateFilter,
15
+ )
16
+ from gooddata_sdk.compute.model.metric import (
17
+ ArithmeticMetric,
18
+ Metric,
19
+ PopDate,
20
+ PopDateDataset,
21
+ PopDateMetric,
22
+ PopDatesetMetric,
23
+ SimpleMetric,
24
+ )
25
+ from gooddata_sdk.utils import ref_extract, ref_extract_obj_id
26
+
27
+
28
+ class ComputeToSdkConverter:
29
+ """
30
+ Provides functions to convert Compute API model objects represented as dictionaries to the SDK Compute model.
31
+ We cannot use the Visualization converter as the Compute API model is different:
32
+ - there are differences in naming: e.g. "label" vs "displayForm", "dataset" vs "dataSet"
33
+ - there are differences in structure: e.g. "measure" vs "measureDefinition"
34
+
35
+ The inputs to this converter should be dictionaries that come from parsing the JSON payloads
36
+ used with the backend's /execute API endpoint.
37
+ """
38
+
39
+ @staticmethod
40
+ def convert_attribute(attribute_dict: Dict[str, Any]) -> Attribute:
41
+ """
42
+ Converts attribute dictionary to the SDK Compute model.
43
+ :param attribute_dict: the attribute dictionary to convert
44
+ :return: the converted attribute
45
+ """
46
+ return Attribute(
47
+ local_id=attribute_dict["localIdentifier"],
48
+ label=attribute_dict["label"]["identifier"]["id"],
49
+ show_all_values=attribute_dict["showAllValues"],
50
+ )
51
+
52
+ @staticmethod
53
+ def convert_filter(filter_dict: Dict[str, Any]) -> Filter:
54
+ """
55
+ Converts filter dictionary to the SDK Compute model.
56
+ :param filter_dict: the filter dictionary to convert
57
+ :return: the converted filter
58
+ """
59
+ if "positiveAttributeFilter" in filter_dict:
60
+ f = filter_dict["positiveAttributeFilter"]
61
+ return PositiveAttributeFilter(label=ref_extract(f["label"]), values=f["in"]["values"])
62
+
63
+ if "negativeAttributeFilter" in filter_dict:
64
+ f = filter_dict["negativeAttributeFilter"]
65
+ return NegativeAttributeFilter(label=ref_extract(f["label"]), values=f["notIn"]["values"])
66
+
67
+ if "relativeDateFilter" in filter_dict:
68
+ f = filter_dict["relativeDateFilter"]
69
+
70
+ # there is a filter present, but means all time
71
+ if ("from" not in f) or ("to" not in f):
72
+ return AllTimeFilter(ref_extract_obj_id(f["dataset"]))
73
+
74
+ return RelativeDateFilter(
75
+ dataset=ref_extract_obj_id(f["dataset"]),
76
+ granularity=f["granularity"],
77
+ from_shift=f["from"],
78
+ to_shift=f["to"],
79
+ )
80
+
81
+ if "absoluteDateFilter" in filter_dict:
82
+ f = filter_dict["absoluteDateFilter"]
83
+
84
+ return AbsoluteDateFilter(dataset=ref_extract_obj_id(f["dataset"]), from_date=f["from"], to_date=f["to"])
85
+
86
+ if "comparisonMeasureValueFilter" in filter_dict:
87
+ f = filter_dict["comparisonMeasureValueFilter"]
88
+
89
+ return MetricValueFilter(
90
+ metric=ref_extract(f["measure"]),
91
+ operator=f["operator"],
92
+ values=f["value"],
93
+ treat_nulls_as=f.get("treatNullValuesAs"),
94
+ )
95
+
96
+ if "rangeMeasureValueFilter" in filter_dict:
97
+ f = filter_dict["rangeMeasureValueFilter"]
98
+
99
+ return MetricValueFilter(
100
+ metric=ref_extract(f["measure"]),
101
+ operator=f["operator"],
102
+ values=(f["from"], f["to"]),
103
+ treat_nulls_as=f.get("treatNullValuesAs"),
104
+ )
105
+
106
+ if "rankingFilter" in filter_dict:
107
+ f = filter_dict["rankingFilter"]
108
+
109
+ # mypy is unable to automatically convert Union[str, ObjId] to Union[str, ObjId, Attribute, Metric]
110
+ # so use explicit cast here
111
+ dimensionality = (
112
+ [cast(Union[str, ObjId, Attribute, Metric], ref_extract(a)) for a in f["attributes"]]
113
+ if "attributes" in f
114
+ else None
115
+ )
116
+
117
+ return RankingFilter(
118
+ metrics=[ref_extract(m) for m in f["measures"]],
119
+ dimensionality=dimensionality,
120
+ operator=f["operator"],
121
+ value=f["value"],
122
+ )
123
+
124
+ raise ValueError(f"Unsupported filter definition type: {filter_dict}")
125
+
126
+ @staticmethod
127
+ def convert_metric(metric_dict: Dict[str, Any]) -> Metric:
128
+ """
129
+ Converts metric dictionary to the SDK Compute model.
130
+ :param metric_dict: the metric dictionary to convert
131
+ :return: the converted metric
132
+ """
133
+ definition = metric_dict["definition"]
134
+ local_id = metric_dict["localIdentifier"]
135
+
136
+ if "measure" in definition:
137
+ d = definition["measure"]
138
+ aggregation = d.get("aggregation", None)
139
+ compute_ratio = d.get("computeRatio", False)
140
+
141
+ filters = [ComputeToSdkConverter.convert_filter(f) for f in d["filters"]] if "filters" in d else None
142
+
143
+ return SimpleMetric(
144
+ local_id=local_id,
145
+ item=ref_extract_obj_id(d["item"]),
146
+ aggregation=aggregation,
147
+ compute_ratio=compute_ratio,
148
+ filters=filters,
149
+ )
150
+
151
+ if "arithmeticMeasure" in definition:
152
+ d = definition["arithmeticMeasure"]
153
+ return ArithmeticMetric(
154
+ local_id=local_id,
155
+ operator=d["operator"],
156
+ operands=[o["localIdentifier"] for o in d["measureIdentifiers"]],
157
+ )
158
+
159
+ if "overPeriodMeasure" in definition:
160
+ d = definition["overPeriodMeasure"]
161
+ date_attributes = [
162
+ PopDate(attribute=ref_extract_obj_id(item["attribute"]), periods_ago=item["periodsAgo"])
163
+ for item in d["dateAttributes"]
164
+ ]
165
+
166
+ return PopDateMetric(
167
+ local_id=local_id,
168
+ metric=d["measureIdentifier"]["localIdentifier"],
169
+ date_attributes=date_attributes,
170
+ )
171
+
172
+ if "previousPeriodMeasure" in definition:
173
+ d = definition["previousPeriodMeasure"]
174
+
175
+ date_datasets = [PopDateDataset(ref_extract(dd["dataset"]), dd["periodsAgo"]) for dd in d["dateDatasets"]]
176
+
177
+ return PopDatesetMetric(
178
+ local_id=local_id,
179
+ metric=d["measureIdentifier"]["localIdentifier"],
180
+ date_datasets=date_datasets,
181
+ )
182
+
183
+ raise ValueError(f"Unsupported metric definition type: {metric_dict}")
@@ -391,3 +391,34 @@ def read_json(path: Union[str, Path]) -> Any:
391
391
  path = Path(path) if isinstance(path, str) else path
392
392
  with open(path, "r", encoding="utf-8") as f:
393
393
  return json.loads(f.read())
394
+
395
+
396
+ def ref_extract_obj_id(ref: Dict[str, Any]) -> ObjId:
397
+ """
398
+ Extracts ObjId from a ref dictionary.
399
+ :param ref: the ref to extract from
400
+ :return: the extracted ObjId
401
+ :raises ValueError: if the ref is not an identifier
402
+ """
403
+ if "identifier" in ref:
404
+ return ObjId(id=ref["identifier"]["id"], type=ref["identifier"]["type"])
405
+
406
+ raise ValueError("invalid ref. must be identifier")
407
+
408
+
409
+ def ref_extract(ref: Dict[str, Any]) -> Union[str, ObjId]:
410
+ """
411
+ Extracts an object id from a ref dictionary: either an identifier or a localIdentifier.
412
+ :param ref: the ref to extract from
413
+ :return: thr extracted object id
414
+ :raises ValueError: if the ref is not an identifier or localIdentifier
415
+ """
416
+ try:
417
+ return ref_extract_obj_id(ref)
418
+ except ValueError:
419
+ pass
420
+
421
+ if "localIdentifier" in ref:
422
+ return ref["localIdentifier"]
423
+
424
+ raise ValueError("invalid ref. must be identifier or localIdentifier")
@@ -29,7 +29,7 @@ from gooddata_sdk.compute.model.metric import (
29
29
  PopDatesetMetric,
30
30
  SimpleMetric,
31
31
  )
32
- from gooddata_sdk.utils import IdObjType, SideLoads, load_all_entities, safeget
32
+ from gooddata_sdk.utils import IdObjType, SideLoads, load_all_entities, ref_extract, ref_extract_obj_id, safeget
33
33
 
34
34
  #
35
35
  # Conversion from types stored in visualization into the gooddata_afm_client models.
@@ -160,48 +160,29 @@ class AttributeSortType(Enum):
160
160
  #
161
161
 
162
162
 
163
- def _ref_extract_obj_id(ref: dict[str, Any]) -> ObjId:
164
- if "identifier" in ref:
165
- return ObjId(id=ref["identifier"]["id"], type=ref["identifier"]["type"])
166
-
167
- raise ValueError("invalid ref. must be identifier")
168
-
169
-
170
- def _ref_extract(ref: dict[str, Any]) -> Union[str, ObjId]:
171
- try:
172
- return _ref_extract_obj_id(ref)
173
- except ValueError:
174
- pass
175
-
176
- if "localIdentifier" in ref:
177
- return ref["localIdentifier"]
178
-
179
- raise ValueError("invalid ref. must be identifier or localIdentifier")
180
-
181
-
182
163
  def _convert_filter_to_computable(filter_obj: dict[str, Any]) -> Filter:
183
164
  if "positiveAttributeFilter" in filter_obj:
184
165
  f = filter_obj["positiveAttributeFilter"]
185
166
  # fallback to use URIs; SDK may be able to create filter with attr elements as uris...
186
167
  in_values = f["in"]["values"] if "values" in f["in"] else f["in"]["uris"]
187
168
 
188
- return PositiveAttributeFilter(label=_ref_extract(f["displayForm"]), values=in_values)
169
+ return PositiveAttributeFilter(label=ref_extract(f["displayForm"]), values=in_values)
189
170
 
190
171
  elif "negativeAttributeFilter" in filter_obj:
191
172
  f = filter_obj["negativeAttributeFilter"]
192
173
  # fallback to use URIs; SDK may be able to create filter with attr elements as uris...
193
174
  not_in_values = f["notIn"]["values"] if "values" in f["notIn"] else f["notIn"]["uris"]
194
175
 
195
- return NegativeAttributeFilter(label=_ref_extract(f["displayForm"]), values=not_in_values)
176
+ return NegativeAttributeFilter(label=ref_extract(f["displayForm"]), values=not_in_values)
196
177
  elif "relativeDateFilter" in filter_obj:
197
178
  f = filter_obj["relativeDateFilter"]
198
179
 
199
180
  # there is filter present, but uses all time
200
181
  if ("from" not in f) or ("to" not in f):
201
- return AllTimeFilter(_ref_extract_obj_id(f["dataSet"]))
182
+ return AllTimeFilter(ref_extract_obj_id(f["dataSet"]))
202
183
 
203
184
  return RelativeDateFilter(
204
- dataset=_ref_extract_obj_id(f["dataSet"]),
185
+ dataset=ref_extract_obj_id(f["dataSet"]),
205
186
  granularity=_GRANULARITY_CONVERSION[f["granularity"]],
206
187
  from_shift=f["from"],
207
188
  to_shift=f["to"],
@@ -210,13 +191,13 @@ def _convert_filter_to_computable(filter_obj: dict[str, Any]) -> Filter:
210
191
  elif "absoluteDateFilter" in filter_obj:
211
192
  f = filter_obj["absoluteDateFilter"]
212
193
 
213
- return AbsoluteDateFilter(dataset=_ref_extract_obj_id(f["dataSet"]), from_date=f["from"], to_date=f["to"])
194
+ return AbsoluteDateFilter(dataset=ref_extract_obj_id(f["dataSet"]), from_date=f["from"], to_date=f["to"])
214
195
  elif "measureValueFilter" in filter_obj:
215
196
  f = filter_obj["measureValueFilter"]
216
197
 
217
198
  # no condition means no limitation
218
199
  if "condition" not in f:
219
- return AllMetricValueFilter(metric=_ref_extract(f["measure"]))
200
+ return AllMetricValueFilter(metric=ref_extract(f["measure"]))
220
201
 
221
202
  condition = f["condition"]
222
203
 
@@ -225,7 +206,7 @@ def _convert_filter_to_computable(filter_obj: dict[str, Any]) -> Filter:
225
206
  treat_values_as_null = c.get("treatNullValuesAs")
226
207
 
227
208
  return MetricValueFilter(
228
- metric=_ref_extract(f["measure"]),
209
+ metric=ref_extract(f["measure"]),
229
210
  operator=c["operator"],
230
211
  values=c["value"],
231
212
  treat_nulls_as=treat_values_as_null,
@@ -234,7 +215,7 @@ def _convert_filter_to_computable(filter_obj: dict[str, Any]) -> Filter:
234
215
  c = condition["range"]
235
216
  treat_values_as_null = c.get("treatNullValuesAs")
236
217
  return MetricValueFilter(
237
- metric=_ref_extract(f["measure"]),
218
+ metric=ref_extract(f["measure"]),
238
219
  operator=c["operator"],
239
220
  values=(c["from"], c["to"]),
240
221
  treat_nulls_as=treat_values_as_null,
@@ -244,13 +225,13 @@ def _convert_filter_to_computable(filter_obj: dict[str, Any]) -> Filter:
244
225
  # mypy is unable to automatically convert Union[str, ObjId] to Union[str, ObjId, Attribute, Metric]
245
226
  # so use explicit cast here
246
227
  dimensionality = (
247
- [cast(Union[str, ObjId, Attribute, Metric], _ref_extract(a)) for a in f["attributes"]]
228
+ [cast(Union[str, ObjId, Attribute, Metric], ref_extract(a)) for a in f["attributes"]]
248
229
  if "attributes" in f
249
230
  else None
250
231
  )
251
232
 
252
233
  return RankingFilter(
253
- metrics=[_ref_extract(f["measure"])],
234
+ metrics=[ref_extract(f["measure"])],
254
235
  dimensionality=dimensionality,
255
236
  operator=f["operator"],
256
237
  value=f["value"],
@@ -273,7 +254,7 @@ def _convert_metric_to_computable(metric: dict[str, Any]) -> Metric:
273
254
 
274
255
  return SimpleMetric(
275
256
  local_id=local_id,
276
- item=_ref_extract_obj_id(d["item"]),
257
+ item=ref_extract_obj_id(d["item"]),
277
258
  aggregation=aggregation,
278
259
  compute_ratio=compute_ratio,
279
260
  filters=filters,
@@ -281,7 +262,7 @@ def _convert_metric_to_computable(metric: dict[str, Any]) -> Metric:
281
262
 
282
263
  elif "popMeasureDefinition" in measure_def:
283
264
  d = measure_def["popMeasureDefinition"]
284
- date_attributes = [PopDate(attribute=_ref_extract_obj_id(d["popAttribute"]), periods_ago=1)]
265
+ date_attributes = [PopDate(attribute=ref_extract_obj_id(d["popAttribute"]), periods_ago=1)]
285
266
 
286
267
  return PopDateMetric(
287
268
  local_id=local_id,
@@ -292,7 +273,7 @@ def _convert_metric_to_computable(metric: dict[str, Any]) -> Metric:
292
273
  elif "previousPeriodMeasure" in measure_def:
293
274
  d = measure_def["previousPeriodMeasure"]
294
275
 
295
- date_datasets = [PopDateDataset(_ref_extract(dd["dataSet"]), dd["periodsAgo"]) for dd in d["dateDataSets"]]
276
+ date_datasets = [PopDateDataset(ref_extract(dd["dataSet"]), dd["periodsAgo"]) for dd in d["dateDataSets"]]
296
277
 
297
278
  return PopDatesetMetric(
298
279
  local_id=local_id,
@@ -413,7 +394,7 @@ class VisualizationAttribute:
413
394
  return self._a.get("showAllValues")
414
395
 
415
396
  def as_computable(self) -> Attribute:
416
- return Attribute(local_id=self.local_id, label=_ref_extract(self.label), show_all_values=self.show_all_values)
397
+ return Attribute(local_id=self.local_id, label=ref_extract(self.label), show_all_values=self.show_all_values)
417
398
 
418
399
  def __str__(self) -> str:
419
400
  return self.__repr__()
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gooddata-sdk
3
- Version: 1.23.1.dev2
3
+ Version: 1.24.1.dev1
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.23.1.dev2
8
+ Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.24.1.dev1
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.8.0
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE.txt
26
- Requires-Dist: gooddata-api-client~=1.23.1.dev2
26
+ Requires-Dist: gooddata-api-client~=1.24.1.dev1
27
27
  Requires-Dist: python-dateutil>=2.5.3
28
28
  Requires-Dist: pyyaml>=5.1
29
29
  Requires-Dist: attrs<=23.2.0,>=21.4.0
@@ -47,7 +47,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
47
47
  * Compute Service
48
48
  * Table Service
49
49
 
50
- See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.23.1.dev2) for more details.
50
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.24.1.dev1) for more details.
51
51
 
52
52
  ## Requirements
53
53
 
@@ -24,6 +24,7 @@ gooddata_sdk/catalog/base.py
24
24
  gooddata_sdk/catalog/catalog_service_base.py
25
25
  gooddata_sdk/catalog/depends_on.py
26
26
  gooddata_sdk/catalog/entity.py
27
+ gooddata_sdk/catalog/filter_by.py
27
28
  gooddata_sdk/catalog/identifier.py
28
29
  gooddata_sdk/catalog/parameter.py
29
30
  gooddata_sdk/catalog/rule.py
@@ -115,6 +116,7 @@ gooddata_sdk/cli/gdc_core.py
115
116
  gooddata_sdk/cli/package.json
116
117
  gooddata_sdk/cli/utils.py
117
118
  gooddata_sdk/compute/__init__.py
119
+ gooddata_sdk/compute/compute_to_sdk_converter.py
118
120
  gooddata_sdk/compute/service.py
119
121
  gooddata_sdk/compute/model/__init__.py
120
122
  gooddata_sdk/compute/model/attribute.py
@@ -1,4 +1,4 @@
1
- gooddata-api-client~=1.23.1.dev2
1
+ gooddata-api-client~=1.24.1.dev1
2
2
  python-dateutil>=2.5.3
3
3
  pyyaml>=5.1
4
4
  attrs<=23.2.0,>=21.4.0
@@ -7,7 +7,7 @@ this_directory = Path(__file__).parent
7
7
  long_description = (this_directory / "README.md").read_text(encoding="utf-8")
8
8
 
9
9
  REQUIRES = [
10
- "gooddata-api-client~=1.23.1.dev2",
10
+ "gooddata-api-client~=1.24.1.dev1",
11
11
  "python-dateutil>=2.5.3",
12
12
  "pyyaml>=5.1",
13
13
  "attrs>=21.4.0,<=23.2.0",
@@ -22,7 +22,7 @@ setup(
22
22
  description="GoodData Cloud Python SDK",
23
23
  long_description=long_description,
24
24
  long_description_content_type="text/markdown",
25
- version="1.23.1.dev2",
25
+ version="1.24.1.dev1",
26
26
  author="GoodData",
27
27
  author_email="support@gooddata.com",
28
28
  license="MIT",
@@ -36,7 +36,7 @@ setup(
36
36
  "bin/gdc",
37
37
  ],
38
38
  project_urls={
39
- "Documentation": "https://www.gooddata.com/docs/python-sdk/1.23.1.dev2",
39
+ "Documentation": "https://www.gooddata.com/docs/python-sdk/1.24.1.dev1",
40
40
  "Source": "https://github.com/gooddata/gooddata-python-sdk",
41
41
  },
42
42
  classifiers=[