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.
- synapse_sdk/__init__.py +24 -0
- synapse_sdk/cli/__init__.py +308 -5
- synapse_sdk/cli/alias/utils.py +1 -1
- synapse_sdk/cli/code_server.py +687 -0
- synapse_sdk/cli/config.py +440 -0
- synapse_sdk/cli/devtools.py +90 -0
- synapse_sdk/cli/plugin/publish.py +23 -15
- synapse_sdk/clients/agent/__init__.py +9 -3
- synapse_sdk/clients/agent/container.py +133 -0
- synapse_sdk/clients/agent/core.py +19 -0
- synapse_sdk/clients/agent/ray.py +298 -9
- synapse_sdk/clients/backend/__init__.py +28 -12
- synapse_sdk/clients/backend/annotation.py +9 -1
- synapse_sdk/clients/backend/core.py +31 -4
- synapse_sdk/clients/backend/data_collection.py +186 -0
- synapse_sdk/clients/backend/hitl.py +1 -1
- synapse_sdk/clients/backend/integration.py +4 -3
- synapse_sdk/clients/backend/ml.py +1 -1
- synapse_sdk/clients/backend/models.py +35 -1
- synapse_sdk/clients/base.py +309 -36
- synapse_sdk/clients/ray/serve.py +2 -0
- synapse_sdk/devtools/__init__.py +0 -0
- synapse_sdk/devtools/config.py +94 -0
- synapse_sdk/devtools/docs/.gitignore +20 -0
- synapse_sdk/devtools/docs/README.md +41 -0
- synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
- synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
- synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
- synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
- synapse_sdk/devtools/docs/blog/authors.yml +25 -0
- synapse_sdk/devtools/docs/blog/tags.yml +19 -0
- synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
- synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
- synapse_sdk/devtools/docs/docs/api/clients/backend.md +420 -0
- synapse_sdk/devtools/docs/docs/api/clients/base.md +257 -0
- synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
- synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
- synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
- synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
- synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
- synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
- synapse_sdk/devtools/docs/docs/api/clients/ray.md +342 -0
- synapse_sdk/devtools/docs/docs/api/index.md +52 -0
- synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
- synapse_sdk/devtools/docs/docs/api/plugins/models.md +114 -0
- synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
- synapse_sdk/devtools/docs/docs/categories.md +0 -0
- synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
- synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
- synapse_sdk/devtools/docs/docs/configuration.md +83 -0
- synapse_sdk/devtools/docs/docs/contributing.md +306 -0
- synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
- synapse_sdk/devtools/docs/docs/faq.md +179 -0
- synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
- synapse_sdk/devtools/docs/docs/features/index.md +24 -0
- synapse_sdk/devtools/docs/docs/features/utils/file.md +415 -0
- synapse_sdk/devtools/docs/docs/features/utils/network.md +378 -0
- synapse_sdk/devtools/docs/docs/features/utils/storage.md +57 -0
- synapse_sdk/devtools/docs/docs/features/utils/types.md +51 -0
- synapse_sdk/devtools/docs/docs/installation.md +94 -0
- synapse_sdk/devtools/docs/docs/introduction.md +47 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +814 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
- synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +1092 -0
- synapse_sdk/devtools/docs/docs/plugins/plugins.md +852 -0
- synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
- synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
- synapse_sdk/devtools/docs/docusaurus.config.ts +148 -0
- synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +342 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +378 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +60 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +815 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
- synapse_sdk/devtools/docs/package-lock.json +18784 -0
- synapse_sdk/devtools/docs/package.json +48 -0
- synapse_sdk/devtools/docs/sidebars.ts +122 -0
- synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
- synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
- synapse_sdk/devtools/docs/src/css/custom.css +30 -0
- synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
- synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
- synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
- synapse_sdk/devtools/docs/static/.nojekyll +0 -0
- synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
- synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
- synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
- synapse_sdk/devtools/docs/static/img/logo.png +0 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
- synapse_sdk/devtools/docs/tsconfig.json +8 -0
- synapse_sdk/devtools/server.py +41 -0
- synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
- synapse_sdk/devtools/streamlit_app/app.py +128 -0
- synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
- synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
- synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
- synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
- synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
- synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
- synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
- synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
- synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
- synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
- synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
- synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
- synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
- synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
- synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
- synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
- synapse_sdk/devtools/streamlit_app.py +10 -0
- synapse_sdk/loggers.py +65 -7
- synapse_sdk/plugins/README.md +1340 -0
- synapse_sdk/plugins/categories/base.py +73 -11
- synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
- synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
- synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
- synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
- synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
- synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
- synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
- synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
- synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
- synapse_sdk/plugins/categories/export/actions/{export.py → export/utils.py} +47 -82
- synapse_sdk/plugins/categories/export/templates/config.yaml +19 -1
- synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
- synapse_sdk/plugins/categories/export/templates/plugin/export.py +153 -129
- synapse_sdk/plugins/categories/neural_net/actions/deployment.py +9 -62
- synapse_sdk/plugins/categories/neural_net/actions/train.py +1062 -32
- synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
- synapse_sdk/plugins/categories/neural_net/templates/config.yaml +27 -5
- synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
- synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/action.py +10 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +145 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +97 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +250 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +287 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +87 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +127 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +966 -0
- synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
- synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
- synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
- synapse_sdk/plugins/categories/upload/actions/upload/action.py +232 -0
- synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
- synapse_sdk/plugins/categories/upload/actions/upload/enums.py +471 -0
- synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
- synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
- synapse_sdk/plugins/categories/upload/actions/upload/models.py +203 -0
- synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
- synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
- synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +84 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +203 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +97 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +258 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +281 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
- synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
- synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
- synapse_sdk/plugins/categories/upload/templates/config.yaml +29 -2
- synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
- synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +88 -30
- synapse_sdk/plugins/models.py +122 -16
- synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
- synapse_sdk/plugins/templates/schema.json +491 -0
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
- synapse_sdk/plugins/utils/__init__.py +46 -0
- synapse_sdk/plugins/utils/actions.py +119 -0
- synapse_sdk/plugins/utils/config.py +203 -0
- synapse_sdk/plugins/{utils.py → utils/legacy.py} +26 -46
- synapse_sdk/plugins/utils/ray_gcs.py +66 -0
- synapse_sdk/plugins/utils/registry.py +58 -0
- synapse_sdk/shared/__init__.py +25 -0
- synapse_sdk/shared/enums.py +93 -0
- synapse_sdk/utils/converters/__init__.py +240 -0
- synapse_sdk/utils/converters/coco/__init__.py +0 -0
- synapse_sdk/utils/converters/coco/from_dm.py +322 -0
- synapse_sdk/utils/converters/coco/to_dm.py +215 -0
- synapse_sdk/utils/converters/dm/__init__.py +56 -0
- synapse_sdk/utils/converters/dm/from_v1.py +627 -0
- synapse_sdk/utils/converters/dm/to_v1.py +367 -0
- synapse_sdk/utils/converters/pascal/__init__.py +0 -0
- synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
- synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
- synapse_sdk/utils/converters/yolo/__init__.py +0 -0
- synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
- synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
- synapse_sdk/utils/dataset.py +46 -0
- synapse_sdk/utils/encryption.py +158 -0
- synapse_sdk/utils/file/__init__.py +39 -0
- synapse_sdk/utils/file/archive.py +32 -0
- synapse_sdk/utils/file/checksum.py +56 -0
- synapse_sdk/utils/file/chunking.py +31 -0
- synapse_sdk/utils/file/download.py +385 -0
- synapse_sdk/utils/file/encoding.py +40 -0
- synapse_sdk/utils/file/io.py +22 -0
- synapse_sdk/utils/file/video/__init__.py +29 -0
- synapse_sdk/utils/file/video/transcode.py +307 -0
- synapse_sdk/utils/{file.py → file.py.backup} +84 -2
- synapse_sdk/utils/http.py +138 -0
- synapse_sdk/utils/network.py +293 -0
- synapse_sdk/utils/storage/__init__.py +36 -2
- synapse_sdk/utils/storage/providers/__init__.py +141 -0
- synapse_sdk/utils/storage/providers/file_system.py +134 -0
- synapse_sdk/utils/storage/providers/http.py +190 -0
- synapse_sdk/utils/storage/providers/s3.py +54 -6
- synapse_sdk/utils/storage/providers/sftp.py +31 -0
- synapse_sdk/utils/storage/registry.py +6 -0
- synapse_sdk-2025.11.7.dist-info/METADATA +122 -0
- synapse_sdk-2025.11.7.dist-info/RECORD +386 -0
- {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
- synapse_sdk/clients/backend/dataset.py +0 -102
- synapse_sdk/plugins/categories/upload/actions/upload.py +0 -293
- synapse_sdk-1.0.0a35.dist-info/METADATA +0 -47
- synapse_sdk-1.0.0a35.dist-info/RECORD +0 -137
- {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/licenses/LICENSE +0 -0
- {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/top_level.txt +0 -0
synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md
ADDED
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: network
|
|
3
|
+
title: Network Utilities
|
|
4
|
+
sidebar_position: 4
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Network Utilities
|
|
8
|
+
|
|
9
|
+
스트리밍, 유효성 검사 및 연결 관리를 위한 포괄적인 네트워킹 유틸리티입니다.
|
|
10
|
+
|
|
11
|
+
## 개요
|
|
12
|
+
|
|
13
|
+
`synapse_sdk.utils.network` 모듈은 Ray 및 기타 클라이언트에서 안전하고 강력한 스트리밍 작업 및 입력 유효성 검사를 위해 사용하는 필수 네트워킹 구성 요소를 제공합니다.
|
|
14
|
+
|
|
15
|
+
## StreamLimits
|
|
16
|
+
|
|
17
|
+
리소스 고갈을 방지하기 위한 스트리밍 작업 제한을 위한 구성 클래스입니다.
|
|
18
|
+
|
|
19
|
+
### Constructor
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from synapse_sdk.utils.network import StreamLimits
|
|
23
|
+
|
|
24
|
+
limits = StreamLimits(
|
|
25
|
+
max_messages=10000,
|
|
26
|
+
max_lines=50000,
|
|
27
|
+
max_bytes=50 * 1024 * 1024, # 50MB
|
|
28
|
+
max_message_size=10240, # 10KB
|
|
29
|
+
queue_size=1000,
|
|
30
|
+
exception_queue_size=10
|
|
31
|
+
)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Parameters
|
|
35
|
+
|
|
36
|
+
- `max_messages` (int): 처리할 최대 메시지 수 (기본값: 10,000)
|
|
37
|
+
- `max_lines` (int): 스트리밍할 최대 라인 수 (기본값: 50,000)
|
|
38
|
+
- `max_bytes` (int): 처리할 최대 총 바이트 (기본값: 50MB)
|
|
39
|
+
- `max_message_size` (int): 메시지당 최대 크기 (기본값: 10KB)
|
|
40
|
+
- `queue_size` (int): 메시지 버퍼링을 위한 내부 큐 크기 (기본값: 1,000)
|
|
41
|
+
- `exception_queue_size` (int): 예외 처리를 위한 큐 크기 (기본값: 10)
|
|
42
|
+
|
|
43
|
+
### 사용법
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
# 대용량 스트리밍을 위한 사용자 정의 제한
|
|
47
|
+
custom_limits = StreamLimits(
|
|
48
|
+
max_messages=50000,
|
|
49
|
+
max_lines=100000,
|
|
50
|
+
max_bytes=100 * 1024 * 1024 # 100MB
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# 스트림 매니저와 함께 사용
|
|
54
|
+
websocket_manager = WebSocketStreamManager(thread_pool, custom_limits)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## WebSocketStreamManager
|
|
58
|
+
|
|
59
|
+
자동 오류 처리 및 리소스 정리를 통한 실시간 로그 스트리밍을 위해 WebSocket 연결을 관리합니다.
|
|
60
|
+
|
|
61
|
+
### Constructor
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from synapse_sdk.utils.network import WebSocketStreamManager
|
|
65
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
66
|
+
|
|
67
|
+
thread_pool = ThreadPoolExecutor(max_workers=5)
|
|
68
|
+
limits = StreamLimits()
|
|
69
|
+
manager = WebSocketStreamManager(thread_pool, limits)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Methods
|
|
73
|
+
|
|
74
|
+
#### `stream_logs(ws_url, headers, timeout, context)`
|
|
75
|
+
|
|
76
|
+
WebSocket 엔드포인트에서 로그를 스트리밍합니다.
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
# 오류 처리가 있는 로그 스트리밍
|
|
80
|
+
try:
|
|
81
|
+
for log_line in manager.stream_logs(
|
|
82
|
+
ws_url="wss://ray-cluster:8265/logs/ws/",
|
|
83
|
+
headers={"Authorization": "Bearer token"},
|
|
84
|
+
timeout=30.0,
|
|
85
|
+
context="job job-12345"
|
|
86
|
+
):
|
|
87
|
+
print(log_line.strip())
|
|
88
|
+
except ClientError as e:
|
|
89
|
+
print(f"스트리밍 실패: {e}")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 오류 처리
|
|
93
|
+
|
|
94
|
+
- **500**: WebSocket 라이브러리 사용 불가
|
|
95
|
+
- **503**: 연결 실패
|
|
96
|
+
- **408**: 연결 timeout
|
|
97
|
+
- **429**: 스트림 제한 초과
|
|
98
|
+
|
|
99
|
+
## HTTPStreamManager
|
|
100
|
+
|
|
101
|
+
신뢰할 수 있는 로그 스트리밍을 위해 청크 전송 인코딩을 사용하여 HTTP 스트리밍 연결을 관리합니다.
|
|
102
|
+
|
|
103
|
+
### Constructor
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
from synapse_sdk.utils.network import HTTPStreamManager
|
|
107
|
+
import requests
|
|
108
|
+
|
|
109
|
+
session = requests.Session()
|
|
110
|
+
limits = StreamLimits()
|
|
111
|
+
manager = HTTPStreamManager(session, limits)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Methods
|
|
115
|
+
|
|
116
|
+
#### `stream_logs(url, headers, timeout, context)`
|
|
117
|
+
|
|
118
|
+
청크 전송 인코딩을 사용하여 HTTP 엔드포인트에서 로그를 스트리밍합니다.
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# 사용자 정의 timeout으로 로그 스트리밍
|
|
122
|
+
for log_line in manager.stream_logs(
|
|
123
|
+
url="http://ray-cluster:8265/logs/stream",
|
|
124
|
+
headers={"Authorization": "Bearer token"},
|
|
125
|
+
timeout=(5, 60), # (connect, read) timeout
|
|
126
|
+
context="job job-12345"
|
|
127
|
+
):
|
|
128
|
+
if 'ERROR' in log_line:
|
|
129
|
+
print(f"오류 감지: {log_line}")
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 기능
|
|
133
|
+
|
|
134
|
+
- **자동 리소스 정리**: HTTP 응답이 적절하게 닫힘
|
|
135
|
+
- **라인 크기 필터링**: 대용량 라인 (>10KB)이 자동으로 필터링됨
|
|
136
|
+
- **스트림 제한**: 메모리 고갈 방지
|
|
137
|
+
- **오류 복구**: 적절한 정리를 통한 강력한 오류 처리
|
|
138
|
+
|
|
139
|
+
### 오류 처리
|
|
140
|
+
|
|
141
|
+
- **503**: 연결 거부 또는 네트워크 오류
|
|
142
|
+
- **408**: 연결 또는 읽기 timeout
|
|
143
|
+
- **404**: 엔드포인트를 찾을 수 없음
|
|
144
|
+
- **429**: 스트림 제한 초과
|
|
145
|
+
- **500**: 예상치 못한 스트리밍 오류
|
|
146
|
+
|
|
147
|
+
## 유효성 검사 함수
|
|
148
|
+
|
|
149
|
+
### `validate_resource_id(resource_id, resource_name='resource')`
|
|
150
|
+
|
|
151
|
+
주입 공격을 방지하기 위해 리소스 식별자를 유효성 검사합니다.
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from synapse_sdk.utils.network import validate_resource_id
|
|
155
|
+
|
|
156
|
+
# 유효한 사용
|
|
157
|
+
job_id = validate_resource_id('job-12345', 'job')
|
|
158
|
+
node_id = validate_resource_id('node_abc_123', 'node')
|
|
159
|
+
|
|
160
|
+
# 잘못된 사용은 ClientError를 발생시킴
|
|
161
|
+
try:
|
|
162
|
+
validate_resource_id('job/../malicious', 'job')
|
|
163
|
+
except ClientError as e:
|
|
164
|
+
print(f"잘못된 ID: {e}") # Status 400
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### 유효성 검사 규칙
|
|
168
|
+
|
|
169
|
+
- 비어있으면 안됨
|
|
170
|
+
- 영숫자, 하이픈, 밑줄만 허용
|
|
171
|
+
- 최대 길이: 100자
|
|
172
|
+
- 패턴: `^[a-zA-Z0-9\-_]+$`
|
|
173
|
+
|
|
174
|
+
#### Parameters
|
|
175
|
+
|
|
176
|
+
- `resource_id` (Any): 유효성 검사할 ID (문자열로 변환됨)
|
|
177
|
+
- `resource_name` (str): 오류 메시지를 위한 이름 (기본값: 'resource')
|
|
178
|
+
|
|
179
|
+
#### Returns
|
|
180
|
+
|
|
181
|
+
- `str`: 유효성 검사된 리소스 ID
|
|
182
|
+
|
|
183
|
+
#### Raises
|
|
184
|
+
|
|
185
|
+
- `ClientError` (400): 유효성 검사 실패 시
|
|
186
|
+
|
|
187
|
+
### `validate_timeout(timeout, max_timeout=300)`
|
|
188
|
+
|
|
189
|
+
경계 확인을 통한 timeout 값 유효성 검사입니다.
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
from synapse_sdk.utils.network import validate_timeout
|
|
193
|
+
|
|
194
|
+
# 유효한 timeout
|
|
195
|
+
timeout = validate_timeout(30) # 30초
|
|
196
|
+
timeout = validate_timeout(10.5) # 10.5초
|
|
197
|
+
|
|
198
|
+
# 잘못된 timeout은 ClientError를 발생시킴
|
|
199
|
+
try:
|
|
200
|
+
validate_timeout(-1) # 음수 timeout
|
|
201
|
+
validate_timeout(500) # 최대값 초과
|
|
202
|
+
except ClientError as e:
|
|
203
|
+
print(f"잘못된 timeout: {e}") # Status 400
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### Parameters
|
|
207
|
+
|
|
208
|
+
- `timeout` (int|float): 초 단위 timeout 값
|
|
209
|
+
- `max_timeout` (int): 허용되는 최대 timeout (기본값: 300)
|
|
210
|
+
|
|
211
|
+
#### Returns
|
|
212
|
+
|
|
213
|
+
- `float`: 유효성 검사된 timeout 값
|
|
214
|
+
|
|
215
|
+
#### Raises
|
|
216
|
+
|
|
217
|
+
- `ClientError` (400): timeout이 유효하지 않은 경우
|
|
218
|
+
|
|
219
|
+
## URL Utilities
|
|
220
|
+
|
|
221
|
+
### `http_to_websocket_url(http_url)`
|
|
222
|
+
|
|
223
|
+
HTTP URL을 WebSocket URL로 변환합니다.
|
|
224
|
+
|
|
225
|
+
```python
|
|
226
|
+
from synapse_sdk.utils.network import http_to_websocket_url
|
|
227
|
+
|
|
228
|
+
# URL 변환
|
|
229
|
+
ws_url = http_to_websocket_url("http://ray-cluster:8265/logs/")
|
|
230
|
+
# 결과: "ws://ray-cluster:8265/logs/"
|
|
231
|
+
|
|
232
|
+
wss_url = http_to_websocket_url("https://ray-cluster:8265/logs/")
|
|
233
|
+
# 결과: "wss://ray-cluster:8265/logs/"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
#### Parameters
|
|
237
|
+
|
|
238
|
+
- `http_url` (str): HTTP 또는 HTTPS URL
|
|
239
|
+
|
|
240
|
+
#### Returns
|
|
241
|
+
|
|
242
|
+
- `str`: WebSocket URL (ws:// 또는 wss://)
|
|
243
|
+
|
|
244
|
+
## 오류 Utilities
|
|
245
|
+
|
|
246
|
+
### `sanitize_error_message(message, context)`
|
|
247
|
+
|
|
248
|
+
디버깅 컨텍스트를 유지하면서 정보 유출을 방지하기 위해 오류 메시지를 정제합니다.
|
|
249
|
+
|
|
250
|
+
```python
|
|
251
|
+
from synapse_sdk.utils.network import sanitize_error_message
|
|
252
|
+
|
|
253
|
+
# 로깅을 위한 오류 정제
|
|
254
|
+
clean_message = sanitize_error_message(
|
|
255
|
+
"Connection failed: Invalid token abc123",
|
|
256
|
+
"job job-12345"
|
|
257
|
+
)
|
|
258
|
+
# 결과: 컨텍스트가 포함된 정제된 오류 메시지
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### Parameters
|
|
262
|
+
|
|
263
|
+
- `message` (str): 원본 오류 메시지
|
|
264
|
+
- `context` (str): 디버깅을 위한 컨텍스트 (예: "job job-12345")
|
|
265
|
+
|
|
266
|
+
#### Returns
|
|
267
|
+
|
|
268
|
+
- `str`: 정제된 오류 메시지
|
|
269
|
+
|
|
270
|
+
## 완전한 예제
|
|
271
|
+
|
|
272
|
+
```python
|
|
273
|
+
import asyncio
|
|
274
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
275
|
+
from synapse_sdk.utils.network import (
|
|
276
|
+
StreamLimits,
|
|
277
|
+
WebSocketStreamManager,
|
|
278
|
+
HTTPStreamManager,
|
|
279
|
+
validate_resource_id,
|
|
280
|
+
validate_timeout,
|
|
281
|
+
http_to_websocket_url
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
class StreamingExample:
|
|
285
|
+
def __init__(self):
|
|
286
|
+
# 구성 요소 설정
|
|
287
|
+
self.thread_pool = ThreadPoolExecutor(max_workers=3)
|
|
288
|
+
self.limits = StreamLimits(max_lines=10000)
|
|
289
|
+
self.ws_manager = WebSocketStreamManager(self.thread_pool, self.limits)
|
|
290
|
+
|
|
291
|
+
# HTTP 스트리밍을 위한 HTTP 세션
|
|
292
|
+
import requests
|
|
293
|
+
self.session = requests.Session()
|
|
294
|
+
self.http_manager = HTTPStreamManager(self.session, self.limits)
|
|
295
|
+
|
|
296
|
+
def stream_job_logs(self, job_id, protocol='websocket'):
|
|
297
|
+
# 입력 유효성 검사
|
|
298
|
+
validated_id = validate_resource_id(job_id, 'job')
|
|
299
|
+
timeout = validate_timeout(30)
|
|
300
|
+
|
|
301
|
+
if protocol == 'websocket':
|
|
302
|
+
return self._websocket_stream(validated_id, timeout)
|
|
303
|
+
else:
|
|
304
|
+
return self._http_stream(validated_id, timeout)
|
|
305
|
+
|
|
306
|
+
def _websocket_stream(self, job_id, timeout):
|
|
307
|
+
url = f"http://ray-cluster:8265/jobs/{job_id}/logs/"
|
|
308
|
+
ws_url = http_to_websocket_url(url)
|
|
309
|
+
headers = {"Authorization": "Bearer token"}
|
|
310
|
+
context = f"job {job_id}"
|
|
311
|
+
|
|
312
|
+
return self.ws_manager.stream_logs(ws_url, headers, timeout, context)
|
|
313
|
+
|
|
314
|
+
def _http_stream(self, job_id, timeout):
|
|
315
|
+
url = f"http://ray-cluster:8265/jobs/{job_id}/logs/stream"
|
|
316
|
+
headers = {"Authorization": "Bearer token"}
|
|
317
|
+
timeout_tuple = (5, timeout)
|
|
318
|
+
context = f"job {job_id}"
|
|
319
|
+
|
|
320
|
+
return self.http_manager.stream_logs(url, headers, timeout_tuple, context)
|
|
321
|
+
|
|
322
|
+
# 사용법
|
|
323
|
+
example = StreamingExample()
|
|
324
|
+
|
|
325
|
+
# WebSocket으로 스트리밍
|
|
326
|
+
for log_line in example.stream_job_logs('job-12345', 'websocket'):
|
|
327
|
+
print(log_line.strip())
|
|
328
|
+
|
|
329
|
+
# HTTP 폴백으로 스트리밍
|
|
330
|
+
for log_line in example.stream_job_logs('job-12345', 'http'):
|
|
331
|
+
print(log_line.strip())
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## 모범 사례
|
|
335
|
+
|
|
336
|
+
### 1. 리소스 관리
|
|
337
|
+
|
|
338
|
+
```python
|
|
339
|
+
# 항상 적절한 정리 사용
|
|
340
|
+
thread_pool = ThreadPoolExecutor(max_workers=5)
|
|
341
|
+
try:
|
|
342
|
+
manager = WebSocketStreamManager(thread_pool, StreamLimits())
|
|
343
|
+
# 매니저 사용...
|
|
344
|
+
finally:
|
|
345
|
+
thread_pool.shutdown(wait=True)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### 2. 오류 처리
|
|
349
|
+
|
|
350
|
+
```python
|
|
351
|
+
from synapse_sdk.clients.exceptions import ClientError
|
|
352
|
+
|
|
353
|
+
try:
|
|
354
|
+
job_id = validate_resource_id(user_input, 'job')
|
|
355
|
+
timeout = validate_timeout(user_timeout)
|
|
356
|
+
# 유효성 검사된 입력으로 진행...
|
|
357
|
+
except ClientError as e:
|
|
358
|
+
logger.error(f"유효성 검사 실패: {e}")
|
|
359
|
+
return error_response(e.status, str(e))
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### 3. 스트림 제한 구성
|
|
363
|
+
|
|
364
|
+
```python
|
|
365
|
+
# 사용 사례에 따라 제한 구성
|
|
366
|
+
production_limits = StreamLimits(
|
|
367
|
+
max_messages=20000, # 프로덕션을 위해 더 높게
|
|
368
|
+
max_lines=100000, # 더 많은 라인 허용
|
|
369
|
+
max_bytes=200 * 1024 * 1024, # 큰 로그를 위해 200MB
|
|
370
|
+
queue_size=2000 # 더 큰 버퍼
|
|
371
|
+
)
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## 참고
|
|
375
|
+
|
|
376
|
+
- [RayClient](../../api/clients/ray.md) - 네트워크 유틸리티의 주요 소비자
|
|
377
|
+
- [File Utils](./file.md) - 파일 작업 및 처리
|
|
378
|
+
- [Storage](./storage.md) - Storage 제공자
|
synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: storage
|
|
3
|
+
title: Storage Providers
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Storage Providers
|
|
8
|
+
|
|
9
|
+
여러 클라우드 제공자를 지원하는 스토리지 추상화 레이어입니다.
|
|
10
|
+
|
|
11
|
+
## 지원되는 제공자
|
|
12
|
+
|
|
13
|
+
### Amazon S3
|
|
14
|
+
|
|
15
|
+
Amazon Simple Storage Service 통합입니다.
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
from synapse_sdk.utils.storage.providers.s3 import S3Provider
|
|
19
|
+
|
|
20
|
+
provider = S3Provider(
|
|
21
|
+
bucket="my-bucket",
|
|
22
|
+
region="us-west-2"
|
|
23
|
+
)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Google Cloud Storage
|
|
27
|
+
|
|
28
|
+
Google Cloud Storage 통합입니다.
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from synapse_sdk.utils.storage.providers.gcp import GCPProvider
|
|
32
|
+
|
|
33
|
+
provider = GCPProvider(
|
|
34
|
+
bucket="my-bucket",
|
|
35
|
+
project="my-project"
|
|
36
|
+
)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### SFTP
|
|
40
|
+
|
|
41
|
+
Secure File Transfer Protocol 지원입니다.
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
from synapse_sdk.utils.storage.providers.sftp import SFTPProvider
|
|
45
|
+
|
|
46
|
+
provider = SFTPProvider(
|
|
47
|
+
host="sftp.example.com",
|
|
48
|
+
username="user"
|
|
49
|
+
)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 사용법
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from synapse_sdk.utils.storage import get_storage
|
|
56
|
+
|
|
57
|
+
# URL에서 자동 제공자 감지
|
|
58
|
+
storage = get_storage("s3://my-bucket/file.csv")
|
|
59
|
+
local_path = storage.download()
|
|
60
|
+
```
|
synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: types
|
|
3
|
+
title: Custom Types
|
|
4
|
+
sidebar_position: 3
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Custom Types
|
|
8
|
+
|
|
9
|
+
SDK 전반에 걸쳐 사용되는 사용자 정의 타입 및 Pydantic 필드입니다.
|
|
10
|
+
|
|
11
|
+
## FileField
|
|
12
|
+
|
|
13
|
+
자동 다운로드 기능이 있는 파일 URL 처리를 위한 사용자 정의 Pydantic 필드입니다.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from synapse_sdk.types import FileField
|
|
17
|
+
from pydantic import BaseModel
|
|
18
|
+
|
|
19
|
+
class MyParams(BaseModel):
|
|
20
|
+
input_file: FileField # 파일을 자동으로 다운로드
|
|
21
|
+
|
|
22
|
+
def process(params: MyParams):
|
|
23
|
+
file_path = params.input_file # 로컬 파일 경로
|
|
24
|
+
# 파일 처리...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 기능
|
|
28
|
+
|
|
29
|
+
- URL에서 자동 파일 다운로드
|
|
30
|
+
- 임시 파일 관리
|
|
31
|
+
- 다양한 파일 형식 지원
|
|
32
|
+
- 파일 존재 여부 유효성 검사
|
|
33
|
+
|
|
34
|
+
## 사용 예제
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# 플러그인 매개변수에서
|
|
38
|
+
class ProcessParams(BaseModel):
|
|
39
|
+
data_file: FileField
|
|
40
|
+
config_file: FileField = None # 선택적 파일
|
|
41
|
+
|
|
42
|
+
# FileField는 자동으로:
|
|
43
|
+
# 1. URL에서 파일 다운로드
|
|
44
|
+
# 2. 파일 존재 여부 유효성 검사
|
|
45
|
+
# 3. 로컬 파일 경로 반환
|
|
46
|
+
# 4. 임시 파일 정리
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 타입 유효성 검사
|
|
50
|
+
|
|
51
|
+
SDK 전반에 걸쳐 타입 안전성을 보장하기 위한 사용자 정의 유효성 검사기입니다.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: installation
|
|
3
|
+
title: 설치 & 설정
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 설치 & 설정
|
|
8
|
+
|
|
9
|
+
Synapse SDK를 몇 분 안에 시작해보세요.
|
|
10
|
+
|
|
11
|
+
## 사전 요구사항
|
|
12
|
+
|
|
13
|
+
Synapse SDK를 설치하기 전에 다음을 확인하세요:
|
|
14
|
+
|
|
15
|
+
- **Python 3.10 이상** 설치됨
|
|
16
|
+
|
|
17
|
+
## 설치 방법
|
|
18
|
+
|
|
19
|
+
### PyPI에서 설치
|
|
20
|
+
|
|
21
|
+
Synapse SDK를 설치하는 가장 쉬운 방법은 pip를 사용하는 것입니다:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install synapse-sdk
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 선택적 종속성과 함께 설치
|
|
28
|
+
|
|
29
|
+
추가 기능을 위해 extras와 함께 설치하세요:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 모든 종속성과 함께 설치 (분산 컴퓨팅, 최적화 라이브러리)
|
|
33
|
+
pip install synapse-sdk[all]
|
|
34
|
+
|
|
35
|
+
# 대시보드 종속성과 함께 설치 (FastAPI, Uvicorn)
|
|
36
|
+
pip install synapse-sdk[devtools]
|
|
37
|
+
|
|
38
|
+
# 둘 다 설치
|
|
39
|
+
pip install "synapse-sdk[all,devtools]"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 소스에서 설치
|
|
43
|
+
|
|
44
|
+
최신 개발 버전을 가져오려면:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/datamaker/synapse-sdk.git
|
|
48
|
+
cd synapse-sdk
|
|
49
|
+
pip install -e .
|
|
50
|
+
|
|
51
|
+
# 선택적 종속성과 함께
|
|
52
|
+
pip install -e ".[all,devtools]"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 설치 확인
|
|
56
|
+
|
|
57
|
+
설치 후 모든 것이 작동하는지 확인하세요:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 버전 확인
|
|
61
|
+
synapse --version
|
|
62
|
+
|
|
63
|
+
# 대화형 CLI 실행
|
|
64
|
+
synapse
|
|
65
|
+
|
|
66
|
+
# devtools와 함께 실행
|
|
67
|
+
synapse --dev-tools
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 문제 해결
|
|
71
|
+
|
|
72
|
+
### 일반적인 문제들
|
|
73
|
+
|
|
74
|
+
1. **ImportError: No module named 'synapse_sdk'**
|
|
75
|
+
- 가상 환경을 활성화했는지 확인하세요
|
|
76
|
+
- Python 경로 확인: `python -c "import sys; print(sys.path)"`
|
|
77
|
+
|
|
78
|
+
2. **백엔드 연결 시간 초과**
|
|
79
|
+
- API 토큰이 올바른지 확인하세요
|
|
80
|
+
- 네트워크 연결을 확인하세요
|
|
81
|
+
- 백엔드 URL에 접근 가능한지 확인하세요
|
|
82
|
+
|
|
83
|
+
### 도움 받기
|
|
84
|
+
|
|
85
|
+
문제가 발생하면:
|
|
86
|
+
|
|
87
|
+
1. [문제 해결 가이드](./troubleshooting.md)를 확인하세요
|
|
88
|
+
2. [GitHub Issues](https://github.com/datamaker/synapse-sdk/issues) 검색
|
|
89
|
+
3. [Discord 커뮤니티](https://discord.gg/synapse-sdk)에 참여하세요
|
|
90
|
+
|
|
91
|
+
## 다음 단계
|
|
92
|
+
|
|
93
|
+
- [빠른 시작 가이드](./quickstart.md) 따라하기
|
|
94
|
+
- [핵심 개념](./concepts/index.md)에 대해 학습하기
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: introduction
|
|
3
|
+
title: 소개
|
|
4
|
+
sidebar_position: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Synapse SDK
|
|
8
|
+
|
|
9
|
+
ML 및 데이터 처리 플러그인을 구축하세요.
|
|
10
|
+
|
|
11
|
+
## 개요
|
|
12
|
+
|
|
13
|
+
Synapse SDK는...
|
|
14
|
+
|
|
15
|
+
### 주요 기능
|
|
16
|
+
|
|
17
|
+
- **🚀 플러그인 개발 및 테스트**: Synapse용 카테고리별로 구성된 모듈화되고 재사용 가능한 컴포넌트 개발
|
|
18
|
+
- **⚡ 분산 컴퓨팅**: 확장 가능한 분산 실행을 위해 구축됨
|
|
19
|
+
- **🔧 다중 실행 모드**: Job, Task 및 REST API 지원
|
|
20
|
+
- **📦 격리된 런타임 환경**: 각 플러그인은 종속성 관리와 함께 자체 환경에서 실행됨
|
|
21
|
+
- **📊 진행률 추적**: 내장된 진행률 모니터링 및 메트릭 보고
|
|
22
|
+
|
|
23
|
+
### 플러그인 카테고리
|
|
24
|
+
|
|
25
|
+
SDK는 플러그인을 특정 카테고리로 구성합니다:
|
|
26
|
+
|
|
27
|
+
1. **신경망** (`NEURAL_NET`): ML 모델 학습, 추론 및 배포
|
|
28
|
+
2. **내보내기** (`EXPORT`): 데이터 내보내기 및 변환 작업
|
|
29
|
+
3. **업로드** (`UPLOAD`): 파일 및 데이터 업로드 기능
|
|
30
|
+
4. **스마트 도구** (`SMART_TOOL`): 지능형 자동화 도구
|
|
31
|
+
5. **사후 어노테이션** (`POST_ANNOTATION`): 데이터 어노테이션 후 후처리
|
|
32
|
+
6. **사전 어노테이션** (`PRE_ANNOTATION`): 데이터 어노테이션 전 전처리
|
|
33
|
+
7. **데이터 검증** (`DATA_VALIDATION`): 데이터 품질 및 검증 확인
|
|
34
|
+
|
|
35
|
+
## 시작하기
|
|
36
|
+
|
|
37
|
+
Synapse SDK를 시작하려면:
|
|
38
|
+
|
|
39
|
+
1. [SDK 설치](./installation.md)
|
|
40
|
+
2. [빠른 시작 가이드 따라하기](./quickstart.md)
|
|
41
|
+
3. [API 참조 탐색](./api/index.md)
|
|
42
|
+
4. [예제 확인](./examples/index.md)
|
|
43
|
+
|
|
44
|
+
## 다음 단계
|
|
45
|
+
|
|
46
|
+
- [핵심 개념](./concepts/index.md) 학습하기
|
|
47
|
+
- [백엔드 연결](./configuration.md) 구성하기
|