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,417 @@
1
+ ---
2
+ id: core-mixin
3
+ title: CoreClientMixin
4
+ sidebar_position: 12
5
+ ---
6
+
7
+ # CoreClientMixin
8
+
9
+ Synapse 백엔드를 위한 핵심 파일 업로드 및 기본 작업을 제공합니다.
10
+
11
+ ## 개요
12
+
13
+ `CoreClientMixin`은 핵심 시스템 작업, 특히 대용량 파일을 위한 청크 업로드를 포함한 파일 업로드 기능을 처리합니다. 이 믹스인은 `BackendClient`에 자동으로 포함되며 다른 믹스인에서 사용하는 필수 기능을 제공합니다.
14
+
15
+ ## 파일 업로드 작업
16
+
17
+ ### `create_chunked_upload(file_path)`
18
+
19
+ 최적의 성능과 안정성을 위해 청크 업로드를 사용하여 대용량 파일을 업로드합니다.
20
+
21
+ ```python
22
+ from pathlib import Path
23
+
24
+ # 대용량 파일 업로드
25
+ file_path = Path('/path/to/large_dataset.zip')
26
+ result = client.create_chunked_upload(file_path)
27
+ print(f"업로드 완료: {result}")
28
+ print(f"파일 ID: {result['id']}")
29
+ ```
30
+
31
+ **매개변수:**
32
+
33
+ - `file_path` (str | Path): 업로드할 파일의 경로
34
+
35
+ **반환값:**
36
+
37
+ - `dict`: 파일 ID와 메타데이터가 포함된 업로드 결과
38
+
39
+ **기능:**
40
+
41
+ - **50MB 청크**: 성능을 위한 최적 청크 크기 사용
42
+ - **MD5 무결성**: 자동 체크섬 검증
43
+ - **재개 기능**: 중단된 업로드 재개 가능
44
+ - **진행률 추적**: 업로드 진행률 모니터링 지원
45
+ - **오류 복구**: 실패한 청크에 대한 자동 재시도
46
+
47
+ ### 업로드 프로세스 세부사항
48
+
49
+ 청크 업로드 프로세스는 다음과 같이 작동합니다:
50
+
51
+ 1. **파일 분석**: 파일 크기 및 MD5 해시 계산
52
+ 2. **청크 생성**: 파일을 50MB 청크로 분할
53
+ 3. **순차 업로드**: 청크를 하나씩 업로드
54
+ 4. **무결성 검사**: MD5로 각 청크 검증
55
+ 5. **조립**: 서버에서 청크를 최종 파일로 조립
56
+ 6. **검증**: 완성된 파일의 최종 무결성 검사
57
+
58
+ ```python
59
+ import hashlib
60
+ import os
61
+ from pathlib import Path
62
+
63
+ def upload_with_progress(file_path):
64
+ """자세한 진행률 추적과 함께 파일 업로드."""
65
+
66
+ file_path = Path(file_path)
67
+
68
+ # 파일 정보 가져오기
69
+ file_size = os.path.getsize(file_path)
70
+ print(f"업로드 중인 파일: {file_path.name}")
71
+ print(f"파일 크기: {file_size / (1024*1024):.2f} MB")
72
+
73
+ # MD5 계산 (클라이언트에서 자동으로 수행됨)
74
+ hash_md5 = hashlib.md5()
75
+ with open(file_path, "rb") as f:
76
+ for chunk in iter(lambda: f.read(4096), b""):
77
+ hash_md5.update(chunk)
78
+
79
+ print(f"MD5 체크섬: {hash_md5.hexdigest()}")
80
+
81
+ # 청크 업로드로 업로드
82
+ try:
83
+ result = client.create_chunked_upload(file_path)
84
+ print("업로드 성공!")
85
+ return result
86
+ except Exception as e:
87
+ print(f"업로드 실패: {e}")
88
+ raise
89
+
90
+ # 사용법
91
+ upload_result = upload_with_progress('/path/to/large_file.zip')
92
+ ```
93
+
94
+ ## 고급 업로드 시나리오
95
+
96
+ ### 일괄 파일 업로드
97
+
98
+ ```python
99
+ def batch_chunked_upload(file_paths, max_concurrent=3):
100
+ """동시성 제어와 함께 여러 대용량 파일 업로드."""
101
+ import concurrent.futures
102
+ import threading
103
+
104
+ upload_results = []
105
+ failed_uploads = []
106
+
107
+ def upload_single_file(file_path):
108
+ try:
109
+ print(f"업로드 시작: {file_path}")
110
+ result = client.create_chunked_upload(file_path)
111
+ print(f"업로드 완료: {file_path}")
112
+ return {'file_path': file_path, 'result': result, 'status': 'success'}
113
+ except Exception as e:
114
+ print(f"업로드 실패: {file_path} - {e}")
115
+ return {'file_path': file_path, 'error': str(e), 'status': 'failed'}
116
+
117
+ # 동시 업로드를 위해 ThreadPoolExecutor 사용
118
+ with concurrent.futures.ThreadPoolExecutor(max_workers=max_concurrent) as executor:
119
+ future_to_file = {
120
+ executor.submit(upload_single_file, file_path): file_path
121
+ for file_path in file_paths
122
+ }
123
+
124
+ for future in concurrent.futures.as_completed(future_to_file):
125
+ result = future.result()
126
+
127
+ if result['status'] == 'success':
128
+ upload_results.append(result)
129
+ else:
130
+ failed_uploads.append(result)
131
+
132
+ return {
133
+ 'successful': upload_results,
134
+ 'failed': failed_uploads,
135
+ 'total': len(file_paths)
136
+ }
137
+
138
+ # 여러 파일 업로드
139
+ file_list = [
140
+ Path('/data/file1.zip'),
141
+ Path('/data/file2.zip'),
142
+ Path('/data/file3.zip')
143
+ ]
144
+
145
+ batch_results = batch_chunked_upload(file_list, max_concurrent=2)
146
+ print(f"성공한 업로드: {len(batch_results['successful'])}")
147
+ print(f"실패한 업로드: {len(batch_results['failed'])}")
148
+ ```
149
+
150
+ ### 재시도 로직이 있는 업로드
151
+
152
+ ```python
153
+ import time
154
+ from synapse_sdk.clients.exceptions import ClientError
155
+
156
+ def robust_chunked_upload(file_path, max_retries=3, retry_delay=5):
157
+ """향상된 안정성을 위한 재시도 로직이 있는 업로드."""
158
+
159
+ for attempt in range(max_retries):
160
+ try:
161
+ result = client.create_chunked_upload(file_path)
162
+ print(f"{attempt + 1}번째 시도에서 업로드 성공")
163
+ return result
164
+
165
+ except ClientError as e:
166
+ if e.status_code == 413: # 파일이 너무 큼
167
+ print(f"파일 {file_path}이 업로드하기에 너무 큽니다")
168
+ raise
169
+ elif e.status_code == 507: # 저장 공간 부족
170
+ print("서버 저장 공간이 가득 참")
171
+ raise
172
+ elif e.status_code >= 500: # 서버 오류
173
+ if attempt < max_retries - 1:
174
+ print(f"{attempt + 1}번째 시도에서 서버 오류, {retry_delay}초 후 재시도...")
175
+ time.sleep(retry_delay)
176
+ retry_delay *= 2 # 지수 백오프
177
+ else:
178
+ print(f"{max_retries}번의 시도 후 업로드 실패")
179
+ raise
180
+ else:
181
+ print(f"오류로 업로드 실패: {e}")
182
+ raise
183
+
184
+ except OSError as e:
185
+ print(f"파일 시스템 오류: {e}")
186
+ raise
187
+
188
+ except Exception as e:
189
+ if attempt < max_retries - 1:
190
+ print(f"{attempt + 1}번째 시도에서 예상치 못한 오류: {e}")
191
+ time.sleep(retry_delay)
192
+ else:
193
+ print(f"{max_retries}번의 시도 후 오류로 업로드 실패: {e}")
194
+ raise
195
+
196
+ # 안정적인 업로드 사용
197
+ try:
198
+ result = robust_chunked_upload('/path/to/file.zip')
199
+ print(f"파일이 성공적으로 업로드됨: {result['id']}")
200
+ except Exception as e:
201
+ print(f"최종 업로드 실패: {e}")
202
+ ```
203
+
204
+ ### 업로드 진행률 모니터링
205
+
206
+ ```python
207
+ import os
208
+ from tqdm import tqdm
209
+
210
+ class ProgressTracker:
211
+ """파일 업로드를 위한 간단한 진행률 추적기."""
212
+
213
+ def __init__(self, total_size):
214
+ self.total_size = total_size
215
+ self.uploaded_size = 0
216
+ self.progress_bar = tqdm(total=total_size, unit='B', unit_scale=True, desc="업로드 중")
217
+
218
+ def update(self, chunk_size):
219
+ self.uploaded_size += chunk_size
220
+ self.progress_bar.update(chunk_size)
221
+
222
+ if self.uploaded_size >= self.total_size:
223
+ self.progress_bar.close()
224
+
225
+ def get_progress_percentage(self):
226
+ return (self.uploaded_size / self.total_size) * 100 if self.total_size > 0 else 0
227
+
228
+ def upload_with_progress_bar(file_path):
229
+ """시각적 진행률 바와 함께 파일 업로드."""
230
+
231
+ file_path = Path(file_path)
232
+ file_size = os.path.getsize(file_path)
233
+
234
+ # 진행률 추적기 생성
235
+ tracker = ProgressTracker(file_size)
236
+
237
+ try:
238
+ # 참고: 실제 청크 업로드는 청크 수준 진행률을 노출하지 않음
239
+ # 이것은 진행률을 추적할 수 있는 방법에 대한 개념적 예제
240
+ print(f"{file_path.name} 업로드 시작 ({file_size / (1024*1024):.2f} MB)")
241
+
242
+ result = client.create_chunked_upload(file_path)
243
+
244
+ # 진행률 완료 시뮬레이션
245
+ tracker.update(file_size)
246
+ print(f"업로드 완료: {result['id']}")
247
+
248
+ return result
249
+
250
+ except Exception as e:
251
+ tracker.progress_bar.close()
252
+ print(f"업로드 실패: {e}")
253
+ raise
254
+
255
+ # 사용법
256
+ upload_result = upload_with_progress_bar('/path/to/large_file.zip')
257
+ ```
258
+
259
+ ## 파일 검증
260
+
261
+ ### 업로드 전 검증
262
+
263
+ ```python
264
+ def validate_file_for_upload(file_path, max_size_gb=10):
265
+ """업로드를 시도하기 전에 파일을 검증."""
266
+
267
+ file_path = Path(file_path)
268
+
269
+ # 파일 존재 확인
270
+ if not file_path.exists():
271
+ raise FileNotFoundError(f"파일을 찾을 수 없음: {file_path}")
272
+
273
+ # 파일인지 확인 (디렉토리가 아닌)
274
+ if not file_path.is_file():
275
+ raise ValueError(f"경로가 파일이 아님: {file_path}")
276
+
277
+ # 파일 크기 확인
278
+ file_size = os.path.getsize(file_path)
279
+ max_size_bytes = max_size_gb * 1024 * 1024 * 1024
280
+
281
+ if file_size > max_size_bytes:
282
+ raise ValueError(f"파일이 너무 큼: {file_size / (1024**3):.2f} GB (최대: {max_size_gb} GB)")
283
+
284
+ # 파일 권한 확인
285
+ if not os.access(file_path, os.R_OK):
286
+ raise PermissionError(f"파일을 읽을 수 없음: {file_path}")
287
+
288
+ # 기본 파일 무결성 검사
289
+ try:
290
+ with open(file_path, 'rb') as f:
291
+ f.read(1024) # 첫 1KB 읽기 시도
292
+ except Exception as e:
293
+ raise ValueError(f"파일이 손상된 것으로 보임: {e}")
294
+
295
+ return {
296
+ 'valid': True,
297
+ 'file_size': file_size,
298
+ 'file_path': str(file_path)
299
+ }
300
+
301
+ def safe_chunked_upload(file_path):
302
+ """사전 검증과 함께 업로드."""
303
+
304
+ try:
305
+ # 먼저 파일 검증
306
+ validation = validate_file_for_upload(file_path)
307
+ print(f"파일 검증 통과: {validation['file_size'] / (1024*1024):.2f} MB")
308
+
309
+ # 업로드 진행
310
+ result = client.create_chunked_upload(file_path)
311
+ print(f"업로드 성공: {result['id']}")
312
+
313
+ return result
314
+
315
+ except (FileNotFoundError, ValueError, PermissionError) as e:
316
+ print(f"검증 실패: {e}")
317
+ return None
318
+ except Exception as e:
319
+ print(f"업로드 실패: {e}")
320
+ return None
321
+
322
+ # 사용법
323
+ upload_result = safe_chunked_upload('/path/to/file.zip')
324
+ ```
325
+
326
+ ## 성능 최적화
327
+
328
+ ### 최적화된 업로드 전략
329
+
330
+ ```python
331
+ def optimized_upload_strategy(file_path):
332
+ """파일 특성에 따른 최적 업로드 전략 선택."""
333
+
334
+ file_path = Path(file_path)
335
+ file_size = os.path.getsize(file_path)
336
+
337
+ # 임계값 (바이트 단위)
338
+ SMALL_FILE_THRESHOLD = 10 * 1024 * 1024 # 10MB
339
+ LARGE_FILE_THRESHOLD = 100 * 1024 * 1024 # 100MB
340
+
341
+ if file_size < SMALL_FILE_THRESHOLD:
342
+ print(f"작은 파일 ({file_size / (1024*1024):.2f} MB) - 일반 업로드 사용")
343
+ # 작은 파일의 경우 다른 업로드 방법을 사용할 수 있음
344
+ # CoreClientMixin은 청크 업로드만 제공하므로 이것은 개념적임
345
+ return client.create_chunked_upload(file_path)
346
+
347
+ elif file_size < LARGE_FILE_THRESHOLD:
348
+ print(f"중간 파일 ({file_size / (1024*1024):.2f} MB) - 청크 업로드 사용")
349
+ return client.create_chunked_upload(file_path)
350
+
351
+ else:
352
+ print(f"대용량 파일 ({file_size / (1024*1024):.2f} MB) - 최적화된 청크 업로드 사용")
353
+ # 매우 큰 파일의 경우 추가 최적화를 원할 수 있음
354
+ return robust_chunked_upload(file_path, max_retries=5)
355
+
356
+ # 사용법
357
+ result = optimized_upload_strategy('/path/to/any_size_file.zip')
358
+ ```
359
+
360
+ ## 오류 처리
361
+
362
+ ```python
363
+ from synapse_sdk.clients.exceptions import ClientError
364
+
365
+ def handle_upload_errors():
366
+ """업로드를 위한 포괄적인 오류 처리."""
367
+
368
+ try:
369
+ result = client.create_chunked_upload('/path/to/file.zip')
370
+ return result
371
+
372
+ except FileNotFoundError:
373
+ print("오류: 파일을 찾을 수 없음")
374
+ return None
375
+
376
+ except PermissionError:
377
+ print("오류: 권한이 거부됨 - 파일 권한을 확인하세요")
378
+ return None
379
+
380
+ except ClientError as e:
381
+ if e.status_code == 413:
382
+ print("오류: 업로드하기에 파일이 너무 큼")
383
+ elif e.status_code == 507:
384
+ print("오류: 서버 저장 공간이 가득 �참")
385
+ elif e.status_code == 429:
386
+ print("오류: 요청 제한 - 너무 많은 요청")
387
+ elif e.status_code >= 500:
388
+ print(f"오류: 서버 오류 ({e.status_code})")
389
+ else:
390
+ print(f"오류: 클라이언트 오류 ({e.status_code}): {e}")
391
+ return None
392
+
393
+ except OSError as e:
394
+ print(f"오류: 운영 체제 오류: {e}")
395
+ return None
396
+
397
+ except MemoryError:
398
+ print("오류: 업로드를 위한 메모리 부족")
399
+ return None
400
+
401
+ except Exception as e:
402
+ print(f"오류: 예상치 못한 오류: {e}")
403
+ return None
404
+
405
+ # 오류 처리 사용
406
+ upload_result = handle_upload_errors()
407
+ if upload_result:
408
+ print(f"업로드 성공: {upload_result['id']}")
409
+ else:
410
+ print("업로드 실패")
411
+ ```
412
+
413
+ ## 참고
414
+
415
+ - [BackendClient](./backend.md) - 메인 백엔드 클라이언트
416
+ - [DataCollectionClientMixin](./data-collection-mixin.md) - 청크 업로드를 사용하는 데이터 수집 작업
417
+ - [MLClientMixin](./ml-mixin.md) - 청크 업로드를 사용하는 ML 모델 업로드