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
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ray
|
|
3
|
+
title: RayClient
|
|
4
|
+
sidebar_position: 4
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# RayClient
|
|
8
|
+
|
|
9
|
+
Client for Apache Ray cluster management and monitoring functionality.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The `RayClientMixin` provides comprehensive Ray cluster operations, including job management, real-time log streaming, node monitoring, and Ray Serve application control. It's designed as a mixin class that extends `BaseClient` with Ray-specific functionality.
|
|
14
|
+
|
|
15
|
+
## Key Features
|
|
16
|
+
|
|
17
|
+
- **Job Lifecycle Management**: Create, monitor, manage, and stop Ray jobs
|
|
18
|
+
- **Real-time Log Streaming**: WebSocket and HTTP-based log tailing
|
|
19
|
+
- **Node & Task Monitoring**: Monitor cluster resources and task execution
|
|
20
|
+
- **Ray Serve Integration**: Deploy and manage Ray Serve applications
|
|
21
|
+
- **Robust Error Handling**: Input validation and sanitized error messages
|
|
22
|
+
- **Resource Management**: Automatic cleanup and connection tracking
|
|
23
|
+
|
|
24
|
+
## Constructor
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
# RayClientMixin is typically used as a mixin
|
|
28
|
+
class RayClient(RayClientMixin):
|
|
29
|
+
def __init__(self, base_url: str, timeout: dict = None):
|
|
30
|
+
super().__init__(base_url, timeout)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Parameters
|
|
34
|
+
|
|
35
|
+
- `base_url` (str): Ray cluster dashboard URL (e.g., "http://ray-head:8265")
|
|
36
|
+
- `timeout` (dict, optional): Connection and read timeout configuration
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from synapse_sdk.clients.agent.ray import RayClientMixin
|
|
42
|
+
from synapse_sdk.clients.base import BaseClient
|
|
43
|
+
|
|
44
|
+
class RayClient(RayClientMixin, BaseClient):
|
|
45
|
+
pass
|
|
46
|
+
|
|
47
|
+
client = RayClient(base_url="http://ray-head:8265")
|
|
48
|
+
|
|
49
|
+
# List all jobs
|
|
50
|
+
jobs = client.list_jobs()
|
|
51
|
+
|
|
52
|
+
# Get specific job details
|
|
53
|
+
job = client.get_job('job-12345')
|
|
54
|
+
|
|
55
|
+
# Stop a running job if needed
|
|
56
|
+
if job['status'] == 'RUNNING':
|
|
57
|
+
result = client.stop_job('job-12345')
|
|
58
|
+
print(f"Job stop initiated: {result['status']}")
|
|
59
|
+
|
|
60
|
+
# Stream logs in real-time
|
|
61
|
+
for log_line in client.tail_job_logs('job-12345'):
|
|
62
|
+
print(log_line.strip())
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Job Operations
|
|
66
|
+
|
|
67
|
+
### `get_job(pk)`
|
|
68
|
+
|
|
69
|
+
Retrieve details for a specific job.
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
job = client.get_job('job-12345')
|
|
73
|
+
print(f"Job status: {job['status']}")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### `list_jobs()`
|
|
77
|
+
|
|
78
|
+
List all jobs in the Ray cluster.
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
jobs = client.list_jobs()
|
|
82
|
+
for job in jobs['results']:
|
|
83
|
+
print(f"Job {job['id']}: {job['status']}")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### `list_job_logs(pk)`
|
|
87
|
+
|
|
88
|
+
Get static log entries for a job.
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
logs = client.list_job_logs('job-12345')
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### `stop_job(pk)`
|
|
95
|
+
|
|
96
|
+
Stop a running job gracefully using Ray's stop_job() API.
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
# Stop a running job
|
|
100
|
+
result = client.stop_job('job-12345')
|
|
101
|
+
print(f"Stop status: {result['status']}")
|
|
102
|
+
|
|
103
|
+
# Handle stop errors
|
|
104
|
+
try:
|
|
105
|
+
client.stop_job('job-12345')
|
|
106
|
+
except ClientError as e:
|
|
107
|
+
print(f"Stop failed: {e}")
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Real-time Log Streaming
|
|
111
|
+
|
|
112
|
+
### `tail_job_logs(pk, stream_timeout=10, protocol='stream')`
|
|
113
|
+
|
|
114
|
+
Stream job logs using either WebSocket or HTTP protocol.
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
# HTTP streaming (default, more compatible)
|
|
118
|
+
for log_line in client.tail_job_logs('job-12345', protocol='stream'):
|
|
119
|
+
print(log_line.strip())
|
|
120
|
+
|
|
121
|
+
# WebSocket streaming (lower latency)
|
|
122
|
+
for log_line in client.tail_job_logs('job-12345', protocol='websocket'):
|
|
123
|
+
print(log_line.strip())
|
|
124
|
+
|
|
125
|
+
# With custom timeout
|
|
126
|
+
for log_line in client.tail_job_logs('job-12345', stream_timeout=30):
|
|
127
|
+
if 'ERROR' in log_line:
|
|
128
|
+
break
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### `websocket_tail_job_logs(pk, stream_timeout=10)`
|
|
132
|
+
|
|
133
|
+
Stream logs via WebSocket for lowest latency.
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
try:
|
|
137
|
+
for log_line in client.websocket_tail_job_logs('job-12345'):
|
|
138
|
+
print(log_line.strip())
|
|
139
|
+
if 'COMPLETED' in log_line:
|
|
140
|
+
break
|
|
141
|
+
except ClientError as e:
|
|
142
|
+
print(f"WebSocket streaming failed: {e}")
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### `stream_tail_job_logs(pk, stream_timeout=10)`
|
|
146
|
+
|
|
147
|
+
Stream logs via HTTP chunked transfer encoding.
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
for log_line in client.stream_tail_job_logs('job-12345', stream_timeout=60):
|
|
151
|
+
if 'FAILED' in log_line:
|
|
152
|
+
print(f"Job failed: {log_line}")
|
|
153
|
+
break
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Node Operations
|
|
157
|
+
|
|
158
|
+
### `get_node(pk)`
|
|
159
|
+
|
|
160
|
+
Get details for a specific cluster node.
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
node = client.get_node('node-abc123')
|
|
164
|
+
print(f"Node status: {node['alive']}")
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### `list_nodes()`
|
|
168
|
+
|
|
169
|
+
List all nodes in the Ray cluster.
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
nodes = client.list_nodes()
|
|
173
|
+
for node in nodes['results']:
|
|
174
|
+
print(f"Node {node['node_id']}: {node['state']}")
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Task Operations
|
|
178
|
+
|
|
179
|
+
### `get_task(pk)`
|
|
180
|
+
|
|
181
|
+
Retrieve details for a specific task.
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
task = client.get_task('task-xyz789')
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### `list_tasks()`
|
|
188
|
+
|
|
189
|
+
List all tasks in the cluster.
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
tasks = client.list_tasks()
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Ray Serve Operations
|
|
196
|
+
|
|
197
|
+
### `get_serve_application(pk)`
|
|
198
|
+
|
|
199
|
+
Get details for a Ray Serve application.
|
|
200
|
+
|
|
201
|
+
```python
|
|
202
|
+
app = client.get_serve_application('app-123')
|
|
203
|
+
print(f"Application status: {app['status']}")
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### `list_serve_applications()`
|
|
207
|
+
|
|
208
|
+
List all Ray Serve applications.
|
|
209
|
+
|
|
210
|
+
```python
|
|
211
|
+
apps = client.list_serve_applications()
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### `delete_serve_application(pk)`
|
|
215
|
+
|
|
216
|
+
Delete a Ray Serve application.
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
client.delete_serve_application('app-123')
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Error Handling
|
|
223
|
+
|
|
224
|
+
All methods include robust error handling with specific `ClientError` exceptions:
|
|
225
|
+
|
|
226
|
+
```python
|
|
227
|
+
from synapse_sdk.clients.exceptions import ClientError
|
|
228
|
+
|
|
229
|
+
try:
|
|
230
|
+
for log_line in client.tail_job_logs('invalid-job'):
|
|
231
|
+
print(log_line)
|
|
232
|
+
except ClientError as e:
|
|
233
|
+
if e.status == 400:
|
|
234
|
+
print("Invalid job ID or parameters")
|
|
235
|
+
elif e.status == 404:
|
|
236
|
+
print("Job not found")
|
|
237
|
+
elif e.status == 503:
|
|
238
|
+
print("Connection to Ray cluster failed")
|
|
239
|
+
else:
|
|
240
|
+
print(f"Unexpected error: {e}")
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Common Error Codes
|
|
244
|
+
|
|
245
|
+
- **400**: Invalid parameters (job ID, timeout, protocol) or job already in terminal state
|
|
246
|
+
- **404**: Resource not found (job, node, task, application)
|
|
247
|
+
- **408**: Connection or read timeout
|
|
248
|
+
- **429**: Stream limits exceeded
|
|
249
|
+
- **500**: WebSocket library unavailable or internal error
|
|
250
|
+
- **503**: Ray cluster connection failed
|
|
251
|
+
|
|
252
|
+
## Resource Management
|
|
253
|
+
|
|
254
|
+
The RayClient includes automatic resource management:
|
|
255
|
+
|
|
256
|
+
- **Thread Pool**: 5 worker threads for concurrent operations
|
|
257
|
+
- **Connection Tracking**: WeakSet for active connections
|
|
258
|
+
- **Stream Limits**: Prevents memory exhaustion
|
|
259
|
+
- **Automatic Cleanup**: Resources cleaned up on destruction
|
|
260
|
+
|
|
261
|
+
### Stream Limits
|
|
262
|
+
|
|
263
|
+
Default limits for log streaming:
|
|
264
|
+
|
|
265
|
+
- Max messages: 10,000
|
|
266
|
+
- Max lines: 50,000
|
|
267
|
+
- Max bytes: 50MB
|
|
268
|
+
- Max message size: 10KB
|
|
269
|
+
- Queue size: 1,000
|
|
270
|
+
|
|
271
|
+
## Best Practices
|
|
272
|
+
|
|
273
|
+
### 1. Protocol Selection
|
|
274
|
+
|
|
275
|
+
```python
|
|
276
|
+
# Use WebSocket for lowest latency when available
|
|
277
|
+
try:
|
|
278
|
+
logs = client.tail_job_logs(job_id, protocol='websocket')
|
|
279
|
+
except ClientError:
|
|
280
|
+
# Fallback to HTTP streaming
|
|
281
|
+
logs = client.tail_job_logs(job_id, protocol='stream')
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 2. Timeout Management
|
|
285
|
+
|
|
286
|
+
```python
|
|
287
|
+
# Use appropriate timeouts for long-running jobs
|
|
288
|
+
for log_line in client.tail_job_logs(job_id, stream_timeout=300):
|
|
289
|
+
process_log_line(log_line)
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 3. Error Recovery
|
|
293
|
+
|
|
294
|
+
```python
|
|
295
|
+
import time
|
|
296
|
+
|
|
297
|
+
def robust_log_streaming(client, job_id, max_retries=3):
|
|
298
|
+
for attempt in range(max_retries):
|
|
299
|
+
try:
|
|
300
|
+
for log_line in client.tail_job_logs(job_id):
|
|
301
|
+
yield log_line
|
|
302
|
+
break
|
|
303
|
+
except ClientError as e:
|
|
304
|
+
if e.status == 503 and attempt < max_retries - 1:
|
|
305
|
+
time.sleep(2 ** attempt) # Exponential backoff
|
|
306
|
+
continue
|
|
307
|
+
raise
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### 4. Resource Cleanup
|
|
311
|
+
|
|
312
|
+
```python
|
|
313
|
+
# Context manager for proper cleanup
|
|
314
|
+
class RayClientContext:
|
|
315
|
+
def __init__(self, base_url):
|
|
316
|
+
self.client = RayClient(base_url)
|
|
317
|
+
|
|
318
|
+
def __enter__(self):
|
|
319
|
+
return self.client
|
|
320
|
+
|
|
321
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
322
|
+
# Cleanup handled automatically by RayClient.__del__()
|
|
323
|
+
pass
|
|
324
|
+
|
|
325
|
+
with RayClientContext("http://ray-head:8265") as client:
|
|
326
|
+
for log_line in client.tail_job_logs('job-12345'):
|
|
327
|
+
print(log_line.strip())
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Thread Safety
|
|
331
|
+
|
|
332
|
+
RayClient is designed for concurrent use with proper thread safety mechanisms:
|
|
333
|
+
|
|
334
|
+
- Thread pool for background operations
|
|
335
|
+
- WeakSet for connection tracking
|
|
336
|
+
- Proper resource cleanup mechanisms
|
|
337
|
+
|
|
338
|
+
## See Also
|
|
339
|
+
|
|
340
|
+
- [AgentClient](./agent.md) - For agent-specific operations
|
|
341
|
+
- [BaseClient](./base.md) - Base client implementation
|
|
342
|
+
- [Network Utilities](../../features/utils/network.md) - Streaming and validation utilities
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: index
|
|
3
|
+
title: API Reference
|
|
4
|
+
sidebar_position: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# API Reference
|
|
8
|
+
|
|
9
|
+
Complete reference documentation for Synapse SDK classes and functions.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The Synapse SDK API is organized into the following main modules:
|
|
14
|
+
|
|
15
|
+
### [Clients](./clients/backend.md)
|
|
16
|
+
Client classes for interacting with backend services and agents.
|
|
17
|
+
|
|
18
|
+
- **[BackendClient](./clients/backend.md)** - Main client for backend operations
|
|
19
|
+
- **[AgentClient](./clients/agent.md)** - Client for agent-specific operations
|
|
20
|
+
- **[RayClient](./clients/ray.md)** - Client for Ray cluster management and monitoring
|
|
21
|
+
- **[BaseClient](./clients/base.md)** - Base class for all clients
|
|
22
|
+
|
|
23
|
+
Core plugin system components.
|
|
24
|
+
|
|
25
|
+
### [Utilities](../features/utils/file.md)
|
|
26
|
+
Helper functions and utilities.
|
|
27
|
+
|
|
28
|
+
- **[File Utils](../features/utils/file.md)** - File operations and handling
|
|
29
|
+
- **[Network](../features/utils/network.md)** - Streaming, validation, and connection management
|
|
30
|
+
- **[Storage](../features/utils/storage.md)** - Storage providers (S3, GCS, SFTP)
|
|
31
|
+
- **[Types](../features/utils/types.md)** - Custom types and fields
|
|
32
|
+
|
|
33
|
+
## Quick Reference
|
|
34
|
+
|
|
35
|
+
### Creating a Client
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
from synapse_sdk.clients.backend import BackendClient
|
|
39
|
+
|
|
40
|
+
client = BackendClient(
|
|
41
|
+
base_url="https://api.synapse.sh",
|
|
42
|
+
api_token="your-api-token"
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Running a Plugin
|
|
47
|
+
|
|
48
|
+
### Creating a Plugin Action
|
|
49
|
+
|
|
50
|
+
## Type Annotations
|
|
51
|
+
|
|
52
|
+
## File Handling
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: categories
|
|
3
|
+
title: Plugin Categories
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plugin Categories
|
|
8
|
+
|
|
9
|
+
Available plugin categories in the Synapse SDK.
|
|
10
|
+
|
|
11
|
+
## Available Categories
|
|
12
|
+
|
|
13
|
+
### NEURAL_NET
|
|
14
|
+
Machine learning model operations including training, inference, and deployment.
|
|
15
|
+
|
|
16
|
+
### EXPORT
|
|
17
|
+
Data export and transformation operations.
|
|
18
|
+
|
|
19
|
+
### UPLOAD
|
|
20
|
+
File and data upload functionality.
|
|
21
|
+
|
|
22
|
+
### SMART_TOOL
|
|
23
|
+
Intelligent automation tools and utilities.
|
|
24
|
+
|
|
25
|
+
### POST_ANNOTATION
|
|
26
|
+
Post-processing workflows after data annotation.
|
|
27
|
+
|
|
28
|
+
### PRE_ANNOTATION
|
|
29
|
+
Pre-processing workflows before data annotation.
|
|
30
|
+
|
|
31
|
+
### DATA_VALIDATION
|
|
32
|
+
Data quality checks and validation operations.
|
|
33
|
+
|
|
34
|
+
## Usage
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
from synapse_sdk.plugins.categories.smart_tool import register_action, Action
|
|
38
|
+
|
|
39
|
+
@register_action("my_action")
|
|
40
|
+
class MyAction(Action):
|
|
41
|
+
category = "SMART_TOOL"
|
|
42
|
+
# Implementation...
|
|
43
|
+
```
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: models
|
|
3
|
+
title: Plugin Models
|
|
4
|
+
sidebar_position: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plugin Models
|
|
8
|
+
|
|
9
|
+
Core data models and structures for the plugin system.
|
|
10
|
+
|
|
11
|
+
## PluginRelease
|
|
12
|
+
|
|
13
|
+
Represents a specific version of a plugin.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from synapse_sdk.plugins.models import PluginRelease
|
|
17
|
+
|
|
18
|
+
release = PluginRelease(plugin_path="./my-plugin")
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Properties
|
|
22
|
+
|
|
23
|
+
- `plugin`: Plugin code identifier
|
|
24
|
+
- `version`: Plugin version
|
|
25
|
+
- `code`: Combined plugin and version string
|
|
26
|
+
- `category`: Plugin category
|
|
27
|
+
- `name`: Human-readable plugin name
|
|
28
|
+
- `actions`: Available plugin actions
|
|
29
|
+
|
|
30
|
+
## PluginAction
|
|
31
|
+
|
|
32
|
+
Represents a plugin action execution request.
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
from synapse_sdk.plugins.models import PluginAction
|
|
36
|
+
|
|
37
|
+
action = PluginAction(
|
|
38
|
+
plugin="my-plugin",
|
|
39
|
+
version="1.0.0",
|
|
40
|
+
action="process",
|
|
41
|
+
params={"input": "data"}
|
|
42
|
+
)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Run
|
|
46
|
+
|
|
47
|
+
Execution context for plugin actions.
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
def start(self):
|
|
51
|
+
# Log messages
|
|
52
|
+
self.run.log("Processing started")
|
|
53
|
+
|
|
54
|
+
# Update progress
|
|
55
|
+
self.run.set_progress(0.5)
|
|
56
|
+
|
|
57
|
+
# Set metrics
|
|
58
|
+
self.run.set_metrics({"processed": 100})
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Development Logging
|
|
62
|
+
|
|
63
|
+
The `Run` class includes a specialized logging system for plugin developers with the `log_dev_event()` method and `DevLog` model.
|
|
64
|
+
|
|
65
|
+
#### DevLog Model
|
|
66
|
+
|
|
67
|
+
Structured model for development event logging:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from synapse_sdk.shared.enums import Context
|
|
71
|
+
|
|
72
|
+
class DevLog(BaseModel):
|
|
73
|
+
event_type: str # Event category (automatically generated as '{action_name}_dev_log')
|
|
74
|
+
message: str # Descriptive message
|
|
75
|
+
data: dict | None # Optional additional data
|
|
76
|
+
level: Context # Event severity level
|
|
77
|
+
created: str # ISO timestamp
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
#### log_dev_event Method
|
|
81
|
+
|
|
82
|
+
Log custom development events for debugging and monitoring:
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
def start(self):
|
|
86
|
+
# Basic event logging (event_type automatically set to '{action_name}_dev_log')
|
|
87
|
+
self.run.log_dev_event('Data validation completed', {'records_count': 100})
|
|
88
|
+
|
|
89
|
+
# Performance tracking
|
|
90
|
+
self.run.log_dev_event('Processing time recorded', {'duration_ms': 1500})
|
|
91
|
+
|
|
92
|
+
# Debug with warning level
|
|
93
|
+
self.run.log_dev_event('Variable state checkpoint',
|
|
94
|
+
{'variable_x': 42}, level=Context.WARNING)
|
|
95
|
+
|
|
96
|
+
# Simple event without data
|
|
97
|
+
self.run.log_dev_event('Plugin initialization complete')
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Parameters:**
|
|
101
|
+
|
|
102
|
+
- `message` (str): Human-readable description
|
|
103
|
+
- `data` (dict, optional): Additional context data
|
|
104
|
+
- `level` (Context, optional): Event severity (default: Context.INFO)
|
|
105
|
+
|
|
106
|
+
**Note:** The `event_type` is automatically generated as `{action_name}_dev_log` and cannot be modified by plugin developers.
|
|
107
|
+
|
|
108
|
+
**Use Cases:**
|
|
109
|
+
|
|
110
|
+
- **Debugging**: Track variable states and execution flow
|
|
111
|
+
- **Performance**: Record processing times and resource usage
|
|
112
|
+
- **Validation**: Log data validation results
|
|
113
|
+
- **Error Tracking**: Capture detailed error information
|
|
114
|
+
- **Progress Monitoring**: Record intermediate states in long-running tasks
|