synapse-sdk 1.0.0a30__tar.gz → 1.0.0a32__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 synapse-sdk might be problematic. Click here for more details.

Files changed (150) hide show
  1. {synapse_sdk-1.0.0a30/synapse_sdk.egg-info → synapse_sdk-1.0.0a32}/PKG-INFO +3 -2
  2. synapse_sdk-1.0.0a32/synapse_sdk/clients/backend/dataset.py +102 -0
  3. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/base.py +20 -22
  4. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/base.py +40 -0
  5. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/export/actions/export.py +2 -5
  6. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/export/templates/plugin/export.py +39 -29
  7. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/actions/train.py +1 -1
  8. synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/upload/actions/upload.py +292 -0
  9. synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/upload/templates/config.yaml +6 -0
  10. synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +44 -0
  11. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/enums.py +3 -1
  12. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/models.py +16 -0
  13. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/storage/__init__.py +11 -1
  14. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32/synapse_sdk.egg-info}/PKG-INFO +3 -2
  15. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk.egg-info/SOURCES.txt +6 -4
  16. synapse_sdk-1.0.0a32/tests/utils/__init__.py +0 -0
  17. synapse_sdk-1.0.0a30/synapse_sdk/clients/backend/dataset.py +0 -50
  18. synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/export/actions/utils.py +0 -5
  19. synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/import/actions/import.py +0 -10
  20. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/.github/workflows/lint.yml +0 -0
  21. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/.github/workflows/pypi-publish.yml +0 -0
  22. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/.gitignore +0 -0
  23. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/.pre-commit-config.yaml +0 -0
  24. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/LICENSE +0 -0
  25. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/README.md +0 -0
  26. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/locale/en/LC_MESSAGES/messages.mo +0 -0
  27. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/locale/en/LC_MESSAGES/messages.po +0 -0
  28. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/locale/ko/LC_MESSAGES/messages.mo +0 -0
  29. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/locale/ko/LC_MESSAGES/messages.po +0 -0
  30. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/pyproject.toml +0 -0
  31. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/requirements.test.txt +0 -0
  32. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/requirements.txt +0 -0
  33. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/setup.cfg +0 -0
  34. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/__init__.py +0 -0
  35. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/__init__.py +0 -0
  36. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/__init__.py +0 -0
  37. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/create.py +0 -0
  38. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/dataclass.py +0 -0
  39. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/default.py +0 -0
  40. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/delete.py +0 -0
  41. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/list.py +0 -0
  42. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/read.py +0 -0
  43. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/update.py +0 -0
  44. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/alias/utils.py +0 -0
  45. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/plugin/__init__.py +0 -0
  46. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/plugin/create.py +0 -0
  47. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/plugin/publish.py +0 -0
  48. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/cli/plugin/run.py +0 -0
  49. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/__init__.py +0 -0
  50. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/agent/__init__.py +0 -0
  51. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/agent/core.py +0 -0
  52. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/agent/ray.py +0 -0
  53. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/agent/service.py +0 -0
  54. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/backend/__init__.py +0 -0
  55. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/backend/annotation.py +0 -0
  56. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/backend/core.py +0 -0
  57. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/backend/integration.py +0 -0
  58. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/backend/ml.py +0 -0
  59. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/exceptions.py +0 -0
  60. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/ray/__init__.py +0 -0
  61. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/ray/core.py +0 -0
  62. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/ray/serve.py +0 -0
  63. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/clients/utils.py +0 -0
  64. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/i18n.py +0 -0
  65. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/loggers.py +0 -0
  66. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/__init__.py +0 -0
  67. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/__init__.py +0 -0
  68. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
  69. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
  70. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
  71. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
  72. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
  73. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
  74. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/decorators.py +0 -0
  75. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
  76. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
  77. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/export/templates/config.yaml +0 -0
  78. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +0 -0
  79. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/import → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/neural_net}/__init__.py +0 -0
  80. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/import → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/neural_net}/actions/__init__.py +0 -0
  81. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
  82. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
  83. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
  84. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/neural_net → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/neural_net/base}/__init__.py +0 -0
  85. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
  86. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
  87. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/neural_net/actions → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/neural_net/templates/plugin}/__init__.py +0 -0
  88. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
  89. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
  90. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
  91. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/neural_net/base → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/post_annotation}/__init__.py +0 -0
  92. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/neural_net/templates/plugin → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/post_annotation/actions}/__init__.py +0 -0
  93. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
  94. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
  95. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/post_annotation → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/post_annotation/templates/plugin}/__init__.py +0 -0
  96. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
  97. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/post_annotation/actions → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/pre_annotation}/__init__.py +0 -0
  98. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/post_annotation/templates/plugin → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/pre_annotation/actions}/__init__.py +0 -0
  99. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
  100. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
  101. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/pre_annotation → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/pre_annotation/templates/plugin}/__init__.py +0 -0
  102. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
  103. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/registry.py +0 -0
  104. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/pre_annotation/actions → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/smart_tool}/__init__.py +0 -0
  105. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/pre_annotation/templates/plugin → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/smart_tool/actions}/__init__.py +0 -0
  106. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
  107. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
  108. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/smart_tool → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/smart_tool/templates/plugin}/__init__.py +0 -0
  109. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
  110. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/categories/templates.py +0 -0
  111. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/smart_tool/actions → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/upload}/__init__.py +0 -0
  112. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/categories/smart_tool/templates/plugin → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/upload/actions}/__init__.py +0 -0
  113. {synapse_sdk-1.0.0a30/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin → synapse_sdk-1.0.0a32/synapse_sdk/plugins/categories/upload/templates}/plugin/__init__.py +0 -0
  114. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/exceptions.py +0 -0
  115. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
  116. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
  117. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
  118. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
  119. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
  120. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
  121. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
  122. {synapse_sdk-1.0.0a30/synapse_sdk/shared → synapse_sdk-1.0.0a32/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin}/__init__.py +0 -0
  123. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
  124. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
  125. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/upload.py +0 -0
  126. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/plugins/utils.py +0 -0
  127. {synapse_sdk-1.0.0a30/synapse_sdk/utils → synapse_sdk-1.0.0a32/synapse_sdk/shared}/__init__.py +0 -0
  128. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/shared/enums.py +0 -0
  129. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/types.py +0 -0
  130. {synapse_sdk-1.0.0a30/synapse_sdk/utils/pydantic → synapse_sdk-1.0.0a32/synapse_sdk/utils}/__init__.py +0 -0
  131. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/debug.py +0 -0
  132. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/file.py +0 -0
  133. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/module_loading.py +0 -0
  134. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/network.py +0 -0
  135. {synapse_sdk-1.0.0a30/tests → synapse_sdk-1.0.0a32/synapse_sdk/utils/pydantic}/__init__.py +0 -0
  136. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/pydantic/config.py +0 -0
  137. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/pydantic/errors.py +0 -0
  138. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/pydantic/validators.py +0 -0
  139. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/storage/providers/__init__.py +0 -0
  140. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/storage/providers/gcp.py +0 -0
  141. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/storage/providers/s3.py +0 -0
  142. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/storage/providers/sftp.py +0 -0
  143. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/storage/registry.py +0 -0
  144. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk/utils/string.py +0 -0
  145. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk.egg-info/dependency_links.txt +0 -0
  146. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk.egg-info/entry_points.txt +0 -0
  147. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk.egg-info/requires.txt +0 -0
  148. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/synapse_sdk.egg-info/top_level.txt +0 -0
  149. {synapse_sdk-1.0.0a30/tests/utils → synapse_sdk-1.0.0a32/tests}/__init__.py +0 -0
  150. {synapse_sdk-1.0.0a30 → synapse_sdk-1.0.0a32}/tests/utils/test_debug.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a30
3
+ Version: 1.0.0a32
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -21,6 +21,7 @@ Requires-Dist: universal-pathlib
21
21
  Requires-Dist: fsspec[gcs,s3,sftp]
22
22
  Provides-Extra: all
23
23
  Requires-Dist: ray[all]; extra == "all"
24
+ Dynamic: license-file
24
25
 
25
26
  This is the SDK to develop synapse plugins
26
27
 
@@ -0,0 +1,102 @@
1
+ from multiprocessing import Pool
2
+ from pathlib import Path
3
+ from typing import Dict, Optional
4
+
5
+ from tqdm import tqdm
6
+
7
+ from synapse_sdk.clients.base import BaseClient
8
+ from synapse_sdk.clients.utils import get_batched_list
9
+
10
+
11
+ class DatasetClientMixin(BaseClient):
12
+ def list_dataset(self):
13
+ path = 'datasets/'
14
+ return self._list(path)
15
+
16
+ def get_dataset(self, dataset_id):
17
+ """Get dataset from synapse-backend.
18
+
19
+ Args:
20
+ dataset_id: The dataset id to get.
21
+ """
22
+ path = f'datasets/{dataset_id}/?expand=file_specifications'
23
+ return self._get(path)
24
+
25
+ def create_data_file(self, file_path: Path):
26
+ """Create data file to synapse-backend.
27
+
28
+ Args:
29
+ file_path: The file pathlib object to upload.
30
+ """
31
+ path = 'data_files/'
32
+ return self._post(path, files={'file': file_path})
33
+
34
+ def create_data_units(self, data):
35
+ """Create data units to synapse-backend.
36
+
37
+ Args:
38
+ data: The data bindings to upload from create_data_file interface.
39
+ """
40
+ path = 'data_units/'
41
+ return self._post(path, data=data)
42
+
43
+ def upload_dataset(
44
+ self,
45
+ dataset_id: int,
46
+ dataset: Dict,
47
+ project_id: Optional[int] = None,
48
+ batch_size: int = 1000,
49
+ process_pool: int = 10,
50
+ ):
51
+ """Upload dataset to synapse-backend.
52
+
53
+ Args:
54
+ dataset_id: The dataset id to upload the data to.
55
+ dataset: The dataset to upload.
56
+ * structure:
57
+ - files: The files to upload. (key: file name, value: file pathlib object)
58
+ - meta: The meta data to upload.
59
+ project_id: The project id to upload the data to.
60
+ batch_size: The batch size to upload the data.
61
+ process_pool: The process pool to upload the data.
62
+ """
63
+ # TODO validate dataset with schema
64
+
65
+ params = [(data, dataset_id) for data in dataset]
66
+
67
+ with Pool(processes=process_pool) as pool:
68
+ dataset = pool.starmap(self.upload_data_file, tqdm(params))
69
+
70
+ batches = get_batched_list(dataset, batch_size)
71
+
72
+ for batch in tqdm(batches):
73
+ data_units = self.create_data_units(batch)
74
+
75
+ if project_id:
76
+ tasks_data = []
77
+ for data, data_unit in zip(batch, data_units):
78
+ task_data = {'project': project_id, 'data_unit': data_unit['id']}
79
+ # TODO: Additional logic needed here if task data storage is required during import.
80
+
81
+ tasks_data.append(task_data)
82
+
83
+ self.create_tasks(tasks_data)
84
+
85
+ def upload_data_file(self, data: Dict, dataset_id: int) -> Dict:
86
+ """Upload files to synapse-backend.
87
+
88
+ Args:
89
+ data: The data to upload.
90
+ * structure:
91
+ - files: The files to upload. (key: file name, value: file pathlib object)
92
+ - meta: The meta data to upload.
93
+ dataset_id: The dataset id to upload the data to.
94
+
95
+ Returns:
96
+ Dict: The result of the upload.
97
+ """
98
+ for name, path in data['files'].items():
99
+ data_file = self.create_data_file(path)
100
+ data['dataset'] = dataset_id
101
+ data['files'][name] = {'checksum': data_file['checksum'], 'path': str(path)}
102
+ return data
@@ -40,37 +40,31 @@ class BaseClient:
40
40
  headers = self._get_headers()
41
41
  headers.update(kwargs.pop('headers', {}))
42
42
 
43
+ # List to store opened files to close after request
44
+ opened_files = []
45
+
43
46
  if method in ['post', 'put', 'patch']:
44
47
  # If files are included in the request, open them as binary files
45
48
  if kwargs.get('files') is not None:
46
- opened_files = [] # List to store opened files
47
- try:
48
- for name, file in kwargs['files'].items():
49
- # If file is a path string, bind it as a Path object and open
50
- if isinstance(file, str):
51
- opened_file = open(Path(file), mode='rb')
52
- kwargs['files'][name] = opened_file
53
- opened_files.append(opened_file)
54
- # If file is a Path object, open it directly
55
- elif isinstance(file, Path):
56
- opened_file = open(file, mode='rb')
57
- kwargs['files'][name] = opened_file
58
- opened_files.append(opened_file)
59
- if 'data' in kwargs:
60
- for name, value in kwargs['data'].items():
61
- if isinstance(value, dict):
62
- kwargs['data'][name] = json.dumps(value)
63
- finally:
64
- # Close all opened files
65
- for opened_file in opened_files:
66
- opened_file.close()
67
-
49
+ for name, file in kwargs['files'].items():
50
+ # Handle both string and Path object cases
51
+ if isinstance(file, str):
52
+ file = Path(file)
53
+ if isinstance(file, Path):
54
+ opened_file = file.open(mode='rb')
55
+ kwargs['files'][name] = (file.name, opened_file)
56
+ opened_files.append(opened_file)
57
+ if 'data' in kwargs:
58
+ for name, value in kwargs['data'].items():
59
+ if isinstance(value, dict):
60
+ kwargs['data'][name] = json.dumps(value)
68
61
  else:
69
62
  headers['Content-Type'] = 'application/json'
70
63
  if 'data' in kwargs:
71
64
  kwargs['data'] = json.dumps(kwargs['data'])
72
65
 
73
66
  try:
67
+ # Send request
74
68
  response = getattr(self.requests_session, method)(url, headers=headers, **kwargs)
75
69
  if not response.ok:
76
70
  raise ClientError(
@@ -79,6 +73,10 @@ class BaseClient:
79
73
  except requests.ConnectionError:
80
74
  raise ClientError(408, f'{self.name} is not responding')
81
75
 
76
+ # Close all opened files
77
+ for opened_file in opened_files:
78
+ opened_file.close()
79
+
82
80
  return self._post_response(response)
83
81
 
84
82
  def _post_response(self, response):
@@ -17,6 +17,30 @@ from synapse_sdk.utils.pydantic.errors import pydantic_to_drf_error
17
17
 
18
18
 
19
19
  class Action:
20
+ """Base class for all plugin actions.
21
+
22
+ Attrs:
23
+ name (str): The name of the action.
24
+ category (PluginCategory): The category of the action.
25
+ method (RunMethod): The method to run of the action.
26
+ run_class (Run): The class to run the action.
27
+ params_model (BaseModel): The model to validate the params.
28
+ progress_categories (List[str]): The categories to update the progress.
29
+ params (Dict): The params to run the action.
30
+ plugin_config (Dict): The plugin config.
31
+ plugin_release (PluginRelease): The plugin release.
32
+ config (Dict): The action config.
33
+ requirements (List[str]): The requirements to install.
34
+ job_id (str): The job id.
35
+ direct (bool): The flag to run the action directly.
36
+ debug (bool): The flag to run the action in debug mode.
37
+ envs (Dict): The runtime envs.
38
+ run (Run): The run instance.
39
+
40
+ Raises:
41
+ ActionError: If the action fails.
42
+ """
43
+
20
44
  # class 변수
21
45
  name = None
22
46
  category = None
@@ -159,11 +183,19 @@ class Action:
159
183
  return getattr(self, f'start_by_{self.method.value}')()
160
184
 
161
185
  def start(self):
186
+ """Start the action.
187
+
188
+ TODO: Specify the return type of start method for overrided methods.
189
+ """
162
190
  if self.method == RunMethod.JOB:
163
191
  return self.entrypoint(self.run, **self.params)
164
192
  return self.entrypoint(**self.params)
165
193
 
166
194
  def start_by_task(self):
195
+ """Ray Task based execution.
196
+
197
+ * A task method that simply executes the entrypoint without job management functionality.
198
+ """
167
199
  import ray
168
200
  from ray.exceptions import RayTaskError
169
201
 
@@ -195,6 +227,10 @@ class Action:
195
227
  raise ActionError(e.cause)
196
228
 
197
229
  def start_by_job(self):
230
+ """Ray Job based execution.
231
+
232
+ * Executes the entrypoint with Ray job. Ray job manages the entrypoint execution and stores the results.
233
+ """
198
234
  main_options = []
199
235
  options = ['run', '--direct']
200
236
  arguments = [self.name, f'{json.dumps(json.dumps(self.params))}']
@@ -215,6 +251,10 @@ class Action:
215
251
  )
216
252
 
217
253
  def start_by_restapi(self):
254
+ """Ray Serve based execution.
255
+
256
+ * This method executes a Fastapi endpoint defined within the Plugin.
257
+ """
218
258
  path = self.params.pop('path', '')
219
259
  method = self.params.pop('method')
220
260
 
@@ -61,11 +61,8 @@ class ExportAction(Action):
61
61
  }
62
62
 
63
63
  def get_filtered_results(self):
64
- """Get filtered ground truth."""
65
- ground_truth_dataset_version = self.params['ground_truth_dataset_version']
66
- self.params['filter']['ground_truth_dataset'] = self.client.get_ground_truth_version(
67
- ground_truth_dataset_version
68
- )['ground_truth_dataset']
64
+ """Get filtered ground truth events."""
65
+ self.params['filter']['ground_truth_dataset_versions'] = self.params['ground_truth_dataset_version']
69
66
  filters = {'expand': 'data', **self.params['filter']}
70
67
 
71
68
  try:
@@ -1,9 +1,8 @@
1
1
  import json
2
+ from pathlib import Path
2
3
 
3
4
  import requests
4
5
 
5
- from synapse_sdk.plugins.categories.export.actions.utils import get_original_file_path
6
-
7
6
 
8
7
  def export(run, input_dataset, path_root, **params):
9
8
  """Executes the export task.
@@ -14,7 +13,7 @@ def export(run, input_dataset, path_root, **params):
14
13
  - data (dict): dm_schema_data information.
15
14
  - files (dict): File information. Includes file URL, original file path, metadata, etc.
16
15
  - id (int): ground_truth ID
17
- path_root : Save path
16
+ path_root : pathlib object, the path to export
18
17
  **params: Additional parameters
19
18
 
20
19
  Returns:
@@ -24,10 +23,11 @@ def export(run, input_dataset, path_root, **params):
24
23
  path_root.mkdir(parents=True, exist_ok=True)
25
24
  run.log_message('Starting export process.')
26
25
 
27
- # results: Contains all information fetched through the list API.
28
- results = params.get('results', [])
26
+ # results contains all information fetched through the list API.
27
+ # example:
28
+ # params.get('results', [])
29
29
 
30
- save_original_file = params.get('save_original_file')
30
+ save_original_file_flag = params.get('save_original_file')
31
31
  errors_json_file_list = []
32
32
  errors_original_file_list = []
33
33
 
@@ -39,21 +39,28 @@ def export(run, input_dataset, path_root, **params):
39
39
  origin_files_output_path = path_root / 'origin_files'
40
40
  origin_files_output_path.mkdir(parents=True, exist_ok=True)
41
41
 
42
- total = len(results)
43
- for no, input_data in enumerate(input_dataset):
42
+ total = params['count']
43
+ # progress init
44
+ run.set_progress(0, total, category='dataset_conversion')
45
+ for no, input_data in enumerate(input_dataset, start=1):
44
46
  run.set_progress(no, total, category='dataset_conversion')
47
+ if no == 1:
48
+ run.log_message('Converting dataset.')
45
49
  preprocessed_data = before_convert(input_data)
46
50
  converted_data = convert_data(preprocessed_data)
47
51
  final_data = after_convert(converted_data)
48
52
 
49
53
  # Call if original file extraction is needed
50
- if save_original_file:
54
+ if save_original_file_flag:
55
+ if no == 1:
56
+ run.log_message('Saving original file.')
51
57
  save_original_file(final_data, origin_files_output_path, errors_original_file_list)
52
58
 
53
59
  # Extract data as JSON files
60
+ if no == 1:
61
+ run.log_message('Saving json file.')
54
62
  save_as_json(final_data, json_output_path, errors_json_file_list)
55
63
 
56
- run.log_message('Saving converted dataset.')
57
64
  run.end_log()
58
65
 
59
66
  # Save error list files
@@ -62,7 +69,7 @@ def export(run, input_dataset, path_root, **params):
62
69
  with (path_root / 'error_file_list.json').open('w', encoding='utf-8') as f:
63
70
  json.dump(export_error_file, f, indent=4, ensure_ascii=False)
64
71
 
65
- return {'export_path': path_root}
72
+ return {'export_path': str(path_root)}
66
73
 
67
74
 
68
75
  def convert_data(data):
@@ -80,19 +87,29 @@ def after_convert(data):
80
87
  return data
81
88
 
82
89
 
83
- def save_original_file(result, base_path, error_file_list):
84
- """Saves the original file.
90
+ def get_original_file_pathlib(files):
91
+ """Retrieve the original file path from the given file information.
85
92
 
86
93
  Args:
87
- result (dict): Result data
88
- base_path (Path): Save path
89
- error_file_list (list): List of error files
94
+ files (dict): A dictionary containing file information, including file URL,
95
+ original file path, metadata, etc.
90
96
 
91
97
  Returns:
92
- base_path (str): Save path
98
+ pathlib.Path: The original file path extracted from the metadata.
99
+ """
100
+ return Path(next(iter(files.values()))['meta']['path_original'])
101
+
102
+
103
+ def save_original_file(result, base_path, error_file_list):
104
+ """Saves the original file.
105
+
106
+ Args:
107
+ result (dict): API response data containing file information.
108
+ base_path (Path): The directory where the file will be saved.
109
+ error_file_list (list): A list to store error files.
93
110
  """
94
111
  file_url = next(iter(result['files'].values()))['url']
95
- file_name = get_original_file_path(result['files']).name
112
+ file_name = get_original_file_pathlib(result['files']).name
96
113
  response = requests.get(file_url)
97
114
  try:
98
115
  with (base_path / file_name).open('wb') as file:
@@ -100,27 +117,20 @@ def save_original_file(result, base_path, error_file_list):
100
117
  except Exception as e:
101
118
  error_file_list.append([file_name, str(e)])
102
119
 
103
- return base_path
104
-
105
120
 
106
121
  def save_as_json(result, base_path, error_file_list):
107
122
  """Saves the data as a JSON file.
108
123
 
109
124
  Args:
110
- result (dict): Result data
111
- base_path (Path): Save path
112
- error_file_list (list): List of error files
113
-
114
- Returns:
115
- base_path (str): Save path
125
+ result (dict): API response data containing file information.
126
+ base_path (Path): The directory where the file will be saved.
127
+ error_file_list (list): A list to store error files.
116
128
  """
117
129
  # Default save file name: original file name
118
- file_name = get_original_file_path(result['files']).stem
130
+ file_name = get_original_file_pathlib(result['files']).stem
119
131
  json_data = result['data']
120
132
  try:
121
133
  with (base_path / f'{file_name}.json').open('w', encoding='utf-8') as f:
122
134
  json.dump(json_data, f, indent=4, ensure_ascii=False)
123
135
  except Exception as e:
124
136
  error_file_list.append([f'{file_name}.json', str(e)])
125
-
126
- return base_path
@@ -51,7 +51,7 @@ class TrainParams(BaseModel):
51
51
  params={
52
52
  'ids_ex': action.job_id,
53
53
  'category': 'neural_net',
54
- 'action': 'train',
54
+ 'job__action': 'train',
55
55
  'is_active': True,
56
56
  'params': f'name:{value}',
57
57
  },