gooddata-pipelines 1.48.0__tar.gz → 1.48.1.dev2__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.

Potentially problematic release.


This version of gooddata-pipelines might be problematic. Click here for more details.

Files changed (109) hide show
  1. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/PKG-INFO +11 -14
  2. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/README.md +9 -12
  3. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/models/storage.py +4 -1
  4. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/storage/s3_storage.py +19 -4
  5. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/poetry.lock +9 -51
  6. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/pyproject.toml +2 -2
  7. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/.gitignore +0 -0
  8. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/LICENSE.txt +0 -0
  9. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/Makefile +0 -0
  10. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/TODO.md +0 -0
  11. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/__init__.py +0 -0
  12. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/_version.py +0 -0
  13. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/api/__init__.py +0 -0
  14. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/api/exceptions.py +0 -0
  15. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/api/gooddata_api.py +0 -0
  16. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/api/gooddata_api_wrapper.py +0 -0
  17. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/api/gooddata_sdk.py +0 -0
  18. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/api/utils.py +0 -0
  19. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/__init__.py +0 -0
  20. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/backup_input_processor.py +0 -0
  21. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/backup_manager.py +0 -0
  22. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/constants.py +0 -0
  23. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/csv_reader.py +0 -0
  24. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/models/__init__.py +0 -0
  25. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/models/input_type.py +0 -0
  26. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/models/workspace_response.py +0 -0
  27. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/storage/__init__.py +0 -0
  28. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/storage/base_storage.py +0 -0
  29. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/backup_and_restore/storage/local_storage.py +0 -0
  30. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/logger/__init__.py +0 -0
  31. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/logger/logger.py +0 -0
  32. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/__init__.py +0 -0
  33. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/assets/wdf_setting.json +0 -0
  34. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/__init__.py +0 -0
  35. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/user_data_filters/__init__.py +0 -0
  36. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/user_data_filters/models/__init__.py +0 -0
  37. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/user_data_filters/models/udf_models.py +0 -0
  38. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/user_data_filters/user_data_filters.py +0 -0
  39. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/__init__.py +0 -0
  40. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/models/__init__.py +0 -0
  41. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/models/permissions.py +0 -0
  42. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/models/user_groups.py +0 -0
  43. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/models/users.py +0 -0
  44. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/permissions.py +0 -0
  45. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/user_groups.py +0 -0
  46. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/users/users.py +0 -0
  47. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/workspaces/__init__.py +0 -0
  48. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/workspaces/models.py +0 -0
  49. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/workspaces/workspace.py +0 -0
  50. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/workspaces/workspace_data_filters.py +0 -0
  51. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/workspaces/workspace_data_parser.py +0 -0
  52. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/entities/workspaces/workspace_data_validator.py +0 -0
  53. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/provisioning.py +0 -0
  54. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/utils/__init__.py +0 -0
  55. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/utils/context_objects.py +0 -0
  56. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/utils/exceptions.py +0 -0
  57. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/provisioning/utils/utils.py +0 -0
  58. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/gooddata_pipelines/py.typed +0 -0
  59. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/__init__.py +0 -0
  60. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/backup_and_restore/__init__.py +0 -0
  61. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/backup_and_restore/test_backup.py +0 -0
  62. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/backup_and_restore/test_backup_input_processor.py +0 -0
  63. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/conftest.py +0 -0
  64. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/__init__.py +0 -0
  65. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/__init__.py +0 -0
  66. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_conf.yaml +0 -0
  67. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/analytics_model/analytical_dashboard_extensions/.gitkeep +0 -0
  68. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/analytics_model/analytical_dashboards/.gitkeep +0 -0
  69. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/analytics_model/dashboard_plugins/.gitkeep +0 -0
  70. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/analytics_model/filter_contexts/.gitkeep +0 -0
  71. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/analytics_model/metrics/.gitkeep +0 -0
  72. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/analytics_model/visualization_objects/.gitkeep +0 -0
  73. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/ldm/datasets/test.yaml +0 -0
  74. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid1/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid1/ldm/date_instances/testinstance.yaml +0 -0
  75. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/analytics_model/analytical_dashboard_extensions/.gitkeep +0 -0
  76. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/analytics_model/analytical_dashboards/id.yaml +0 -0
  77. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/analytics_model/dashboard_plugins/.gitkeep +0 -0
  78. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/analytics_model/filter_contexts/id.yaml +0 -0
  79. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/analytics_model/metrics/.gitkeep +0 -0
  80. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/analytics_model/visualization_objects/test.yaml +0 -0
  81. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/ldm/datasets/.gitkeep +0 -0
  82. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid2/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid2/ldm/date_instances/.gitkeep +0 -0
  83. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/analytics_model/analytical_dashboard_extensions/.gitkeep +0 -0
  84. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/analytics_model/analytical_dashboards/.gitkeep +0 -0
  85. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/analytics_model/dashboard_plugins/.gitkeep +0 -0
  86. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/analytics_model/filter_contexts/.gitkeep +0 -0
  87. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/analytics_model/metrics/.gitkeep +0 -0
  88. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/analytics_model/visualization_objects/.gitkeep +0 -0
  89. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/ldm/datasets/.gitkeep +0 -0
  90. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/ldm/date_instances/.gitkeep +0 -0
  91. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_exports/services/wsid3/20230713-132759-1_3_1_dev5/gooddata_layouts/services/workspaces/wsid3/user_data_filters/.gitkeep +0 -0
  92. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/backup/test_local_conf.yaml +0 -0
  93. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/data/mock_responses.py +0 -0
  94. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/panther/__init__.py +0 -0
  95. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/panther/test_api_wrapper.py +0 -0
  96. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/panther/test_sdk_wrapper.py +0 -0
  97. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/__init__.py +0 -0
  98. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/__init__.py +0 -0
  99. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/users/__init__.py +0 -0
  100. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/users/test_permissions.py +0 -0
  101. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/users/test_user_groups.py +0 -0
  102. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/users/test_users.py +0 -0
  103. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/workspaces/__init__.py +0 -0
  104. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/workspaces/test_provisioning.py +0 -0
  105. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/workspaces/test_workspace.py +0 -0
  106. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/workspaces/test_workspace_data_filters.py +0 -0
  107. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/workspaces/test_workspace_data_parser.py +0 -0
  108. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tests/provisioning/entities/workspaces/test_workspace_data_validator.py +0 -0
  109. {gooddata_pipelines-1.48.0 → gooddata_pipelines-1.48.1.dev2}/tox.ini +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gooddata-pipelines
3
- Version: 1.48.0
3
+ Version: 1.48.1.dev2
4
4
  Author-email: GoodData <support@gooddata.com>
5
5
  License: MIT
6
6
  License-File: LICENSE.txt
7
7
  Requires-Python: >=3.10
8
8
  Requires-Dist: boto3-stubs<2.0.0,>=1.39.3
9
9
  Requires-Dist: boto3<2.0.0,>=1.39.3
10
- Requires-Dist: gooddata-sdk~=1.48.0
10
+ Requires-Dist: gooddata-sdk~=1.48.1.dev2
11
11
  Requires-Dist: pydantic<3.0.0,>=2.11.3
12
12
  Requires-Dist: requests<3.0.0,>=2.32.3
13
13
  Requires-Dist: types-pyyaml<7.0.0,>=6.0.12.20250326
@@ -22,9 +22,9 @@ Description-Content-Type: text/markdown
22
22
 
23
23
  # GoodData Pipelines
24
24
 
25
- A high level library for automating the lifecycle of GoodData Cloud (GDC).
25
+ A high-level library for automating the lifecycle of GoodData Cloud (GDC).
26
26
 
27
- You can use the package to manage following resoursec in GDC:
27
+ You can use the package to manage following resources in GDC:
28
28
 
29
29
  1. Provisioning (create, update, delete)
30
30
  - User profiles
@@ -36,7 +36,7 @@ You can use the package to manage following resoursec in GDC:
36
36
  1. _[PLANNED]:_ Custom fields management
37
37
  - extend the Logical Data Model of a child workspace
38
38
 
39
- In case you are not interested in incorporating a library in your own program, but would like to use a ready-made script, consider having a look at [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools).
39
+ In case you are not interested in incorporating a library in your own program but would like to use a ready-made script, consider having a look at [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools).
40
40
 
41
41
  ## Provisioning
42
42
 
@@ -53,23 +53,20 @@ import os
53
53
  from csv import DictReader
54
54
  from pathlib import Path
55
55
 
56
- # Import the Entity Provisioner class and corresponing model from gooddata_pipelines library
56
+ # Import the Entity Provisioner class and corresponding model from gooddata_pipelines library
57
57
  from gooddata_pipelines import UserFullLoad, UserProvisioner
58
+ from gooddata_pipelines.logger.logger import LogObserver
58
59
 
59
- # Optional: you can set up logging and subscribe it to the Provisioner
60
- from utils.logger import setup_logging
61
-
62
- setup_logging()
60
+ # Optionally, subscribe a standard Python logger to the LogObserver
61
+ import logging
63
62
  logger = logging.getLogger(__name__)
63
+ LogObserver().subscribe(logger)
64
64
 
65
65
  # Create the Provisioner instance - you can also create the instance from a GDC yaml profile
66
66
  provisioner = UserProvisioner(
67
67
  host=os.environ["GDC_HOSTNAME"], token=os.environ["GDC_AUTH_TOKEN"]
68
68
  )
69
69
 
70
- # Optional: subscribe to logs
71
- provisioner.logger.subscribe(logger)
72
-
73
70
  # Load your data from your data source
74
71
  source_data_path: Path = Path("path/to/some.csv")
75
72
  source_data_reader = DictReader(source_data_path.read_text().splitlines())
@@ -82,4 +79,4 @@ full_load_data: list[UserFullLoad] = UserFullLoad.from_list_of_dicts(
82
79
  provisioner.full_load(full_load_data)
83
80
  ```
84
81
 
85
- Ready made scripts covering the basic use cases can be found here in the [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools) repository
82
+ Ready-made scripts covering the basic use cases can be found here in the [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools) repository
@@ -1,8 +1,8 @@
1
1
  # GoodData Pipelines
2
2
 
3
- A high level library for automating the lifecycle of GoodData Cloud (GDC).
3
+ A high-level library for automating the lifecycle of GoodData Cloud (GDC).
4
4
 
5
- You can use the package to manage following resoursec in GDC:
5
+ You can use the package to manage following resources in GDC:
6
6
 
7
7
  1. Provisioning (create, update, delete)
8
8
  - User profiles
@@ -14,7 +14,7 @@ You can use the package to manage following resoursec in GDC:
14
14
  1. _[PLANNED]:_ Custom fields management
15
15
  - extend the Logical Data Model of a child workspace
16
16
 
17
- In case you are not interested in incorporating a library in your own program, but would like to use a ready-made script, consider having a look at [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools).
17
+ In case you are not interested in incorporating a library in your own program but would like to use a ready-made script, consider having a look at [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools).
18
18
 
19
19
  ## Provisioning
20
20
 
@@ -31,23 +31,20 @@ import os
31
31
  from csv import DictReader
32
32
  from pathlib import Path
33
33
 
34
- # Import the Entity Provisioner class and corresponing model from gooddata_pipelines library
34
+ # Import the Entity Provisioner class and corresponding model from gooddata_pipelines library
35
35
  from gooddata_pipelines import UserFullLoad, UserProvisioner
36
+ from gooddata_pipelines.logger.logger import LogObserver
36
37
 
37
- # Optional: you can set up logging and subscribe it to the Provisioner
38
- from utils.logger import setup_logging
39
-
40
- setup_logging()
38
+ # Optionally, subscribe a standard Python logger to the LogObserver
39
+ import logging
41
40
  logger = logging.getLogger(__name__)
41
+ LogObserver().subscribe(logger)
42
42
 
43
43
  # Create the Provisioner instance - you can also create the instance from a GDC yaml profile
44
44
  provisioner = UserProvisioner(
45
45
  host=os.environ["GDC_HOSTNAME"], token=os.environ["GDC_AUTH_TOKEN"]
46
46
  )
47
47
 
48
- # Optional: subscribe to logs
49
- provisioner.logger.subscribe(logger)
50
-
51
48
  # Load your data from your data source
52
49
  source_data_path: Path = Path("path/to/some.csv")
53
50
  source_data_reader = DictReader(source_data_path.read_text().splitlines())
@@ -60,4 +57,4 @@ full_load_data: list[UserFullLoad] = UserFullLoad.from_list_of_dicts(
60
57
  provisioner.full_load(full_load_data)
61
58
  ```
62
59
 
63
- Ready made scripts covering the basic use cases can be found here in the [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools) repository
60
+ Ready-made scripts covering the basic use cases can be found here in the [GoodData Productivity Tools](https://github.com/gooddata/gooddata-productivity-tools) repository
@@ -1,7 +1,7 @@
1
1
  # (C) 2025 GoodData Corporation
2
2
 
3
3
  from enum import Enum
4
- from typing import Annotated, TypeAlias
4
+ from typing import Annotated, TypeAlias, Optional
5
5
 
6
6
  import yaml
7
7
  from pydantic import BaseModel, Field
@@ -22,6 +22,9 @@ class S3StorageConfig(BaseModel):
22
22
  backup_path: str
23
23
  bucket: str
24
24
  profile: str = "default"
25
+ aws_access_key_id: Optional[str] = None
26
+ aws_secret_access_key: Optional[str] = None
27
+ aws_default_region: Optional[str] = None
25
28
 
26
29
 
27
30
  class LocalStorageConfig(BaseModel):
@@ -21,8 +21,7 @@ class S3Storage(BackupStorage):
21
21
  raise ValueError("S3 storage config is required")
22
22
 
23
23
  self._config = conf.storage
24
- self._profile = self._config.profile
25
- self._session = self._create_boto_session(self._profile)
24
+ self._session = self._create_boto_session(self._config)
26
25
  self._resource = self._session.resource("s3")
27
26
  self._bucket = self._resource.Bucket(self._config.bucket) # type: ignore [missing library stubs]
28
27
  suffix = "/" if not self._config.backup_path.endswith("/") else ""
@@ -30,9 +29,25 @@ class S3Storage(BackupStorage):
30
29
 
31
30
  self._verify_connection()
32
31
 
33
- def _create_boto_session(self, profile: str) -> boto3.Session:
32
+ def _create_boto_session(self, config: S3StorageConfig) -> boto3.Session:
33
+ if config.aws_access_key_id and config.aws_secret_access_key:
34
+ if not config.aws_default_region:
35
+ self.logger.warning(
36
+ "No AWS region specified. Defaulting to us-east-1."
37
+ )
38
+ try:
39
+ return boto3.Session(
40
+ aws_access_key_id=config.aws_access_key_id,
41
+ aws_secret_access_key=config.aws_secret_access_key,
42
+ region_name=config.aws_default_region,
43
+ )
44
+ except Exception:
45
+ self.logger.warning(
46
+ "Failed to create boto3 session with supplied credentials. Falling back to profile..."
47
+ )
48
+
34
49
  try:
35
- return boto3.Session(profile_name=profile)
50
+ return boto3.Session(profile_name=config.profile)
36
51
  except Exception:
37
52
  self.logger.warning(
38
53
  'AWS profile "[default]" not found. Trying other fallback methods...'
@@ -1,5 +1,5 @@
1
1
  # (C) 2025 GoodData Corporation
2
- # This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
2
+ # This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand.
3
3
 
4
4
  [[package]]
5
5
  name = "annotated-types"
@@ -541,10 +541,6 @@ files = [
541
541
  {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d"},
542
542
  {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0"},
543
543
  {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e"},
544
- {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5dab0844f2cf82be357a0eb11a9087f70c5430b2c241493fc122bb6f2bb0917c"},
545
- {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4fe605b917c70283db7dfe5ada75e04561479075761a0b3866c081d035b01c1"},
546
- {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1e9a65b5736232e7a7f91ff3d02277f11d339bf34099a56cdab6a8b3410a02b2"},
547
- {file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:58d4b711689366d4a03ac7957ab8c28890415e267f9b6589969e74b6e42225ec"},
548
544
  {file = "Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2"},
549
545
  {file = "Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128"},
550
546
  {file = "Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc"},
@@ -557,14 +553,8 @@ files = [
557
553
  {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9"},
558
554
  {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265"},
559
555
  {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8"},
560
- {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f"},
561
- {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757"},
562
- {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0"},
563
- {file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b"},
564
556
  {file = "Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50"},
565
557
  {file = "Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1"},
566
- {file = "Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28"},
567
- {file = "Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f"},
568
558
  {file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409"},
569
559
  {file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2"},
570
560
  {file = "Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451"},
@@ -575,24 +565,8 @@ files = [
575
565
  {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180"},
576
566
  {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248"},
577
567
  {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966"},
578
- {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9"},
579
- {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb"},
580
- {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111"},
581
- {file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839"},
582
568
  {file = "Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0"},
583
569
  {file = "Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951"},
584
- {file = "Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5"},
585
- {file = "Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8"},
586
- {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f"},
587
- {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648"},
588
- {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0"},
589
- {file = "Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089"},
590
- {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368"},
591
- {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c"},
592
- {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284"},
593
- {file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7"},
594
- {file = "Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0"},
595
- {file = "Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b"},
596
570
  {file = "Brotli-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a090ca607cbb6a34b0391776f0cb48062081f5f60ddcce5d11838e67a01928d1"},
597
571
  {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de9d02f5bda03d27ede52e8cfe7b865b066fa49258cbab568720aa5be80a47d"},
598
572
  {file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2333e30a5e00fe0fe55903c8832e08ee9c3b1382aacf4db26664a16528d51b4b"},
@@ -602,10 +576,6 @@ files = [
602
576
  {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2"},
603
577
  {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354"},
604
578
  {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e93dfc1a1165e385cc8239fab7c036fb2cd8093728cbd85097b284d7b99249a2"},
605
- {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:aea440a510e14e818e67bfc4027880e2fb500c2ccb20ab21c7a7c8b5b4703d75"},
606
- {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:6974f52a02321b36847cd19d1b8e381bf39939c21efd6ee2fc13a28b0d99348c"},
607
- {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:a7e53012d2853a07a4a79c00643832161a910674a893d296c9f1259859a289d2"},
608
- {file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:d7702622a8b40c49bffb46e1e3ba2e81268d5c04a34f460978c6b5517a34dd52"},
609
579
  {file = "Brotli-1.1.0-cp36-cp36m-win32.whl", hash = "sha256:a599669fd7c47233438a56936988a2478685e74854088ef5293802123b5b2460"},
610
580
  {file = "Brotli-1.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d143fd47fad1db3d7c27a1b1d66162e855b5d50a89666af46e1679c496e8e579"},
611
581
  {file = "Brotli-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:11d00ed0a83fa22d29bc6b64ef636c4552ebafcef57154b4ddd132f5638fbd1c"},
@@ -617,10 +587,6 @@ files = [
617
587
  {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:919e32f147ae93a09fe064d77d5ebf4e35502a8df75c29fb05788528e330fe74"},
618
588
  {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:23032ae55523cc7bccb4f6a0bf368cd25ad9bcdcc1990b64a647e7bbcce9cb5b"},
619
589
  {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:224e57f6eac61cc449f498cc5f0e1725ba2071a3d4f48d5d9dffba42db196438"},
620
- {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:cb1dac1770878ade83f2ccdf7d25e494f05c9165f5246b46a621cc849341dc01"},
621
- {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:3ee8a80d67a4334482d9712b8e83ca6b1d9bc7e351931252ebef5d8f7335a547"},
622
- {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:5e55da2c8724191e5b557f8e18943b1b4839b8efc3ef60d65985bcf6f587dd38"},
623
- {file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:d342778ef319e1026af243ed0a07c97acf3bad33b9f29e7ae6a1f68fd083e90c"},
624
590
  {file = "Brotli-1.1.0-cp37-cp37m-win32.whl", hash = "sha256:587ca6d3cef6e4e868102672d3bd9dc9698c309ba56d41c2b9c85bbb903cdb95"},
625
591
  {file = "Brotli-1.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2954c1c23f81c2eaf0b0717d9380bd348578a94161a65b3a2afc62c86467dd68"},
626
592
  {file = "Brotli-1.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:efa8b278894b14d6da122a72fefcebc28445f2d3f880ac59d46c90f4c13be9a3"},
@@ -633,10 +599,6 @@ files = [
633
599
  {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ab4fbee0b2d9098c74f3057b2bc055a8bd92ccf02f65944a241b4349229185a"},
634
600
  {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:141bd4d93984070e097521ed07e2575b46f817d08f9fa42b16b9b5f27b5ac088"},
635
601
  {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596"},
636
- {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d2b35ca2c7f81d173d2fadc2f4f31e88cc5f7a39ae5b6db5513cf3383b0e0ec7"},
637
- {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:af6fa6817889314555aede9a919612b23739395ce767fe7fcbea9a80bf140fe5"},
638
- {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:2feb1d960f760a575dbc5ab3b1c00504b24caaf6986e2dc2b01c09c87866a943"},
639
- {file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4410f84b33374409552ac9b6903507cdb31cd30d2501fc5ca13d18f73548444a"},
640
602
  {file = "Brotli-1.1.0-cp38-cp38-win32.whl", hash = "sha256:db85ecf4e609a48f4b29055f1e144231b90edc90af7481aa731ba2d059226b1b"},
641
603
  {file = "Brotli-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3d7954194c36e304e1523f55d7042c59dc53ec20dd4e9ea9d151f1b62b4415c0"},
642
604
  {file = "Brotli-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb2ce4b8045c78ebbc7b8f3c15062e435d47e7393cc57c25115cfd49883747a"},
@@ -649,10 +611,6 @@ files = [
649
611
  {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:949f3b7c29912693cee0afcf09acd6ebc04c57af949d9bf77d6101ebb61e388c"},
650
612
  {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:89f4988c7203739d48c6f806f1e87a1d96e0806d44f0fba61dba81392c9e474d"},
651
613
  {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:de6551e370ef19f8de1807d0a9aa2cdfdce2e85ce88b122fe9f6b2b076837e59"},
652
- {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0737ddb3068957cf1b054899b0883830bb1fec522ec76b1098f9b6e0f02d9419"},
653
- {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4f3607b129417e111e30637af1b56f24f7a49e64763253bbc275c75fa887d4b2"},
654
- {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:6c6e0c425f22c1c719c42670d561ad682f7bfeeef918edea971a79ac5252437f"},
655
- {file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:494994f807ba0b92092a163a0a283961369a65f6cbe01e8891132b7a320e61eb"},
656
614
  {file = "Brotli-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f0d8a7a6b5983c2496e364b969f0e526647a06b075d034f3297dc66f3b360c64"},
657
615
  {file = "Brotli-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cdad5b9014d83ca68c25d2e9444e28e967ef16e80f6b436918c700c117a85467"},
658
616
  {file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"},
@@ -975,14 +933,14 @@ test = ["pytest (>=6)"]
975
933
 
976
934
  [[package]]
977
935
  name = "gooddata-api-client"
978
- version = "1.47.0"
936
+ version = "1.48.0"
979
937
  description = "OpenAPI definition"
980
938
  optional = false
981
939
  python-versions = ">=3.6"
982
940
  groups = ["main"]
983
941
  files = [
984
- {file = "gooddata_api_client-1.47.0-py3-none-any.whl", hash = "sha256:92e2c6592445fadcc1e714925d8940a8dbb3da3e97cf3f79ee94cb9c6585d48c"},
985
- {file = "gooddata_api_client-1.47.0.tar.gz", hash = "sha256:60106f3de4e13b3a8f57957eb76072d8a650b4ccede2901763481495572ccf61"},
942
+ {file = "gooddata_api_client-1.48.0-py3-none-any.whl", hash = "sha256:77400bd0574fcbc7a040dde019aa9d2b6006e5f788c87cf41f6cd6a6a1af8b8c"},
943
+ {file = "gooddata_api_client-1.48.0.tar.gz", hash = "sha256:fe36c67a2e0cb6df1ded19e041a1ffc281d12a327934c25e963a8bcc1a2d9a4c"},
986
944
  ]
987
945
 
988
946
  [package.dependencies]
@@ -991,21 +949,21 @@ urllib3 = ">=1.25.3"
991
949
 
992
950
  [[package]]
993
951
  name = "gooddata-sdk"
994
- version = "1.47.0"
952
+ version = "1.48.0"
995
953
  description = "GoodData Cloud Python SDK"
996
954
  optional = false
997
955
  python-versions = ">=3.9.0"
998
956
  groups = ["main"]
999
957
  files = [
1000
- {file = "gooddata_sdk-1.47.0-py3-none-any.whl", hash = "sha256:927262dd36407124c7a239c6144ee1d3b58adfa788c1988b0dcb01f0d50410ef"},
1001
- {file = "gooddata_sdk-1.47.0.tar.gz", hash = "sha256:60a9a67830e63dd0f4aed0356f6f8af053c7ef1ffd3c52c8539fd0568faaaa19"},
958
+ {file = "gooddata_sdk-1.48.0-py3-none-any.whl", hash = "sha256:8038801302f706339ab8183f9a9a6ed9cfa8356f6d0327a33acc85865abd351b"},
959
+ {file = "gooddata_sdk-1.48.0.tar.gz", hash = "sha256:76bd46a1ddee57ae04cbf706bb0fe4a9f9e286979f4e80c4660b4d28d103492f"},
1002
960
  ]
1003
961
 
1004
962
  [package.dependencies]
1005
963
  attrs = ">=21.4.0,<=24.2.0"
1006
964
  brotli = "1.1.0"
1007
965
  cattrs = ">=22.1.0,<=24.1.1"
1008
- gooddata-api-client = ">=1.47.0,<1.48.0"
966
+ gooddata-api-client = ">=1.48.0,<1.49.0"
1009
967
  python-dateutil = ">=2.5.3"
1010
968
  python-dotenv = ">=1.0.0,<2.0.0"
1011
969
  pyyaml = ">=6.0"
@@ -1863,4 +1821,4 @@ dev = ["moto", "mypy", "pytest", "pytest-mock", "ruff"]
1863
1821
  [metadata]
1864
1822
  lock-version = "2.1"
1865
1823
  python-versions = ">=3.10"
1866
- content-hash = "4766d2adf4c533c85fcc65754105553be1629ff8d4de06fb8cbe6a5c11d9321e"
1824
+ content-hash = "b418fc72920cce21dff3e6db6bf9400ac3b867158d9e640d57012f800c2e5004"
@@ -1,7 +1,7 @@
1
1
  # (C) 2025 GoodData Corporation
2
2
  [project]
3
3
  name = "gooddata-pipelines"
4
- version = "1.48.0"
4
+ version = "1.48.1.dev2"
5
5
  description = ""
6
6
  authors = [{ name = "GoodData", email = "support@gooddata.com" }]
7
7
  license = { text = "MIT" }
@@ -11,7 +11,7 @@ dependencies = [
11
11
  "pydantic (>=2.11.3,<3.0.0)",
12
12
  "requests (>=2.32.3,<3.0.0)",
13
13
  "types-requests (>=2.32.0,<3.0.0)",
14
- "gooddata-sdk~=1.48.0",
14
+ "gooddata-sdk~=1.48.1.dev2",
15
15
  "boto3 (>=1.39.3,<2.0.0)",
16
16
  "boto3-stubs (>=1.39.3,<2.0.0)",
17
17
  "types-pyyaml (>=6.0.12.20250326,<7.0.0)",