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,117 @@
1
+ ---
2
+ id: plugins
3
+ title: 플러그인 시스템
4
+ sidebar_position: 1
5
+ ---
6
+
7
+ # 플러그인 시스템
8
+
9
+ Synapse SDK는 다양한 카테고리와 실행 방법에 걸쳐 ML 플러그인을 구축하고 관리하기 위한 포괄적인 플러그인 시스템을 제공합니다. 플러그인 시스템은 다양한 환경에서 배포되고 실행될 수 있는 모듈식, 재사용 가능한 컴포넌트를 가능하게 합니다.
10
+
11
+ ## 개요
12
+
13
+ 플러그인 시스템은 **액션** 개념을 중심으로 구축됩니다 - 패키징, 배포 및 다양한 컨텍스트에서 실행될 수 있는 개별 작업들입니다. 각 플러그인은 특정 카테고리에 속하며 여러 액션을 지원할 수 있습니다.
14
+
15
+ ### 주요 기능
16
+
17
+ - **🔌 모듈식 아키텍처**: 플러그인은 자체 종속성과 구성을 가진 자체 포함형입니다
18
+ - **⚡ 다중 실행 방법**: Job, Task 및 REST API 엔드포인트 지원
19
+ - **📦 분산 실행**: 확장 가능한 분산 컴퓨팅을 위해 구축됨
20
+ - **🛠️ 템플릿 시스템**: 신속한 플러그인 개발을 위한 Cookiecutter 기반 스캐폴딩
21
+ - **📊 진행률 추적**: 내장된 로깅, 메트릭 및 진행률 모니터링
22
+ - **🔄 동적 로딩**: 런타임 플러그인 발견 및 등록
23
+
24
+ ## 플러그인 카테고리
25
+
26
+ SDK는 플러그인을 특정 카테고리로 구성하며, 각각은 ML 워크플로우의 다양한 측면을 위해 설계되었습니다:
27
+
28
+ ### 1. 신경망 (`neural_net`)
29
+
30
+ ML 모델 훈련, 추론 및 배포 작업들.
31
+
32
+ **사용 가능한 액션:**
33
+
34
+ - `deployment` - 모델을 프로덕션 환경에 배포
35
+ - `gradio` - 모델용 대화형 웹 인터페이스 생성
36
+ - `inference` - 데이터에 대한 모델 예측 실행
37
+ - `test` - 모델 성능과 정확도 검증
38
+ - `train` - 사용자 정의 데이터셋으로 ML 모델 훈련
39
+ - `tune` - 하이퍼파라미터 최적화 및 모델 튜닝
40
+
41
+ **사용 사례:**
42
+
43
+ - 컴퓨터 비전 모델 훈련
44
+ - 모델을 웹 서비스로 배포
45
+ - 데이터셋에 대한 배치 추론 실행
46
+ - 대화형 모델 데모 생성
47
+
48
+ ### 2. Export (`export`)
49
+
50
+ Synapse 플랫폼에서 주석이 달린 데이터, 그라운드 트루스 데이터셋, 할당 및 작업을 내보내기 위한 데이터 내보내기 및 변환 작업.
51
+
52
+ **사용 가능한 액션:**
53
+
54
+ - `export` - 다양한 소스(할당, 그라운드 트루스, 작업)에서 사용자 정의 처리와 함께 데이터 내보내기
55
+
56
+ **사용 사례:**
57
+
58
+ - 훈련용 주석 데이터셋 내보내기
59
+ - 그라운드 트루스 데이터를 사용자 정의 형식으로 변환
60
+ - 배포용 데이터 패키지 생성
61
+ - 할당 결과의 배치 처리
62
+ - 외부 도구용 주석 데이터 변환
63
+
64
+ **지원되는 내보내기 대상:**
65
+
66
+ - `assignment` - 주석이 있는 할당 데이터 내보내기
67
+ - `ground_truth` - 그라운드 트루스 데이터셋 버전 내보내기
68
+ - `task` - 관련 주석이 있는 작업 데이터 내보내기
69
+
70
+ Export 플러그인에 대한 자세한 정보, BaseExporter 클래스 구조, 구현 예시 및 모범 사례는 [Export 플러그인](./export-plugins) 문서를 참조하세요.
71
+
72
+ ## 플러그인 구성
73
+
74
+ 플러그인은 YAML 구성 파일을 사용하여 구성되며, 이 파일은 메타데이터, 종속성, 패키지 관리 옵션 및 액션을 정의합니다.
75
+
76
+ ### 패키지 관리
77
+
78
+ ```yaml
79
+ # 플러그인 메타데이터 (필수)
80
+ name: "my-ml-plugin" # 필수: 플러그인 이름
81
+ version: "1.0.0" # 필수: 버전
82
+ category: "neural_net" # 필수: 카테고리
83
+ description: "사용자 정의 ML 플러그인" # 필수: 설명
84
+
85
+ # 패키지 관리 (선택사항)
86
+ package_manager: "pip" # 선택사항: "pip" 또는 "uv" (기본값: "pip")
87
+
88
+ # 패키지 매니저 옵션 (선택사항)
89
+ # uv만 지원 pip_install_options: 지원 예정
90
+ # uv의 경우 기본값은 ['--no-cache']입니다
91
+ package_manager_options: ["--no-cache", "--quiet"] # 선택사항: 설치 옵션
92
+
93
+ # 액션 정의 (필수)
94
+ actions: # 필수: 최소 하나의 액션 필요
95
+ train:
96
+ entrypoint: "plugin.train.TrainAction" # 필수
97
+ method: "job" # 필수: 실행 방법
98
+ ```
99
+
100
+ **구성 옵션 설명:**
101
+
102
+ **필수 필드:**
103
+ - `name`: 플러그인 이름
104
+ - `version`: 플러그인 버전
105
+ - `category`: 플러그인 카테고리 (`neural_net`, `export` 등)
106
+ - `description`: 플러그인 설명
107
+ - `actions`: 플러그인 액션 정의 (최소 하나 필요)
108
+ - `entrypoint`: 액션의 진입점 클래스
109
+ - `method`: 실행 방법 (`job`, `task`, `serve` 등)
110
+
111
+ **선택사항 필드:**
112
+ - `package_manager`: 종속성에 사용할 패키지 매니저 (기본값: `"pip"`)
113
+ - 지원 값: `"pip"` 또는 `"uv"`
114
+ - `package_manager_options`: 패키지 설치 명령에 대한 사용자 제공 옵션
115
+ - 현재 Ray 2.44.1에서는 `uv`만 지원됩니다
116
+ - `uv`의 경우 기본값은 `["--no-cache"]`입니다
117
+ - 사용자 정의 옵션이 기본값과 병합됩니다
@@ -0,0 +1,78 @@
1
+ ---
2
+ id: quickstart
3
+ title: 빠른 시작 가이드
4
+ sidebar_position: 3
5
+ ---
6
+
7
+ # 빠른 시작 가이드
8
+
9
+ Synapse SDK를 몇 분 안에 시작하고 실행하세요.
10
+
11
+ ## 대화형 CLI
12
+
13
+ 모든 기능에 대화형 메뉴를 통해 접근하기 위해 Synapse CLI를 실행하세요:
14
+
15
+ ```bash
16
+ synapse
17
+ ```
18
+
19
+ 다음 옵션들이 있는 메인 메뉴가 열립니다:
20
+
21
+ - 🌐 **개발 도구**: 에이전트 및 작업 관리를 위한 웹 기반 대시보드
22
+ - 💻 **Code-Server IDE**: 플러그인 개발을 위한 웹 기반 VS Code
23
+ - ⚙️ **설정**: 백엔드 연결 및 에이전트 설정
24
+ - 🔌 **플러그인 관리**: 플러그인 생성, 테스트 및 게시
25
+
26
+ ## 빠른 명령어
27
+
28
+ 특정 기능에 빠르게 접근하기 위해:
29
+
30
+ ```bash
31
+ # 개발 도구 즉시 시작
32
+ synapse --dev-tools
33
+
34
+ # 백엔드 및 에이전트 구성
35
+ synapse config
36
+
37
+ # 코드 편집 환경 열기
38
+ synapse code-server
39
+
40
+ # 새 플러그인 생성
41
+ synapse plugin create
42
+ ```
43
+
44
+ ## 첫 번째 플러그인
45
+
46
+ 1. **플러그인 생성**:
47
+
48
+ ```bash
49
+ synapse
50
+ # "🔌 플러그인 관리" → "새 플러그인 생성" 선택
51
+ ```
52
+
53
+ 2. **Code-Server에서 편집**:
54
+
55
+ ```bash
56
+ synapse
57
+ # "💻 Code-Server IDE 열기" 선택
58
+ ```
59
+
60
+ 3. **로컬에서 테스트**:
61
+
62
+ ```bash
63
+ synapse plugin run my_action '{"param": "value"}' --run-by script
64
+ ```
65
+
66
+ 4. **백엔드에 게시**:
67
+
68
+ ```bash
69
+ synapse
70
+ # "🔌 플러그인 관리" → "플러그인 게시" 선택
71
+ ```
72
+
73
+ ## 다음 단계
74
+
75
+ - 완전한 [CLI 사용 가이드](./cli-usage.md) 읽기
76
+ - [핵심 개념](./concepts/index.md)에 대해 학습하기
77
+ - [API 참조](./api/index.md) 탐색하기
78
+ - [자주 묻는 질문](./faq.md) 확인하기
@@ -0,0 +1,519 @@
1
+ ---
2
+ id: troubleshooting
3
+ title: 문제 해결
4
+ sidebar_position: 10
5
+ ---
6
+
7
+ # 문제 해결
8
+
9
+ Synapse SDK 사용 시 발생하는 일반적인 문제와 해결방법입니다.
10
+
11
+ ## 설치 문제
12
+
13
+ ## 인증 문제
14
+
15
+ ### ClientError: 401 Unauthorized
16
+
17
+ **증상**: API 호출이 401 오류로 실패합니다.
18
+
19
+ **진단 단계**:
20
+
21
+
22
+ 3. **CLI를 통한 토큰 확인**:
23
+ ```bash
24
+ # 토큰을 확인하기 위한 대화형 설정 사용
25
+ synapse config
26
+ # "Show current configuration" 선택
27
+ # 토큰이 검증을 위해 평문으로 표시됩니다
28
+ ```
29
+
30
+ 4. **코드에서 토큰 확인**:
31
+ ```python
32
+ from synapse_sdk.clients.backend import BackendClient
33
+
34
+ client = BackendClient(
35
+ base_url="https://api.synapse.sh",
36
+ api_token="your-token" # "Token " 접두사 없음
37
+ )
38
+
39
+ try:
40
+ user = client.get_current_user()
41
+ print(f"Authenticated as: {user.email}")
42
+ except Exception as e:
43
+ print(f"Auth failed: {e}")
44
+ ```
45
+
46
+ **일반적인 해결방법**:
47
+ - 웹 인터페이스에서 토큰 재생성
48
+ - 토큰이 만료되지 않았는지 확인
49
+ - 올바른 백엔드 URL 확인
50
+
51
+ ### Agent 인증 오류
52
+
53
+ **증상**: Agent 관련 작업이 실패합니다.
54
+
55
+ **해결방법**:
56
+
57
+ 1. **Agent 설정 확인**:
58
+ ```bash
59
+ synapse config
60
+ # "Show current configuration" 선택
61
+ # 백엔드와 Agent 토큰 모두 평문으로 표시됩니다
62
+ ```
63
+
64
+ 2. **Agent 토큰 확인**:
65
+ ```python
66
+ from synapse_sdk.clients.agent import AgentClient
67
+
68
+ client = AgentClient(
69
+ base_url="https://api.synapse.sh",
70
+ agent_token="your-agent-token"
71
+ )
72
+ ```
73
+
74
+ ## 연결 문제
75
+
76
+ ### 연결 시간 초과
77
+
78
+ **증상**: 요청이 시간 초과되거나 멈춤 상태가 됩니다.
79
+
80
+ **해결방법**:
81
+
82
+ 1. **시간 초과 값 증가**:
83
+ ```python
84
+ client = BackendClient(
85
+ base_url="https://api.synapse.sh",
86
+ api_token="your-token",
87
+ timeout={'connect': 30, 'read': 120}
88
+ )
89
+ ```
90
+
91
+ 2. **네트워크 연결 확인**:
92
+ ```bash
93
+ # 기본 연결 테스트
94
+ ping api.synapse.sh
95
+
96
+ # HTTPS 접근 테스트
97
+ curl -I https://api.synapse.sh/health
98
+ ```
99
+
100
+ 3. **필요시 프록시 설정**:
101
+ ```bash
102
+ export HTTP_PROXY="http://proxy.company.com:8080"
103
+ export HTTPS_PROXY="https://proxy.company.com:8080"
104
+ ```
105
+
106
+ ### DNS 해결 문제
107
+
108
+ **증상**: "Name or service not known" 오류가 발생합니다.
109
+
110
+ **해결방법**:
111
+
112
+ 1. **DNS 설정 확인**:
113
+ ```bash
114
+ nslookup api.synapse.sh
115
+ ```
116
+
117
+ 2. **대체 DNS 시도**:
118
+ ```bash
119
+ # Google DNS 임시 사용
120
+ export SYNAPSE_BACKEND_HOST="$(dig @8.8.8.8 api.synapse.sh +short)"
121
+ ```
122
+
123
+ 3. **IP 주소 직접 사용** (임시):
124
+ ```python
125
+ client = BackendClient(base_url="https://192.168.1.100:8000")
126
+ ```
127
+
128
+ ## 플러그인 개발 문제
129
+
130
+ ### 플러그인 가져오기 오류
131
+
132
+ **증상**: 플러그인 로딩 또는 가져오기가 실패합니다.
133
+
134
+ **진단**:
135
+ ```bash
136
+ # 플러그인 구문 테스트
137
+ python -m py_compile plugin/__init__.py
138
+
139
+ # 순환 가져오기 확인
140
+ python -c "import plugin; print('OK')"
141
+ ```
142
+
143
+ **해결방법**:
144
+
145
+ 1. **구문 오류 수정**:
146
+ ```bash
147
+ # 린팅 사용
148
+ pip install ruff
149
+ ruff check plugin/
150
+ ```
151
+
152
+ 2. **가져오기 경로 확인**:
153
+ ```python
154
+ # plugin/__init__.py에서
155
+ from synapse_sdk.plugins.categories.base import Action, register_action
156
+ # 아님: from synapse_sdk.plugins.base import Action
157
+ ```
158
+
159
+ 3. **플러그인 구조 확인**:
160
+ ```
161
+ my-plugin/
162
+ ├── config.yaml
163
+ ├── plugin/
164
+ │ └── __init__.py
165
+ ├── requirements.txt
166
+ └── README.md
167
+ ```
168
+
169
+ ### 플러그인 실행 실패
170
+
171
+ **증상**: 플러그인이 시작되지만 실행 중 실패합니다.
172
+
173
+ **디버깅 단계**:
174
+
175
+ 1. **CLI를 통한 디버그 모드 활성화**:
176
+ ```bash
177
+ synapse
178
+ # "Plugin Management" 선택
179
+ # "Run plugin locally" 선택
180
+ # 액션과 매개변수 입력
181
+ # 로컬 실행 시 디버그 모드가 기본적으로 활성화됩니다
182
+ ```
183
+
184
+ 2. **수동으로 디버그 모드 활성화**:
185
+ ```bash
186
+ export SYNAPSE_DEBUG=true
187
+ synapse plugin run --path ./my-plugin --action test
188
+ ```
189
+
190
+ 2. **로그 확인**:
191
+ ```python
192
+ def start(self):
193
+ try:
194
+ self.run.log("Starting plugin execution")
195
+ # 여기에 코드 작성
196
+ self.run.log("Plugin completed successfully")
197
+ except Exception as e:
198
+ self.run.log(f"Error: {str(e)}", level="ERROR")
199
+ raise
200
+ ```
201
+
202
+ 3. **매개변수 검증**:
203
+ ```python
204
+ from pydantic import ValidationError
205
+
206
+ def start(self):
207
+ try:
208
+ # 매개변수 검증
209
+ params = self.params_model(**self.params)
210
+ except ValidationError as e:
211
+ self.run.log(f"Parameter validation failed: {e}")
212
+ raise
213
+ ```
214
+
215
+ ### 파일 처리 문제
216
+
217
+ **증상**: 플러그인에서 파일 작업이 실패합니다.
218
+
219
+ **일반적인 문제 & 해결방법**:
220
+
221
+ 1. **FileField가 다운로드되지 않음**:
222
+ ```python
223
+ # 파일 URL 형식 확인
224
+ class MyParams(BaseModel):
225
+ input_file: FileField # URL 형식 예상
226
+
227
+ def start(self):
228
+ file_path = self.params.input_file
229
+ if not os.path.exists(file_path):
230
+ raise FileNotFoundError(f"File not found: {file_path}")
231
+ ```
232
+
233
+ 2. **권한 오류**:
234
+ ```python
235
+ import tempfile
236
+ import shutil
237
+
238
+ def start(self):
239
+ # 임시 디렉토리 사용
240
+ with tempfile.TemporaryDirectory() as temp_dir:
241
+ output_path = os.path.join(temp_dir, "result.csv")
242
+ # output_path에서 처리 및 저장
243
+ ```
244
+
245
+ 3. **대용량 파일 처리**:
246
+ ```python
247
+ def start(self):
248
+ # 대용량 파일을 청크 단위로 처리
249
+ chunk_size = 1024 * 1024 # 1MB 청크
250
+ with open(self.params.input_file, 'rb') as f:
251
+ while True:
252
+ chunk = f.read(chunk_size)
253
+ if not chunk:
254
+ break
255
+ process_chunk(chunk)
256
+ ```
257
+
258
+ ## 분산 컴퓨팅 문제
259
+
260
+ ### 클러스터 연결
261
+
262
+ **증상**: 컴퓨팅 클러스터에 연결할 수 없습니다.
263
+
264
+ **해결방법**:
265
+
266
+ 1. **클러스터 상태 확인**:
267
+ ```bash
268
+ synapse cluster status
269
+ # 클러스터 정보가 표시되어야 함
270
+ ```
271
+
272
+ 2. **로컬 클러스터 시작**:
273
+ ```bash
274
+ synapse cluster start --dashboard-host=0.0.0.0
275
+ ```
276
+
277
+ 3. **원격 클러스터 연결**:
278
+ ```bash
279
+ export SYNAPSE_CLUSTER_ADDRESS="cluster://remote-cluster:10001"
280
+ synapse cluster status # 원격 클러스터에 연결되어야 함
281
+ ```
282
+
283
+ ### 메모리 문제
284
+
285
+ **증상**: 실행 중 메모리 부족 오류가 발생합니다.
286
+
287
+ **해결방법**:
288
+
289
+ 1. **메모리 할당 증가**:
290
+ ```bash
291
+ synapse cluster start --memory=2000000000 # 2GB
292
+ ```
293
+
294
+ 2. **코드에서 설정**:
295
+ ```python
296
+ from synapse_sdk.compute import init
297
+ init(memory=2000000000)
298
+ ```
299
+
300
+ 3. **데이터를 작은 청크로 처리**:
301
+ ```python
302
+ def process_chunk(data_chunk):
303
+ return process(data_chunk)
304
+
305
+ # 대용량 데이터를 청크로 분할
306
+ chunks = split_data(large_data)
307
+ results = [process_chunk(chunk) for chunk in chunks]
308
+ ```
309
+
310
+ ### 작업 실패
311
+
312
+ **증상**: 작업이 시작되지 않거나 완료되지 않습니다.
313
+
314
+ **해결방법**:
315
+
316
+ 1. **리소스 요구사항 확인**:
317
+ ```python
318
+ def my_task(resources={'cpus': 2, 'memory': '1GB'}):
319
+ pass
320
+ ```
321
+
322
+ 2. **런타임 환경 확인**:
323
+ ```yaml
324
+ # 플러그인 config.yaml에서
325
+ runtime_env:
326
+ pip:
327
+ packages: ["pandas", "numpy"]
328
+ ```
329
+
330
+ ## 개발 도구 문제
331
+
332
+ ### 개발 도구가 시작되지 않음
333
+
334
+ **증상**: `synapse --dev-tools` 시작이 실패합니다.
335
+
336
+ **해결방법**:
337
+
338
+ 1. **대시보드 의존성 설치**:
339
+ ```bash
340
+ pip install synapse-sdk[dashboard]
341
+ ```
342
+
343
+ 2. **포트 사용 가능성 확인**:
344
+ ```bash
345
+ # 포트 8080 사용 중인지 확인
346
+ lsof -i :8080
347
+
348
+ # 다른 포트 사용
349
+ synapse devtools --port 8081
350
+ ```
351
+
352
+ 3. **프론트엔드 수동 빌드**:
353
+ ```bash
354
+ cd synapse_sdk/devtools/web
355
+ npm install
356
+ npm run build
357
+ ```
358
+
359
+ ### 프론트엔드 빌드 오류
360
+
361
+ **증상**: 프론트엔드 에셋 빌드가 실패합니다.
362
+
363
+ **해결방법**:
364
+
365
+ 1. **Node.js 의존성 설치**:
366
+ ```bash
367
+ # Node.js 설치 (설치되지 않은 경우)
368
+ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
369
+ sudo apt-get install -y nodejs
370
+
371
+ # 또는 nvm 사용
372
+ nvm install 18
373
+ nvm use 18
374
+ ```
375
+
376
+ 2. **npm 캐시 정리**:
377
+ ```bash
378
+ cd synapse_sdk/devtools/web
379
+ rm -rf node_modules package-lock.json
380
+ npm cache clean --force
381
+ npm install
382
+ ```
383
+
384
+ ## 성능 문제
385
+
386
+ ### 플러그인 실행 속도 저하
387
+
388
+ **증상**: 플러그인 실행 시간이 너무 오래 걸립니다.
389
+
390
+ **최적화 전략**:
391
+
392
+ 1. **코드 프로파일링**:
393
+ ```python
394
+ import time
395
+
396
+ def start(self):
397
+ start_time = time.time()
398
+ # 여기에 코드 작성
399
+ self.run.log(f"Execution took {time.time() - start_time:.2f}s")
400
+ ```
401
+
402
+ 2. **병렬 처리 사용**:
403
+ ```python
404
+ from concurrent.futures import ThreadPoolExecutor
405
+
406
+ def parallel_task(item):
407
+ return process_item(item)
408
+
409
+ def start(self):
410
+ # 병렬로 항목 처리
411
+ with ThreadPoolExecutor() as executor:
412
+ results = list(executor.map(parallel_task, items))
413
+ ```
414
+
415
+ 3. **데이터 로딩 최적화**:
416
+ ```python
417
+ # 모든 것을 한 번에 로딩하는 대신
418
+ data = pd.read_csv(large_file)
419
+
420
+ # 청크 로딩 사용
421
+ for chunk in pd.read_csv(large_file, chunksize=1000):
422
+ process_chunk(chunk)
423
+ ```
424
+
425
+ ### 메모리 사용량 문제
426
+
427
+ **증상**: 높은 메모리 사용량 또는 메모리 부족 오류가 발생합니다.
428
+
429
+ **해결방법**:
430
+
431
+ 1. **메모리 사용량 모니터링**:
432
+ ```python
433
+ import psutil
434
+
435
+ def start(self):
436
+ process = psutil.Process()
437
+ self.run.log(f"Memory usage: {process.memory_info().rss / 1024 / 1024:.1f} MB")
438
+ ```
439
+
440
+ 2. **리스트 대신 제너레이터 사용**:
441
+ ```python
442
+ # 대신
443
+ all_data = [process(item) for item in large_list]
444
+
445
+ # 제너레이터 사용
446
+ def process_items():
447
+ for item in large_list:
448
+ yield process(item)
449
+ ```
450
+
451
+ 3. **변수 명시적 정리**:
452
+ ```python
453
+ def start(self):
454
+ large_data = load_data()
455
+ result = process(large_data)
456
+ del large_data # 메모리 명시적 해제
457
+ return result
458
+ ```
459
+
460
+ ## 로깅 및 디버깅
461
+
462
+ ### 디버그 로깅 활성화
463
+
464
+ ```bash
465
+ export SYNAPSE_DEBUG=true
466
+ export SYNAPSE_LOG_LEVEL=DEBUG
467
+ ```
468
+
469
+ ### 커스텀 로깅
470
+
471
+ ```python
472
+ import logging
473
+
474
+ # 로깅 설정
475
+ logging.basicConfig(
476
+ level=logging.DEBUG,
477
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
478
+ )
479
+
480
+ logger = logging.getLogger(__name__)
481
+
482
+ def start(self):
483
+ logger.debug("Starting plugin execution")
484
+ # 여기에 코드 작성
485
+ ```
486
+
487
+ ### 디버깅 팁
488
+
489
+ 1. **print 문 사용** (로그에 표시됨):
490
+ ```python
491
+ def start(self):
492
+ print(f"Parameters: {self.params}")
493
+ print(f"Working directory: {os.getcwd()}")
494
+ ```
495
+
496
+ 2. **파일 존재 확인**:
497
+ ```python
498
+ def start(self):
499
+ file_path = self.params.input_file
500
+ print(f"File exists: {os.path.exists(file_path)}")
501
+ print(f"File size: {os.path.getsize(file_path)} bytes")
502
+ ```
503
+
504
+ 3. **데이터 타입 검증**:
505
+ ```python
506
+ def start(self):
507
+ print(f"Parameter types: {type(self.params.input_data)}")
508
+ print(f"Parameter value: {repr(self.params.input_data)}")
509
+ ```
510
+
511
+ ## 도움 받기
512
+
513
+ 문제를 해결할 수 없는 경우:
514
+
515
+ 1. **로그 철저히 확인**
516
+ 2. **GitHub issues 검색**: https://github.com/datamaker/synapse-sdk/issues
517
+ 3. **최소한의 재현 케이스** 생성
518
+ 4. **Discord 커뮤니티 참여**: https://discord.gg/synapse-sdk
519
+ 5. 자세한 오류 정보와 함께 **지원팀 문의**