dataspace-sdk 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. dataspace_sdk-0.1.0/.dockerignore +2 -0
  2. dataspace_sdk-0.1.0/.env.example +14 -0
  3. dataspace_sdk-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +74 -0
  4. dataspace_sdk-0.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. dataspace_sdk-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +61 -0
  6. dataspace_sdk-0.1.0/.github/pull_request_template.md +64 -0
  7. dataspace_sdk-0.1.0/.github/workflows/deploy-to-ecs.yml +147 -0
  8. dataspace_sdk-0.1.0/.gitignore +162 -0
  9. dataspace_sdk-0.1.0/.pre-commit-config.yaml +75 -0
  10. dataspace_sdk-0.1.0/CODE_OF_CONDUCT.md +133 -0
  11. dataspace_sdk-0.1.0/CONTRIBUTING.md +161 -0
  12. dataspace_sdk-0.1.0/DataSpace/__init__.py +0 -0
  13. dataspace_sdk-0.1.0/DataSpace/asgi.py +21 -0
  14. dataspace_sdk-0.1.0/DataSpace/cache_settings.py +31 -0
  15. dataspace_sdk-0.1.0/DataSpace/settings.py +492 -0
  16. dataspace_sdk-0.1.0/DataSpace/urls.py +79 -0
  17. dataspace_sdk-0.1.0/DataSpace/wsgi.py +19 -0
  18. dataspace_sdk-0.1.0/Dockerfile +29 -0
  19. dataspace_sdk-0.1.0/MANIFEST.in +6 -0
  20. dataspace_sdk-0.1.0/PKG-INFO +472 -0
  21. dataspace_sdk-0.1.0/README.md +111 -0
  22. dataspace_sdk-0.1.0/api/__init__.py +0 -0
  23. dataspace_sdk-0.1.0/api/activities/__init__.py +1 -0
  24. dataspace_sdk-0.1.0/api/activities/base.py +43 -0
  25. dataspace_sdk-0.1.0/api/activities/collaborative.py +212 -0
  26. dataspace_sdk-0.1.0/api/activities/dataset.py +117 -0
  27. dataspace_sdk-0.1.0/api/activities/decorators.py +139 -0
  28. dataspace_sdk-0.1.0/api/activities/display.py +265 -0
  29. dataspace_sdk-0.1.0/api/activities/main.py +66 -0
  30. dataspace_sdk-0.1.0/api/activities/organization.py +137 -0
  31. dataspace_sdk-0.1.0/api/activities/registry.py +89 -0
  32. dataspace_sdk-0.1.0/api/activities/registry_handlers.py +197 -0
  33. dataspace_sdk-0.1.0/api/activities/resource.py +149 -0
  34. dataspace_sdk-0.1.0/api/activities/usecase.py +210 -0
  35. dataspace_sdk-0.1.0/api/admin.py +202 -0
  36. dataspace_sdk-0.1.0/api/apps.py +10 -0
  37. dataspace_sdk-0.1.0/api/management/__init__.py +0 -0
  38. dataspace_sdk-0.1.0/api/management/commands/__init__.py +0 -0
  39. dataspace_sdk-0.1.0/api/management/commands/populate_geographies.py +439 -0
  40. dataspace_sdk-0.1.0/api/management/commands/setup_dvc.py +131 -0
  41. dataspace_sdk-0.1.0/api/management/commands/update_dataindex.py +173 -0
  42. dataspace_sdk-0.1.0/api/managers/dvc_manager.py +132 -0
  43. dataspace_sdk-0.1.0/api/middleware/cors_middleware.py +35 -0
  44. dataspace_sdk-0.1.0/api/middleware/logging.py +64 -0
  45. dataspace_sdk-0.1.0/api/middleware/rate_limit.py +90 -0
  46. dataspace_sdk-0.1.0/api/middleware/request_validator.py +28 -0
  47. dataspace_sdk-0.1.0/api/migrations/0001_initial.py +206 -0
  48. dataspace_sdk-0.1.0/api/migrations/__init__.py +0 -0
  49. dataspace_sdk-0.1.0/api/models/AIModel.py +299 -0
  50. dataspace_sdk-0.1.0/api/models/AccessModel.py +50 -0
  51. dataspace_sdk-0.1.0/api/models/Catalog.py +32 -0
  52. dataspace_sdk-0.1.0/api/models/Collaborative.py +90 -0
  53. dataspace_sdk-0.1.0/api/models/CollaborativeMetadata.py +25 -0
  54. dataspace_sdk-0.1.0/api/models/CollaborativeOrganizationRelationship.py +29 -0
  55. dataspace_sdk-0.1.0/api/models/DataSpace.py +24 -0
  56. dataspace_sdk-0.1.0/api/models/Dataset.py +196 -0
  57. dataspace_sdk-0.1.0/api/models/DatasetMetadata.py +25 -0
  58. dataspace_sdk-0.1.0/api/models/Geography.py +68 -0
  59. dataspace_sdk-0.1.0/api/models/Metadata.py +196 -0
  60. dataspace_sdk-0.1.0/api/models/Organization.py +45 -0
  61. dataspace_sdk-0.1.0/api/models/Resource.py +307 -0
  62. dataspace_sdk-0.1.0/api/models/ResourceChartDetails.py +50 -0
  63. dataspace_sdk-0.1.0/api/models/ResourceChartImage.py +38 -0
  64. dataspace_sdk-0.1.0/api/models/ResourceMetadata.py +23 -0
  65. dataspace_sdk-0.1.0/api/models/ResourceSchema.py +24 -0
  66. dataspace_sdk-0.1.0/api/models/SDG.py +34 -0
  67. dataspace_sdk-0.1.0/api/models/Sector.py +23 -0
  68. dataspace_sdk-0.1.0/api/models/SerializableJSONField.py +131 -0
  69. dataspace_sdk-0.1.0/api/models/UseCase.py +91 -0
  70. dataspace_sdk-0.1.0/api/models/UseCaseDashboard.py +24 -0
  71. dataspace_sdk-0.1.0/api/models/UseCaseMetadata.py +25 -0
  72. dataspace_sdk-0.1.0/api/models/UseCaseOrganizationRelationship.py +29 -0
  73. dataspace_sdk-0.1.0/api/models/__init__.py +32 -0
  74. dataspace_sdk-0.1.0/api/schema/__init__.py +0 -0
  75. dataspace_sdk-0.1.0/api/schema/access_model_schema.py +173 -0
  76. dataspace_sdk-0.1.0/api/schema/aimodel_schema.py +663 -0
  77. dataspace_sdk-0.1.0/api/schema/base_mutation.py +243 -0
  78. dataspace_sdk-0.1.0/api/schema/collaborative_schema.py +976 -0
  79. dataspace_sdk-0.1.0/api/schema/dataset_schema.py +755 -0
  80. dataspace_sdk-0.1.0/api/schema/dataspace_schema.py +52 -0
  81. dataspace_sdk-0.1.0/api/schema/extensions.py +305 -0
  82. dataspace_sdk-0.1.0/api/schema/geography_schema.py +27 -0
  83. dataspace_sdk-0.1.0/api/schema/metadata_schema.py +72 -0
  84. dataspace_sdk-0.1.0/api/schema/organization_data_schema.py +157 -0
  85. dataspace_sdk-0.1.0/api/schema/organization_schema.py +258 -0
  86. dataspace_sdk-0.1.0/api/schema/resource_chart_schema.py +346 -0
  87. dataspace_sdk-0.1.0/api/schema/resource_schema.py +501 -0
  88. dataspace_sdk-0.1.0/api/schema/resoure_chart_image_schema.py +156 -0
  89. dataspace_sdk-0.1.0/api/schema/schema.py +125 -0
  90. dataspace_sdk-0.1.0/api/schema/sdg_schema.py +114 -0
  91. dataspace_sdk-0.1.0/api/schema/sector_schema.py +149 -0
  92. dataspace_sdk-0.1.0/api/schema/stats_schema.py +75 -0
  93. dataspace_sdk-0.1.0/api/schema/tags_schema.py +47 -0
  94. dataspace_sdk-0.1.0/api/schema/usecase_dashboard_schema.py +247 -0
  95. dataspace_sdk-0.1.0/api/schema/usecase_schema.py +813 -0
  96. dataspace_sdk-0.1.0/api/schema/user_schema.py +107 -0
  97. dataspace_sdk-0.1.0/api/signals/__init__.py +2 -0
  98. dataspace_sdk-0.1.0/api/signals/dataset_signals.py +136 -0
  99. dataspace_sdk-0.1.0/api/signals/usecase_signals.py +84 -0
  100. dataspace_sdk-0.1.0/api/telemetry.py +138 -0
  101. dataspace_sdk-0.1.0/api/tests.py +3 -0
  102. dataspace_sdk-0.1.0/api/types/__init__.py +2 -0
  103. dataspace_sdk-0.1.0/api/types/base_type.py +58 -0
  104. dataspace_sdk-0.1.0/api/types/charts/__init__.py +9 -0
  105. dataspace_sdk-0.1.0/api/types/charts/base_chart.py +817 -0
  106. dataspace_sdk-0.1.0/api/types/charts/big_number_chart.py +252 -0
  107. dataspace_sdk-0.1.0/api/types/charts/chart_registry.py +20 -0
  108. dataspace_sdk-0.1.0/api/types/charts/chart_utils.py +71 -0
  109. dataspace_sdk-0.1.0/api/types/charts/enhanced_map_chart.py +967 -0
  110. dataspace_sdk-0.1.0/api/types/charts/map_chart.py +123 -0
  111. dataspace_sdk-0.1.0/api/types/charts/treemap_chart.py +172 -0
  112. dataspace_sdk-0.1.0/api/types/charts/unified_chart.py +285 -0
  113. dataspace_sdk-0.1.0/api/types/map_base/assam_districts.geojson +1 -0
  114. dataspace_sdk-0.1.0/api/types/map_base/assam_revenue_circles.geojson +182 -0
  115. dataspace_sdk-0.1.0/api/types/stubs/corsheaders/__init__.pyi +23 -0
  116. dataspace_sdk-0.1.0/api/types/stubs/corsheaders/conf.pyi +15 -0
  117. dataspace_sdk-0.1.0/api/types/stubs/corsheaders/middleware.pyi +12 -0
  118. dataspace_sdk-0.1.0/api/types/stubs/corsheaders/py.typed +0 -0
  119. dataspace_sdk-0.1.0/api/types/stubs/django_ratelimit/__init__.pyi +13 -0
  120. dataspace_sdk-0.1.0/api/types/type_access_model.py +47 -0
  121. dataspace_sdk-0.1.0/api/types/type_access_model_resource.py +10 -0
  122. dataspace_sdk-0.1.0/api/types/type_aimodel.py +189 -0
  123. dataspace_sdk-0.1.0/api/types/type_catalog.py +24 -0
  124. dataspace_sdk-0.1.0/api/types/type_collaborative.py +254 -0
  125. dataspace_sdk-0.1.0/api/types/type_collaborative_metadata.py +10 -0
  126. dataspace_sdk-0.1.0/api/types/type_collaborative_organization.py +25 -0
  127. dataspace_sdk-0.1.0/api/types/type_dataset.py +265 -0
  128. dataspace_sdk-0.1.0/api/types/type_dataset_metadata.py +10 -0
  129. dataspace_sdk-0.1.0/api/types/type_dataspace.py +24 -0
  130. dataspace_sdk-0.1.0/api/types/type_file_details.py +19 -0
  131. dataspace_sdk-0.1.0/api/types/type_geo.py +23 -0
  132. dataspace_sdk-0.1.0/api/types/type_metadata.py +43 -0
  133. dataspace_sdk-0.1.0/api/types/type_organization.py +144 -0
  134. dataspace_sdk-0.1.0/api/types/type_preview_data.py +12 -0
  135. dataspace_sdk-0.1.0/api/types/type_resource.py +195 -0
  136. dataspace_sdk-0.1.0/api/types/type_resource_chart.py +366 -0
  137. dataspace_sdk-0.1.0/api/types/type_resource_chart_image.py +32 -0
  138. dataspace_sdk-0.1.0/api/types/type_resource_metadata.py +20 -0
  139. dataspace_sdk-0.1.0/api/types/type_sdg.py +39 -0
  140. dataspace_sdk-0.1.0/api/types/type_sector.py +112 -0
  141. dataspace_sdk-0.1.0/api/types/type_usecase.py +233 -0
  142. dataspace_sdk-0.1.0/api/types/type_usecase_dashboard.py +40 -0
  143. dataspace_sdk-0.1.0/api/types/type_usecase_metadata.py +10 -0
  144. dataspace_sdk-0.1.0/api/types/type_usecase_organization.py +25 -0
  145. dataspace_sdk-0.1.0/api/types/type_user.py +81 -0
  146. dataspace_sdk-0.1.0/api/urls.py +102 -0
  147. dataspace_sdk-0.1.0/api/utils/__init__.py +0 -0
  148. dataspace_sdk-0.1.0/api/utils/constants.py +29 -0
  149. dataspace_sdk-0.1.0/api/utils/data_indexing.py +460 -0
  150. dataspace_sdk-0.1.0/api/utils/debug_utils.py +125 -0
  151. dataspace_sdk-0.1.0/api/utils/django_utils.py +26 -0
  152. dataspace_sdk-0.1.0/api/utils/elasticsearch_telemetry_patch.py +50 -0
  153. dataspace_sdk-0.1.0/api/utils/enums.py +202 -0
  154. dataspace_sdk-0.1.0/api/utils/error_handlers.py +193 -0
  155. dataspace_sdk-0.1.0/api/utils/file_paths.py +77 -0
  156. dataspace_sdk-0.1.0/api/utils/file_utils.py +200 -0
  157. dataspace_sdk-0.1.0/api/utils/graphql_error_extension.py +73 -0
  158. dataspace_sdk-0.1.0/api/utils/graphql_telemetry.py +274 -0
  159. dataspace_sdk-0.1.0/api/utils/graphql_utils.py +85 -0
  160. dataspace_sdk-0.1.0/api/utils/keycloak_utils.py +233 -0
  161. dataspace_sdk-0.1.0/api/utils/logger.py +33 -0
  162. dataspace_sdk-0.1.0/api/utils/metadata_validators.py +37 -0
  163. dataspace_sdk-0.1.0/api/utils/middleware.py +96 -0
  164. dataspace_sdk-0.1.0/api/utils/telemetry_utils.py +139 -0
  165. dataspace_sdk-0.1.0/api/utils/version_detection.py +327 -0
  166. dataspace_sdk-0.1.0/api/views/__init__.py +2 -0
  167. dataspace_sdk-0.1.0/api/views/activity.py +145 -0
  168. dataspace_sdk-0.1.0/api/views/auth.py +100 -0
  169. dataspace_sdk-0.1.0/api/views/download_view.py +231 -0
  170. dataspace_sdk-0.1.0/api/views/dynamic_chart_view.py +197 -0
  171. dataspace_sdk-0.1.0/api/views/health.py +146 -0
  172. dataspace_sdk-0.1.0/api/views/paginated_elastic_view.py +204 -0
  173. dataspace_sdk-0.1.0/api/views/search_aimodel.py +221 -0
  174. dataspace_sdk-0.1.0/api/views/search_dataset.py +294 -0
  175. dataspace_sdk-0.1.0/api/views/search_unified.py +425 -0
  176. dataspace_sdk-0.1.0/api/views/search_usecase.py +355 -0
  177. dataspace_sdk-0.1.0/api/views/trending_datasets.py +62 -0
  178. dataspace_sdk-0.1.0/asgi.py +31 -0
  179. dataspace_sdk-0.1.0/authorization/__init__.py +0 -0
  180. dataspace_sdk-0.1.0/authorization/activity.py +76 -0
  181. dataspace_sdk-0.1.0/authorization/activity_registry.py +48 -0
  182. dataspace_sdk-0.1.0/authorization/admin.py +71 -0
  183. dataspace_sdk-0.1.0/authorization/apps.py +17 -0
  184. dataspace_sdk-0.1.0/authorization/authentication.py +71 -0
  185. dataspace_sdk-0.1.0/authorization/backends.py +70 -0
  186. dataspace_sdk-0.1.0/authorization/consent.py +30 -0
  187. dataspace_sdk-0.1.0/authorization/graphql.py +8 -0
  188. dataspace_sdk-0.1.0/authorization/graphql_permissions.py +167 -0
  189. dataspace_sdk-0.1.0/authorization/keycloak.py +523 -0
  190. dataspace_sdk-0.1.0/authorization/keycloak_settings.py +53 -0
  191. dataspace_sdk-0.1.0/authorization/management/__init__.py +0 -0
  192. dataspace_sdk-0.1.0/authorization/management/commands/__init__.py +0 -0
  193. dataspace_sdk-0.1.0/authorization/management/commands/init_roles.py +66 -0
  194. dataspace_sdk-0.1.0/authorization/management/commands/promote_to_superuser.py +74 -0
  195. dataspace_sdk-0.1.0/authorization/middleware/__init__.py +3 -0
  196. dataspace_sdk-0.1.0/authorization/middleware/activity_consent.py +60 -0
  197. dataspace_sdk-0.1.0/authorization/middleware/keycloak_auth.py +50 -0
  198. dataspace_sdk-0.1.0/authorization/middleware_utils.py +125 -0
  199. dataspace_sdk-0.1.0/authorization/models.py +96 -0
  200. dataspace_sdk-0.1.0/authorization/permissions.py +460 -0
  201. dataspace_sdk-0.1.0/authorization/schema/__init__.py +6 -0
  202. dataspace_sdk-0.1.0/authorization/schema/inputs.py +42 -0
  203. dataspace_sdk-0.1.0/authorization/schema/mutation.py +277 -0
  204. dataspace_sdk-0.1.0/authorization/schema/permissions.py +50 -0
  205. dataspace_sdk-0.1.0/authorization/schema/query.py +192 -0
  206. dataspace_sdk-0.1.0/authorization/schema/types.py +54 -0
  207. dataspace_sdk-0.1.0/authorization/serializers.py +44 -0
  208. dataspace_sdk-0.1.0/authorization/services.py +237 -0
  209. dataspace_sdk-0.1.0/authorization/types.py +184 -0
  210. dataspace_sdk-0.1.0/authorization/urls.py +14 -0
  211. dataspace_sdk-0.1.0/authorization/views.py +185 -0
  212. dataspace_sdk-0.1.0/aws/cloudformation/dataspace-infrastructure.yml +382 -0
  213. dataspace_sdk-0.1.0/aws/multi-service-architecture.md +249 -0
  214. dataspace_sdk-0.1.0/aws/otel-collector-task-definition.json +81 -0
  215. dataspace_sdk-0.1.0/aws/otel-collector-task-definition.json.template +67 -0
  216. dataspace_sdk-0.1.0/aws/redis-task-definition.json +53 -0
  217. dataspace_sdk-0.1.0/aws/task-definition.json +61 -0
  218. dataspace_sdk-0.1.0/aws/task-definition.json.template +75 -0
  219. dataspace_sdk-0.1.0/conftest.py +22 -0
  220. dataspace_sdk-0.1.0/dataspace_sdk/__init__.py +18 -0
  221. dataspace_sdk-0.1.0/dataspace_sdk/auth.py +139 -0
  222. dataspace_sdk-0.1.0/dataspace_sdk/base.py +148 -0
  223. dataspace_sdk-0.1.0/dataspace_sdk/client.py +133 -0
  224. dataspace_sdk-0.1.0/dataspace_sdk/exceptions.py +29 -0
  225. dataspace_sdk-0.1.0/dataspace_sdk/resources/__init__.py +7 -0
  226. dataspace_sdk-0.1.0/dataspace_sdk/resources/aimodels.py +246 -0
  227. dataspace_sdk-0.1.0/dataspace_sdk/resources/datasets.py +228 -0
  228. dataspace_sdk-0.1.0/dataspace_sdk/resources/usecases.py +243 -0
  229. dataspace_sdk-0.1.0/dataspace_sdk.egg-info/PKG-INFO +472 -0
  230. dataspace_sdk-0.1.0/dataspace_sdk.egg-info/SOURCES.txt +284 -0
  231. dataspace_sdk-0.1.0/dataspace_sdk.egg-info/dependency_links.txt +1 -0
  232. dataspace_sdk-0.1.0/dataspace_sdk.egg-info/requires.txt +9 -0
  233. dataspace_sdk-0.1.0/dataspace_sdk.egg-info/top_level.txt +1 -0
  234. dataspace_sdk-0.1.0/docker-compose.yml +224 -0
  235. dataspace_sdk-0.1.0/docker-entrypoint.sh +70 -0
  236. dataspace_sdk-0.1.0/docs/activity_stream_guide.md +147 -0
  237. dataspace_sdk-0.1.0/docs/charts.md +186 -0
  238. dataspace_sdk-0.1.0/docs/hierarchical_geography_filtering.md +222 -0
  239. dataspace_sdk-0.1.0/docs/keycloak_integration.md +231 -0
  240. dataspace_sdk-0.1.0/docs/map_charts.md +291 -0
  241. dataspace_sdk-0.1.0/docs/sdk/DEVELOPMENT.md +311 -0
  242. dataspace_sdk-0.1.0/docs/sdk/QUICKSTART.md +107 -0
  243. dataspace_sdk-0.1.0/docs/sdk/README.md +436 -0
  244. dataspace_sdk-0.1.0/docs/unified_search_api.md +235 -0
  245. dataspace_sdk-0.1.0/docs/version_detection_system.md +140 -0
  246. dataspace_sdk-0.1.0/examples/advanced_search.py +102 -0
  247. dataspace_sdk-0.1.0/examples/basic_usage.py +57 -0
  248. dataspace_sdk-0.1.0/examples/error_handling.py +94 -0
  249. dataspace_sdk-0.1.0/examples/organization_resources.py +49 -0
  250. dataspace_sdk-0.1.0/manage.py +23 -0
  251. dataspace_sdk-0.1.0/migrate_geography_metadata.py +453 -0
  252. dataspace_sdk-0.1.0/migrate_sdg_metadata.py +290 -0
  253. dataspace_sdk-0.1.0/mypy.ini +150 -0
  254. dataspace_sdk-0.1.0/otel-collector-config.yaml +34 -0
  255. dataspace_sdk-0.1.0/populate_sdgs.py +155 -0
  256. dataspace_sdk-0.1.0/pyproject.toml +66 -0
  257. dataspace_sdk-0.1.0/pytest.ini +9 -0
  258. dataspace_sdk-0.1.0/requirements.txt +118 -0
  259. dataspace_sdk-0.1.0/search/__init__.py +0 -0
  260. dataspace_sdk-0.1.0/search/admin.py +3 -0
  261. dataspace_sdk-0.1.0/search/apps.py +6 -0
  262. dataspace_sdk-0.1.0/search/documents/__init__.py +3 -0
  263. dataspace_sdk-0.1.0/search/documents/aimodel_document.py +265 -0
  264. dataspace_sdk-0.1.0/search/documents/analysers.py +13 -0
  265. dataspace_sdk-0.1.0/search/documents/dataset_document.py +253 -0
  266. dataspace_sdk-0.1.0/search/documents/usecase_document.py +312 -0
  267. dataspace_sdk-0.1.0/search/migrations/__init__.py +0 -0
  268. dataspace_sdk-0.1.0/search/models.py +3 -0
  269. dataspace_sdk-0.1.0/search/tests.py +3 -0
  270. dataspace_sdk-0.1.0/search/urls.py +35 -0
  271. dataspace_sdk-0.1.0/search/views.py +219 -0
  272. dataspace_sdk-0.1.0/setup.cfg +4 -0
  273. dataspace_sdk-0.1.0/setup.py +51 -0
  274. dataspace_sdk-0.1.0/tests/__init__.py +0 -0
  275. dataspace_sdk-0.1.0/tests/object_types/__init__.py +3 -0
  276. dataspace_sdk-0.1.0/tests/object_types/charts/__init__.py +8 -0
  277. dataspace_sdk-0.1.0/tests/object_types/charts/conftest.py +74 -0
  278. dataspace_sdk-0.1.0/tests/object_types/charts/test_bar_chart.py +131 -0
  279. dataspace_sdk-0.1.0/tests/object_types/charts/test_base_chart.py +149 -0
  280. dataspace_sdk-0.1.0/tests/object_types/charts/test_grouped_bar_chart.py +205 -0
  281. dataspace_sdk-0.1.0/tests/object_types/charts/test_multiline_chart.py +182 -0
  282. dataspace_sdk-0.1.0/tests/schema/__init__.py +0 -0
  283. dataspace_sdk-0.1.0/tests/schema/test_dataset_schema.py +132 -0
  284. dataspace_sdk-0.1.0/tests/test_django_setup.py +8 -0
  285. dataspace_sdk-0.1.0/tests/test_geography_hierarchy.py +142 -0
  286. dataspace_sdk-0.1.0/tests/test_settings.py +53 -0
@@ -0,0 +1,2 @@
1
+ venv
2
+ db.sqlite3
@@ -0,0 +1,14 @@
1
+ DB_ENGINE=django.db.backends.postgresql
2
+ DB_NAME=postgres
3
+ DB_USER=postgresuser
4
+ DB_PASSWORD=postgrespassword
5
+ DB_HOST=backend_db
6
+ DB_PORT=5432
7
+ TELEMETRY_URL=http://otel-collector:4317
8
+ ELASTICSEARCH_INDEX=http://elasticsearch:9200
9
+ ELASTICSEARCH_USERNAME=elasticuser
10
+ ELASTICSEARCH_PASS=elasticpass
11
+ URL_WHITELIST=http://localhost:8000,http://localhost,http://localhost:3000
12
+ DEBUG=True
13
+ SECRET_KEY=your-secret-key
14
+ REDIS_URL=redis://redis:6379/1
@@ -0,0 +1,74 @@
1
+ name: Bug Report
2
+ description: File a bug report to help us improve
3
+ title: "[Bug]: "
4
+ labels: ["bug", "triage"]
5
+ assignees: []
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for taking the time to fill out this bug report!
11
+ - type: input
12
+ id: contact
13
+ attributes:
14
+ label: Contact Details
15
+ description: How can we get in touch with you if we need more info?
16
+ placeholder: ex. email@example.com
17
+ validations:
18
+ required: false
19
+ - type: textarea
20
+ id: what-happened
21
+ attributes:
22
+ label: What happened?
23
+ description: Also tell us, what did you expect to happen?
24
+ placeholder: Tell us what you see!
25
+ value: "A bug happened!"
26
+ validations:
27
+ required: true
28
+ - type: textarea
29
+ id: reproduce
30
+ attributes:
31
+ label: Steps to Reproduce
32
+ description: Please provide detailed steps to reproduce the issue
33
+ placeholder: |
34
+ 1. Go to '...'
35
+ 2. Click on '....'
36
+ 3. Scroll down to '....'
37
+ 4. See error
38
+ validations:
39
+ required: true
40
+ - type: dropdown
41
+ id: version
42
+ attributes:
43
+ label: Version
44
+ description: What version of our software are you running?
45
+ options:
46
+ - main (latest)
47
+ - dev
48
+ - Other (please specify in description)
49
+ validations:
50
+ required: true
51
+ - type: dropdown
52
+ id: browsers
53
+ attributes:
54
+ label: What environment are you using?
55
+ multiple: true
56
+ options:
57
+ - Development
58
+ - Production
59
+ - Docker
60
+ - Local setup
61
+ - type: textarea
62
+ id: logs
63
+ attributes:
64
+ label: Relevant log output
65
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
66
+ render: shell
67
+ - type: checkboxes
68
+ id: terms
69
+ attributes:
70
+ label: Code of Conduct
71
+ description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/CivicDataLab/DataSpaceBackend/blob/main/CODE_OF_CONDUCT.md)
72
+ options:
73
+ - label: I agree to follow this project's Code of Conduct
74
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: GitHub Discussions
4
+ url: https://github.com/CivicDataLab/DataSpaceBackend/discussions
5
+ about: Ask questions and discuss ideas with the community
6
+ - name: Security Issues
7
+ url: mailto:tech@civicdatalab.in
8
+ about: Please report security vulnerabilities via email
@@ -0,0 +1,61 @@
1
+ name: Feature Request
2
+ description: Suggest an idea for this project
3
+ title: "[Feature]: "
4
+ labels: ["enhancement", "triage"]
5
+ assignees: []
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for suggesting a new feature!
11
+ - type: textarea
12
+ id: problem
13
+ attributes:
14
+ label: Is your feature request related to a problem?
15
+ description: A clear and concise description of what the problem is.
16
+ placeholder: I'm always frustrated when [...]
17
+ validations:
18
+ required: false
19
+ - type: textarea
20
+ id: solution
21
+ attributes:
22
+ label: Describe the solution you'd like
23
+ description: A clear and concise description of what you want to happen.
24
+ validations:
25
+ required: true
26
+ - type: textarea
27
+ id: alternatives
28
+ attributes:
29
+ label: Describe alternatives you've considered
30
+ description: A clear and concise description of any alternative solutions or features you've considered.
31
+ validations:
32
+ required: false
33
+ - type: dropdown
34
+ id: component
35
+ attributes:
36
+ label: Which component does this relate to?
37
+ multiple: true
38
+ options:
39
+ - API
40
+ - GraphQL
41
+ - Authentication
42
+ - Database
43
+ - Search
44
+ - Documentation
45
+ - Testing
46
+ - Other
47
+ - type: textarea
48
+ id: additional-context
49
+ attributes:
50
+ label: Additional context
51
+ description: Add any other context or screenshots about the feature request here.
52
+ validations:
53
+ required: false
54
+ - type: checkboxes
55
+ id: terms
56
+ attributes:
57
+ label: Code of Conduct
58
+ description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/CivicDataLab/DataSpaceBackend/blob/main/CODE_OF_CONDUCT.md)
59
+ options:
60
+ - label: I agree to follow this project's Code of Conduct
61
+ required: true
@@ -0,0 +1,64 @@
1
+ # Pull Request
2
+
3
+ ## Description
4
+
5
+ Brief description of the changes introduced by this PR.
6
+
7
+ ## Type of Change
8
+
9
+ Please delete options that are not relevant.
10
+
11
+ - [ ] Bug fix (non-breaking change which fixes an issue)
12
+ - [ ] New feature (non-breaking change which adds functionality)
13
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14
+ - [ ] Documentation update
15
+ - [ ] Performance improvement
16
+ - [ ] Code refactoring
17
+ - [ ] Test improvements
18
+
19
+ ## Related Issues
20
+
21
+ Fixes #(issue number)
22
+ Closes #(issue number)
23
+ Relates to #(issue number)
24
+
25
+ ## Changes Made
26
+
27
+ - [ ] Change 1
28
+ - [ ] Change 2
29
+ - [ ] Change 3
30
+
31
+ ## Testing
32
+
33
+ - [ ] I have added tests that prove my fix is effective or that my feature works
34
+ - [ ] New and existing unit tests pass locally with my changes
35
+ - [ ] I have tested this change manually
36
+
37
+ ### Test Instructions
38
+
39
+ Please describe how reviewers can test your changes:
40
+
41
+ 1. Step 1
42
+ 2. Step 2
43
+ 3. Step 3
44
+
45
+ ## Screenshots (if applicable)
46
+
47
+ Add screenshots to help explain your changes.
48
+
49
+ ## Checklist
50
+
51
+ - [ ] My code follows the style guidelines of this project
52
+ - [ ] I have performed a self-review of my own code
53
+ - [ ] I have commented my code, particularly in hard-to-understand areas
54
+ - [ ] I have made corresponding changes to the documentation
55
+ - [ ] My changes generate no new warnings
56
+ - [ ] I have added tests that prove my fix is effective or that my feature works
57
+ - [ ] New and existing unit tests pass locally with my changes
58
+ - [ ] Any dependent changes have been merged and published in downstream modules
59
+ - [ ] I have run `black .`, `isort .`, and `flake8` and fixed any issues
60
+ - [ ] Database migrations are included (if applicable)
61
+
62
+ ## Additional Notes
63
+
64
+ Add any additional notes or context about the PR here.
@@ -0,0 +1,147 @@
1
+ name: Deploy to Amazon ECS
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - dev
7
+ workflow_dispatch:
8
+
9
+ env:
10
+ AWS_REGION: ${{ secrets.AWS_REGION }}
11
+ ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
12
+ ECS_CLUSTER: ${{ secrets.ECS_CLUSTER }}
13
+ ECS_EXECUTION_ROLE_ARN: ${{ secrets.ECS_EXECUTION_ROLE_ARN }}
14
+ APP_NAME: dataspace
15
+ APP_PORT: 8000
16
+ DB_ENGINE: django.db.backends.postgresql
17
+ DB_PORT: 5432
18
+ DEBUG_MODE: "False"
19
+ TELEMETRY_URL: http://otel-collector:4317
20
+ CPU_UNITS: 256
21
+ MEMORY_UNITS: 512
22
+ SSM_PATH_PREFIX: /dataspace
23
+ ENVIRONMENT: ${{ secrets.ENVIRONMENT || 'dev' }}
24
+
25
+ jobs:
26
+ deploy-infrastructure:
27
+ name: Deploy Infrastructure
28
+ runs-on: ubuntu-latest
29
+ environment: development
30
+ if: github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.modified, 'aws/cloudformation')
31
+
32
+ steps:
33
+ - name: Checkout
34
+ uses: actions/checkout@v3
35
+
36
+ - name: Configure AWS credentials
37
+ uses: aws-actions/configure-aws-credentials@v1
38
+ with:
39
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
40
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
41
+ aws-region: ${{ env.AWS_REGION }}
42
+
43
+ - name: Deploy CloudFormation stack
44
+ run: |
45
+ aws cloudformation deploy \
46
+ --template-file aws/cloudformation/dataspace-infrastructure.yml \
47
+ --stack-name dataspace-${{ env.ENVIRONMENT }}-infrastructure \
48
+ --parameter-overrides \
49
+ Environment=${{ env.ENVIRONMENT }} \
50
+ VpcId=${{ secrets.VPC_ID }} \
51
+ SubnetIds=${{ secrets.SUBNET_IDS }} \
52
+ DBUsername=${{ secrets.DB_USERNAME }} \
53
+ DBPassword=${{ secrets.DB_PASSWORD }} \
54
+ DBName=${{ secrets.DB_NAME }} \
55
+ ElasticsearchPassword=${{ secrets.ELASTICSEARCH_PASSWORD }} \
56
+ DjangoSecretKey=${{ secrets.DJANGO_SECRET_KEY }} \
57
+ --capabilities CAPABILITY_IAM \
58
+ --no-fail-on-empty-changeset
59
+
60
+ deploy-app:
61
+ name: Deploy Application
62
+ runs-on: ubuntu-latest
63
+ environment: development
64
+ needs: deploy-infrastructure
65
+ if: always() # Run even if infrastructure deployment is skipped
66
+
67
+ steps:
68
+ - name: Checkout
69
+ uses: actions/checkout@v3
70
+
71
+ - name: Configure AWS credentials
72
+ uses: aws-actions/configure-aws-credentials@v1
73
+ with:
74
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
75
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
76
+ aws-region: ${{ env.AWS_REGION }}
77
+
78
+ - name: Login to Amazon ECR
79
+ id: login-ecr
80
+ uses: aws-actions/amazon-ecr-login@v1
81
+
82
+ - name: Build, tag, and push image to Amazon ECR
83
+ id: build-image
84
+ env:
85
+ ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
86
+ IMAGE_TAG: ${{ github.sha }}
87
+ run: |
88
+ docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
89
+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
90
+ echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
91
+
92
+ - name: Download task definition and get EFS ID
93
+ run: |
94
+ aws ecs describe-task-definition --task-definition dataspace --query taskDefinition > aws/current-task-definition.json
95
+ aws ecs describe-task-definition --task-definition dataspace-otel-collector --query taskDefinition > aws/current-otel-task-definition.json
96
+ # Get the EFS ID from CloudFormation export
97
+ EFS_ID=$(aws cloudformation list-exports --query "Exports[?Name=='dataspace-${{ env.ENVIRONMENT }}-MigrationsFileSystemId'].Value" --output text)
98
+ echo "EFS_ID=$EFS_ID" >> $GITHUB_ENV
99
+
100
+ - name: Update container image only
101
+ id: task-def-app
102
+ uses: aws-actions/amazon-ecs-render-task-definition@v1
103
+ with:
104
+ task-definition: aws/current-task-definition.json
105
+ container-name: dataspace
106
+ image: ${{ steps.build-image.outputs.image }}
107
+
108
+ - name: Deploy main application ECS task definition
109
+ uses: aws-actions/amazon-ecs-deploy-task-definition@v1
110
+ with:
111
+ task-definition: ${{ steps.task-def-app.outputs.task-definition }}
112
+ service: ${{ secrets.ECS_SERVICE }}
113
+ cluster: ${{ env.ECS_CLUSTER }}
114
+ wait-for-service-stability: true
115
+
116
+ deploy-otel:
117
+ name: Deploy OpenTelemetry Collector
118
+ runs-on: ubuntu-latest
119
+ environment: development
120
+ needs: deploy-app
121
+
122
+ steps:
123
+ - name: Checkout
124
+ uses: actions/checkout@v3
125
+
126
+ - name: Configure AWS credentials
127
+ uses: aws-actions/configure-aws-credentials@v1
128
+ with:
129
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
130
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
131
+ aws-region: ${{ env.AWS_REGION }}
132
+
133
+ - name: Download current OpenTelemetry task definition
134
+ id: download-otel-taskdef
135
+ run: |
136
+ aws ecs describe-task-definition \
137
+ --task-definition dataspace-otel-collector \
138
+ --query taskDefinition > aws/current-otel-task-definition.json
139
+ cat aws/current-otel-task-definition.json
140
+
141
+ - name: Deploy OpenTelemetry ECS task definition
142
+ uses: aws-actions/amazon-ecs-deploy-task-definition@v1
143
+ with:
144
+ task-definition: aws/current-otel-task-definition.json
145
+ service: ${{ secrets.ECS_OTEL_SERVICE }}
146
+ cluster: ${{ env.ECS_CLUSTER }}
147
+ wait-for-service-stability: true
@@ -0,0 +1,162 @@
1
+ ### Python template
2
+ # Byte-compiled / optimized / DLL files
3
+ __pycache__/
4
+ *.py[cod]
5
+ *$py.class
6
+
7
+ #db file
8
+ sqlite3.db
9
+ db.sqlite3
10
+
11
+ # C extensions
12
+ *.so
13
+
14
+ #config
15
+ config.ini
16
+
17
+ # Distribution / packaging
18
+ .Python
19
+ build/
20
+ develop-eggs/
21
+ dist/
22
+ downloads/
23
+ eggs/
24
+ .eggs/
25
+ lib/
26
+ lib64/
27
+ parts/
28
+ sdist/
29
+ var/
30
+ wheels/
31
+ share/python-wheels/
32
+ *.egg-info/
33
+ .installed.cfg
34
+ *.egg
35
+ MANIFEST
36
+
37
+ # PyInstaller
38
+ # Usually these files are written by a python script from a template
39
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
40
+ *.manifest
41
+ *.spec
42
+
43
+ # Installer logs
44
+ pip-log.txt
45
+ pip-delete-this-directory.txt
46
+
47
+ # Unit test / coverage reports
48
+ htmlcov/
49
+ .tox/
50
+ .nox/
51
+ .coverage
52
+ .coverage.*
53
+ .cache
54
+ nosetests.xml
55
+ coverage.xml
56
+ *.cover
57
+ *.py,cover
58
+ .hypothesis/
59
+ .pytest_cache/
60
+ cover/
61
+
62
+ # Translations
63
+ *.mo
64
+ *.pot
65
+
66
+ # Django stuff:
67
+ *.log
68
+ local_settings.py
69
+ db.sqlite3
70
+ db.sqlite3-journal
71
+
72
+ # Flask stuff:
73
+ instance/
74
+ .webassets-cache
75
+
76
+ # Scrapy stuff:
77
+ .scrapy
78
+
79
+ # Sphinx documentation
80
+ docs/_build/
81
+
82
+ # PyBuilder
83
+ .pybuilder/
84
+ target/
85
+
86
+ # Jupyter Notebook
87
+ .ipynb_checkpoints
88
+
89
+ # IPython
90
+ profile_default/
91
+ ipython_config.py
92
+
93
+ # pyenv
94
+ # For a library or package, you might want to ignore these files since the code is
95
+ # intended to run in multiple environments; otherwise, check them in:
96
+ # .python-version
97
+
98
+ # pipenv
99
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
100
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
101
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
102
+ # install all needed dependencies.
103
+ #Pipfile.lock
104
+
105
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
106
+ __pypackages__/
107
+
108
+ # Celery stuff
109
+ celerybeat-schedule
110
+ celerybeat.pid
111
+
112
+ # SageMath parsed files
113
+ *.sage.py
114
+
115
+ # Environments
116
+ .venv
117
+ env/
118
+ venv/
119
+ ENV/
120
+ env.bak/
121
+ venv.bak/
122
+
123
+ # Spyder project settings
124
+ .spyderproject
125
+ .spyproject
126
+
127
+ # Rope project settings
128
+ .ropeproject
129
+
130
+ # mkdocs documentation
131
+ /site
132
+
133
+ # mypy
134
+ .mypy_cache/
135
+ .dmypy.json
136
+ dmypy.json
137
+
138
+ # Pyre type checker
139
+ .pyre/
140
+
141
+ # pytype static type analyzer
142
+ .pytype/
143
+
144
+ # Cython debug symbols
145
+ cython_debug/
146
+
147
+ # IDE
148
+ .vscode/
149
+ .idea/
150
+ .windsurf/
151
+
152
+ #Resources upload folder
153
+ resources/
154
+
155
+ #local env file
156
+ .env
157
+ api/migrations/*
158
+ authorization/migrations/*
159
+
160
+
161
+ # AWS files
162
+ aws/.env.*
@@ -0,0 +1,75 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ exclude: ^aws/cloudformation/.*\.yml$
9
+ - id: check-added-large-files
10
+ - id: debug-statements
11
+
12
+ - repo: https://github.com/psf/black
13
+ rev: 24.2.0
14
+ hooks:
15
+ - id: black
16
+ language_version: python3.11
17
+
18
+ - repo: https://github.com/pycqa/isort
19
+ rev: 5.13.2
20
+ hooks:
21
+ - id: isort
22
+ args: ["--profile", "black"]
23
+
24
+ - repo: local
25
+ hooks:
26
+ - id: cloudformation-validate
27
+ name: AWS CloudFormation Validation
28
+ description: Validates CloudFormation templates using AWS CLI
29
+ entry: bash -c 'aws cloudformation validate-template --template-body file://$0 || exit 1'
30
+ language: system
31
+ files: ^aws/cloudformation/.*\.yml$
32
+ require_serial: true
33
+ pass_filenames: true
34
+
35
+ - repo: https://github.com/pre-commit/mirrors-mypy
36
+ rev: v1.9.0
37
+ hooks:
38
+ - id: mypy
39
+ language: python
40
+ language_version: python3.11
41
+ additional_dependencies:
42
+ - types-requests
43
+ - types-PyYAML
44
+ - types-python-dateutil
45
+ - types-setuptools
46
+ - django-stubs
47
+ - djangorestframework-stubs
48
+ - pandas-stubs
49
+ - pandas
50
+ - deepdiff
51
+ - types-redis
52
+ - strawberry-graphql
53
+ - strawberry-graphql-django
54
+ - django-environ
55
+ - structlog
56
+ - django
57
+ - elasticsearch-dsl
58
+ - django-elasticsearch-dsl
59
+ - django-elasticsearch-dsl-drf
60
+ - pyecharts
61
+ - selenium
62
+ - python-decouple
63
+ - djangorestframework
64
+ - django-debug-toolbar
65
+ - django-ratelimit
66
+ - django-cors-headers
67
+ - psycopg2-binary
68
+ - python-dotenv
69
+ - uvicorn
70
+ - djangorestframework-simplejwt
71
+ - python-keycloak
72
+ - django-activity-stream
73
+
74
+ args: [--config-file=mypy.ini]
75
+ exclude: ^tests/