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.
- synapse_sdk/__init__.py +24 -0
- synapse_sdk/cli/__init__.py +310 -5
- synapse_sdk/cli/alias/__init__.py +22 -0
- synapse_sdk/cli/alias/create.py +36 -0
- synapse_sdk/cli/alias/dataclass.py +31 -0
- synapse_sdk/cli/alias/default.py +16 -0
- synapse_sdk/cli/alias/delete.py +15 -0
- synapse_sdk/cli/alias/list.py +19 -0
- synapse_sdk/cli/alias/read.py +15 -0
- synapse_sdk/cli/alias/update.py +17 -0
- synapse_sdk/cli/alias/utils.py +61 -0
- 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/__init__.py +33 -0
- synapse_sdk/cli/{create_plugin.py → plugin/create.py} +2 -2
- synapse_sdk/cli/plugin/publish.py +45 -0
- synapse_sdk/{plugins/cli → cli/plugin}/run.py +12 -5
- 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 +41 -12
- synapse_sdk/clients/backend/annotation.py +13 -5
- synapse_sdk/clients/backend/core.py +59 -0
- synapse_sdk/clients/backend/data_collection.py +186 -0
- synapse_sdk/clients/backend/hitl.py +17 -0
- synapse_sdk/clients/backend/integration.py +19 -4
- synapse_sdk/clients/backend/ml.py +10 -7
- synapse_sdk/clients/backend/models.py +78 -0
- synapse_sdk/clients/base.py +381 -34
- synapse_sdk/clients/ray/serve.py +2 -0
- synapse_sdk/clients/validators/collections.py +31 -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 +74 -9
- synapse_sdk/plugins/README.md +1340 -0
- synapse_sdk/plugins/__init__.py +0 -13
- synapse_sdk/plugins/categories/base.py +145 -30
- 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/utils.py +187 -0
- synapse_sdk/plugins/categories/export/templates/config.yaml +21 -0
- synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
- synapse_sdk/plugins/categories/export/templates/plugin/export.py +160 -0
- synapse_sdk/plugins/categories/neural_net/actions/deployment.py +29 -14
- synapse_sdk/plugins/categories/neural_net/actions/inference.py +13 -1
- synapse_sdk/plugins/categories/neural_net/actions/train.py +1084 -38
- synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
- synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
- synapse_sdk/plugins/categories/neural_net/base/inference.py +37 -0
- synapse_sdk/plugins/categories/neural_net/templates/config.yaml +30 -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/{export/actions/export.py → pre_annotation/actions/pre_annotation/action.py} +4 -4
- 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/smart_tool/templates/config.yaml +5 -2
- synapse_sdk/plugins/categories/upload/__init__.py +0 -0
- synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -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 +33 -0
- synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
- synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +102 -0
- synapse_sdk/plugins/enums.py +3 -1
- synapse_sdk/plugins/models.py +140 -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/config.yaml +1 -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/legacy.py +95 -0
- 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/types.py +19 -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.backup +301 -0
- synapse_sdk/utils/http.py +138 -0
- synapse_sdk/utils/network.py +309 -0
- synapse_sdk/utils/storage/__init__.py +72 -0
- synapse_sdk/utils/storage/providers/__init__.py +183 -0
- synapse_sdk/utils/storage/providers/file_system.py +134 -0
- synapse_sdk/utils/storage/providers/gcp.py +13 -0
- synapse_sdk/utils/storage/providers/http.py +190 -0
- synapse_sdk/utils/storage/providers/s3.py +91 -0
- synapse_sdk/utils/storage/providers/sftp.py +47 -0
- synapse_sdk/utils/storage/registry.py +17 -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.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
- synapse_sdk/clients/backend/dataset.py +0 -51
- synapse_sdk/plugins/categories/import/actions/import.py +0 -10
- synapse_sdk/plugins/cli/__init__.py +0 -21
- synapse_sdk/plugins/cli/publish.py +0 -37
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -24
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -24
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -4
- synapse_sdk/plugins/utils.py +0 -50
- synapse_sdk/utils/file.py +0 -87
- synapse_sdk/utils/storage.py +0 -91
- synapse_sdk-1.0.0a13.dist-info/METADATA +0 -43
- synapse_sdk-1.0.0a13.dist-info/RECORD +0 -111
- /synapse_sdk/{plugins/categories/import → clients/validators}/__init__.py +0 -0
- /synapse_sdk/{plugins/categories/import/actions → devtools}/__init__.py +0 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info/licenses}/LICENSE +0 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: network
|
|
3
|
+
title: Network Utilities
|
|
4
|
+
sidebar_position: 4
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Network Utilities
|
|
8
|
+
|
|
9
|
+
Comprehensive networking utilities for streaming, validation, and connection management.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The `synapse_sdk.utils.network` module provides essential networking components used by Ray and other clients for secure, robust streaming operations and input validation.
|
|
14
|
+
|
|
15
|
+
## StreamLimits
|
|
16
|
+
|
|
17
|
+
Configuration class for streaming operation limits to prevent resource exhaustion.
|
|
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): Maximum number of messages to process (default: 10,000)
|
|
37
|
+
- `max_lines` (int): Maximum number of lines to stream (default: 50,000)
|
|
38
|
+
- `max_bytes` (int): Maximum total bytes to process (default: 50MB)
|
|
39
|
+
- `max_message_size` (int): Maximum size per message (default: 10KB)
|
|
40
|
+
- `queue_size` (int): Internal queue size for message buffering (default: 1,000)
|
|
41
|
+
- `exception_queue_size` (int): Queue size for exception handling (default: 10)
|
|
42
|
+
|
|
43
|
+
### Usage
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
# Custom limits for high-volume streaming
|
|
47
|
+
custom_limits = StreamLimits(
|
|
48
|
+
max_messages=50000,
|
|
49
|
+
max_lines=100000,
|
|
50
|
+
max_bytes=100 * 1024 * 1024 # 100MB
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Use with stream managers
|
|
54
|
+
websocket_manager = WebSocketStreamManager(thread_pool, custom_limits)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## WebSocketStreamManager
|
|
58
|
+
|
|
59
|
+
Manages WebSocket connections for real-time log streaming with automatic error handling and resource cleanup.
|
|
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
|
+
Stream logs from a WebSocket endpoint.
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
# Stream logs with error handling
|
|
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"Streaming failed: {e}")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Error Handling
|
|
93
|
+
|
|
94
|
+
- **500**: WebSocket library not available
|
|
95
|
+
- **503**: Connection failed
|
|
96
|
+
- **408**: Connection timeout
|
|
97
|
+
- **429**: Stream limits exceeded
|
|
98
|
+
|
|
99
|
+
## HTTPStreamManager
|
|
100
|
+
|
|
101
|
+
Manages HTTP streaming connections using chunked transfer encoding for reliable log streaming.
|
|
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
|
+
Stream logs from an HTTP endpoint with chunked transfer encoding.
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# Stream logs with custom 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"Error detected: {log_line}")
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Features
|
|
133
|
+
|
|
134
|
+
- **Automatic Resource Cleanup**: HTTP responses properly closed
|
|
135
|
+
- **Line Size Filtering**: Oversized lines (>10KB) automatically filtered
|
|
136
|
+
- **Stream Limits**: Prevents memory exhaustion
|
|
137
|
+
- **Error Recovery**: Robust error handling with proper cleanup
|
|
138
|
+
|
|
139
|
+
### Error Handling
|
|
140
|
+
|
|
141
|
+
- **503**: Connection refused or network error
|
|
142
|
+
- **408**: Connection or read timeout
|
|
143
|
+
- **404**: Endpoint not found
|
|
144
|
+
- **429**: Stream limits exceeded
|
|
145
|
+
- **500**: Unexpected streaming error
|
|
146
|
+
|
|
147
|
+
## Validation Functions
|
|
148
|
+
|
|
149
|
+
### `validate_resource_id(resource_id, resource_name='resource')`
|
|
150
|
+
|
|
151
|
+
Validates resource identifiers to prevent injection attacks.
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from synapse_sdk.utils.network import validate_resource_id
|
|
155
|
+
|
|
156
|
+
# Valid usage
|
|
157
|
+
job_id = validate_resource_id('job-12345', 'job')
|
|
158
|
+
node_id = validate_resource_id('node_abc_123', 'node')
|
|
159
|
+
|
|
160
|
+
# Invalid usage raises ClientError
|
|
161
|
+
try:
|
|
162
|
+
validate_resource_id('job/../malicious', 'job')
|
|
163
|
+
except ClientError as e:
|
|
164
|
+
print(f"Invalid ID: {e}") # Status 400
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### Validation Rules
|
|
168
|
+
|
|
169
|
+
- Must not be empty
|
|
170
|
+
- Only alphanumeric characters, hyphens, and underscores allowed
|
|
171
|
+
- Maximum length: 100 characters
|
|
172
|
+
- Pattern: `^[a-zA-Z0-9\-_]+$`
|
|
173
|
+
|
|
174
|
+
#### Parameters
|
|
175
|
+
|
|
176
|
+
- `resource_id` (Any): The ID to validate (converted to string)
|
|
177
|
+
- `resource_name` (str): Name for error messages (default: 'resource')
|
|
178
|
+
|
|
179
|
+
#### Returns
|
|
180
|
+
|
|
181
|
+
- `str`: Validated resource ID
|
|
182
|
+
|
|
183
|
+
#### Raises
|
|
184
|
+
|
|
185
|
+
- `ClientError` (400): If validation fails
|
|
186
|
+
|
|
187
|
+
### `validate_timeout(timeout, max_timeout=300)`
|
|
188
|
+
|
|
189
|
+
Validates timeout values with bounds checking.
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
from synapse_sdk.utils.network import validate_timeout
|
|
193
|
+
|
|
194
|
+
# Valid timeouts
|
|
195
|
+
timeout = validate_timeout(30) # 30 seconds
|
|
196
|
+
timeout = validate_timeout(10.5) # 10.5 seconds
|
|
197
|
+
|
|
198
|
+
# Invalid timeouts raise ClientError
|
|
199
|
+
try:
|
|
200
|
+
validate_timeout(-1) # Negative timeout
|
|
201
|
+
validate_timeout(500) # Exceeds maximum
|
|
202
|
+
except ClientError as e:
|
|
203
|
+
print(f"Invalid timeout: {e}") # Status 400
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### Parameters
|
|
207
|
+
|
|
208
|
+
- `timeout` (int|float): Timeout value in seconds
|
|
209
|
+
- `max_timeout` (int): Maximum allowed timeout (default: 300)
|
|
210
|
+
|
|
211
|
+
#### Returns
|
|
212
|
+
|
|
213
|
+
- `float`: Validated timeout value
|
|
214
|
+
|
|
215
|
+
#### Raises
|
|
216
|
+
|
|
217
|
+
- `ClientError` (400): If timeout is invalid
|
|
218
|
+
|
|
219
|
+
## URL Utilities
|
|
220
|
+
|
|
221
|
+
### `http_to_websocket_url(http_url)`
|
|
222
|
+
|
|
223
|
+
Converts HTTP URLs to WebSocket URLs.
|
|
224
|
+
|
|
225
|
+
```python
|
|
226
|
+
from synapse_sdk.utils.network import http_to_websocket_url
|
|
227
|
+
|
|
228
|
+
# Convert URLs
|
|
229
|
+
ws_url = http_to_websocket_url("http://ray-cluster:8265/logs/")
|
|
230
|
+
# Result: "ws://ray-cluster:8265/logs/"
|
|
231
|
+
|
|
232
|
+
wss_url = http_to_websocket_url("https://ray-cluster:8265/logs/")
|
|
233
|
+
# Result: "wss://ray-cluster:8265/logs/"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
#### Parameters
|
|
237
|
+
|
|
238
|
+
- `http_url` (str): HTTP or HTTPS URL
|
|
239
|
+
|
|
240
|
+
#### Returns
|
|
241
|
+
|
|
242
|
+
- `str`: WebSocket URL (ws:// or wss://)
|
|
243
|
+
|
|
244
|
+
## Error Utilities
|
|
245
|
+
|
|
246
|
+
### `sanitize_error_message(message, context)`
|
|
247
|
+
|
|
248
|
+
Sanitizes error messages to prevent information leakage while maintaining debugging context.
|
|
249
|
+
|
|
250
|
+
```python
|
|
251
|
+
from synapse_sdk.utils.network import sanitize_error_message
|
|
252
|
+
|
|
253
|
+
# Sanitize errors for logging
|
|
254
|
+
clean_message = sanitize_error_message(
|
|
255
|
+
"Connection failed: Invalid token abc123",
|
|
256
|
+
"job job-12345"
|
|
257
|
+
)
|
|
258
|
+
# Result: Sanitized error message with context
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### Parameters
|
|
262
|
+
|
|
263
|
+
- `message` (str): Original error message
|
|
264
|
+
- `context` (str): Context for debugging (e.g., "job job-12345")
|
|
265
|
+
|
|
266
|
+
#### Returns
|
|
267
|
+
|
|
268
|
+
- `str`: Sanitized error message
|
|
269
|
+
|
|
270
|
+
## Complete Example
|
|
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
|
+
# Setup components
|
|
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 session for HTTP streaming
|
|
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
|
+
# Validate inputs
|
|
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
|
+
# Usage
|
|
323
|
+
example = StreamingExample()
|
|
324
|
+
|
|
325
|
+
# Stream with WebSocket
|
|
326
|
+
for log_line in example.stream_job_logs('job-12345', 'websocket'):
|
|
327
|
+
print(log_line.strip())
|
|
328
|
+
|
|
329
|
+
# Stream with HTTP fallback
|
|
330
|
+
for log_line in example.stream_job_logs('job-12345', 'http'):
|
|
331
|
+
print(log_line.strip())
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## Best Practices
|
|
335
|
+
|
|
336
|
+
### 1. Resource Management
|
|
337
|
+
|
|
338
|
+
```python
|
|
339
|
+
# Always use proper cleanup
|
|
340
|
+
thread_pool = ThreadPoolExecutor(max_workers=5)
|
|
341
|
+
try:
|
|
342
|
+
manager = WebSocketStreamManager(thread_pool, StreamLimits())
|
|
343
|
+
# Use manager...
|
|
344
|
+
finally:
|
|
345
|
+
thread_pool.shutdown(wait=True)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### 2. Error Handling
|
|
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
|
+
# Proceed with validated inputs...
|
|
357
|
+
except ClientError as e:
|
|
358
|
+
logger.error(f"Validation failed: {e}")
|
|
359
|
+
return error_response(e.status, str(e))
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### 3. Stream Limits Configuration
|
|
363
|
+
|
|
364
|
+
```python
|
|
365
|
+
# Configure limits based on use case
|
|
366
|
+
production_limits = StreamLimits(
|
|
367
|
+
max_messages=20000, # Higher for production
|
|
368
|
+
max_lines=100000, # More lines allowed
|
|
369
|
+
max_bytes=200 * 1024 * 1024, # 200MB for large logs
|
|
370
|
+
queue_size=2000 # Larger buffer
|
|
371
|
+
)
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## See Also
|
|
375
|
+
|
|
376
|
+
- [RayClient](../../api/clients/ray.md) - Primary consumer of network utilities
|
|
377
|
+
- [File Utils](./file.md) - File operations and handling
|
|
378
|
+
- [Storage](./storage.md) - Storage providers
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: storage
|
|
3
|
+
title: Storage Providers
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Storage Providers
|
|
8
|
+
|
|
9
|
+
Storage abstraction layer supporting multiple cloud providers.
|
|
10
|
+
|
|
11
|
+
## Supported Providers
|
|
12
|
+
|
|
13
|
+
### Amazon S3
|
|
14
|
+
Amazon Simple Storage Service integration.
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
from synapse_sdk.utils.storage.providers.s3 import S3Provider
|
|
18
|
+
|
|
19
|
+
provider = S3Provider(
|
|
20
|
+
bucket="my-bucket",
|
|
21
|
+
region="us-west-2"
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Google Cloud Storage
|
|
26
|
+
Google Cloud Storage integration.
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
from synapse_sdk.utils.storage.providers.gcp import GCPProvider
|
|
30
|
+
|
|
31
|
+
provider = GCPProvider(
|
|
32
|
+
bucket="my-bucket",
|
|
33
|
+
project="my-project"
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### SFTP
|
|
38
|
+
Secure File Transfer Protocol support.
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from synapse_sdk.utils.storage.providers.sftp import SFTPProvider
|
|
42
|
+
|
|
43
|
+
provider = SFTPProvider(
|
|
44
|
+
host="sftp.example.com",
|
|
45
|
+
username="user"
|
|
46
|
+
)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from synapse_sdk.utils.storage import get_storage
|
|
53
|
+
|
|
54
|
+
# Automatic provider detection from URL
|
|
55
|
+
storage = get_storage("s3://my-bucket/file.csv")
|
|
56
|
+
local_path = storage.download()
|
|
57
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: types
|
|
3
|
+
title: Custom Types
|
|
4
|
+
sidebar_position: 3
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Custom Types
|
|
8
|
+
|
|
9
|
+
Custom types and Pydantic fields used throughout the SDK.
|
|
10
|
+
|
|
11
|
+
## FileField
|
|
12
|
+
|
|
13
|
+
Custom Pydantic field for handling file URLs with automatic download.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from synapse_sdk.types import FileField
|
|
17
|
+
from pydantic import BaseModel
|
|
18
|
+
|
|
19
|
+
class MyParams(BaseModel):
|
|
20
|
+
input_file: FileField # Automatically downloads files
|
|
21
|
+
|
|
22
|
+
def process(params: MyParams):
|
|
23
|
+
file_path = params.input_file # Local file path
|
|
24
|
+
# Process the file...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
- Automatic file download from URLs
|
|
30
|
+
- Temporary file management
|
|
31
|
+
- Support for various file formats
|
|
32
|
+
- Validation of file existence
|
|
33
|
+
|
|
34
|
+
## Usage Examples
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# In plugin parameters
|
|
38
|
+
class ProcessParams(BaseModel):
|
|
39
|
+
data_file: FileField
|
|
40
|
+
config_file: FileField = None # Optional file
|
|
41
|
+
|
|
42
|
+
# The FileField automatically:
|
|
43
|
+
# 1. Downloads the file from URL
|
|
44
|
+
# 2. Validates file existence
|
|
45
|
+
# 3. Returns local file path
|
|
46
|
+
# 4. Cleans up temporary files
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Type Validation
|
|
50
|
+
|
|
51
|
+
Custom validators for ensuring type safety across the SDK.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: installation
|
|
3
|
+
title: Installation & Setup
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Installation & Setup
|
|
8
|
+
|
|
9
|
+
Get started with Synapse SDK in minutes.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Before installing Synapse SDK, ensure you have:
|
|
14
|
+
|
|
15
|
+
- **Python 3.10 or higher** installed
|
|
16
|
+
|
|
17
|
+
## Installation Methods
|
|
18
|
+
|
|
19
|
+
### Install from PyPI
|
|
20
|
+
|
|
21
|
+
The easiest way to install Synapse SDK is via pip:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install synapse-sdk
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Install with Optional Dependencies
|
|
28
|
+
|
|
29
|
+
For additional features, install with extras:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Install with all dependencies (distributed computing, optimization libraries)
|
|
33
|
+
pip install synapse-sdk[all]
|
|
34
|
+
|
|
35
|
+
# Install with dashboard dependencies (FastAPI, Uvicorn)
|
|
36
|
+
pip install synapse-sdk[devtools]
|
|
37
|
+
|
|
38
|
+
# Install both
|
|
39
|
+
pip install "synapse-sdk[all,devtools]"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Install from Source
|
|
43
|
+
|
|
44
|
+
To get the latest development version:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/datamaker/synapse-sdk.git
|
|
48
|
+
cd synapse-sdk
|
|
49
|
+
pip install -e .
|
|
50
|
+
|
|
51
|
+
# With optional dependencies
|
|
52
|
+
pip install -e ".[all,devtools]"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Verify Installation
|
|
56
|
+
|
|
57
|
+
After installation, verify everything is working:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Check version
|
|
61
|
+
synapse --version
|
|
62
|
+
|
|
63
|
+
# Run interactive CLI
|
|
64
|
+
synapse
|
|
65
|
+
|
|
66
|
+
# Run with devtools
|
|
67
|
+
synapse --dev-tools
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Troubleshooting
|
|
71
|
+
|
|
72
|
+
### Common Issues
|
|
73
|
+
|
|
74
|
+
1. **ImportError: No module named 'synapse_sdk'**
|
|
75
|
+
- Ensure you've activated your virtual environment
|
|
76
|
+
- Check Python path: `python -c "import sys; print(sys.path)"`
|
|
77
|
+
|
|
78
|
+
2. **Connection timeout to backend**
|
|
79
|
+
- Verify your API token is correct
|
|
80
|
+
- Check network connectivity
|
|
81
|
+
- Ensure backend URL is accessible
|
|
82
|
+
|
|
83
|
+
### Getting Help
|
|
84
|
+
|
|
85
|
+
If you encounter issues:
|
|
86
|
+
|
|
87
|
+
1. Check the [Troubleshooting Guide](./troubleshooting.md)
|
|
88
|
+
2. Search [GitHub Issues](https://github.com/datamaker/synapse-sdk/issues)
|
|
89
|
+
3. Join our [Discord Community](https://discord.gg/synapse-sdk)
|
|
90
|
+
|
|
91
|
+
## Next Steps
|
|
92
|
+
|
|
93
|
+
- Follow the [Quickstart Guide](./quickstart.md)
|
|
94
|
+
- Learn about [Core Concepts](./concepts/index.md)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: introduction
|
|
3
|
+
title: Introduction
|
|
4
|
+
sidebar_position: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Synapse SDK
|
|
8
|
+
|
|
9
|
+
Build ML and data processing plugins.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Synapse SDK is..
|
|
14
|
+
|
|
15
|
+
### Key Features
|
|
16
|
+
|
|
17
|
+
- **🚀 Plugin Development and Testing**: Develop modular, reusable components organized by categories for Synapse
|
|
18
|
+
- **⚡ Distributed Computing**: Built for scalable, distributed execution
|
|
19
|
+
- **🔧 Multiple Execution Modes**: Support for Jobs, Tasks, and REST APIs
|
|
20
|
+
- **📦 Isolated Runtime Environments**: Each plugin runs in its own environment with dependency management
|
|
21
|
+
- **📊 Progress Tracking**: Built-in progress monitoring and metrics reporting
|
|
22
|
+
|
|
23
|
+
### Plugin Categories
|
|
24
|
+
|
|
25
|
+
The SDK organizes plugins into specific categories:
|
|
26
|
+
|
|
27
|
+
1. **Neural Network** (`NEURAL_NET`): ML model training, inference, and deployment
|
|
28
|
+
2. **Export** (`EXPORT`): Data export and transformation operations
|
|
29
|
+
3. **Upload** (`UPLOAD`): File and data upload functionality
|
|
30
|
+
4. **Smart Tools** (`SMART_TOOL`): Intelligent automation tools
|
|
31
|
+
5. **Post-Annotation** (`POST_ANNOTATION`): Post-processing after data annotation
|
|
32
|
+
6. **Pre-Annotation** (`PRE_ANNOTATION`): Pre-processing before data annotation
|
|
33
|
+
7. **Data Validation** (`DATA_VALIDATION`): Data quality and validation checks
|
|
34
|
+
|
|
35
|
+
## Getting Started
|
|
36
|
+
|
|
37
|
+
To get started with the Synapse SDK:
|
|
38
|
+
|
|
39
|
+
1. [Install the SDK](./installation.md)
|
|
40
|
+
2. [Follow the Quickstart Guide](./quickstart.md)
|
|
41
|
+
3. [Explore the API Reference](./api/index.md)
|
|
42
|
+
4. [Check out Examples](./examples/index.md)
|
|
43
|
+
|
|
44
|
+
## Next Steps
|
|
45
|
+
|
|
46
|
+
- Learn about [Core Concepts](./concepts/index.md)
|
|
47
|
+
- Configure [Backend Connection](./configuration.md)
|