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,717 @@
1
+ ---
2
+ id: to-task-overview
3
+ title: ToTask Action - User Guide
4
+ sidebar_position: 2
5
+ ---
6
+
7
+ # ToTask Action - User Guide
8
+
9
+ The `to_task` action provides automated task annotation capabilities, supporting both file-based and AI inference-based annotation methods with comprehensive validation and progress tracking.
10
+
11
+ ## Overview
12
+
13
+ The ToTask action annotates tasks in your Synapse project by:
14
+
15
+ - Retrieving annotation data from JSON files (file-based method)
16
+ - Running model inference through pre-processors (inference-based method)
17
+ - Applying annotations to task data automatically
18
+ - Tracking progress and metrics in real-time
19
+ - Handling errors gracefully with automatic rollback
20
+
21
+ ## Prerequisites
22
+
23
+ ### Common Requirements
24
+
25
+ - Valid Synapse project with tasks
26
+ - Data collection linked to the project
27
+ - Agent with appropriate permissions
28
+ - Tasks matching your filter criteria
29
+
30
+ ### File-based Method Requirements
31
+
32
+ - Data units must have files matching the `target_specification_name`
33
+ - JSON files must be accessible via HTTP/HTTPS URLs
34
+ - JSON structure must match task object format
35
+
36
+ ### Inference-based Method Requirements
37
+
38
+ - Deployed and active pre-processor plugin
39
+ - Pre-processor must support the data types in your tasks
40
+ - Tasks must have primary images or compatible input data
41
+
42
+ ## Basic Usage
43
+
44
+ ### File-based Annotation
45
+
46
+ Annotate tasks using JSON data from file URLs stored in data units.
47
+
48
+ ```python
49
+ from synapse_sdk.plugins.categories.pre_annotation.actions.to_task import ToTaskAction
50
+
51
+ # Configuration
52
+ params = {
53
+ 'name': 'File_Based_Annotation',
54
+ 'description': 'Annotate tasks from JSON files',
55
+ 'project': 123,
56
+ 'agent': 1,
57
+ 'task_filters': {
58
+ 'status': 'pending',
59
+ 'data_collection': 456
60
+ },
61
+ 'method': 'file',
62
+ 'target_specification_name': 'annotation_data',
63
+ 'pre_processor_params': {}
64
+ }
65
+
66
+ # Execute
67
+ action = ToTaskAction(run=run_instance, params=params)
68
+ result = action.start()
69
+
70
+ # Check result
71
+ if result['status'] == 'SUCCEEDED':
72
+ print(f"Success: {result['message']}")
73
+ else:
74
+ print(f"Failed: {result['message']}")
75
+ ```
76
+
77
+ **How it works:**
78
+
79
+ 1. System finds tasks matching the filters
80
+ 2. For each task, retrieves the data unit
81
+ 3. Finds files with specification name `annotation_data`
82
+ 4. Downloads JSON data from the file URL
83
+ 5. Applies the JSON data to the task
84
+ 6. Tracks success/failure for each task
85
+
86
+ ### Inference-based Annotation
87
+
88
+ Annotate tasks using AI model inference through a pre-processor.
89
+
90
+ ```python
91
+ params = {
92
+ 'name': 'Inference_Based_Annotation',
93
+ 'description': 'Auto-annotate using AI model',
94
+ 'project': 123,
95
+ 'agent': 1,
96
+ 'task_filters': {
97
+ 'status': 'pending',
98
+ 'assignee': None # Unassigned tasks only
99
+ },
100
+ 'method': 'inference',
101
+ 'pre_processor': 789, # Pre-processor plugin release ID
102
+ 'pre_processor_params': {
103
+ 'confidence_threshold': 0.8,
104
+ 'model_config': {
105
+ 'batch_size': 16,
106
+ 'device': 'cuda'
107
+ }
108
+ }
109
+ }
110
+
111
+ action = ToTaskAction(run=run_instance, params=params)
112
+ result = action.start()
113
+ ```
114
+
115
+ **How it works:**
116
+
117
+ 1. System validates the pre-processor is active
118
+ 2. Finds tasks matching the filters
119
+ 3. For each task, extracts the primary image URL
120
+ 4. Calls pre-processor API with image and parameters
121
+ 5. Converts inference results to task object format
122
+ 6. Updates task with generated annotations
123
+
124
+ ## Parameter Reference
125
+
126
+ ### Required Parameters
127
+
128
+ #### `name` (string)
129
+
130
+ - Action name identifier
131
+ - Must not contain whitespace
132
+ - Example: `"File_Annotation_Job"`
133
+
134
+ #### `project` (integer)
135
+
136
+ - Synapse project ID
137
+ - Must be a valid, accessible project
138
+ - Example: `123`
139
+
140
+ #### `agent` (integer)
141
+
142
+ - Agent ID for execution
143
+ - Agent must have permissions on the project
144
+ - Example: `1`
145
+
146
+ #### `task_filters` (object)
147
+
148
+ - Dictionary of filter criteria for task selection
149
+ - Supports all task query parameters
150
+ - Example: `{"status": "pending", "data_collection": 456}`
151
+
152
+ #### `method` (string)
153
+
154
+ - Annotation method type
155
+ - Values: `"file"` or `"inference"`
156
+ - Determines which annotation strategy to use
157
+
158
+ ### Method-Specific Parameters
159
+
160
+ #### For File-based Method
161
+
162
+ **`target_specification_name`** (string, required for file method)
163
+
164
+ - Name of the file specification containing annotation JSON
165
+ - Must exist in the project's file specifications
166
+ - Example: `"annotation_data"`
167
+
168
+ #### For Inference-based Method
169
+
170
+ **`pre_processor`** (integer, required for inference method)
171
+
172
+ - Pre-processor plugin release ID
173
+ - Pre-processor must be deployed and active
174
+ - Example: `789`
175
+
176
+ **`pre_processor_params`** (object, optional)
177
+
178
+ - Configuration parameters passed to the pre-processor
179
+ - Structure depends on the pre-processor implementation
180
+ - Example:
181
+ ```python
182
+ {
183
+ 'confidence_threshold': 0.8,
184
+ 'model_config': {
185
+ 'batch_size': 16,
186
+ 'device': 'cuda',
187
+ 'use_fp16': True
188
+ },
189
+ 'post_processing': {
190
+ 'nms_threshold': 0.5,
191
+ 'min_size': 10
192
+ }
193
+ }
194
+ ```
195
+
196
+ ### Optional Parameters
197
+
198
+ #### `description` (string)
199
+
200
+ - Human-readable description of the action
201
+ - Example: `"Annotate all pending tasks with model v2 predictions"`
202
+
203
+ ## Task Filtering
204
+
205
+ The `task_filters` parameter supports rich filtering options:
206
+
207
+ ### Common Filter Examples
208
+
209
+ ```python
210
+ # Filter by status
211
+ task_filters = {'status': 'pending'}
212
+
213
+ # Filter by data collection
214
+ task_filters = {'data_collection': 456}
215
+
216
+ # Filter by assignee
217
+ task_filters = {'assignee': 12} # Specific user
218
+ task_filters = {'assignee': None} # Unassigned tasks
219
+
220
+ # Multiple filters (AND logic)
221
+ task_filters = {
222
+ 'status': 'pending',
223
+ 'data_collection': 456,
224
+ 'assignee': None
225
+ }
226
+
227
+ # Filter by creation date
228
+ task_filters = {
229
+ 'created_at__gte': '2025-01-01',
230
+ 'created_at__lte': '2025-01-31'
231
+ }
232
+ ```
233
+
234
+ ### Advanced Filtering
235
+
236
+ ```python
237
+ # Combine multiple criteria
238
+ task_filters = {
239
+ 'status__in': ['pending', 'in_progress'],
240
+ 'data_collection': 456,
241
+ 'created_at__gte': '2025-01-01'
242
+ }
243
+ ```
244
+
245
+ ## Progress and Metrics
246
+
247
+ ### Real-time Progress Updates
248
+
249
+ The action provides continuous progress updates:
250
+
251
+ ```python
252
+ # Progress is logged automatically during execution
253
+ # Example log output:
254
+ # [annotate_task_data] Progress: 25.0% (25/100)
255
+ # [annotate_task_data] Progress: 50.0% (50/100)
256
+ # [annotate_task_data] Progress: 100.0% (100/100)
257
+ ```
258
+
259
+ ### Metrics Categories
260
+
261
+ **Success Metrics:**
262
+
263
+ - Total tasks processed
264
+ - Successfully annotated count
265
+ - Failed annotation count
266
+ - Standby (not yet processed) count
267
+
268
+ **Status Messages:**
269
+
270
+ ```python
271
+ # Example metrics output
272
+ {
273
+ 'total': 100,
274
+ 'success': 95,
275
+ 'failed': 5,
276
+ 'stand_by': 0
277
+ }
278
+ ```
279
+
280
+ ### Accessing Metrics
281
+
282
+ Metrics are automatically logged to the run logger and can be accessed through the Synapse platform UI or API.
283
+
284
+ ## File-based Annotation Details
285
+
286
+ ### Expected JSON Structure
287
+
288
+ The JSON files must follow the task data object format:
289
+
290
+ ```json
291
+ {
292
+ "objects": [
293
+ {
294
+ "id": "obj_001",
295
+ "class_id": 1,
296
+ "type": "bbox",
297
+ "coordinates": {
298
+ "x": 100,
299
+ "y": 150,
300
+ "width": 200,
301
+ "height": 180
302
+ },
303
+ "properties": {
304
+ "confidence": 0.95,
305
+ "label": "person"
306
+ }
307
+ }
308
+ ]
309
+ }
310
+ ```
311
+
312
+ ### File Specification Setup
313
+
314
+ 1. **Define file specification** in your project with the target name (e.g., `annotation_data`)
315
+ 2. **Upload annotation JSON files** to data units under this specification
316
+ 3. **Ensure files are accessible** via HTTP/HTTPS URLs
317
+ 4. **Run the ToTask action** with `target_specification_name` matching your specification
318
+
319
+ ### Example Workflow
320
+
321
+ ```python
322
+ # Step 1: Prepare your data
323
+ # - Upload images to data collection
324
+ # - Upload annotation JSON files with specification "annotations"
325
+
326
+ # Step 2: Configure and run
327
+ params = {
328
+ 'name': 'Apply_Pregenerated_Annotations',
329
+ 'project': 123,
330
+ 'agent': 1,
331
+ 'task_filters': {'status': 'pending'},
332
+ 'method': 'file',
333
+ 'target_specification_name': 'annotations'
334
+ }
335
+
336
+ action = ToTaskAction(run=run_instance, params=params)
337
+ result = action.start()
338
+ ```
339
+
340
+ ## Inference-based Annotation Details
341
+
342
+ ### Pre-processor Requirements
343
+
344
+ Your pre-processor must:
345
+
346
+ - Be deployed and in `RUNNING` status
347
+ - Accept image URLs as input
348
+ - Return results in task-compatible format
349
+ - Support the data types in your tasks
350
+
351
+ ### Pre-processor Parameters
352
+
353
+ Configure inference behavior through `pre_processor_params`:
354
+
355
+ ```python
356
+ pre_processor_params = {
357
+ # Model configuration
358
+ 'model_config': {
359
+ 'batch_size': 16,
360
+ 'device': 'cuda',
361
+ 'use_fp16': True
362
+ },
363
+
364
+ # Inference thresholds
365
+ 'confidence_threshold': 0.8,
366
+ 'nms_threshold': 0.5,
367
+
368
+ # Post-processing
369
+ 'min_object_size': 10,
370
+ 'max_objects': 100,
371
+
372
+ # Output formatting
373
+ 'include_masks': True,
374
+ 'output_format': 'coco'
375
+ }
376
+ ```
377
+
378
+ ### Inference Workflow
379
+
380
+ ```python
381
+ # Step 1: Deploy your pre-processor
382
+ # (See Pre-processor Plugin documentation)
383
+
384
+ # Step 2: Configure inference annotation
385
+ params = {
386
+ 'name': 'AI_Auto_Annotation',
387
+ 'project': 123,
388
+ 'agent': 1,
389
+ 'task_filters': {
390
+ 'status': 'pending',
391
+ 'data_collection': 456
392
+ },
393
+ 'method': 'inference',
394
+ 'pre_processor': 789,
395
+ 'pre_processor_params': {
396
+ 'confidence_threshold': 0.85,
397
+ 'model_config': {
398
+ 'device': 'cuda'
399
+ }
400
+ }
401
+ }
402
+
403
+ # Step 3: Execute
404
+ action = ToTaskAction(run=run_instance, params=params)
405
+ result = action.start()
406
+
407
+ # Step 4: Review results
408
+ # Check success/failed counts in metrics
409
+ # Review annotated tasks in Synapse UI
410
+ ```
411
+
412
+ ### Pre-processor Management
413
+
414
+ The system automatically:
415
+
416
+ - Checks if pre-processor is running
417
+ - Starts the pre-processor if needed
418
+ - Waits for pre-processor to be ready
419
+ - Handles pre-processor errors gracefully
420
+
421
+ ## Error Handling
422
+
423
+ ### Task-level Errors
424
+
425
+ Individual task failures don't stop the workflow:
426
+
427
+ ```python
428
+ # Example: 100 tasks to process
429
+ # - 95 succeed
430
+ # - 5 fail (e.g., invalid JSON, network errors)
431
+ # Result: Job completes with success=95, failed=5
432
+ ```
433
+
434
+ Failed tasks are logged with error details:
435
+
436
+ ```
437
+ [Task 123] Failed: Invalid JSON format in annotation file
438
+ [Task 456] Failed: Pre-processor inference timeout
439
+ ```
440
+
441
+ ### Critical Errors
442
+
443
+ System-level errors trigger immediate rollback:
444
+
445
+ ```python
446
+ # Critical error examples:
447
+ # - Project not found
448
+ # - No data collection linked
449
+ # - Target specification doesn't exist
450
+ # - Pre-processor not deployed
451
+
452
+ # On critical error:
453
+ # 1. Workflow stops immediately
454
+ # 2. Completed steps are rolled back
455
+ # 3. Temporary files are cleaned up
456
+ # 4. Error is raised with detailed message
457
+ ```
458
+
459
+ ### Common Errors and Solutions
460
+
461
+ #### "Project has no data collection"
462
+
463
+ **Solution:** Link a data collection to your project before running.
464
+
465
+ #### "Target specification not found"
466
+
467
+ **Solution:** Verify the `target_specification_name` exists in project file specifications.
468
+
469
+ #### "Pre-processor not active"
470
+
471
+ **Solution:** Deploy and start your pre-processor before running inference annotation.
472
+
473
+ #### "No tasks found matching filters"
474
+
475
+ **Solution:** Check your `task_filters` criteria and verify tasks exist.
476
+
477
+ #### "Failed to download JSON from URL"
478
+
479
+ **Solution:** Ensure annotation files are accessible and URLs are valid.
480
+
481
+ ## Best Practices
482
+
483
+ ### Performance Optimization
484
+
485
+ 1. **Batch size for inference**
486
+
487
+ ```python
488
+ pre_processor_params = {
489
+ 'model_config': {
490
+ 'batch_size': 32 # Adjust based on GPU memory
491
+ }
492
+ }
493
+ ```
494
+
495
+ 2. **Filter tasks effectively**
496
+
497
+ ```python
498
+ # Good: Specific filters
499
+ task_filters = {
500
+ 'status': 'pending',
501
+ 'data_collection': 456,
502
+ 'created_at__gte': '2025-01-01'
503
+ }
504
+
505
+ # Avoid: Too broad
506
+ task_filters = {'status': 'pending'} # May match thousands
507
+ ```
508
+
509
+ 3. **Use appropriate confidence thresholds**
510
+
511
+ ```python
512
+ # Higher threshold = fewer false positives
513
+ pre_processor_params = {
514
+ 'confidence_threshold': 0.9 # Strict
515
+ }
516
+
517
+ # Lower threshold = more detections
518
+ pre_processor_params = {
519
+ 'confidence_threshold': 0.5 # Permissive
520
+ }
521
+ ```
522
+
523
+ ### Reliability
524
+
525
+ 1. **Validate data before processing**
526
+
527
+ - Check that tasks have required data (images, files)
528
+ - Verify file specifications exist
529
+ - Ensure pre-processors are tested and stable
530
+
531
+ 2. **Monitor progress**
532
+
533
+ - Review progress logs during execution
534
+ - Check metrics after completion
535
+ - Investigate failed tasks
536
+
537
+ 3. **Handle partial failures**
538
+ ```python
539
+ # After execution, check metrics
540
+ if result['status'] == 'SUCCEEDED':
541
+ # Check if all tasks succeeded
542
+ # Review failed count
543
+ # Re-run for failed tasks if needed
544
+ ```
545
+
546
+ ### Security
547
+
548
+ 1. **File access validation**
549
+
550
+ - Ensure JSON files are from trusted sources
551
+ - Validate file content before upload
552
+ - Use secure HTTPS URLs
553
+
554
+ 2. **Input validation**
555
+ - Validate pre-processor parameters
556
+ - Check confidence thresholds are reasonable
557
+ - Verify task filters don't expose sensitive data
558
+
559
+ ## Complete Examples
560
+
561
+ ### Example 1: Bulk File-based Annotation
562
+
563
+ ```python
564
+ """
565
+ Scenario: You have 1000 images with pre-generated annotation JSON files.
566
+ Goal: Apply all annotations to pending tasks.
567
+ """
568
+
569
+ from synapse_sdk.plugins.categories.pre_annotation.actions.to_task import ToTaskAction
570
+
571
+ params = {
572
+ 'name': 'Bulk_File_Annotation_Jan2025',
573
+ 'description': 'Apply pre-generated annotations from external tool',
574
+ 'project': 123,
575
+ 'agent': 1,
576
+ 'task_filters': {
577
+ 'status': 'pending',
578
+ 'data_collection': 456,
579
+ 'created_at__gte': '2025-01-01'
580
+ },
581
+ 'method': 'file',
582
+ 'target_specification_name': 'external_annotations',
583
+ 'pre_processor_params': {}
584
+ }
585
+
586
+ action = ToTaskAction(run=run_instance, params=params)
587
+ result = action.start()
588
+
589
+ print(f"Status: {result['status']}")
590
+ print(f"Message: {result['message']}")
591
+ ```
592
+
593
+ ### Example 2: AI-powered Auto-annotation
594
+
595
+ ```python
596
+ """
597
+ Scenario: You have a trained object detection model deployed as a pre-processor.
598
+ Goal: Auto-annotate all unassigned tasks with high-confidence predictions.
599
+ """
600
+
601
+ params = {
602
+ 'name': 'AI_Object_Detection_v2',
603
+ 'description': 'Auto-detect objects using YOLOv8 model',
604
+ 'project': 123,
605
+ 'agent': 1,
606
+ 'task_filters': {
607
+ 'status': 'pending',
608
+ 'assignee': None, # Only unassigned
609
+ 'data_collection': 789
610
+ },
611
+ 'method': 'inference',
612
+ 'pre_processor': 456,
613
+ 'pre_processor_params': {
614
+ 'confidence_threshold': 0.85,
615
+ 'nms_threshold': 0.5,
616
+ 'model_config': {
617
+ 'batch_size': 16,
618
+ 'device': 'cuda',
619
+ 'use_fp16': True
620
+ },
621
+ 'class_filter': [1, 2, 3], # Only detect specific classes
622
+ 'min_object_size': 20
623
+ }
624
+ }
625
+
626
+ action = ToTaskAction(run=run_instance, params=params)
627
+ result = action.start()
628
+
629
+ # Check results
630
+ if result['status'] == 'SUCCEEDED':
631
+ print("Auto-annotation completed successfully")
632
+ # Review tasks in Synapse UI for quality check
633
+ else:
634
+ print(f"Failed: {result['message']}")
635
+ ```
636
+
637
+ ### Example 3: Active Learning Workflow
638
+
639
+ ```python
640
+ """
641
+ Scenario: Iterative model improvement with active learning.
642
+ Goal: Auto-annotate with model, review uncertain cases manually.
643
+ """
644
+
645
+ # Step 1: Auto-annotate with medium confidence
646
+ params_high_confidence = {
647
+ 'name': 'Active_Learning_Round1_High',
648
+ 'project': 123,
649
+ 'agent': 1,
650
+ 'task_filters': {'status': 'pending'},
651
+ 'method': 'inference',
652
+ 'pre_processor': 789,
653
+ 'pre_processor_params': {
654
+ 'confidence_threshold': 0.9 # High confidence only
655
+ }
656
+ }
657
+
658
+ action = ToTaskAction(run=run_instance, params=params_high_confidence)
659
+ result = action.start()
660
+
661
+ # Step 2: Low confidence cases go to manual review
662
+ # (These remain pending for human annotators)
663
+
664
+ # Step 3: After manual review, retrain model and repeat
665
+ ```
666
+
667
+ ## Troubleshooting
668
+
669
+ ### Debugging Failed Tasks
670
+
671
+ 1. **Check logs for specific errors**
672
+
673
+ ```
674
+ Look for messages like:
675
+ [Task 123] Failed: <error_message>
676
+ ```
677
+
678
+ 2. **Verify task data structure**
679
+
680
+ - Ensure tasks have required fields
681
+ - Check data units exist
682
+ - Validate file URLs are accessible
683
+
684
+ 3. **Test with small batch first**
685
+ ```python
686
+ # Test with 10 tasks first
687
+ task_filters = {
688
+ 'status': 'pending',
689
+ 'limit': 10
690
+ }
691
+ ```
692
+
693
+ ### Performance Issues
694
+
695
+ 1. **Reduce batch size** if experiencing timeouts
696
+ 2. **Filter tasks more narrowly** to process smaller groups
697
+ 3. **Check pre-processor resource usage** for inference method
698
+
699
+ ### Validation Errors
700
+
701
+ 1. **"No tasks found"** - Verify filters and task existence
702
+ 2. **"Invalid project"** - Check project ID and permissions
703
+ 3. **"Target specification not found"** - Verify file specification name
704
+ 4. **"Pre-processor not found"** - Check pre-processor ID and status
705
+
706
+ ## Next Steps
707
+
708
+ - **Architecture Details**: Read [ToTask Action Development](./to-task-action-development.md) for technical architecture
709
+ - **Custom Strategies**: Learn how to extend the ToTask action with custom validation and annotation strategies
710
+ - **Pre-processor Guide**: See Pre-processor Plugin documentation for model deployment
711
+
712
+ ## Related Documentation
713
+
714
+ - [Pre-annotation Plugin Overview](./pre-annotation-plugin-overview.md)
715
+ - [Upload Plugins](../upload-plugins/upload-plugin-overview.md)
716
+ - Plugin Development Guide
717
+ - API Reference