synapse-sdk 1.0.0a35__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 (307) hide show
  1. synapse_sdk/__init__.py +24 -0
  2. synapse_sdk/cli/__init__.py +308 -5
  3. synapse_sdk/cli/alias/utils.py +1 -1
  4. synapse_sdk/cli/code_server.py +687 -0
  5. synapse_sdk/cli/config.py +440 -0
  6. synapse_sdk/cli/devtools.py +90 -0
  7. synapse_sdk/cli/plugin/publish.py +23 -15
  8. synapse_sdk/clients/agent/__init__.py +9 -3
  9. synapse_sdk/clients/agent/container.py +133 -0
  10. synapse_sdk/clients/agent/core.py +19 -0
  11. synapse_sdk/clients/agent/ray.py +298 -9
  12. synapse_sdk/clients/backend/__init__.py +28 -12
  13. synapse_sdk/clients/backend/annotation.py +9 -1
  14. synapse_sdk/clients/backend/core.py +31 -4
  15. synapse_sdk/clients/backend/data_collection.py +186 -0
  16. synapse_sdk/clients/backend/hitl.py +1 -1
  17. synapse_sdk/clients/backend/integration.py +4 -3
  18. synapse_sdk/clients/backend/ml.py +1 -1
  19. synapse_sdk/clients/backend/models.py +35 -1
  20. synapse_sdk/clients/base.py +309 -36
  21. synapse_sdk/clients/ray/serve.py +2 -0
  22. synapse_sdk/devtools/__init__.py +0 -0
  23. synapse_sdk/devtools/config.py +94 -0
  24. synapse_sdk/devtools/docs/.gitignore +20 -0
  25. synapse_sdk/devtools/docs/README.md +41 -0
  26. synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
  27. synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
  28. synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
  29. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  30. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
  31. synapse_sdk/devtools/docs/blog/authors.yml +25 -0
  32. synapse_sdk/devtools/docs/blog/tags.yml +19 -0
  33. synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
  34. synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
  35. synapse_sdk/devtools/docs/docs/api/clients/backend.md +420 -0
  36. synapse_sdk/devtools/docs/docs/api/clients/base.md +257 -0
  37. synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
  38. synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
  39. synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
  40. synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
  41. synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
  42. synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
  43. synapse_sdk/devtools/docs/docs/api/clients/ray.md +342 -0
  44. synapse_sdk/devtools/docs/docs/api/index.md +52 -0
  45. synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
  46. synapse_sdk/devtools/docs/docs/api/plugins/models.md +114 -0
  47. synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
  48. synapse_sdk/devtools/docs/docs/categories.md +0 -0
  49. synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
  50. synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
  51. synapse_sdk/devtools/docs/docs/configuration.md +83 -0
  52. synapse_sdk/devtools/docs/docs/contributing.md +306 -0
  53. synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
  54. synapse_sdk/devtools/docs/docs/faq.md +179 -0
  55. synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
  56. synapse_sdk/devtools/docs/docs/features/index.md +24 -0
  57. synapse_sdk/devtools/docs/docs/features/utils/file.md +415 -0
  58. synapse_sdk/devtools/docs/docs/features/utils/network.md +378 -0
  59. synapse_sdk/devtools/docs/docs/features/utils/storage.md +57 -0
  60. synapse_sdk/devtools/docs/docs/features/utils/types.md +51 -0
  61. synapse_sdk/devtools/docs/docs/installation.md +94 -0
  62. synapse_sdk/devtools/docs/docs/introduction.md +47 -0
  63. synapse_sdk/devtools/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +814 -0
  64. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  65. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  66. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  67. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  68. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  69. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  70. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  71. synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +1092 -0
  72. synapse_sdk/devtools/docs/docs/plugins/plugins.md +852 -0
  73. synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
  74. synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
  75. synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
  76. synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
  77. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
  78. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
  79. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
  80. synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
  81. synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
  82. synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
  83. synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
  84. synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
  85. synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
  86. synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
  87. synapse_sdk/devtools/docs/docusaurus.config.ts +148 -0
  88. synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
  89. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
  90. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
  91. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
  92. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
  93. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
  94. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
  95. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
  96. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
  97. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
  98. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
  99. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +342 -0
  100. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
  101. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
  102. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
  103. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
  104. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
  105. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
  106. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
  107. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
  108. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
  109. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
  110. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
  111. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
  112. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +378 -0
  113. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +60 -0
  114. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
  115. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
  116. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
  117. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +815 -0
  118. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  119. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  120. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  121. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  122. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  123. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  124. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  125. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
  126. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
  127. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
  128. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
  129. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
  130. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
  131. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
  132. synapse_sdk/devtools/docs/package-lock.json +18784 -0
  133. synapse_sdk/devtools/docs/package.json +48 -0
  134. synapse_sdk/devtools/docs/sidebars.ts +122 -0
  135. synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
  136. synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
  137. synapse_sdk/devtools/docs/src/css/custom.css +30 -0
  138. synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
  139. synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
  140. synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
  141. synapse_sdk/devtools/docs/static/.nojekyll +0 -0
  142. synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
  143. synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
  144. synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
  145. synapse_sdk/devtools/docs/static/img/logo.png +0 -0
  146. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
  147. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
  148. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
  149. synapse_sdk/devtools/docs/tsconfig.json +8 -0
  150. synapse_sdk/devtools/server.py +41 -0
  151. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  152. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  153. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  154. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  155. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  156. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  157. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  158. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  159. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  160. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  161. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  162. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  163. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  164. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  165. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  166. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  167. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  168. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  169. synapse_sdk/devtools/streamlit_app.py +10 -0
  170. synapse_sdk/loggers.py +65 -7
  171. synapse_sdk/plugins/README.md +1340 -0
  172. synapse_sdk/plugins/categories/base.py +73 -11
  173. synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
  174. synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
  175. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  176. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  177. synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
  178. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  179. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  180. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  181. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  182. synapse_sdk/plugins/categories/export/actions/{export.py → export/utils.py} +47 -82
  183. synapse_sdk/plugins/categories/export/templates/config.yaml +19 -1
  184. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
  185. synapse_sdk/plugins/categories/export/templates/plugin/export.py +153 -129
  186. synapse_sdk/plugins/categories/neural_net/actions/deployment.py +9 -62
  187. synapse_sdk/plugins/categories/neural_net/actions/train.py +1062 -32
  188. synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
  189. synapse_sdk/plugins/categories/neural_net/templates/config.yaml +27 -5
  190. synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
  191. synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
  192. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
  193. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/action.py +10 -0
  194. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
  195. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +145 -0
  196. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
  197. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
  198. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
  199. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +97 -0
  200. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +250 -0
  201. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
  202. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
  203. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +287 -0
  204. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
  205. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
  206. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +87 -0
  207. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +127 -0
  208. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
  209. synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +966 -0
  210. synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
  211. synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
  212. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
  213. synapse_sdk/plugins/categories/upload/actions/upload/action.py +232 -0
  214. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  215. synapse_sdk/plugins/categories/upload/actions/upload/enums.py +471 -0
  216. synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
  217. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
  218. synapse_sdk/plugins/categories/upload/actions/upload/models.py +203 -0
  219. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
  220. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  221. synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
  222. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  223. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
  224. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  225. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
  226. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +84 -0
  227. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
  228. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
  229. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +203 -0
  230. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +97 -0
  231. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
  232. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  233. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
  234. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  235. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  236. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
  237. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  238. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +258 -0
  239. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +281 -0
  240. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  241. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  242. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  243. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  244. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
  245. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  246. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
  247. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
  248. synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
  249. synapse_sdk/plugins/categories/upload/templates/config.yaml +29 -2
  250. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
  251. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +88 -30
  252. synapse_sdk/plugins/models.py +122 -16
  253. synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
  254. synapse_sdk/plugins/templates/schema.json +491 -0
  255. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
  256. synapse_sdk/plugins/utils/__init__.py +46 -0
  257. synapse_sdk/plugins/utils/actions.py +119 -0
  258. synapse_sdk/plugins/utils/config.py +203 -0
  259. synapse_sdk/plugins/{utils.py → utils/legacy.py} +26 -46
  260. synapse_sdk/plugins/utils/ray_gcs.py +66 -0
  261. synapse_sdk/plugins/utils/registry.py +58 -0
  262. synapse_sdk/shared/__init__.py +25 -0
  263. synapse_sdk/shared/enums.py +93 -0
  264. synapse_sdk/utils/converters/__init__.py +240 -0
  265. synapse_sdk/utils/converters/coco/__init__.py +0 -0
  266. synapse_sdk/utils/converters/coco/from_dm.py +322 -0
  267. synapse_sdk/utils/converters/coco/to_dm.py +215 -0
  268. synapse_sdk/utils/converters/dm/__init__.py +56 -0
  269. synapse_sdk/utils/converters/dm/from_v1.py +627 -0
  270. synapse_sdk/utils/converters/dm/to_v1.py +367 -0
  271. synapse_sdk/utils/converters/pascal/__init__.py +0 -0
  272. synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
  273. synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
  274. synapse_sdk/utils/converters/yolo/__init__.py +0 -0
  275. synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
  276. synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
  277. synapse_sdk/utils/dataset.py +46 -0
  278. synapse_sdk/utils/encryption.py +158 -0
  279. synapse_sdk/utils/file/__init__.py +39 -0
  280. synapse_sdk/utils/file/archive.py +32 -0
  281. synapse_sdk/utils/file/checksum.py +56 -0
  282. synapse_sdk/utils/file/chunking.py +31 -0
  283. synapse_sdk/utils/file/download.py +385 -0
  284. synapse_sdk/utils/file/encoding.py +40 -0
  285. synapse_sdk/utils/file/io.py +22 -0
  286. synapse_sdk/utils/file/video/__init__.py +29 -0
  287. synapse_sdk/utils/file/video/transcode.py +307 -0
  288. synapse_sdk/utils/{file.py → file.py.backup} +84 -2
  289. synapse_sdk/utils/http.py +138 -0
  290. synapse_sdk/utils/network.py +293 -0
  291. synapse_sdk/utils/storage/__init__.py +36 -2
  292. synapse_sdk/utils/storage/providers/__init__.py +141 -0
  293. synapse_sdk/utils/storage/providers/file_system.py +134 -0
  294. synapse_sdk/utils/storage/providers/http.py +190 -0
  295. synapse_sdk/utils/storage/providers/s3.py +54 -6
  296. synapse_sdk/utils/storage/providers/sftp.py +31 -0
  297. synapse_sdk/utils/storage/registry.py +6 -0
  298. synapse_sdk-2025.11.7.dist-info/METADATA +122 -0
  299. synapse_sdk-2025.11.7.dist-info/RECORD +386 -0
  300. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
  301. synapse_sdk/clients/backend/dataset.py +0 -102
  302. synapse_sdk/plugins/categories/upload/actions/upload.py +0 -293
  303. synapse_sdk-1.0.0a35.dist-info/METADATA +0 -47
  304. synapse_sdk-1.0.0a35.dist-info/RECORD +0 -137
  305. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
  306. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/licenses/LICENSE +0 -0
  307. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,470 @@
1
+ # Upload Plugin
2
+
3
+ The Upload Plugin provides comprehensive file and data upload functionality with support for various storage backends, flexible asset path configuration, and Excel metadata integration.
4
+
5
+ ## Quick Start Usage
6
+
7
+ ### CLI Usage Examples
8
+
9
+ #### Standard Upload (Single Directory)
10
+
11
+ ```bash
12
+ synapse plugin run upload '{
13
+ "name": "Dataset Upload",
14
+ "storage": 1,
15
+ "data_collection": 2,
16
+ "path": "data/dataset",
17
+ "is_recursive": true
18
+ }'
19
+ ```
20
+
21
+ **Note:** Paths starting with `/` are treated as relative to the storage base path.
22
+ For example, if storage base is `/mnt/storage` and path is `/images`, the actual path becomes `/mnt/storage/images`.
23
+
24
+ #### Multi-Path Upload (Different Locations per Asset Type)
25
+
26
+ ```bash
27
+ synapse plugin run upload '{
28
+ "name": "Complex Dataset Upload",
29
+ "storage": 1,
30
+ "data_collection": 2,
31
+ "use_single_path": false,
32
+ "assets": {
33
+ "images": {"path": "images", "is_recursive": true},
34
+ "pointclouds": {"path": "pcd", "is_recursive": false},
35
+ "annotations": {"path": "labels", "is_recursive": true}
36
+ },
37
+ "excel_metadata_path": "/metadata/dataset_info.xlsx"
38
+ }' --debug
39
+ ```
40
+
41
+ **Multi-path mode** (`use_single_path: false`) allows each asset type (spec) to have its own directory configuration.
42
+
43
+ ### Common Use Cases
44
+
45
+ #### 1. Simple Dataset Upload (Single-Path Mode)
46
+
47
+ ```json
48
+ {
49
+ "name": "Training Dataset",
50
+ "storage": 1,
51
+ "data_collection": 2,
52
+ "path": "datasets/training",
53
+ "is_recursive": true
54
+ }
55
+ ```
56
+
57
+ #### 2. Multi-Source Dataset Upload (Multi-Path Mode)
58
+
59
+ ```json
60
+ {
61
+ "name": "Multi-Camera Dataset",
62
+ "storage": 1,
63
+ "data_collection": 2,
64
+ "use_single_path": false,
65
+ "assets": {
66
+ "front_camera": { "path": "cameras/front", "is_recursive": true },
67
+ "rear_camera": { "path": "cameras/rear", "is_recursive": true },
68
+ "lidar": { "path": "sensors/lidar", "is_recursive": false }
69
+ }
70
+ }
71
+ ```
72
+
73
+ **Note:** In multi-path mode, each asset type (defined in the data collection's file specifications) can have its own path and recursion setting.
74
+
75
+ #### 3. Dataset with Metadata (Single-Path Mode)
76
+
77
+ ```json
78
+ {
79
+ "name": "Annotated Dataset",
80
+ "storage": 1,
81
+ "data_collection": 2,
82
+ "path": "data/annotated",
83
+ "is_recursive": true,
84
+ "excel_metadata_path": "/data/metadata.xlsx"
85
+ }
86
+ ```
87
+
88
+ ## Configuration Parameters
89
+
90
+ ### Required Parameters
91
+
92
+ | Parameter | Type | Description | Example |
93
+ | ----------------- | ------- | ---------------------------------------------- | -------------- |
94
+ | `name` | string | Display name for the upload | `"My Dataset"` |
95
+ | `storage` | integer | Storage backend ID | `1` |
96
+ | `data_collection` | integer | Collection ID defining file specs | `2` |
97
+ | `path` | string | Base path (single-path mode only) | `"data/train"` |
98
+ | `assets` | object | Asset configurations (multi-path mode only) | See below |
99
+
100
+ **Mode Selection:**
101
+ - **Single-path mode** (default: `use_single_path: true`): Use `path` parameter. All asset types share the same base directory.
102
+ - **Multi-path mode** (`use_single_path: false`): Use `assets` parameter. Each asset type has its own path configuration.
103
+
104
+ ### Optional Parameters
105
+
106
+ | Parameter | Type | Default | Description |
107
+ | --------------------- | ------- | ------- | -------------------------------------------------------------------------------- |
108
+ | `description` | string | `null` | Upload description |
109
+ | `project` | integer | `null` | Project ID to associate |
110
+ | `use_single_path` | boolean | `true` | `true` = single-path mode, `false` = multi-path mode |
111
+ | `is_recursive` | boolean | `true` | Recursive file discovery (single-path mode only) |
112
+ | `excel_metadata_path` | string | `null` | **DEPRECATED** - File path to Excel metadata file (use `excel_metadata` instead) |
113
+ | `excel_metadata` | object | `null` | Base64 encoded Excel metadata (recommended) |
114
+
115
+ ### Multi-Path Mode: Assets Configuration
116
+
117
+ When `use_single_path: false`, the `assets` parameter maps each asset type to its configuration:
118
+
119
+ ```json
120
+ {
121
+ "assets": {
122
+ "<spec_name>": {
123
+ "path": "relative/path/to/files",
124
+ "is_recursive": true
125
+ }
126
+ }
127
+ }
128
+ ```
129
+
130
+ **Important Notes:**
131
+ - Asset keys must match the file specification names from your data collection
132
+ - Paths are relative to the storage base path (leading `/` is automatically stripped)
133
+ - Each asset can have independent `is_recursive` settings
134
+ - Required specs must have corresponding asset configurations
135
+
136
+ ## Excel Metadata Support
137
+
138
+ The upload plugin provides advanced Excel metadata processing with flexible header support, comprehensive filename matching, and two distinct input methods.
139
+
140
+ ### Input Methods
141
+
142
+ There are two separate parameters for providing Excel metadata:
143
+
144
+ #### 1. File Path Method (`excel_metadata_path`) - **DEPRECATED**
145
+
146
+ :::warning Deprecation Notice
147
+ This parameter is **deprecated** and will be removed in a future version.
148
+ Please migrate to using the `excel_metadata` parameter with base64 encoding instead.
149
+ :::
150
+
151
+ **Use case:** Traditional file-based uploads where the Excel file exists on the server's file system.
152
+
153
+ Simple string path to an Excel file:
154
+
155
+ ```json
156
+ {
157
+ "excel_metadata_path": "/data/metadata.xlsx"
158
+ }
159
+ ```
160
+
161
+ **Advantages:**
162
+
163
+ - Backward compatible with existing implementations
164
+ - Simple and straightforward
165
+ - Direct file system access
166
+
167
+ #### 2. Base64 Encoded Method (`excel_metadata`)
168
+
169
+ **Use case:** Web frontends, APIs, and cloud integrations where files are transmitted as encoded data.
170
+
171
+ Send Excel file as base64-encoded data with original filename:
172
+
173
+ ```json
174
+ {
175
+ "excel_metadata": {
176
+ "data": "UEsDBBQABgAIAAAAIQDd4Z...",
177
+ "filename": "metadata.xlsx"
178
+ }
179
+ }
180
+ ```
181
+
182
+ **Advantages:**
183
+
184
+ - No intermediate file storage required
185
+ - Perfect for web upload forms
186
+ - API-friendly JSON payload
187
+ - Automatic temporary file cleanup
188
+ - **This is the recommended method going forward**
189
+
190
+ **Important:** You cannot use both `excel_metadata_path` and `excel_metadata` at the same time
191
+
192
+ **Migration Example:**
193
+
194
+ ```python
195
+ import base64
196
+
197
+ # Old way (deprecated)
198
+ params = {
199
+ "excel_metadata_path": "/data/metadata.xlsx"
200
+ }
201
+
202
+ # New way (recommended)
203
+ with open("/data/metadata.xlsx", "rb") as f:
204
+ encoded = base64.b64encode(f.read()).decode("utf-8")
205
+ params = {
206
+ "excel_metadata": {
207
+ "data": encoded,
208
+ "filename": "metadata.xlsx"
209
+ }
210
+ }
211
+ ```
212
+
213
+ ### Excel Format Example
214
+
215
+ | filename | category | quality | notes |
216
+ | --------- | ---------- | ------- | ----------------- |
217
+ | sample001 | vehicle | high | Clear visibility |
218
+ | sample002 | pedestrian | medium | Partial occlusion |
219
+
220
+ ### Security Limits
221
+
222
+ - Max file size: 10MB
223
+ - Max rows: 10,000
224
+ - Max columns: 50
225
+
226
+ ## File Matching Logic
227
+
228
+ Files are matched by **stem name** (filename without extension):
229
+
230
+ - `sample001.jpg` → stem: "sample001"
231
+ - `sample001.pcd` → stem: "sample001"
232
+ - `sample001.json` → stem: "sample001"
233
+
234
+ These files form a single dataset named "sample001".
235
+
236
+ ## Troubleshooting Guide
237
+
238
+ ### Common Issues
239
+
240
+ #### "No Files Found" Error
241
+
242
+ ```bash
243
+ # Check path exists and is readable
244
+ ls -la /path/to/data
245
+ test -r /path/to/data && echo "Readable" || echo "Not readable"
246
+
247
+ # Verify files exist
248
+ find /path/to/data -name "*.jpg" | head -10
249
+ ```
250
+
251
+ #### Excel Processing Errors
252
+
253
+ ```bash
254
+ # Check file format and size
255
+ file /path/to/metadata.xlsx
256
+ ls -lh /path/to/metadata.xlsx
257
+
258
+ # Validate Excel content
259
+ python -c "
260
+ from openpyxl import load_workbook
261
+ wb = load_workbook('/path/to/metadata.xlsx')
262
+ print(f'Sheets: {wb.sheetnames}')
263
+ print(f'Rows: {wb.active.max_row}')
264
+ "
265
+ ```
266
+
267
+ #### Upload Failures
268
+
269
+ ```bash
270
+ # Test storage connection
271
+ synapse storage test --storage-id 1
272
+
273
+ # Verify collection configuration
274
+ synapse collection show --id 2
275
+
276
+ # Run with debug mode
277
+ synapse plugin run upload '{}' --debug
278
+ ```
279
+
280
+ ## Best Practices
281
+
282
+ ### Directory Organization
283
+
284
+ - Use clear, descriptive directory names
285
+ - Keep reasonable directory sizes (< 10,000 files)
286
+ - Use absolute paths for reliability
287
+
288
+ ### Performance Optimization
289
+
290
+ - Enable recursive only when needed
291
+ - Keep Excel files under 5MB
292
+ - Organize files in balanced directory structures
293
+
294
+ ### Security Considerations
295
+
296
+ - Validate all paths before processing
297
+ - Use read-only permissions for source data
298
+ - Set appropriate Excel size limits
299
+
300
+ ## Plugin Development
301
+
302
+ ### Custom Upload Plugins
303
+
304
+ When developing custom upload plugins, you inherit from `BaseUploader` and override processing methods:
305
+
306
+ ```python
307
+ from pathlib import Path
308
+ from typing import List
309
+ from plugin import BaseUploader
310
+
311
+ class MyCustomUploader(BaseUploader):
312
+ def process_files(self, organized_files: List) -> List:
313
+ """Process files with custom logic."""
314
+ # Implement your custom processing
315
+ processed = []
316
+ for file_group in organized_files:
317
+ # Apply your transformations
318
+ processed.append(self._transform(file_group))
319
+
320
+ return processed
321
+
322
+ def _transform(self, file_group):
323
+ # Your custom transformation logic
324
+ return file_group
325
+ ```
326
+
327
+ ### Available Attributes in Plugin Templates
328
+
329
+ ```python
330
+ class BaseUploader:
331
+ # Standard attributes
332
+ self.run # Logger and progress tracking
333
+ self.path: Path | None # Base path (single-path) or None (multi-path)
334
+ self.file_specification: List # File specs from data collection
335
+ self.organized_files: List # Pre-organized files
336
+ self.extra_params: Dict # Custom user parameters
337
+ ```
338
+
339
+ **Note:** In multi-path mode, `self.path` is `None` because each asset type has its own path configuration.
340
+ The files in `organized_files` are already discovered and organized from their respective paths.
341
+
342
+ ## Advanced Features
343
+
344
+ ### Batch Processing
345
+
346
+ The plugin automatically optimizes batch sizes based on dataset size:
347
+
348
+ - Small datasets (< 50 files): batch size 50
349
+ - Large datasets: dynamic batch size (10-100)
350
+
351
+ ### Progress Tracking
352
+
353
+ Real-time progress updates with categories:
354
+
355
+ - Collection analysis: 2%
356
+ - File upload: 38%
357
+ - Data unit generation: 60%
358
+
359
+ ### Error Handling
360
+
361
+ Comprehensive validation at multiple levels:
362
+
363
+ - Parameter validation (Pydantic)
364
+ - Runtime path validation
365
+ - File format validation
366
+ - Excel security checks
367
+
368
+ ## Environment Variables
369
+
370
+ Configure Excel processing limits:
371
+
372
+ ```bash
373
+ # File size limits
374
+ EXCEL_MAX_FILE_SIZE_MB=10
375
+ EXCEL_MAX_MEMORY_MB=30
376
+
377
+ # Content limits
378
+ EXCEL_MAX_ROWS=10000
379
+ EXCEL_MAX_COLUMNS=50
380
+
381
+ # String length limits
382
+ EXCEL_MAX_FILENAME_LENGTH=255
383
+ EXCEL_MAX_METADATA_VALUE_LENGTH=1000
384
+ ```
385
+
386
+ ## Migration Guide
387
+
388
+ ### Upgrading from Previous Versions
389
+
390
+ All existing configurations continue to work. New features are additive:
391
+
392
+ #### Test Current Configuration
393
+
394
+ ```bash
395
+ synapse plugin run upload '{}' --debug
396
+ ```
397
+
398
+ #### Convert to Explicit Mode
399
+
400
+ ```python
401
+ # Add explicit mode setting
402
+ config["use_single_path"] = True # Single-path mode (default)
403
+ # or
404
+ config["use_single_path"] = False # Multi-path mode
405
+ ```
406
+
407
+ #### Gradual Migration to Multi-Path Mode
408
+
409
+ ```python
410
+ # Start with subset
411
+ test_config = {
412
+ "use_single_path": False, # Enable multi-path mode
413
+ "assets": {
414
+ "test_images": {"path": "existing/path/images", "is_recursive": True}
415
+ }
416
+ }
417
+
418
+ # Then migrate all assets
419
+ production_config = {
420
+ "use_single_path": False, # Multi-path mode
421
+ "assets": {
422
+ "images": {"path": "optimized/path1", "is_recursive": True},
423
+ "annotations": {"path": "optimized/path2", "is_recursive": False}
424
+ }
425
+ }
426
+ ```
427
+
428
+ **Migration Benefits:**
429
+ - Independent path configuration per asset type
430
+ - Per-asset recursion settings
431
+ - Better organization for complex datasets
432
+ - Clearer separation of concerns
433
+
434
+ ## Storage Backend Support
435
+
436
+ The plugin supports multiple storage backends:
437
+
438
+ - **Local filesystem**: Optimized for high I/O
439
+ - **S3/GCS**: Cloud storage with retry logic
440
+ - **SFTP**: Connection pooling for remote servers
441
+ - **HTTP**: Streaming uploads for large files
442
+
443
+ ## API Reference
444
+
445
+ ### Plugin Class
446
+
447
+ ```python
448
+ from synapse import Plugin
449
+
450
+ plugin = Plugin("upload")
451
+ result = plugin.run(config, debug=True)
452
+ ```
453
+
454
+ ### Result Structure
455
+
456
+ ```python
457
+ {
458
+ "status": "success",
459
+ "uploaded_files": 150,
460
+ "data_units_created": 50,
461
+ "errors": [],
462
+ "metadata": {}
463
+ }
464
+ ```
465
+
466
+ ## Support and Resources
467
+
468
+ - **Documentation**: Full API documentation at [synapse-docs]
469
+ - **Issues**: Report bugs at [issue-tracker]
470
+ - **Examples**: More examples at [examples-repo]
@@ -2,5 +2,32 @@ actions:
2
2
  upload:
3
3
  entrypoint: plugin.upload.Uploader
4
4
  options:
5
- allow_generate_tasks: false
6
- allow_generate_ground_truths: false
5
+ supported_data_type: image # A primary data type of synapse backend collection. (e.g. 'image', 'text', 'video', 'pcd', 'audio')
6
+ excel_config: # Configuration for Excel file uploads
7
+ max_file_size_mb: 10
8
+ max_rows: 100000
9
+ max_columns: 50
10
+ ui_schema: # UI schema for the input of extra params
11
+ - $formkit: "radio"
12
+ name: "file_format"
13
+ label: "File Format"
14
+ help: "Select the file format for upload processing"
15
+ required: false
16
+ value: "original"
17
+ options:
18
+ - label: "Keep Original"
19
+ value: "original"
20
+ - label: "Convert to JPEG"
21
+ value: "jpeg"
22
+ - label: "Convert to PNG"
23
+ value: "png"
24
+ - $formkit: "checkbox"
25
+ name: "include_metadata"
26
+ label: "Include Metadata"
27
+ help: "Include file metadata during upload"
28
+ value: true
29
+ - $formkit: "text"
30
+ name: "custom_tag"
31
+ label: "Custom Tag"
32
+ help: "Add a custom tag to uploaded files"
33
+ placeholder: "Enter custom tag"