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