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,571 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: integration-mixin
|
|
3
|
+
title: IntegrationClientMixin
|
|
4
|
+
sidebar_position: 4
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# IntegrationClientMixin
|
|
8
|
+
|
|
9
|
+
Provides plugin management, job execution, and system integration operations for the Synapse backend.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The `IntegrationClientMixin` handles all operations related to plugins, jobs, agents, and storage management. This mixin is automatically included in the `BackendClient` and provides methods for system integration and automation workflows.
|
|
14
|
+
|
|
15
|
+
## Agent Operations
|
|
16
|
+
|
|
17
|
+
### `health_check_agent(token)`
|
|
18
|
+
|
|
19
|
+
Check the health status of an agent.
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
# Check agent health
|
|
23
|
+
status = client.health_check_agent('agent-token-123')
|
|
24
|
+
print(f"Agent status: {status}")
|
|
25
|
+
|
|
26
|
+
# Verify agent connectivity
|
|
27
|
+
try:
|
|
28
|
+
health = client.health_check_agent('my-agent-token')
|
|
29
|
+
print("Agent is healthy and connected")
|
|
30
|
+
except ClientError as e:
|
|
31
|
+
print(f"Agent health check failed: {e}")
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Parameters:**
|
|
35
|
+
|
|
36
|
+
- `token` (str): Agent authentication token
|
|
37
|
+
|
|
38
|
+
**Returns:**
|
|
39
|
+
|
|
40
|
+
- `dict`: Agent health status and connectivity information
|
|
41
|
+
|
|
42
|
+
## Plugin Management
|
|
43
|
+
|
|
44
|
+
### `get_plugin(pk)`
|
|
45
|
+
|
|
46
|
+
Retrieve detailed information about a specific plugin.
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
plugin = client.get_plugin(123)
|
|
50
|
+
print(f"Plugin: {plugin['name']}")
|
|
51
|
+
print(f"Version: {plugin['version']}")
|
|
52
|
+
print(f"Description: {plugin['description']}")
|
|
53
|
+
print(f"Author: {plugin['author']}")
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Parameters:**
|
|
57
|
+
|
|
58
|
+
- `pk` (int): Plugin ID
|
|
59
|
+
|
|
60
|
+
**Returns:**
|
|
61
|
+
|
|
62
|
+
- `dict`: Complete plugin information including metadata and configuration
|
|
63
|
+
|
|
64
|
+
### `create_plugin(data)`
|
|
65
|
+
|
|
66
|
+
Create a new plugin in the system.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
plugin_data = {
|
|
70
|
+
'name': 'My Custom Plugin',
|
|
71
|
+
'description': 'A plugin for custom data processing',
|
|
72
|
+
'version': '1.0.0',
|
|
73
|
+
'author': 'Your Name',
|
|
74
|
+
'category': 'data_processing',
|
|
75
|
+
'configuration': {
|
|
76
|
+
'parameters': {
|
|
77
|
+
'threshold': {'type': 'float', 'default': 0.5},
|
|
78
|
+
'max_items': {'type': 'int', 'default': 100}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
new_plugin = client.create_plugin(plugin_data)
|
|
84
|
+
print(f"Created plugin with ID: {new_plugin['id']}")
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Parameters:**
|
|
88
|
+
|
|
89
|
+
- `data` (dict): Plugin configuration and metadata
|
|
90
|
+
|
|
91
|
+
**Plugin data structure:**
|
|
92
|
+
|
|
93
|
+
- `name` (str, required): Plugin name
|
|
94
|
+
- `description` (str): Plugin description
|
|
95
|
+
- `version` (str): Plugin version
|
|
96
|
+
- `author` (str): Plugin author
|
|
97
|
+
- `category` (str): Plugin category
|
|
98
|
+
- `configuration` (dict): Plugin configuration schema
|
|
99
|
+
|
|
100
|
+
**Returns:**
|
|
101
|
+
|
|
102
|
+
- `dict`: Created plugin with generated ID
|
|
103
|
+
|
|
104
|
+
### `update_plugin(pk, data)`
|
|
105
|
+
|
|
106
|
+
Update an existing plugin.
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
# Update plugin description and version
|
|
110
|
+
updated_data = {
|
|
111
|
+
'description': 'Updated plugin description',
|
|
112
|
+
'version': '1.1.0',
|
|
113
|
+
'configuration': {
|
|
114
|
+
'parameters': {
|
|
115
|
+
'threshold': {'type': 'float', 'default': 0.7},
|
|
116
|
+
'max_items': {'type': 'int', 'default': 200},
|
|
117
|
+
'new_param': {'type': 'string', 'default': 'default_value'}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
updated_plugin = client.update_plugin(123, updated_data)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Parameters:**
|
|
126
|
+
|
|
127
|
+
- `pk` (int): Plugin ID
|
|
128
|
+
- `data` (dict): Updated plugin data
|
|
129
|
+
|
|
130
|
+
**Returns:**
|
|
131
|
+
|
|
132
|
+
- `dict`: Updated plugin information
|
|
133
|
+
|
|
134
|
+
### `run_plugin(pk, data)`
|
|
135
|
+
|
|
136
|
+
Execute a plugin with specified parameters.
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
# Run plugin with parameters
|
|
140
|
+
execution_data = {
|
|
141
|
+
'parameters': {
|
|
142
|
+
'threshold': 0.8,
|
|
143
|
+
'max_items': 150,
|
|
144
|
+
'input_path': '/data/input/',
|
|
145
|
+
'output_path': '/data/output/'
|
|
146
|
+
},
|
|
147
|
+
'context': {
|
|
148
|
+
'project_id': 123,
|
|
149
|
+
'user_id': 456,
|
|
150
|
+
'execution_mode': 'batch'
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
result = client.run_plugin(123, execution_data)
|
|
155
|
+
print(f"Plugin execution started: {result['job_id']}")
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Parameters:**
|
|
159
|
+
|
|
160
|
+
- `pk` (int): Plugin ID
|
|
161
|
+
- `data` (dict): Execution parameters and context
|
|
162
|
+
|
|
163
|
+
**Execution data structure:**
|
|
164
|
+
|
|
165
|
+
- `parameters` (dict): Plugin-specific parameters
|
|
166
|
+
- `context` (dict): Execution context information
|
|
167
|
+
|
|
168
|
+
**Returns:**
|
|
169
|
+
|
|
170
|
+
- `dict`: Execution result with job information
|
|
171
|
+
|
|
172
|
+
## Plugin Release Management
|
|
173
|
+
|
|
174
|
+
### `get_plugin_release(pk, params=None)`
|
|
175
|
+
|
|
176
|
+
Get information about a specific plugin release.
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
# Get release information
|
|
180
|
+
release = client.get_plugin_release(456)
|
|
181
|
+
print(f"Release {release['version']} for plugin {release['plugin']}")
|
|
182
|
+
|
|
183
|
+
# Get release with expanded plugin info
|
|
184
|
+
release = client.get_plugin_release(456, params={'expand': 'plugin'})
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Parameters:**
|
|
188
|
+
|
|
189
|
+
- `pk` (int): Plugin release ID
|
|
190
|
+
- `params` (dict, optional): Query parameters
|
|
191
|
+
|
|
192
|
+
**Returns:**
|
|
193
|
+
|
|
194
|
+
- `dict`: Plugin release information
|
|
195
|
+
|
|
196
|
+
### `create_plugin_release(data)`
|
|
197
|
+
|
|
198
|
+
Create a new plugin release with file upload.
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
# Create plugin release
|
|
202
|
+
release_data = {
|
|
203
|
+
'plugin': 123,
|
|
204
|
+
'version': '2.0.0',
|
|
205
|
+
'changelog': 'Added new features and bug fixes',
|
|
206
|
+
'is_stable': True,
|
|
207
|
+
'file': open('/path/to/plugin_v2.zip', 'rb')
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
new_release = client.create_plugin_release(release_data)
|
|
211
|
+
print(f"Created release: {new_release['id']}")
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Parameters:**
|
|
215
|
+
|
|
216
|
+
- `data` (dict): Release data including file
|
|
217
|
+
|
|
218
|
+
**Release data structure:**
|
|
219
|
+
|
|
220
|
+
- `plugin` (int, required): Plugin ID
|
|
221
|
+
- `version` (str, required): Release version
|
|
222
|
+
- `changelog` (str): Release notes
|
|
223
|
+
- `is_stable` (bool): Whether this is a stable release
|
|
224
|
+
- `file` (file object, required): Plugin package file
|
|
225
|
+
|
|
226
|
+
**Returns:**
|
|
227
|
+
|
|
228
|
+
- `dict`: Created plugin release information
|
|
229
|
+
|
|
230
|
+
## Job Management
|
|
231
|
+
|
|
232
|
+
### `get_job(pk, params=None)`
|
|
233
|
+
|
|
234
|
+
Get detailed information about a job.
|
|
235
|
+
|
|
236
|
+
```python
|
|
237
|
+
# Get basic job info
|
|
238
|
+
job = client.get_job(789)
|
|
239
|
+
print(f"Job {job['id']}: {job['status']}")
|
|
240
|
+
|
|
241
|
+
# Get job with logs
|
|
242
|
+
job = client.get_job(789, params={'expand': 'logs'})
|
|
243
|
+
print(f"Job logs: {job['logs']}")
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Parameters:**
|
|
247
|
+
|
|
248
|
+
- `pk` (int): Job ID
|
|
249
|
+
- `params` (dict, optional): Query parameters
|
|
250
|
+
|
|
251
|
+
**Common params:**
|
|
252
|
+
|
|
253
|
+
- `expand`: Include additional data (`logs`, `metrics`, `result`)
|
|
254
|
+
|
|
255
|
+
**Returns:**
|
|
256
|
+
|
|
257
|
+
- `dict`: Complete job information
|
|
258
|
+
|
|
259
|
+
### `list_jobs(params=None)`
|
|
260
|
+
|
|
261
|
+
List jobs with filtering options.
|
|
262
|
+
|
|
263
|
+
```python
|
|
264
|
+
# List all jobs
|
|
265
|
+
jobs = client.list_jobs()
|
|
266
|
+
|
|
267
|
+
# List jobs by status
|
|
268
|
+
running_jobs = client.list_jobs(params={'status': 'running'})
|
|
269
|
+
|
|
270
|
+
# List jobs for a specific plugin
|
|
271
|
+
plugin_jobs = client.list_jobs(params={'plugin': 123})
|
|
272
|
+
|
|
273
|
+
# List recent jobs
|
|
274
|
+
from datetime import datetime, timedelta
|
|
275
|
+
recent_date = (datetime.now() - timedelta(days=7)).isoformat()
|
|
276
|
+
recent_jobs = client.list_jobs(params={'created_after': recent_date})
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**Parameters:**
|
|
280
|
+
|
|
281
|
+
- `params` (dict, optional): Filtering parameters
|
|
282
|
+
|
|
283
|
+
**Common filtering params:**
|
|
284
|
+
|
|
285
|
+
- `status`: Filter by job status (`queued`, `running`, `completed`, `failed`)
|
|
286
|
+
- `plugin`: Filter by plugin ID
|
|
287
|
+
- `created_after`: Filter by creation date
|
|
288
|
+
- `user`: Filter by user ID
|
|
289
|
+
|
|
290
|
+
**Returns:**
|
|
291
|
+
|
|
292
|
+
- `tuple`: (jobs_list, total_count)
|
|
293
|
+
|
|
294
|
+
### `update_job(pk, data)`
|
|
295
|
+
|
|
296
|
+
Update job status or metadata.
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
# Update job status
|
|
300
|
+
client.update_job(789, {'status': 'completed'})
|
|
301
|
+
|
|
302
|
+
# Update job with result data
|
|
303
|
+
client.update_job(789, {
|
|
304
|
+
'status': 'completed',
|
|
305
|
+
'result': {
|
|
306
|
+
'output_files': ['file1.txt', 'file2.txt'],
|
|
307
|
+
'metrics': {'accuracy': 0.95, 'processing_time': 120}
|
|
308
|
+
}
|
|
309
|
+
})
|
|
310
|
+
|
|
311
|
+
# Update job progress
|
|
312
|
+
client.update_job(789, {
|
|
313
|
+
'progress': 75,
|
|
314
|
+
'status': 'running',
|
|
315
|
+
'metadata': {'current_step': 'processing_images'}
|
|
316
|
+
})
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Parameters:**
|
|
320
|
+
|
|
321
|
+
- `pk` (int): Job ID
|
|
322
|
+
- `data` (dict): Update data
|
|
323
|
+
|
|
324
|
+
**Updatable fields:**
|
|
325
|
+
|
|
326
|
+
- `status`: Job status
|
|
327
|
+
- `progress`: Progress percentage (0-100)
|
|
328
|
+
- `result`: Job result data
|
|
329
|
+
- `metadata`: Additional job metadata
|
|
330
|
+
|
|
331
|
+
**Returns:**
|
|
332
|
+
|
|
333
|
+
- `dict`: Updated job information
|
|
334
|
+
|
|
335
|
+
### `list_job_console_logs(pk)`
|
|
336
|
+
|
|
337
|
+
Get console logs for a specific job.
|
|
338
|
+
|
|
339
|
+
```python
|
|
340
|
+
# Get job console logs
|
|
341
|
+
logs = client.list_job_console_logs(789)
|
|
342
|
+
for log_entry in logs:
|
|
343
|
+
print(f"[{log_entry['timestamp']}] {log_entry['level']}: {log_entry['message']}")
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**Parameters:**
|
|
347
|
+
|
|
348
|
+
- `pk` (int): Job ID
|
|
349
|
+
|
|
350
|
+
**Returns:**
|
|
351
|
+
|
|
352
|
+
- `list`: Console log entries with timestamps and levels
|
|
353
|
+
|
|
354
|
+
## Storage Management
|
|
355
|
+
|
|
356
|
+
### `list_storages()`
|
|
357
|
+
|
|
358
|
+
List all available storage configurations.
|
|
359
|
+
|
|
360
|
+
```python
|
|
361
|
+
storages = client.list_storages()
|
|
362
|
+
for storage in storages:
|
|
363
|
+
print(f"Storage: {storage['name']} ({storage['provider']})")
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Returns:**
|
|
367
|
+
|
|
368
|
+
- `list`: Available storage configurations
|
|
369
|
+
|
|
370
|
+
### `get_storage(pk)`
|
|
371
|
+
|
|
372
|
+
Get detailed information about a specific storage.
|
|
373
|
+
|
|
374
|
+
```python
|
|
375
|
+
storage = client.get_storage(123)
|
|
376
|
+
print(f"Storage: {storage['name']}")
|
|
377
|
+
print(f"Provider: {storage['provider']}")
|
|
378
|
+
print(f"Configuration: {storage['configuration']}")
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Parameters:**
|
|
382
|
+
|
|
383
|
+
- `pk` (int): Storage ID
|
|
384
|
+
|
|
385
|
+
**Returns:**
|
|
386
|
+
|
|
387
|
+
- `dict`: Complete storage configuration
|
|
388
|
+
|
|
389
|
+
### `create_storage(data)`
|
|
390
|
+
|
|
391
|
+
Create a new storage configuration.
|
|
392
|
+
|
|
393
|
+
```python
|
|
394
|
+
# Create Amazon S3 storage
|
|
395
|
+
s3_storage = client.create_storage({
|
|
396
|
+
'name': 'My S3 Storage',
|
|
397
|
+
'provider': 'amazon_s3',
|
|
398
|
+
'category': 'external',
|
|
399
|
+
'configuration': {
|
|
400
|
+
'bucket_name': 'my-bucket',
|
|
401
|
+
'region': 'us-west-2',
|
|
402
|
+
'access_key_id': 'YOUR_ACCESS_KEY',
|
|
403
|
+
'secret_access_key': 'YOUR_SECRET_KEY'
|
|
404
|
+
}
|
|
405
|
+
})
|
|
406
|
+
|
|
407
|
+
# Create local file system storage
|
|
408
|
+
local_storage = client.create_storage({
|
|
409
|
+
'name': 'Local Storage',
|
|
410
|
+
'provider': 'file_system',
|
|
411
|
+
'category': 'internal',
|
|
412
|
+
'configuration': {
|
|
413
|
+
'base_path': '/data/storage',
|
|
414
|
+
'permissions': '755'
|
|
415
|
+
}
|
|
416
|
+
})
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Parameters:**
|
|
420
|
+
|
|
421
|
+
- `data` (dict): Storage configuration
|
|
422
|
+
|
|
423
|
+
**Storage data structure:**
|
|
424
|
+
|
|
425
|
+
- `name` (str, required): Storage name
|
|
426
|
+
- `provider` (str, required): Storage provider type
|
|
427
|
+
- `category` (str): Storage category (`internal`, `external`)
|
|
428
|
+
- `configuration` (dict): Provider-specific configuration
|
|
429
|
+
|
|
430
|
+
**Supported providers:**
|
|
431
|
+
|
|
432
|
+
- `amazon_s3`: Amazon S3
|
|
433
|
+
- `azure`: Azure Blob Storage
|
|
434
|
+
- `gcp`: Google Cloud Storage
|
|
435
|
+
- `file_system`: Local file system
|
|
436
|
+
- `ftp`, `sftp`: FTP protocols
|
|
437
|
+
- `minio`: MinIO storage
|
|
438
|
+
|
|
439
|
+
**Returns:**
|
|
440
|
+
|
|
441
|
+
- `dict`: Created storage configuration
|
|
442
|
+
|
|
443
|
+
## Complete Integration Workflow
|
|
444
|
+
|
|
445
|
+
```python
|
|
446
|
+
from synapse_sdk.clients.backend import BackendClient
|
|
447
|
+
import time
|
|
448
|
+
|
|
449
|
+
def complete_plugin_workflow():
|
|
450
|
+
"""Complete workflow for plugin development and deployment."""
|
|
451
|
+
client = BackendClient(
|
|
452
|
+
base_url="https://api.synapse.sh",
|
|
453
|
+
api_token="your-token"
|
|
454
|
+
)
|
|
455
|
+
|
|
456
|
+
# 1. Create plugin
|
|
457
|
+
plugin_data = {
|
|
458
|
+
'name': 'Image Processing Plugin',
|
|
459
|
+
'description': 'Advanced image processing capabilities',
|
|
460
|
+
'version': '1.0.0',
|
|
461
|
+
'author': 'Development Team',
|
|
462
|
+
'category': 'image_processing',
|
|
463
|
+
'configuration': {
|
|
464
|
+
'parameters': {
|
|
465
|
+
'quality': {'type': 'float', 'default': 0.8},
|
|
466
|
+
'format': {'type': 'string', 'default': 'jpeg'}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
plugin = client.create_plugin(plugin_data)
|
|
472
|
+
plugin_id = plugin['id']
|
|
473
|
+
print(f"Created plugin: {plugin_id}")
|
|
474
|
+
|
|
475
|
+
# 2. Create plugin release
|
|
476
|
+
with open('/path/to/plugin.zip', 'rb') as plugin_file:
|
|
477
|
+
release_data = {
|
|
478
|
+
'plugin': plugin_id,
|
|
479
|
+
'version': '1.0.0',
|
|
480
|
+
'changelog': 'Initial release',
|
|
481
|
+
'is_stable': True,
|
|
482
|
+
'file': plugin_file
|
|
483
|
+
}
|
|
484
|
+
release = client.create_plugin_release(release_data)
|
|
485
|
+
|
|
486
|
+
print(f"Created release: {release['id']}")
|
|
487
|
+
|
|
488
|
+
# 3. Run plugin
|
|
489
|
+
execution_data = {
|
|
490
|
+
'parameters': {
|
|
491
|
+
'quality': 0.9,
|
|
492
|
+
'format': 'png'
|
|
493
|
+
},
|
|
494
|
+
'context': {
|
|
495
|
+
'project_id': 123,
|
|
496
|
+
'batch_size': 100
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
job_result = client.run_plugin(plugin_id, execution_data)
|
|
501
|
+
job_id = job_result['job_id']
|
|
502
|
+
print(f"Started job: {job_id}")
|
|
503
|
+
|
|
504
|
+
# 4. Monitor job progress
|
|
505
|
+
while True:
|
|
506
|
+
job = client.get_job(job_id)
|
|
507
|
+
status = job['status']
|
|
508
|
+
progress = job.get('progress', 0)
|
|
509
|
+
|
|
510
|
+
print(f"Job {job_id}: {status} ({progress}%)")
|
|
511
|
+
|
|
512
|
+
if status in ['completed', 'failed']:
|
|
513
|
+
break
|
|
514
|
+
|
|
515
|
+
time.sleep(5) # Wait 5 seconds before checking again
|
|
516
|
+
|
|
517
|
+
# 5. Get job logs if failed
|
|
518
|
+
if status == 'failed':
|
|
519
|
+
logs = client.list_job_console_logs(job_id)
|
|
520
|
+
print("Job failed. Recent logs:")
|
|
521
|
+
for log in logs[-10:]: # Last 10 log entries
|
|
522
|
+
print(f" {log['timestamp']}: {log['message']}")
|
|
523
|
+
else:
|
|
524
|
+
print("Job completed successfully!")
|
|
525
|
+
if 'result' in job:
|
|
526
|
+
print(f"Result: {job['result']}")
|
|
527
|
+
|
|
528
|
+
return plugin_id, job_id
|
|
529
|
+
|
|
530
|
+
# Run the workflow
|
|
531
|
+
if __name__ == "__main__":
|
|
532
|
+
plugin_id, job_id = complete_plugin_workflow()
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
## Error Handling
|
|
536
|
+
|
|
537
|
+
```python
|
|
538
|
+
from synapse_sdk.clients.exceptions import ClientError
|
|
539
|
+
|
|
540
|
+
def robust_plugin_execution(plugin_id, parameters, max_retries=3):
|
|
541
|
+
"""Execute plugin with error handling and retries."""
|
|
542
|
+
for attempt in range(max_retries):
|
|
543
|
+
try:
|
|
544
|
+
result = client.run_plugin(plugin_id, {
|
|
545
|
+
'parameters': parameters,
|
|
546
|
+
'context': {'retry_attempt': attempt}
|
|
547
|
+
})
|
|
548
|
+
return result
|
|
549
|
+
except ClientError as e:
|
|
550
|
+
if e.status_code == 404:
|
|
551
|
+
print(f"Plugin {plugin_id} not found")
|
|
552
|
+
break
|
|
553
|
+
elif e.status_code == 400:
|
|
554
|
+
print(f"Invalid parameters: {e.response}")
|
|
555
|
+
break
|
|
556
|
+
elif e.status_code >= 500:
|
|
557
|
+
print(f"Server error (attempt {attempt + 1}): {e}")
|
|
558
|
+
if attempt < max_retries - 1:
|
|
559
|
+
time.sleep(2 ** attempt) # Exponential backoff
|
|
560
|
+
else:
|
|
561
|
+
print(f"Unexpected error: {e}")
|
|
562
|
+
break
|
|
563
|
+
|
|
564
|
+
return None
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
## See Also
|
|
568
|
+
|
|
569
|
+
- [BackendClient](./backend.md) - Main backend client
|
|
570
|
+
- [AnnotationClientMixin](./annotation-mixin.md) - Task and annotation operations
|
|
571
|
+
- [MLClientMixin](./ml-mixin.md) - Machine learning operations
|