gooddata-sdk 1.22.1.dev3__tar.gz → 1.23.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 (128) hide show
  1. {gooddata_sdk-1.22.1.dev3/gooddata_sdk.egg-info → gooddata_sdk-1.23.1.dev1}/PKG-INFO +4 -4
  2. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/README.md +1 -1
  3. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/__init__.py +1 -0
  4. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/data_source.py +17 -3
  5. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/data_source.py +8 -7
  6. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/entity.py +23 -0
  7. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/export/service.py +17 -9
  8. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/content_service.py +3 -2
  9. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/service.py +6 -3
  10. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/model/execution.py +1 -1
  11. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/table.py +1 -1
  12. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1/gooddata_sdk.egg-info}/PKG-INFO +4 -4
  13. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk.egg-info/requires.txt +1 -1
  14. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/setup.py +3 -3
  15. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/LICENSE.txt +0 -0
  16. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/MANIFEST.in +0 -0
  17. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/bin/gdc +0 -0
  18. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/_version.py +0 -0
  19. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/__init__.py +0 -0
  20. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/base.py +0 -0
  21. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/catalog_service_base.py +0 -0
  22. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/__init__.py +0 -0
  23. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/__init__.py +0 -0
  24. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/__init__.py +0 -0
  25. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/ldm_request.py +0 -0
  26. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/scan_model_request.py +0 -0
  27. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/requests/scan_sql_request.py +0 -0
  28. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/responses/__init__.py +0 -0
  29. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/responses/scan_sql_response.py +0 -0
  30. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/action_model/sql_column.py +0 -0
  31. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/__init__.py +0 -0
  32. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/__init__.py +0 -0
  33. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/column.py +0 -0
  34. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/pdm.py +0 -0
  35. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/table.py +0 -0
  36. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/__init__.py +0 -0
  37. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/content_objects/__init__.py +0 -0
  38. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/entity_model/content_objects/table.py +0 -0
  39. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/service.py +0 -0
  40. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/validation/__init__.py +0 -0
  41. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/data_source/validation/data_source.py +0 -0
  42. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/depends_on.py +0 -0
  43. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/export/__init__.py +0 -0
  44. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/export/request.py +0 -0
  45. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/identifier.py +0 -0
  46. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/__init__.py +0 -0
  47. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/entity_model/__init__.py +0 -0
  48. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/entity_model/directive.py +0 -0
  49. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/entity_model/jwk.py +0 -0
  50. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/entity_model/organization.py +0 -0
  51. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/entity_model/setting.py +0 -0
  52. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/organization/service.py +0 -0
  53. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/parameter.py +0 -0
  54. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/__init__.py +0 -0
  55. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/__init__.py +0 -0
  56. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/dashboard_assignees.py +0 -0
  57. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/dashboard_permissions.py +0 -0
  58. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/manage_dashboard_permissions.py +0 -0
  59. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/declarative_model/permission.py +0 -0
  60. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/permission/service.py +0 -0
  61. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/rule.py +0 -0
  62. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/setting.py +0 -0
  63. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/types.py +0 -0
  64. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/__init__.py +0 -0
  65. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/declarative_model/__init__.py +0 -0
  66. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/declarative_model/user.py +0 -0
  67. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/declarative_model/user_and_user_groups.py +0 -0
  68. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/declarative_model/user_group.py +0 -0
  69. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/entity_model/__init__.py +0 -0
  70. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/entity_model/user.py +0 -0
  71. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/entity_model/user_group.py +0 -0
  72. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/management_model/__init__.py +0 -0
  73. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/management_model/management.py +0 -0
  74. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/user/service.py +0 -0
  75. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/validate_by_item.py +0 -0
  76. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/__init__.py +0 -0
  77. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/__init__.py +0 -0
  78. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/__init__.py +0 -0
  79. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/__init__.py +0 -0
  80. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py +0 -0
  81. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/__init__.py +0 -0
  82. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/data_filter_references.py +0 -0
  83. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/__init__.py +0 -0
  84. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/dataset.py +0 -0
  85. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/__init__.py +0 -0
  86. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/dataset_extension.py +0 -0
  87. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/__init__.py +0 -0
  88. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/date_dataset.py +0 -0
  89. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/ldm.py +0 -0
  90. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py +0 -0
  91. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/__init__.py +0 -0
  92. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/__init__.py +0 -0
  93. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py +0 -0
  94. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/metric.py +0 -0
  95. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/content_objects/workspace_setting.py +0 -0
  96. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/__init__.py +0 -0
  97. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/graph.py +0 -0
  98. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/user_data_filter.py +0 -0
  99. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/entity_model/workspace.py +0 -0
  100. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/catalog/workspace/model_container.py +0 -0
  101. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/__init__.py +0 -0
  102. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/clone.py +0 -0
  103. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/constants.py +0 -0
  104. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/deploy.py +0 -0
  105. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/gdc_core.py +0 -0
  106. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/package.json +0 -0
  107. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/cli/utils.py +0 -0
  108. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/client.py +0 -0
  109. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/__init__.py +0 -0
  110. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/model/__init__.py +0 -0
  111. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/model/attribute.py +0 -0
  112. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/model/base.py +0 -0
  113. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/model/filter.py +0 -0
  114. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/model/metric.py +0 -0
  115. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/compute/service.py +0 -0
  116. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/config.py +0 -0
  117. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/py.typed +0 -0
  118. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/sdk.py +0 -0
  119. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/support.py +0 -0
  120. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/type_converter.py +0 -0
  121. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/utils.py +0 -0
  122. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk/visualization.py +0 -0
  123. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk.egg-info/SOURCES.txt +0 -0
  124. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk.egg-info/dependency_links.txt +0 -0
  125. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/gooddata_sdk.egg-info/top_level.txt +0 -0
  126. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/setup.cfg +0 -0
  127. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.1.dev1}/tests/test_client.py +0 -0
  128. {gooddata_sdk-1.22.1.dev3 → gooddata_sdk-1.23.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.22.1.dev3
3
+ Version: 1.23.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.22.1.dev3
8
+ Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.23.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.22.1.dev3
26
+ Requires-Dist: gooddata-api-client~=1.23.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.22.1.dev3) for more details.
50
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.23.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.22.1.dev3) for more details.
16
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.23.1.dev1) for more details.
17
17
 
18
18
  ## Requirements
19
19
 
@@ -56,6 +56,7 @@ from gooddata_sdk.catalog.depends_on import CatalogDependsOn, CatalogDependsOnDa
56
56
  from gooddata_sdk.catalog.entity import (
57
57
  AttrCatalogEntity,
58
58
  BasicCredentials,
59
+ KeyPairCredentials,
59
60
  TokenCredentialsFromEnvVar,
60
61
  TokenCredentialsFromFile,
61
62
  )
@@ -97,8 +97,6 @@ class CatalogDeclarativeDataSource(Base):
97
97
  type: str = attr.field(validator=value_in_allowed)
98
98
  url: Optional[str] = None
99
99
  schema: str
100
- enable_caching: Optional[bool] = None
101
- cache_path: Optional[List[str]] = None
102
100
  cache_strategy: Optional[str] = None
103
101
  username: Optional[str] = None
104
102
  parameters: Optional[List[CatalogParameter]] = None
@@ -109,6 +107,8 @@ class CatalogDeclarativeDataSource(Base):
109
107
  self,
110
108
  password: Optional[str] = None,
111
109
  token: Optional[str] = None,
110
+ private_key: Optional[str] = None,
111
+ private_key_passphrase: Optional[str] = None,
112
112
  ) -> TestDefinitionRequest:
113
113
  kwargs: dict[str, Any] = {"schema": self.schema}
114
114
  if password is not None:
@@ -117,6 +117,10 @@ class CatalogDeclarativeDataSource(Base):
117
117
  kwargs["token"] = token
118
118
  if self.username is not None:
119
119
  kwargs["username"] = self.username
120
+ if private_key is not None:
121
+ kwargs["private_key"] = private_key
122
+ if private_key_passphrase is not None:
123
+ kwargs["private_key_passphrase"] = private_key
120
124
  return TestDefinitionRequest(type=self.type, url=self.url, **kwargs)
121
125
 
122
126
  @staticmethod
@@ -129,12 +133,22 @@ class CatalogDeclarativeDataSource(Base):
129
133
  create_directory(data_source_folder)
130
134
  return data_source_folder
131
135
 
132
- def to_api(self, password: Optional[str] = None, token: Optional[str] = None) -> DeclarativeDataSource:
136
+ def to_api(
137
+ self,
138
+ password: Optional[str] = None,
139
+ token: Optional[str] = None,
140
+ private_key: Optional[str] = None,
141
+ private_key_passphrase: Optional[str] = None,
142
+ ) -> DeclarativeDataSource:
133
143
  dictionary = self._get_snake_dict()
134
144
  if password is not None:
135
145
  dictionary["password"] = password
136
146
  if token is not None:
137
147
  dictionary["token"] = token
148
+ if private_key is not None:
149
+ dictionary["private_key"] = private_key
150
+ if private_key_passphrase is not None:
151
+ dictionary["private_key_passphrase"] = private_key_passphrase
138
152
  return self.client_class().from_dict(dictionary)
139
153
 
140
154
  def store_to_disk(self, data_sources_folder: Path) -> None:
@@ -13,7 +13,13 @@ from gooddata_api_client.model.json_api_data_source_patch_attributes import Json
13
13
  from gooddata_api_client.model.json_api_data_source_patch_document import JsonApiDataSourcePatchDocument
14
14
 
15
15
  from gooddata_sdk.catalog.base import Base, value_in_allowed
16
- from gooddata_sdk.catalog.entity import BasicCredentials, Credentials, TokenCredentials, TokenCredentialsFromFile
16
+ from gooddata_sdk.catalog.entity import (
17
+ BasicCredentials,
18
+ Credentials,
19
+ KeyPairCredentials,
20
+ TokenCredentials,
21
+ TokenCredentialsFromFile,
22
+ )
17
23
 
18
24
  U = TypeVar("U", bound="CatalogDataSourceBase")
19
25
 
@@ -29,11 +35,10 @@ class CatalogDataSourceBase(Base):
29
35
  BasicCredentials,
30
36
  TokenCredentials,
31
37
  TokenCredentialsFromFile,
38
+ KeyPairCredentials,
32
39
  ]
33
40
  _DELIMITER: ClassVar[str] = "&"
34
41
  _ATTRIBUTES: ClassVar[List[str]] = [
35
- "enable_caching",
36
- "cache_path",
37
42
  "cache_strategy",
38
43
  "url",
39
44
  "parameters",
@@ -47,8 +52,6 @@ class CatalogDataSourceBase(Base):
47
52
  type: str = attr.field()
48
53
  schema: str
49
54
  url: Optional[str] = None
50
- enable_caching: Optional[bool] = None
51
- cache_path: Optional[List[str]] = None
52
55
  cache_strategy: Optional[str] = None
53
56
  parameters: Optional[List[Dict[str, str]]] = None
54
57
  decoded_parameters: Optional[List[Dict[str, str]]] = None
@@ -91,8 +94,6 @@ class CatalogDataSourceBase(Base):
91
94
  and self.name == other.name
92
95
  and self.type == other.type
93
96
  and self.schema == other.schema
94
- and self.enable_caching == other.enable_caching
95
- and self.cache_path == other.cache_path
96
97
  and self.parameters == other.parameters
97
98
  )
98
99
 
@@ -118,6 +118,8 @@ class Credentials(Base):
118
118
  TOKEN_KEY: ClassVar[str] = "token"
119
119
  USER_KEY: ClassVar[str] = "username"
120
120
  PASSWORD_KEY: ClassVar[str] = "password"
121
+ PRIVATE_KEY: ClassVar[str] = "private_key"
122
+ PRIVATE_KEY_PASSPHRASE: ClassVar[str] = "private_key_passphrase"
121
123
 
122
124
  def to_api_args(self) -> dict[str, Any]:
123
125
  return attr.asdict(self)
@@ -228,3 +230,24 @@ class BasicCredentials(Credentials):
228
230
  # You have to fill it to keep it or update it
229
231
  password="",
230
232
  )
233
+
234
+
235
+ @attr.s(auto_attribs=True, kw_only=True)
236
+ class KeyPairCredentials(Credentials):
237
+ username: str
238
+ private_key: str = attr.field(repr=lambda value: "***")
239
+ private_key_passphrase: Optional[str] = attr.field(repr=lambda value: "***", default=None)
240
+
241
+ @classmethod
242
+ def is_part_of_api(cls, entity: dict[str, Any]) -> bool:
243
+ return cls.USER_KEY in entity and cls.PRIVATE_KEY in entity
244
+
245
+ @classmethod
246
+ def from_api(cls, attributes: dict[str, Any]) -> KeyPairCredentials:
247
+ # Credentials are not returned for security reasons
248
+ return cls(
249
+ username=attributes[cls.USER_KEY],
250
+ # Private key is not returned from API (security)
251
+ # You have to fill it to keep it or update it
252
+ private_key="",
253
+ )
@@ -1,11 +1,11 @@
1
1
  # (C) 2023 GoodData Corporation
2
2
  import time
3
3
  from pathlib import Path
4
- from typing import Callable, Optional, Tuple, Union
4
+ from typing import Any, Callable, Dict, Optional, Tuple, Union
5
5
 
6
6
  from gooddata_api_client.exceptions import NotFoundException
7
- from gooddata_api_client.model.pdf_export_request import PdfExportRequest
8
7
  from gooddata_api_client.model.tabular_export_request import TabularExportRequest
8
+ from gooddata_api_client.model.visual_export_request import VisualExportRequest
9
9
 
10
10
  from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
11
11
  from gooddata_sdk.catalog.export.request import (
@@ -106,7 +106,7 @@ class ExportService(CatalogServiceBase):
106
106
 
107
107
  @staticmethod
108
108
  def _create_export(
109
- workspace_id: str, request: Union[PdfExportRequest, TabularExportRequest], create_func: Callable
109
+ workspace_id: str, request: Union[VisualExportRequest, TabularExportRequest], create_func: Callable
110
110
  ) -> str:
111
111
  """
112
112
  Creates an export of the requested type (PDF or Tabular) in the specified Workspace.
@@ -145,7 +145,7 @@ class ExportService(CatalogServiceBase):
145
145
  def _export_common(
146
146
  self,
147
147
  workspace_id: str,
148
- request: Union[PdfExportRequest, TabularExportRequest],
148
+ request: Union[VisualExportRequest, TabularExportRequest],
149
149
  file_path: Path,
150
150
  create_func: Callable,
151
151
  get_func: Callable,
@@ -189,6 +189,7 @@ class ExportService(CatalogServiceBase):
189
189
  timeout: float = 60.0,
190
190
  retry: float = 0.2,
191
191
  max_retry: float = 5.0,
192
+ metadata: Optional[Dict[str, Any]] = None,
192
193
  ) -> None:
193
194
  """
194
195
  Export a PDF of the specified GoodData Dashboard and save it to the specified file path.
@@ -200,18 +201,25 @@ class ExportService(CatalogServiceBase):
200
201
  file_name (str):
201
202
  The name of the PDF file (excluding the file extension).
202
203
  store_path (Union[str, Path], optional):
203
- The path to save the exported PDF. Defaults to the current directory.
204
+ The path to save the exported PDF.
205
+ Defaults to the current directory.
204
206
  timeout (float, optional):
205
- The maximum amount of time (in seconds) to wait for the server to process the export. Defaults to 60.0.
207
+ The maximum amount of time (in seconds) to wait for the server to process the export.
208
+ Defaults to 60.0.
206
209
  retry (float, optional):
207
- Initial wait time (in seconds) before retrying to get the exported content. Defaults to 0.2.
210
+ Initial wait time (in seconds) before retrying to get the exported content.
211
+ Defaults to 0.2.
208
212
  max_retry (float, optional):
209
- The maximum retry wait time (in seconds). Defaults to 5.0.
213
+ The maximum retry wait time (in seconds).
214
+ Defaults to 5.0.
215
+ metadata (Dict[str, Any]):
216
+ Specify the metadata for the export.
217
+ Specific metadata can override filtering.
210
218
  """
211
219
  if not self._dashboard_id_exists(workspace_id, dashboard_id):
212
220
  raise ValueError(f"Dashboard id '{dashboard_id}' does not exist for workspace '{workspace_id}'.")
213
221
  store_path = store_path if isinstance(store_path, Path) else Path(store_path)
214
- request = PdfExportRequest(dashboard_id=dashboard_id, file_name=file_name)
222
+ request = VisualExportRequest(dashboard_id=dashboard_id, file_name=file_name, metadata=metadata)
215
223
  file_path = store_path / f"{file_name}.pdf"
216
224
  create_func = self._actions_api.create_pdf_export
217
225
  get_func = self._actions_api.get_exported_file
@@ -374,8 +374,9 @@ class CatalogWorkspaceContentService(CatalogServiceBase):
374
374
  """
375
375
  if exclude is None:
376
376
  exclude = []
377
- return CatalogDeclarativeAnalytics.from_api(
378
- self._layout_api.get_analytics_model(workspace_id=workspace_id, exclude=exclude)
377
+ return CatalogDeclarativeAnalytics.from_dict(
378
+ self._layout_api.get_analytics_model(workspace_id=workspace_id, exclude=exclude).to_dict(camel_case=False),
379
+ camel_case=False,
379
380
  )
380
381
 
381
382
  def put_declarative_analytics_model(self, workspace_id: str, analytics_model: CatalogDeclarativeAnalytics) -> None:
@@ -239,7 +239,9 @@ class CatalogWorkspaceService(CatalogServiceBase):
239
239
  """
240
240
  if exclude is None:
241
241
  exclude = []
242
- return CatalogDeclarativeWorkspaces.from_api(self._layout_api.get_workspaces_layout(exclude=exclude))
242
+ return CatalogDeclarativeWorkspaces.from_dict(
243
+ self._layout_api.get_workspaces_layout(exclude=exclude).to_dict(camel_case=False), camel_case=False
244
+ )
243
245
 
244
246
  def put_declarative_workspaces(self, workspace: CatalogDeclarativeWorkspaces) -> None:
245
247
  """Set layout of all workspaces and their hierarchy. Parameter is in declarative form.
@@ -313,8 +315,9 @@ class CatalogWorkspaceService(CatalogServiceBase):
313
315
  """
314
316
  if exclude is None:
315
317
  exclude = []
316
- return CatalogDeclarativeWorkspaceModel.from_api(
317
- self._layout_api.get_workspace_layout(workspace_id=workspace_id, exclude=exclude)
318
+ return CatalogDeclarativeWorkspaceModel.from_dict(
319
+ self._layout_api.get_workspace_layout(workspace_id=workspace_id, exclude=exclude).to_dict(camel_case=False),
320
+ camel_case=False,
318
321
  )
319
322
 
320
323
  def put_declarative_workspace(
@@ -33,7 +33,7 @@ class TotalDefinition:
33
33
  """total's local identifier"""
34
34
 
35
35
  aggregation: str
36
- """aggregation function; case insensitive; one of SUM, MIN, MAX, MED, AVG"""
36
+ """aggregation function; case insensitive; one of SUM, MIN, MAX, MED, AVG, NAT"""
37
37
 
38
38
  metric_local_id: str
39
39
  """local identifier of the measure to calculate total for"""
@@ -38,7 +38,7 @@ from gooddata_sdk.visualization import (
38
38
  logger = logging.getLogger(__name__)
39
39
 
40
40
  _MEASURE_GROUP_IDENTIFIER = "measureGroup"
41
- _TOTAL_ORDER = ["SUM", "MAX", "MIN", "AVG", "MED"]
41
+ _TOTAL_ORDER = ["SUM", "MAX", "MIN", "AVG", "MED", "NAT"]
42
42
 
43
43
  _TABLE_ROW_BATCH_SIZE = 512
44
44
  """
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gooddata-sdk
3
- Version: 1.22.1.dev3
3
+ Version: 1.23.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.22.1.dev3
8
+ Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.23.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.22.1.dev3
26
+ Requires-Dist: gooddata-api-client~=1.23.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.22.1.dev3) for more details.
50
+ See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.23.1.dev1) for more details.
51
51
 
52
52
  ## Requirements
53
53
 
@@ -1,4 +1,4 @@
1
- gooddata-api-client~=1.22.1.dev3
1
+ gooddata-api-client~=1.23.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.22.1.dev3",
10
+ "gooddata-api-client~=1.23.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.22.1.dev3",
25
+ version="1.23.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.22.1.dev3",
39
+ "Documentation": "https://www.gooddata.com/docs/python-sdk/1.23.1.dev1",
40
40
  "Source": "https://github.com/gooddata/gooddata-python-sdk",
41
41
  },
42
42
  classifiers=[