synapse-sdk 1.0.0a13__py3-none-any.whl → 2025.11.7__py3-none-any.whl

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 (339) hide show
  1. synapse_sdk/__init__.py +24 -0
  2. synapse_sdk/cli/__init__.py +310 -5
  3. synapse_sdk/cli/alias/__init__.py +22 -0
  4. synapse_sdk/cli/alias/create.py +36 -0
  5. synapse_sdk/cli/alias/dataclass.py +31 -0
  6. synapse_sdk/cli/alias/default.py +16 -0
  7. synapse_sdk/cli/alias/delete.py +15 -0
  8. synapse_sdk/cli/alias/list.py +19 -0
  9. synapse_sdk/cli/alias/read.py +15 -0
  10. synapse_sdk/cli/alias/update.py +17 -0
  11. synapse_sdk/cli/alias/utils.py +61 -0
  12. synapse_sdk/cli/code_server.py +687 -0
  13. synapse_sdk/cli/config.py +440 -0
  14. synapse_sdk/cli/devtools.py +90 -0
  15. synapse_sdk/cli/plugin/__init__.py +33 -0
  16. synapse_sdk/cli/{create_plugin.py → plugin/create.py} +2 -2
  17. synapse_sdk/cli/plugin/publish.py +45 -0
  18. synapse_sdk/{plugins/cli → cli/plugin}/run.py +12 -5
  19. synapse_sdk/clients/agent/__init__.py +9 -3
  20. synapse_sdk/clients/agent/container.py +133 -0
  21. synapse_sdk/clients/agent/core.py +19 -0
  22. synapse_sdk/clients/agent/ray.py +298 -9
  23. synapse_sdk/clients/backend/__init__.py +41 -12
  24. synapse_sdk/clients/backend/annotation.py +13 -5
  25. synapse_sdk/clients/backend/core.py +59 -0
  26. synapse_sdk/clients/backend/data_collection.py +186 -0
  27. synapse_sdk/clients/backend/hitl.py +17 -0
  28. synapse_sdk/clients/backend/integration.py +19 -4
  29. synapse_sdk/clients/backend/ml.py +10 -7
  30. synapse_sdk/clients/backend/models.py +78 -0
  31. synapse_sdk/clients/base.py +381 -34
  32. synapse_sdk/clients/ray/serve.py +2 -0
  33. synapse_sdk/clients/validators/collections.py +31 -0
  34. synapse_sdk/devtools/config.py +94 -0
  35. synapse_sdk/devtools/docs/.gitignore +20 -0
  36. synapse_sdk/devtools/docs/README.md +41 -0
  37. synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
  38. synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
  39. synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
  40. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  41. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
  42. synapse_sdk/devtools/docs/blog/authors.yml +25 -0
  43. synapse_sdk/devtools/docs/blog/tags.yml +19 -0
  44. synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
  45. synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
  46. synapse_sdk/devtools/docs/docs/api/clients/backend.md +420 -0
  47. synapse_sdk/devtools/docs/docs/api/clients/base.md +257 -0
  48. synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
  49. synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
  50. synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
  51. synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
  52. synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
  53. synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
  54. synapse_sdk/devtools/docs/docs/api/clients/ray.md +342 -0
  55. synapse_sdk/devtools/docs/docs/api/index.md +52 -0
  56. synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
  57. synapse_sdk/devtools/docs/docs/api/plugins/models.md +114 -0
  58. synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
  59. synapse_sdk/devtools/docs/docs/categories.md +0 -0
  60. synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
  61. synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
  62. synapse_sdk/devtools/docs/docs/configuration.md +83 -0
  63. synapse_sdk/devtools/docs/docs/contributing.md +306 -0
  64. synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
  65. synapse_sdk/devtools/docs/docs/faq.md +179 -0
  66. synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
  67. synapse_sdk/devtools/docs/docs/features/index.md +24 -0
  68. synapse_sdk/devtools/docs/docs/features/utils/file.md +415 -0
  69. synapse_sdk/devtools/docs/docs/features/utils/network.md +378 -0
  70. synapse_sdk/devtools/docs/docs/features/utils/storage.md +57 -0
  71. synapse_sdk/devtools/docs/docs/features/utils/types.md +51 -0
  72. synapse_sdk/devtools/docs/docs/installation.md +94 -0
  73. synapse_sdk/devtools/docs/docs/introduction.md +47 -0
  74. synapse_sdk/devtools/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +814 -0
  75. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  76. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  77. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  78. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  79. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  80. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  81. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  82. synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +1092 -0
  83. synapse_sdk/devtools/docs/docs/plugins/plugins.md +852 -0
  84. synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
  85. synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
  86. synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
  87. synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
  88. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
  89. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
  90. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
  91. synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
  92. synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
  93. synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
  94. synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
  95. synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
  96. synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
  97. synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
  98. synapse_sdk/devtools/docs/docusaurus.config.ts +148 -0
  99. synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
  100. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
  101. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
  102. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
  103. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
  104. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
  105. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
  106. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
  107. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
  108. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
  109. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
  110. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +342 -0
  111. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
  112. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
  113. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
  114. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
  115. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
  116. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
  117. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
  118. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
  119. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
  120. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
  121. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
  122. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
  123. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +378 -0
  124. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +60 -0
  125. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
  126. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
  127. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
  128. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +815 -0
  129. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  130. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  131. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  132. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  133. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  134. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  135. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  136. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
  137. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
  138. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
  139. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
  140. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
  141. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
  142. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
  143. synapse_sdk/devtools/docs/package-lock.json +18784 -0
  144. synapse_sdk/devtools/docs/package.json +48 -0
  145. synapse_sdk/devtools/docs/sidebars.ts +122 -0
  146. synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
  147. synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
  148. synapse_sdk/devtools/docs/src/css/custom.css +30 -0
  149. synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
  150. synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
  151. synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
  152. synapse_sdk/devtools/docs/static/.nojekyll +0 -0
  153. synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
  154. synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
  155. synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
  156. synapse_sdk/devtools/docs/static/img/logo.png +0 -0
  157. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
  158. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
  159. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
  160. synapse_sdk/devtools/docs/tsconfig.json +8 -0
  161. synapse_sdk/devtools/server.py +41 -0
  162. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  163. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  164. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  165. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  166. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  167. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  168. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  169. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  170. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  171. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  172. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  173. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  174. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  175. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  176. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  177. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  178. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  179. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  180. synapse_sdk/devtools/streamlit_app.py +10 -0
  181. synapse_sdk/loggers.py +74 -9
  182. synapse_sdk/plugins/README.md +1340 -0
  183. synapse_sdk/plugins/__init__.py +0 -13
  184. synapse_sdk/plugins/categories/base.py +145 -30
  185. synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
  186. synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
  187. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  188. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  189. synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
  190. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  191. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  192. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  193. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  194. synapse_sdk/plugins/categories/export/actions/export/utils.py +187 -0
  195. synapse_sdk/plugins/categories/export/templates/config.yaml +21 -0
  196. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
  197. synapse_sdk/plugins/categories/export/templates/plugin/export.py +160 -0
  198. synapse_sdk/plugins/categories/neural_net/actions/deployment.py +29 -14
  199. synapse_sdk/plugins/categories/neural_net/actions/inference.py +13 -1
  200. synapse_sdk/plugins/categories/neural_net/actions/train.py +1084 -38
  201. synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
  202. synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
  203. synapse_sdk/plugins/categories/neural_net/base/inference.py +37 -0
  204. synapse_sdk/plugins/categories/neural_net/templates/config.yaml +30 -5
  205. synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
  206. synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
  207. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
  208. synapse_sdk/plugins/categories/{export/actions/export.py → pre_annotation/actions/pre_annotation/action.py} +4 -4
  209. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
  210. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +145 -0
  211. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
  212. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
  213. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
  214. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +97 -0
  215. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +250 -0
  216. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
  217. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
  218. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +287 -0
  219. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
  220. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
  221. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +87 -0
  222. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +127 -0
  223. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
  224. synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +966 -0
  225. synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
  226. synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
  227. synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +5 -2
  228. synapse_sdk/plugins/categories/upload/__init__.py +0 -0
  229. synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
  230. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
  231. synapse_sdk/plugins/categories/upload/actions/upload/action.py +232 -0
  232. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  233. synapse_sdk/plugins/categories/upload/actions/upload/enums.py +471 -0
  234. synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
  235. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
  236. synapse_sdk/plugins/categories/upload/actions/upload/models.py +203 -0
  237. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
  238. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  239. synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
  240. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  241. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
  242. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  243. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
  244. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +84 -0
  245. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
  246. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
  247. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +203 -0
  248. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +97 -0
  249. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
  250. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  251. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
  252. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  253. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  254. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
  255. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  256. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +258 -0
  257. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +281 -0
  258. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  259. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  260. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  261. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  262. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
  263. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  264. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
  265. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
  266. synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
  267. synapse_sdk/plugins/categories/upload/templates/config.yaml +33 -0
  268. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
  269. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +102 -0
  270. synapse_sdk/plugins/enums.py +3 -1
  271. synapse_sdk/plugins/models.py +140 -16
  272. synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
  273. synapse_sdk/plugins/templates/schema.json +491 -0
  274. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +1 -0
  275. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
  276. synapse_sdk/plugins/utils/__init__.py +46 -0
  277. synapse_sdk/plugins/utils/actions.py +119 -0
  278. synapse_sdk/plugins/utils/config.py +203 -0
  279. synapse_sdk/plugins/utils/legacy.py +95 -0
  280. synapse_sdk/plugins/utils/ray_gcs.py +66 -0
  281. synapse_sdk/plugins/utils/registry.py +58 -0
  282. synapse_sdk/shared/__init__.py +25 -0
  283. synapse_sdk/shared/enums.py +93 -0
  284. synapse_sdk/types.py +19 -0
  285. synapse_sdk/utils/converters/__init__.py +240 -0
  286. synapse_sdk/utils/converters/coco/__init__.py +0 -0
  287. synapse_sdk/utils/converters/coco/from_dm.py +322 -0
  288. synapse_sdk/utils/converters/coco/to_dm.py +215 -0
  289. synapse_sdk/utils/converters/dm/__init__.py +56 -0
  290. synapse_sdk/utils/converters/dm/from_v1.py +627 -0
  291. synapse_sdk/utils/converters/dm/to_v1.py +367 -0
  292. synapse_sdk/utils/converters/pascal/__init__.py +0 -0
  293. synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
  294. synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
  295. synapse_sdk/utils/converters/yolo/__init__.py +0 -0
  296. synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
  297. synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
  298. synapse_sdk/utils/dataset.py +46 -0
  299. synapse_sdk/utils/encryption.py +158 -0
  300. synapse_sdk/utils/file/__init__.py +39 -0
  301. synapse_sdk/utils/file/archive.py +32 -0
  302. synapse_sdk/utils/file/checksum.py +56 -0
  303. synapse_sdk/utils/file/chunking.py +31 -0
  304. synapse_sdk/utils/file/download.py +385 -0
  305. synapse_sdk/utils/file/encoding.py +40 -0
  306. synapse_sdk/utils/file/io.py +22 -0
  307. synapse_sdk/utils/file/video/__init__.py +29 -0
  308. synapse_sdk/utils/file/video/transcode.py +307 -0
  309. synapse_sdk/utils/file.py.backup +301 -0
  310. synapse_sdk/utils/http.py +138 -0
  311. synapse_sdk/utils/network.py +309 -0
  312. synapse_sdk/utils/storage/__init__.py +72 -0
  313. synapse_sdk/utils/storage/providers/__init__.py +183 -0
  314. synapse_sdk/utils/storage/providers/file_system.py +134 -0
  315. synapse_sdk/utils/storage/providers/gcp.py +13 -0
  316. synapse_sdk/utils/storage/providers/http.py +190 -0
  317. synapse_sdk/utils/storage/providers/s3.py +91 -0
  318. synapse_sdk/utils/storage/providers/sftp.py +47 -0
  319. synapse_sdk/utils/storage/registry.py +17 -0
  320. synapse_sdk-2025.11.7.dist-info/METADATA +122 -0
  321. synapse_sdk-2025.11.7.dist-info/RECORD +386 -0
  322. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
  323. synapse_sdk/clients/backend/dataset.py +0 -51
  324. synapse_sdk/plugins/categories/import/actions/import.py +0 -10
  325. synapse_sdk/plugins/cli/__init__.py +0 -21
  326. synapse_sdk/plugins/cli/publish.py +0 -37
  327. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -24
  328. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -24
  329. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -4
  330. synapse_sdk/plugins/utils.py +0 -50
  331. synapse_sdk/utils/file.py +0 -87
  332. synapse_sdk/utils/storage.py +0 -91
  333. synapse_sdk-1.0.0a13.dist-info/METADATA +0 -43
  334. synapse_sdk-1.0.0a13.dist-info/RECORD +0 -111
  335. /synapse_sdk/{plugins/categories/import → clients/validators}/__init__.py +0 -0
  336. /synapse_sdk/{plugins/categories/import/actions → devtools}/__init__.py +0 -0
  337. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
  338. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info/licenses}/LICENSE +0 -0
  339. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,422 @@
1
+ ---
2
+ id: data-collection-mixin
3
+ title: DataCollectionClientMixin
4
+ sidebar_position: 3
5
+ ---
6
+
7
+ # DataCollectionClientMixin
8
+
9
+ Provides data collection and file management operations for the Synapse backend.
10
+
11
+ ## Overview
12
+
13
+ The `DataCollectionClientMixin` handles all operations related to data collections, file uploads, data units, and batch processing. This mixin is automatically included in the `BackendClient` and provides methods for managing large-scale data operations.
14
+
15
+ ## Data Collection Operations
16
+
17
+ ### `list_data_collection()`
18
+
19
+ Retrieve a list of all available data collections.
20
+
21
+ ```python
22
+ collections = client.list_data_collection()
23
+ for collection in collections:
24
+ print(f"Collection: {collection['name']} (ID: {collection['id']})")
25
+ ```
26
+
27
+ **Returns:**
28
+
29
+ - `list`: List of data collection objects
30
+
31
+ ### `get_data_collection(data_collection_id)`
32
+
33
+ Get detailed information about a specific data collection.
34
+
35
+ ```python
36
+ collection = client.get_data_collection(123)
37
+ print(f"Collection: {collection['name']}")
38
+ print(f"Description: {collection['description']}")
39
+
40
+ # Access file specifications
41
+ file_specs = collection['file_specifications']
42
+ for spec in file_specs:
43
+ print(f"File type: {spec['name']}, Required: {spec['is_required']}")
44
+ ```
45
+
46
+ **Parameters:**
47
+
48
+ - `data_collection_id` (int): Data collection ID
49
+
50
+ **Returns:**
51
+
52
+ - `dict`: Detailed collection information including file specifications
53
+
54
+ **Collection structure:**
55
+
56
+ - `id`: Collection ID
57
+ - `name`: Collection name
58
+ - `description`: Collection description
59
+ - `file_specifications`: List of required file types and formats
60
+ - `project`: Associated project ID
61
+ - `created_at`: Creation timestamp
62
+
63
+ ## File Operations
64
+
65
+ ### `create_data_file(file_path, use_chunked_upload=False)`
66
+
67
+ Create and upload a data file to the backend.
68
+
69
+ ```python
70
+ from pathlib import Path
71
+
72
+ # Regular upload for smaller files
73
+ data_file = client.create_data_file(Path('/path/to/image.jpg'))
74
+ print(f"Uploaded file ID: {data_file['id']}")
75
+
76
+ # Chunked upload for large files (>50MB recommended)
77
+ large_file = client.create_data_file(
78
+ Path('/path/to/large_dataset.zip'),
79
+ use_chunked_upload=True
80
+ )
81
+ print(f"Large file uploaded: {large_file['id']}")
82
+ ```
83
+
84
+ **Parameters:**
85
+
86
+ - `file_path` (Path): Path object pointing to the file to upload
87
+ - `use_chunked_upload` (bool): Enable chunked upload for large files
88
+
89
+ **Returns:**
90
+
91
+ - `dict` or `str`: File upload response with file ID and metadata
92
+
93
+ **When to use chunked upload:**
94
+
95
+ - Files larger than 50MB
96
+ - Unreliable network connections
97
+ - When you need upload progress tracking
98
+ - For better error recovery
99
+
100
+ ### `upload_data_file(organized_file, collection_id, use_chunked_upload=False)`
101
+
102
+ Upload organized file data to a specific collection.
103
+
104
+ ```python
105
+ # Organize file data
106
+ organized_file = {
107
+ 'files': {
108
+ 'image': Path('/path/to/image.jpg'),
109
+ 'annotation': Path('/path/to/annotation.json'),
110
+ 'metadata': Path('/path/to/metadata.xml')
111
+ },
112
+ 'meta': {
113
+ 'origin_file_stem': 'sample_001',
114
+ 'origin_file_extension': '.jpg',
115
+ 'created_at': '2023-10-01T12:00:00Z',
116
+ 'batch_id': 'batch_001'
117
+ }
118
+ }
119
+
120
+ # Upload to collection
121
+ result = client.upload_data_file(
122
+ organized_file=organized_file,
123
+ collection_id=123,
124
+ use_chunked_upload=False
125
+ )
126
+ ```
127
+
128
+ **Parameters:**
129
+
130
+ - `organized_file` (dict): Structured file data with files and metadata
131
+ - `collection_id` (int): Target data collection ID
132
+ - `use_chunked_upload` (bool): Enable chunked upload
133
+
134
+ **Organized file structure:**
135
+
136
+ - `files` (dict): Dictionary mapping file types to file paths
137
+ - `meta` (dict): Metadata associated with the file group
138
+
139
+ **Returns:**
140
+
141
+ - `dict`: Upload result with file references and IDs
142
+
143
+ ### `create_data_units(uploaded_files)`
144
+
145
+ Create data units from previously uploaded files.
146
+
147
+ ```python
148
+ # Files that have been uploaded
149
+ uploaded_files = [
150
+ {
151
+ 'id': 1,
152
+ 'file': {'image': 'file_id_123', 'annotation': 'file_id_124'},
153
+ 'meta': {'batch': 'batch_001'}
154
+ },
155
+ {
156
+ 'id': 2,
157
+ 'file': {'image': 'file_id_125', 'annotation': 'file_id_126'},
158
+ 'meta': {'batch': 'batch_001'}
159
+ }
160
+ ]
161
+
162
+ # Create data units
163
+ data_units = client.create_data_units(uploaded_files)
164
+ print(f"Created {len(data_units)} data units")
165
+ ```
166
+
167
+ **Parameters:**
168
+
169
+ - `uploaded_files` (list): List of uploaded file structures
170
+
171
+ **Returns:**
172
+
173
+ - `list`: Created data units with IDs and metadata
174
+
175
+ ## Batch Processing
176
+
177
+ The mixin supports efficient batch processing for large-scale operations:
178
+
179
+ ```python
180
+ from multiprocessing import Pool
181
+ from pathlib import Path
182
+
183
+ # Example: Batch upload multiple files
184
+ file_paths = [
185
+ Path('/data/batch1/file1.jpg'),
186
+ Path('/data/batch1/file2.jpg'),
187
+ Path('/data/batch1/file3.jpg'),
188
+ # ... more files
189
+ ]
190
+
191
+ # Process files in batches
192
+ batch_size = 10
193
+ for i in range(0, len(file_paths), batch_size):
194
+ batch = file_paths[i:i+batch_size]
195
+
196
+ # Upload batch
197
+ uploaded_files = []
198
+ for file_path in batch:
199
+ result = client.create_data_file(file_path)
200
+ uploaded_files.append({
201
+ 'id': len(uploaded_files) + 1,
202
+ 'file': {'image': result['id']},
203
+ 'meta': {'batch': f'batch_{i//batch_size}'}
204
+ })
205
+
206
+ # Create data units for batch
207
+ data_units = client.create_data_units(uploaded_files)
208
+ print(f"Processed batch {i//batch_size}: {len(data_units)} data units")
209
+ ```
210
+
211
+ ## Progress Tracking
212
+
213
+ For large uploads, you can track progress:
214
+
215
+ ```python
216
+ import os
217
+ from tqdm import tqdm
218
+
219
+ def upload_with_progress(file_paths, collection_id):
220
+ """Upload files with progress tracking."""
221
+ uploaded_files = []
222
+
223
+ with tqdm(total=len(file_paths), desc="Uploading files") as pbar:
224
+ for file_path in file_paths:
225
+ try:
226
+ # Check file size to decide upload method
227
+ file_size = os.path.getsize(file_path)
228
+ use_chunked = file_size > 50 * 1024 * 1024 # 50MB
229
+
230
+ # Upload file
231
+ result = client.create_data_file(
232
+ file_path,
233
+ use_chunked_upload=use_chunked
234
+ )
235
+
236
+ # Organize for collection
237
+ organized_file = {
238
+ 'files': {'primary': file_path},
239
+ 'meta': {
240
+ 'origin_file_stem': file_path.stem,
241
+ 'origin_file_extension': file_path.suffix,
242
+ 'file_size': file_size
243
+ }
244
+ }
245
+
246
+ upload_result = client.upload_data_file(
247
+ organized_file,
248
+ collection_id,
249
+ use_chunked_upload=use_chunked
250
+ )
251
+
252
+ uploaded_files.append(upload_result)
253
+ pbar.update(1)
254
+
255
+ except Exception as e:
256
+ print(f"Failed to upload {file_path}: {e}")
257
+ pbar.update(1)
258
+ continue
259
+
260
+ return uploaded_files
261
+
262
+ # Usage
263
+ file_paths = [Path(f'/data/file_{i}.jpg') for i in range(100)]
264
+ results = upload_with_progress(file_paths, collection_id=123)
265
+ ```
266
+
267
+ ## Data Validation
268
+
269
+ ### File Specification Validation
270
+
271
+ ```python
272
+ def validate_files_against_collection(file_paths, collection_id):
273
+ """Validate files against collection specifications."""
274
+ collection = client.get_data_collection(collection_id)
275
+ file_specs = collection['file_specifications']
276
+
277
+ # Create specification lookup
278
+ required_types = {spec['name'] for spec in file_specs if spec['is_required']}
279
+ optional_types = {spec['name'] for spec in file_specs if not spec['is_required']}
280
+
281
+ # Validate file organization
282
+ organized_files = []
283
+ for file_path in file_paths:
284
+ # Extract file type from path or metadata
285
+ file_type = extract_file_type(file_path) # Custom function
286
+
287
+ if file_type in required_types or file_type in optional_types:
288
+ organized_files.append({
289
+ 'path': file_path,
290
+ 'type': file_type,
291
+ 'valid': True
292
+ })
293
+ else:
294
+ print(f"Warning: Unknown file type '{file_type}' for {file_path}")
295
+ organized_files.append({
296
+ 'path': file_path,
297
+ 'type': file_type,
298
+ 'valid': False
299
+ })
300
+
301
+ return organized_files
302
+
303
+ def extract_file_type(file_path):
304
+ """Extract file type from path - implement based on your naming convention."""
305
+ # Example implementation
306
+ if 'image' in str(file_path):
307
+ return 'image'
308
+ elif 'annotation' in str(file_path):
309
+ return 'annotation'
310
+ elif 'metadata' in str(file_path):
311
+ return 'metadata'
312
+ else:
313
+ return 'unknown'
314
+ ```
315
+
316
+ ## Error Handling and Retry Logic
317
+
318
+ ```python
319
+ import time
320
+ from synapse_sdk.clients.exceptions import ClientError
321
+
322
+ def robust_upload(file_path, max_retries=3):
323
+ """Upload with retry logic for reliability."""
324
+ for attempt in range(max_retries):
325
+ try:
326
+ result = client.create_data_file(file_path, use_chunked_upload=True)
327
+ return result
328
+ except ClientError as e:
329
+ if e.status_code == 413: # File too large
330
+ print(f"File {file_path} too large, trying chunked upload")
331
+ try:
332
+ return client.create_data_file(file_path, use_chunked_upload=True)
333
+ except Exception as retry_e:
334
+ print(f"Chunked upload failed: {retry_e}")
335
+ if attempt == max_retries - 1:
336
+ raise
337
+ elif e.status_code == 429: # Rate limited
338
+ wait_time = 2 ** attempt # Exponential backoff
339
+ print(f"Rate limited, waiting {wait_time} seconds...")
340
+ time.sleep(wait_time)
341
+ else:
342
+ print(f"Upload failed (attempt {attempt + 1}): {e}")
343
+ if attempt == max_retries - 1:
344
+ raise
345
+ except Exception as e:
346
+ print(f"Unexpected error (attempt {attempt + 1}): {e}")
347
+ if attempt == max_retries - 1:
348
+ raise
349
+ time.sleep(1) # Brief pause before retry
350
+ ```
351
+
352
+ ## Complete Workflow Example
353
+
354
+ ```python
355
+ from pathlib import Path
356
+ from synapse_sdk.clients.backend import BackendClient
357
+
358
+ def complete_data_ingestion_workflow():
359
+ """Complete workflow for data ingestion."""
360
+ client = BackendClient(
361
+ base_url="https://api.synapse.sh",
362
+ api_token="your-token"
363
+ )
364
+
365
+ # 1. Choose or create data collection
366
+ collections = client.list_data_collection()
367
+ collection_id = collections[0]['id'] # Use first available
368
+
369
+ # 2. Get collection specifications
370
+ collection = client.get_data_collection(collection_id)
371
+ print(f"Using collection: {collection['name']}")
372
+
373
+ # 3. Prepare file paths
374
+ data_dir = Path('/path/to/your/data')
375
+ image_files = list(data_dir.glob('*.jpg'))
376
+
377
+ # 4. Upload files and create data units
378
+ uploaded_files = []
379
+ for i, image_path in enumerate(image_files):
380
+ # Upload individual file
381
+ data_file = client.create_data_file(image_path)
382
+
383
+ # Organize for collection
384
+ organized_file = {
385
+ 'files': {'image': image_path},
386
+ 'meta': {
387
+ 'origin_file_stem': image_path.stem,
388
+ 'origin_file_extension': image_path.suffix,
389
+ 'sequence': i,
390
+ 'batch': 'batch_001'
391
+ }
392
+ }
393
+
394
+ # Upload to collection
395
+ upload_result = client.upload_data_file(
396
+ organized_file,
397
+ collection_id
398
+ )
399
+ uploaded_files.append(upload_result)
400
+
401
+ # 5. Create data units in batches
402
+ batch_size = 10
403
+ all_data_units = []
404
+ for i in range(0, len(uploaded_files), batch_size):
405
+ batch = uploaded_files[i:i+batch_size]
406
+ data_units = client.create_data_units(batch)
407
+ all_data_units.extend(data_units)
408
+ print(f"Created batch {i//batch_size}: {len(data_units)} data units")
409
+
410
+ print(f"Total data units created: {len(all_data_units)}")
411
+ return all_data_units
412
+
413
+ # Run the workflow
414
+ if __name__ == "__main__":
415
+ data_units = complete_data_ingestion_workflow()
416
+ ```
417
+
418
+ ## See Also
419
+
420
+ - [BackendClient](./backend.md) - Main backend client
421
+ - [CoreClientMixin](./core-mixin.md) - Core file operations
422
+ - [AnnotationClientMixin](./annotation-mixin.md) - Task and annotation management