gooddata-sdk 1.28.1.dev4__tar.gz → 1.28.1.dev6__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.
- {gooddata_sdk-1.28.1.dev4/gooddata_sdk.egg-info → gooddata_sdk-1.28.1.dev6}/PKG-INFO +4 -4
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/README.md +1 -1
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/__init__.py +4 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/export/request.py +1 -1
- gooddata_sdk-1.28.1.dev6/gooddata_sdk/catalog/user/entity_model/api_token.py +12 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/service.py +26 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py +35 -41
- gooddata_sdk-1.28.1.dev6/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/base.py +41 -0
- gooddata_sdk-1.28.1.dev6/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/export_definition.py +43 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/visualization.py +42 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6/gooddata_sdk.egg-info}/PKG-INFO +4 -4
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk.egg-info/SOURCES.txt +3 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk.egg-info/requires.txt +1 -1
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/setup.py +3 -3
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/LICENSE.txt +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/MANIFEST.in +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/bin/gdc +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/_version.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/base.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/catalog_service_base.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/requests/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/requests/ldm_request.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/requests/scan_model_request.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/requests/scan_sql_request.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/responses/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/responses/scan_sql_response.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/action_model/sql_column.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/declarative_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/declarative_model/data_source.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/column.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/pdm.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/declarative_model/physical_model/table.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/entity_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/entity_model/content_objects/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/entity_model/content_objects/table.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/entity_model/data_source.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/validation/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/validation/data_source.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/depends_on.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/entity.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/export/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/export/service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/filter_by.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/identifier.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/entity_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/entity_model/directive.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/entity_model/jwk.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/entity_model/organization.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/entity_model/setting.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/parameter.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/declarative_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/declarative_model/dashboard_assignees.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/declarative_model/dashboard_permissions.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/declarative_model/manage_dashboard_permissions.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/declarative_model/permission.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/rule.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/setting.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/types.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/declarative_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/declarative_model/user.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/declarative_model/user_and_user_groups.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/declarative_model/user_group.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/entity_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/entity_model/user.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/entity_model/user_group.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/management_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/management_model/management.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/validate_by_item.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/content_service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/data_filter_references.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset/dataset.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/dataset_extensions/dataset_extension.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/date_dataset/date_dataset.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/ldm.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/content_objects/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/content_objects/dataset.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/content_objects/metric.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/content_objects/workspace_setting.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/graph_objects/graph.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/user_data_filter.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/entity_model/workspace.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/model_container.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/clone.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/constants.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/deploy.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/gdc_core.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/package.json +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/cli/utils.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/client.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/compute_to_sdk_converter.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/__init__.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/attribute.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/base.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/execution.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/filter.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/metric.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/service.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/config.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/py.typed +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/sdk.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/support.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/table.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/type_converter.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/utils.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk.egg-info/dependency_links.txt +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk.egg-info/top_level.txt +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/setup.cfg +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/tests/test_client.py +0 -0
- {gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/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.28.1.
|
|
3
|
+
Version: 1.28.1.dev6
|
|
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.28.1.
|
|
8
|
+
Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.28.1.dev6
|
|
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
|
|
@@ -22,7 +22,7 @@ Classifier: Typing :: Typed
|
|
|
22
22
|
Requires-Python: >=3.9.0
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
24
|
License-File: LICENSE.txt
|
|
25
|
-
Requires-Dist: gooddata-api-client~=1.28.1.
|
|
25
|
+
Requires-Dist: gooddata-api-client~=1.28.1.dev6
|
|
26
26
|
Requires-Dist: python-dateutil>=2.5.3
|
|
27
27
|
Requires-Dist: pyyaml>=5.1
|
|
28
28
|
Requires-Dist: attrs<=24.2.0,>=21.4.0
|
|
@@ -46,7 +46,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
|
|
|
46
46
|
* Compute Service
|
|
47
47
|
* Table Service
|
|
48
48
|
|
|
49
|
-
See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.28.1.
|
|
49
|
+
See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.28.1.dev6) for more details.
|
|
50
50
|
|
|
51
51
|
## Requirements
|
|
52
52
|
|
|
@@ -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.28.1.
|
|
16
|
+
See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.28.1.dev6) for more details.
|
|
17
17
|
|
|
18
18
|
## Requirements
|
|
19
19
|
|
|
@@ -135,6 +135,10 @@ from gooddata_sdk.catalog.workspace.declarative_model.workspace.analytics_model.
|
|
|
135
135
|
CatalogDeclarativeAnalytics,
|
|
136
136
|
CatalogDeclarativeMetric,
|
|
137
137
|
)
|
|
138
|
+
from gooddata_sdk.catalog.workspace.declarative_model.workspace.analytics_model.export_definition import (
|
|
139
|
+
CatalogDeclarativeExportDefinition,
|
|
140
|
+
CatalogDeclarativeExportDefinitionRequestPayload,
|
|
141
|
+
)
|
|
138
142
|
from gooddata_sdk.catalog.workspace.declarative_model.workspace.logical_model.data_filter_references import (
|
|
139
143
|
CatalogDeclarativeWorkspaceDataFilterReferences,
|
|
140
144
|
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# (C) 2024 GoodData Corporation
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from attrs import define
|
|
5
|
+
|
|
6
|
+
from gooddata_sdk.catalog.base import Base
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@define(auto_attribs=True, kw_only=True)
|
|
10
|
+
class CatalogApiToken(Base):
|
|
11
|
+
id: str
|
|
12
|
+
bearer_token: Optional[str] = None
|
|
@@ -5,11 +5,14 @@ import functools
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
|
|
7
7
|
from gooddata_api_client.exceptions import NotFoundException
|
|
8
|
+
from gooddata_api_client.model.json_api_api_token_in import JsonApiApiTokenIn
|
|
9
|
+
from gooddata_api_client.model.json_api_api_token_in_document import JsonApiApiTokenInDocument
|
|
8
10
|
|
|
9
11
|
from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
|
|
10
12
|
from gooddata_sdk.catalog.user.declarative_model.user import CatalogDeclarativeUsers
|
|
11
13
|
from gooddata_sdk.catalog.user.declarative_model.user_and_user_groups import CatalogDeclarativeUsersUserGroups
|
|
12
14
|
from gooddata_sdk.catalog.user.declarative_model.user_group import CatalogDeclarativeUserGroups
|
|
15
|
+
from gooddata_sdk.catalog.user.entity_model.api_token import CatalogApiToken
|
|
13
16
|
from gooddata_sdk.catalog.user.entity_model.user import CatalogUser, CatalogUserDocument
|
|
14
17
|
from gooddata_sdk.catalog.user.entity_model.user_group import CatalogUserGroup, CatalogUserGroupDocument
|
|
15
18
|
from gooddata_sdk.catalog.user.management_model.management import (
|
|
@@ -391,3 +394,26 @@ class CatalogUserService(CatalogServiceBase):
|
|
|
391
394
|
|
|
392
395
|
def revoke_permissions_bulk(self, permissions_assignment: CatalogPermissionsAssignment) -> None:
|
|
393
396
|
self._user_management_api.revoke_permissions(permissions_assignment.to_api())
|
|
397
|
+
|
|
398
|
+
def list_user_api_tokens(self, user_id: str) -> list[CatalogApiToken]:
|
|
399
|
+
get_api_tokens = functools.partial(
|
|
400
|
+
self._entities_api.get_all_entities_api_tokens,
|
|
401
|
+
user_id,
|
|
402
|
+
_check_return_type=False,
|
|
403
|
+
)
|
|
404
|
+
api_tokens = load_all_entities(get_api_tokens)
|
|
405
|
+
return [CatalogApiToken(id=v["id"]) for v in api_tokens.data]
|
|
406
|
+
|
|
407
|
+
def create_user_api_token(self, user_id: str, api_token_id: str) -> CatalogApiToken:
|
|
408
|
+
document = JsonApiApiTokenInDocument(data=JsonApiApiTokenIn(id=api_token_id, type="apiToken"))
|
|
409
|
+
api_token = self._entities_api.create_entity_api_tokens(user_id, document, _check_return_type=False)
|
|
410
|
+
v = api_token.data
|
|
411
|
+
return CatalogApiToken(id=v["id"], bearer_token=v.get("attributes", {}).get("bearerToken"))
|
|
412
|
+
|
|
413
|
+
def get_user_api_token(self, user_id: str, api_token_id: str) -> CatalogApiToken:
|
|
414
|
+
api_token = self._entities_api.get_entity_api_tokens(user_id, api_token_id, _check_return_type=False)
|
|
415
|
+
v = api_token.data
|
|
416
|
+
return CatalogApiToken(id=v["id"])
|
|
417
|
+
|
|
418
|
+
def delete_user_api_token(self, user_id: str, api_token_id: str) -> None:
|
|
419
|
+
self._entities_api.delete_entity_api_tokens(user_id, api_token_id)
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Any, Optional,
|
|
5
|
+
from typing import Any, Optional, Union
|
|
6
6
|
|
|
7
7
|
import attr
|
|
8
|
+
from attrs import define
|
|
8
9
|
from cattrs import global_converter, structure
|
|
9
10
|
from gooddata_api_client.model.declarative_analytical_dashboard import DeclarativeAnalyticalDashboard
|
|
10
11
|
from gooddata_api_client.model.declarative_analytical_dashboard_extension import DeclarativeAnalyticalDashboardExtension
|
|
@@ -17,14 +18,19 @@ from gooddata_api_client.model.declarative_metric import DeclarativeMetric
|
|
|
17
18
|
from gooddata_api_client.model.declarative_visualization_object import DeclarativeVisualizationObject
|
|
18
19
|
|
|
19
20
|
from gooddata_sdk.catalog.base import Base
|
|
20
|
-
from gooddata_sdk.catalog.identifier import CatalogUserIdentifier
|
|
21
21
|
from gooddata_sdk.catalog.permission.declarative_model.permission import (
|
|
22
22
|
CatalogDeclarativeDashboardPermissionsForAssignee,
|
|
23
23
|
CatalogDeclarativeDashboardPermissionsForAssigneeRule,
|
|
24
24
|
)
|
|
25
|
-
from gooddata_sdk.
|
|
25
|
+
from gooddata_sdk.catalog.workspace.declarative_model.workspace.analytics_model.base import (
|
|
26
|
+
CatalogAnalyticsBase,
|
|
27
|
+
CatalogAnalyticsObjectBase,
|
|
28
|
+
)
|
|
29
|
+
from gooddata_sdk.catalog.workspace.declarative_model.workspace.analytics_model.export_definition import (
|
|
30
|
+
CatalogDeclarativeExportDefinition,
|
|
31
|
+
)
|
|
32
|
+
from gooddata_sdk.utils import create_directory, get_sorted_yaml_files
|
|
26
33
|
|
|
27
|
-
T = TypeVar("T", bound="CatalogAnalyticsObjectBase")
|
|
28
34
|
AnalyticsObjects = Union[
|
|
29
35
|
DeclarativeAnalyticalDashboard,
|
|
30
36
|
DeclarativeDashboardPlugin,
|
|
@@ -41,6 +47,7 @@ LAYOUT_FILTER_CONTEXTS_DIR = "filter_contexts"
|
|
|
41
47
|
LAYOUT_METRICS_DIR = "metrics"
|
|
42
48
|
LAYOUT_VISUALIZATION_OBJECTS_DIR = "visualization_objects"
|
|
43
49
|
ATTRIBUTE_HIERARCHY_OBJECTS_DIR = "attribute_hierarchy_objects"
|
|
50
|
+
EXPORT_DEFINITION_DIR = "export_definitions"
|
|
44
51
|
|
|
45
52
|
|
|
46
53
|
@attr.s(auto_attribs=True, kw_only=True)
|
|
@@ -70,7 +77,7 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
70
77
|
filter_contexts: list[CatalogDeclarativeFilterContext] = attr.field(factory=list)
|
|
71
78
|
metrics: list[CatalogDeclarativeMetric] = attr.field(factory=list)
|
|
72
79
|
visualization_objects: list[CatalogDeclarativeVisualizationObject] = attr.field(factory=list)
|
|
73
|
-
export_definitions: list[
|
|
80
|
+
export_definitions: list[CatalogDeclarativeExportDefinition] = attr.field(factory=list)
|
|
74
81
|
|
|
75
82
|
@staticmethod
|
|
76
83
|
def client_class() -> type[DeclarativeAnalyticsLayer]:
|
|
@@ -124,6 +131,12 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
124
131
|
create_directory(folder)
|
|
125
132
|
return folder
|
|
126
133
|
|
|
134
|
+
@staticmethod
|
|
135
|
+
def get_export_definition_dif(analytics_model_folder: Path) -> Path:
|
|
136
|
+
folder = analytics_model_folder / EXPORT_DEFINITION_DIR
|
|
137
|
+
create_directory(folder)
|
|
138
|
+
return folder
|
|
139
|
+
|
|
127
140
|
def store_to_disk(self, workspace_folder: Path) -> None:
|
|
128
141
|
analytics_model_folder = self.get_analytics_model_folder(workspace_folder)
|
|
129
142
|
|
|
@@ -134,6 +147,7 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
134
147
|
metrics_folder = self.get_metrics_folder(analytics_model_folder)
|
|
135
148
|
visualization_objects_folder = self.get_visualization_objects_folder(analytics_model_folder)
|
|
136
149
|
attribute_hierarchy_folder = self.get_attribute_hierarchy_folder(analytics_model_folder)
|
|
150
|
+
export_definition_folder = self.get_export_definition_dif(analytical_dashboards_folder)
|
|
137
151
|
|
|
138
152
|
for analytical_dashboard in self.analytical_dashboards:
|
|
139
153
|
analytical_dashboard.store_to_disk(analytical_dashboards_folder)
|
|
@@ -156,6 +170,9 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
156
170
|
for attribute_hierarchy in self.attribute_hierarchies:
|
|
157
171
|
attribute_hierarchy.store_to_disk(attribute_hierarchy_folder)
|
|
158
172
|
|
|
173
|
+
for export_definition in self.export_definitions:
|
|
174
|
+
export_definition.store_to_disk(export_definition_folder)
|
|
175
|
+
|
|
159
176
|
@classmethod
|
|
160
177
|
def load_from_disk(cls, workspace_folder: Path) -> CatalogDeclarativeAnalyticsLayer:
|
|
161
178
|
analytics_model_folder = cls.get_analytics_model_folder(workspace_folder)
|
|
@@ -166,6 +183,7 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
166
183
|
metrics_folder = cls.get_metrics_folder(analytics_model_folder)
|
|
167
184
|
visualization_objects_folder = cls.get_visualization_objects_folder(analytics_model_folder)
|
|
168
185
|
attribute_hierarchy_folder = cls.get_attribute_hierarchy_folder(analytics_model_folder)
|
|
186
|
+
export_definition_folder = cls.get_export_definition_dif(analytical_dashboards_folder)
|
|
169
187
|
|
|
170
188
|
analytical_dashboard_files = get_sorted_yaml_files(analytical_dashboards_folder)
|
|
171
189
|
analytical_dashboard_extension_files = get_sorted_yaml_files(analytical_dashboard_extensions_folder)
|
|
@@ -174,6 +192,7 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
174
192
|
metric_files = get_sorted_yaml_files(metrics_folder)
|
|
175
193
|
visualization_object_files = get_sorted_yaml_files(visualization_objects_folder)
|
|
176
194
|
attribute_hierarchy_files = get_sorted_yaml_files(attribute_hierarchy_folder)
|
|
195
|
+
export_definition_files = get_sorted_yaml_files(export_definition_folder)
|
|
177
196
|
|
|
178
197
|
analytical_dashboards = [
|
|
179
198
|
CatalogDeclarativeAnalyticalDashboard.load_from_disk(analytical_dashboard_file)
|
|
@@ -200,6 +219,10 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
200
219
|
CatalogDeclarativeAttributeHierarchy.load_from_disk(attribute_hierarchy_file)
|
|
201
220
|
for attribute_hierarchy_file in attribute_hierarchy_files
|
|
202
221
|
]
|
|
222
|
+
export_definitions = [
|
|
223
|
+
CatalogDeclarativeExportDefinition.load_from_disk(export_definition_file)
|
|
224
|
+
for export_definition_file in export_definition_files
|
|
225
|
+
]
|
|
203
226
|
return cls(
|
|
204
227
|
analytical_dashboards=analytical_dashboards,
|
|
205
228
|
analytical_dashboard_extensions=analytical_dashboard_extensions,
|
|
@@ -208,41 +231,12 @@ class CatalogDeclarativeAnalyticsLayer(Base):
|
|
|
208
231
|
filter_contexts=filter_contexts,
|
|
209
232
|
metrics=metrics,
|
|
210
233
|
visualization_objects=visualization_objects,
|
|
234
|
+
export_definitions=export_definitions,
|
|
211
235
|
)
|
|
212
236
|
|
|
213
237
|
|
|
214
|
-
@
|
|
215
|
-
class
|
|
216
|
-
id: str
|
|
217
|
-
|
|
218
|
-
def store_to_disk(self, analytics_folder: Path) -> None:
|
|
219
|
-
analytics_file = analytics_folder / f"{self.id}.yaml"
|
|
220
|
-
write_layout_to_file(analytics_file, self.to_api().to_dict(camel_case=True))
|
|
221
|
-
|
|
222
|
-
@classmethod
|
|
223
|
-
def load_from_disk(cls: type[T], analytics_file: Path) -> T:
|
|
224
|
-
analytics_layout = read_layout_from_file(analytics_file)
|
|
225
|
-
return cls.from_dict(analytics_layout)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
@attr.s(auto_attribs=True, kw_only=True)
|
|
229
|
-
class CatalogAnalyticsBase(CatalogAnalyticsObjectBase):
|
|
230
|
-
title: str
|
|
231
|
-
content: dict[str, Any]
|
|
232
|
-
description: Optional[str] = None
|
|
233
|
-
tags: Optional[list[str]] = None
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
@attr.s(auto_attribs=True, kw_only=True)
|
|
237
|
-
class CatalogAnalyticsBaseMeta(CatalogAnalyticsBase):
|
|
238
|
-
created_at: Optional[str] = None
|
|
239
|
-
created_by: Optional[CatalogUserIdentifier] = None
|
|
240
|
-
modified_at: Optional[str] = None
|
|
241
|
-
modified_by: Optional[CatalogUserIdentifier] = None
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
@attr.s(auto_attribs=True, kw_only=True)
|
|
245
|
-
class CatalogDeclarativeAnalyticalDashboard(CatalogAnalyticsBaseMeta):
|
|
238
|
+
@define(auto_attribs=True, kw_only=True)
|
|
239
|
+
class CatalogDeclarativeAnalyticalDashboard(CatalogAnalyticsBase):
|
|
246
240
|
permissions: Optional[
|
|
247
241
|
list[
|
|
248
242
|
Union[
|
|
@@ -274,7 +268,7 @@ global_converter.register_structure_hook(
|
|
|
274
268
|
|
|
275
269
|
|
|
276
270
|
@attr.s(auto_attribs=True, kw_only=True)
|
|
277
|
-
class CatalogDeclarativeDashboardPlugin(
|
|
271
|
+
class CatalogDeclarativeDashboardPlugin(CatalogAnalyticsBase):
|
|
278
272
|
@staticmethod
|
|
279
273
|
def client_class() -> type[DeclarativeDashboardPlugin]:
|
|
280
274
|
return DeclarativeDashboardPlugin
|
|
@@ -299,21 +293,21 @@ class CatalogDeclarativeFilterContext(CatalogAnalyticsBase):
|
|
|
299
293
|
|
|
300
294
|
|
|
301
295
|
@attr.s(auto_attribs=True, kw_only=True)
|
|
302
|
-
class CatalogDeclarativeMetric(
|
|
296
|
+
class CatalogDeclarativeMetric(CatalogAnalyticsBase):
|
|
303
297
|
@staticmethod
|
|
304
298
|
def client_class() -> type[DeclarativeMetric]:
|
|
305
299
|
return DeclarativeMetric
|
|
306
300
|
|
|
307
301
|
|
|
308
302
|
@attr.s(auto_attribs=True, kw_only=True)
|
|
309
|
-
class CatalogDeclarativeVisualizationObject(
|
|
303
|
+
class CatalogDeclarativeVisualizationObject(CatalogAnalyticsBase):
|
|
310
304
|
@staticmethod
|
|
311
305
|
def client_class() -> type[DeclarativeVisualizationObject]:
|
|
312
306
|
return DeclarativeVisualizationObject
|
|
313
307
|
|
|
314
308
|
|
|
315
309
|
@attr.s(auto_attribs=True, kw_only=True)
|
|
316
|
-
class CatalogDeclarativeAttributeHierarchy(
|
|
310
|
+
class CatalogDeclarativeAttributeHierarchy(CatalogAnalyticsBase):
|
|
317
311
|
@staticmethod
|
|
318
312
|
def client_class() -> type[DeclarativeAttributeHierarchy]:
|
|
319
313
|
return DeclarativeAttributeHierarchy
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# (C) 2024 GoodData Corporation
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import Any, Optional, TypeVar
|
|
4
|
+
|
|
5
|
+
from attrs import define
|
|
6
|
+
|
|
7
|
+
from gooddata_sdk.catalog.base import Base
|
|
8
|
+
from gooddata_sdk.catalog.identifier import CatalogUserIdentifier
|
|
9
|
+
from gooddata_sdk.utils import read_layout_from_file, write_layout_to_file
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="CatalogAnalyticsObjectBase")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@define(auto_attribs=True, kw_only=True)
|
|
15
|
+
class CatalogAnalyticsObjectBase(Base):
|
|
16
|
+
id: str
|
|
17
|
+
|
|
18
|
+
def store_to_disk(self, analytics_folder: Path) -> None:
|
|
19
|
+
analytics_file = analytics_folder / f"{self.id}.yaml"
|
|
20
|
+
write_layout_to_file(analytics_file, self.to_api().to_dict(camel_case=True))
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def load_from_disk(cls: type[T], analytics_file: Path) -> T:
|
|
24
|
+
analytics_layout = read_layout_from_file(analytics_file)
|
|
25
|
+
return cls.from_dict(analytics_layout)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@define(auto_attribs=True, kw_only=True)
|
|
29
|
+
class CatalogAnalyticsBaseMeta(CatalogAnalyticsObjectBase):
|
|
30
|
+
created_at: Optional[str] = None
|
|
31
|
+
created_by: Optional[CatalogUserIdentifier] = None
|
|
32
|
+
modified_at: Optional[str] = None
|
|
33
|
+
modified_by: Optional[CatalogUserIdentifier] = None
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@define(auto_attribs=True, kw_only=True)
|
|
37
|
+
class CatalogAnalyticsBase(CatalogAnalyticsBaseMeta):
|
|
38
|
+
title: str
|
|
39
|
+
content: dict[str, Any]
|
|
40
|
+
description: Optional[str] = None
|
|
41
|
+
tags: Optional[list[str]] = None
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# (C) 2024 GoodData Corporation
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from attrs import define
|
|
5
|
+
from gooddata_api_client.model.declarative_export_definition import DeclarativeExportDefinition
|
|
6
|
+
from gooddata_api_client.model.declarative_export_definition_request_payload import (
|
|
7
|
+
DeclarativeExportDefinitionRequestPayload,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from gooddata_sdk import ExportCustomOverride, ExportSettings
|
|
11
|
+
from gooddata_sdk.catalog.base import Base
|
|
12
|
+
from gooddata_sdk.catalog.workspace.declarative_model.workspace.analytics_model.base import CatalogAnalyticsBaseMeta
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@define(auto_attribs=True, kw_only=True)
|
|
16
|
+
class CatalogDeclarativeExportDefinitionRequestPayload(Base):
|
|
17
|
+
custom_override: Optional[ExportCustomOverride] = None
|
|
18
|
+
execution_result: Optional[str] = None
|
|
19
|
+
metadata: Optional[dict] = None
|
|
20
|
+
related_dashboard_id: Optional[str] = None
|
|
21
|
+
settings: Optional[ExportSettings] = None
|
|
22
|
+
visualization_object: Optional[str] = None
|
|
23
|
+
visualization_object_custom_filters: Optional[list[dict]] = None
|
|
24
|
+
file_name: Optional[str] = None
|
|
25
|
+
format: Optional[str] = None
|
|
26
|
+
dashboard_id: Optional[str] = None
|
|
27
|
+
|
|
28
|
+
@staticmethod
|
|
29
|
+
def client_class() -> type[DeclarativeExportDefinitionRequestPayload]:
|
|
30
|
+
return DeclarativeExportDefinitionRequestPayload
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@define(auto_attribs=True, kw_only=True)
|
|
34
|
+
class CatalogDeclarativeExportDefinition(CatalogAnalyticsBaseMeta):
|
|
35
|
+
id: str
|
|
36
|
+
title: str
|
|
37
|
+
request_payload: CatalogDeclarativeExportDefinitionRequestPayload
|
|
38
|
+
description: Optional[str] = None
|
|
39
|
+
tags: Optional[list[str]] = None
|
|
40
|
+
|
|
41
|
+
@staticmethod
|
|
42
|
+
def client_class() -> type[DeclarativeExportDefinition]:
|
|
43
|
+
return DeclarativeExportDefinition
|
|
@@ -440,6 +440,38 @@ class VisualizationFilter:
|
|
|
440
440
|
return repr(self._filter)
|
|
441
441
|
|
|
442
442
|
|
|
443
|
+
class VisualizationAttributeFilterConfig:
|
|
444
|
+
"""
|
|
445
|
+
Represents attribute filter configuration used by a visualization.
|
|
446
|
+
"""
|
|
447
|
+
|
|
448
|
+
def __init__(self, afc: tuple[str, Any]) -> None:
|
|
449
|
+
local_id, data = afc
|
|
450
|
+
self._local_id = local_id
|
|
451
|
+
self._data = data
|
|
452
|
+
|
|
453
|
+
@property
|
|
454
|
+
def local_id(self) -> str:
|
|
455
|
+
return self._local_id
|
|
456
|
+
|
|
457
|
+
@property
|
|
458
|
+
def label_id(self) -> str:
|
|
459
|
+
return self._data["displayAsLabel"]["identifier"]["id"]
|
|
460
|
+
|
|
461
|
+
@property
|
|
462
|
+
def type(self) -> str:
|
|
463
|
+
return self._data["displayAsLabel"]["identifier"]["type"]
|
|
464
|
+
|
|
465
|
+
def __str__(self) -> str:
|
|
466
|
+
return self.__repr__()
|
|
467
|
+
|
|
468
|
+
def __repr__(self) -> str:
|
|
469
|
+
return (
|
|
470
|
+
f"VisualizationAttributeFilterConfig(local_id='{self.local_id}', label_id='{self.label_id}', "
|
|
471
|
+
f"type='{self.type}')"
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
|
|
443
475
|
class VisualizationSortLocator:
|
|
444
476
|
def __init__(self, locator: dict[str, str], locator_type: LocatorItemType) -> None:
|
|
445
477
|
self._locator = locator
|
|
@@ -546,6 +578,7 @@ class Visualization:
|
|
|
546
578
|
side_loads: Optional[SideLoads] = None,
|
|
547
579
|
) -> None:
|
|
548
580
|
self._vo = from_vis_obj
|
|
581
|
+
self._attribute_filter_configs: Optional[list[VisualizationAttributeFilterConfig]] = None
|
|
549
582
|
self._buckets: Optional[list[VisualizationBucket]] = None
|
|
550
583
|
self._filters: Optional[list[VisualizationFilter]] = None
|
|
551
584
|
self._sorts: Optional[list[VisualizationSort]] = None
|
|
@@ -568,6 +601,15 @@ class Visualization:
|
|
|
568
601
|
# Fallback to true for tests, where fixtures were generated without HTTP header activating this feature
|
|
569
602
|
return self._vo["attributes"].get("areRelationsValid", "true")
|
|
570
603
|
|
|
604
|
+
@property
|
|
605
|
+
def attribute_filter_configs(self) -> Optional[list[VisualizationAttributeFilterConfig]]:
|
|
606
|
+
visualization_attribute_filter_configs = safeget(self._vo, ["attributes", "content", "attributeFilterConfigs"])
|
|
607
|
+
if self._attribute_filter_configs is None and visualization_attribute_filter_configs is not None:
|
|
608
|
+
self._attribute_filter_configs = [
|
|
609
|
+
VisualizationAttributeFilterConfig(afc) for afc in visualization_attribute_filter_configs.items()
|
|
610
|
+
]
|
|
611
|
+
return self._attribute_filter_configs
|
|
612
|
+
|
|
571
613
|
@property
|
|
572
614
|
def buckets(self) -> list[VisualizationBucket]:
|
|
573
615
|
if self._buckets is None:
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: gooddata-sdk
|
|
3
|
-
Version: 1.28.1.
|
|
3
|
+
Version: 1.28.1.dev6
|
|
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.28.1.
|
|
8
|
+
Project-URL: Documentation, https://www.gooddata.com/docs/python-sdk/1.28.1.dev6
|
|
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
|
|
@@ -22,7 +22,7 @@ Classifier: Typing :: Typed
|
|
|
22
22
|
Requires-Python: >=3.9.0
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
24
|
License-File: LICENSE.txt
|
|
25
|
-
Requires-Dist: gooddata-api-client~=1.28.1.
|
|
25
|
+
Requires-Dist: gooddata-api-client~=1.28.1.dev6
|
|
26
26
|
Requires-Dist: python-dateutil>=2.5.3
|
|
27
27
|
Requires-Dist: pyyaml>=5.1
|
|
28
28
|
Requires-Dist: attrs<=24.2.0,>=21.4.0
|
|
@@ -46,7 +46,7 @@ At the moment the SDK provides services to inspect and interact with the Semanti
|
|
|
46
46
|
* Compute Service
|
|
47
47
|
* Table Service
|
|
48
48
|
|
|
49
|
-
See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.28.1.
|
|
49
|
+
See [DOCUMENTATION](https://www.gooddata.com/docs/python-sdk/1.28.1.dev6) for more details.
|
|
50
50
|
|
|
51
51
|
## Requirements
|
|
52
52
|
|
|
@@ -77,6 +77,7 @@ gooddata_sdk/catalog/user/declarative_model/user.py
|
|
|
77
77
|
gooddata_sdk/catalog/user/declarative_model/user_and_user_groups.py
|
|
78
78
|
gooddata_sdk/catalog/user/declarative_model/user_group.py
|
|
79
79
|
gooddata_sdk/catalog/user/entity_model/__init__.py
|
|
80
|
+
gooddata_sdk/catalog/user/entity_model/api_token.py
|
|
80
81
|
gooddata_sdk/catalog/user/entity_model/user.py
|
|
81
82
|
gooddata_sdk/catalog/user/entity_model/user_group.py
|
|
82
83
|
gooddata_sdk/catalog/user/management_model/__init__.py
|
|
@@ -90,6 +91,8 @@ gooddata_sdk/catalog/workspace/declarative_model/workspace/__init__.py
|
|
|
90
91
|
gooddata_sdk/catalog/workspace/declarative_model/workspace/workspace.py
|
|
91
92
|
gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/__init__.py
|
|
92
93
|
gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py
|
|
94
|
+
gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/base.py
|
|
95
|
+
gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/export_definition.py
|
|
93
96
|
gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/__init__.py
|
|
94
97
|
gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/data_filter_references.py
|
|
95
98
|
gooddata_sdk/catalog/workspace/declarative_model/workspace/logical_model/ldm.py
|
|
@@ -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.28.1.
|
|
10
|
+
"gooddata-api-client~=1.28.1.dev6",
|
|
11
11
|
"python-dateutil>=2.5.3",
|
|
12
12
|
"pyyaml>=5.1",
|
|
13
13
|
"attrs>=21.4.0,<=24.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.28.1.
|
|
25
|
+
version="1.28.1.dev6",
|
|
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.28.1.
|
|
39
|
+
"Documentation": "https://www.gooddata.com/docs/python-sdk/1.28.1.dev6",
|
|
40
40
|
"Source": "https://github.com/gooddata/gooddata-python-sdk",
|
|
41
41
|
},
|
|
42
42
|
classifiers=[
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/catalog_service_base.py
RENAMED
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/data_source/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/export/__init__.py
RENAMED
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/export/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/organization/service.py
RENAMED
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/permission/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/user/entity_model/user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/validate_by_item.py
RENAMED
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/catalog/workspace/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/__init__.py
RENAMED
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/attribute.py
RENAMED
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk/compute/model/execution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gooddata_sdk-1.28.1.dev4 → gooddata_sdk-1.28.1.dev6}/gooddata_sdk.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|