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,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: first-blog-post
|
|
3
|
+
title: First Blog Post
|
|
4
|
+
authors: [slorber, yangshun]
|
|
5
|
+
tags: [hola, docusaurus]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Lorem ipsum dolor sit amet...
|
|
9
|
+
|
|
10
|
+
<!-- truncate -->
|
|
11
|
+
|
|
12
|
+
...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: long-blog-post
|
|
3
|
+
title: Long Blog Post
|
|
4
|
+
authors: yangshun
|
|
5
|
+
tags: [hello, docusaurus]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This is the summary of a very long blog post,
|
|
9
|
+
|
|
10
|
+
Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.
|
|
11
|
+
|
|
12
|
+
<!-- truncate -->
|
|
13
|
+
|
|
14
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
15
|
+
|
|
16
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
17
|
+
|
|
18
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
19
|
+
|
|
20
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
21
|
+
|
|
22
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
23
|
+
|
|
24
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
25
|
+
|
|
26
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
27
|
+
|
|
28
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
29
|
+
|
|
30
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
31
|
+
|
|
32
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
33
|
+
|
|
34
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
35
|
+
|
|
36
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
37
|
+
|
|
38
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
39
|
+
|
|
40
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
41
|
+
|
|
42
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
43
|
+
|
|
44
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: mdx-blog-post
|
|
3
|
+
title: MDX Blog Post
|
|
4
|
+
authors: [slorber]
|
|
5
|
+
tags: [docusaurus]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).
|
|
9
|
+
|
|
10
|
+
:::tip
|
|
11
|
+
|
|
12
|
+
Use the power of React to create interactive blog posts.
|
|
13
|
+
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
{/* truncate */}
|
|
17
|
+
|
|
18
|
+
For example, use JSX to create an interactive button:
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
<button onClick={() => alert('button clicked!')}>Click me!</button>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
<button onClick={() => alert('button clicked!')}>Click me!</button>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: welcome
|
|
3
|
+
title: Welcome
|
|
4
|
+
authors: [slorber, yangshun]
|
|
5
|
+
tags: [facebook, hello, docusaurus]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).
|
|
9
|
+
|
|
10
|
+
Here are a few tips you might find useful.
|
|
11
|
+
|
|
12
|
+
<!-- truncate -->
|
|
13
|
+
|
|
14
|
+
Simply add Markdown files (or folders) to the `blog` directory.
|
|
15
|
+
|
|
16
|
+
Regular blog authors can be added to `authors.yml`.
|
|
17
|
+
|
|
18
|
+
The blog post date can be extracted from filenames, such as:
|
|
19
|
+
|
|
20
|
+
- `2019-05-30-welcome.md`
|
|
21
|
+
- `2019-05-30-welcome/index.md`
|
|
22
|
+
|
|
23
|
+
A blog post folder can be convenient to co-locate blog post images:
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
The blog supports tags as well!
|
|
28
|
+
|
|
29
|
+
**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
yangshun:
|
|
2
|
+
name: Yangshun Tay
|
|
3
|
+
title: Ex-Meta Staff Engineer, Co-founder GreatFrontEnd
|
|
4
|
+
url: https://linkedin.com/in/yangshun
|
|
5
|
+
image_url: https://github.com/yangshun.png
|
|
6
|
+
page: true
|
|
7
|
+
socials:
|
|
8
|
+
x: yangshunz
|
|
9
|
+
linkedin: yangshun
|
|
10
|
+
github: yangshun
|
|
11
|
+
newsletter: https://www.greatfrontend.com
|
|
12
|
+
|
|
13
|
+
slorber:
|
|
14
|
+
name: Sébastien Lorber
|
|
15
|
+
title: Docusaurus maintainer
|
|
16
|
+
url: https://sebastienlorber.com
|
|
17
|
+
image_url: https://github.com/slorber.png
|
|
18
|
+
page:
|
|
19
|
+
# customize the url of the author page at /blog/authors/<permalink>
|
|
20
|
+
permalink: '/all-sebastien-lorber-articles'
|
|
21
|
+
socials:
|
|
22
|
+
x: sebastienlorber
|
|
23
|
+
linkedin: sebastienlorber
|
|
24
|
+
github: slorber
|
|
25
|
+
newsletter: https://thisweekinreact.com
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
facebook:
|
|
2
|
+
label: Facebook
|
|
3
|
+
permalink: /facebook
|
|
4
|
+
description: Facebook tag description
|
|
5
|
+
|
|
6
|
+
hello:
|
|
7
|
+
label: Hello
|
|
8
|
+
permalink: /hello
|
|
9
|
+
description: Hello tag description
|
|
10
|
+
|
|
11
|
+
docusaurus:
|
|
12
|
+
label: Docusaurus
|
|
13
|
+
permalink: /docusaurus
|
|
14
|
+
description: Docusaurus tag description
|
|
15
|
+
|
|
16
|
+
hola:
|
|
17
|
+
label: Hola
|
|
18
|
+
permalink: /hola
|
|
19
|
+
description: Hola tag description
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: agent
|
|
3
|
+
title: AgentClient
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AgentClient
|
|
8
|
+
|
|
9
|
+
Client for agent-specific operations and distributed execution.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The `AgentClient` provides access to agent operations, including plugin execution, job management, and distributed computing integration.
|
|
14
|
+
|
|
15
|
+
## Constructor
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
AgentClient(
|
|
19
|
+
base_url: str,
|
|
20
|
+
agent_token: str = None,
|
|
21
|
+
timeout: dict = None
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from synapse_sdk.clients.agent import AgentClient
|
|
29
|
+
|
|
30
|
+
client = AgentClient(
|
|
31
|
+
base_url="https://api.synapse.sh",
|
|
32
|
+
agent_token="your-agent-token"
|
|
33
|
+
)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Methods
|
|
37
|
+
|
|
38
|
+
Coming soon - detailed API documentation for AgentClient methods.
|
|
39
|
+
|
|
40
|
+
## See Also
|
|
41
|
+
|
|
42
|
+
- [BackendClient](./backend.md) - For backend operations
|
|
43
|
+
- [BaseClient](./base.md) - Base client implementation
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: annotation-mixin
|
|
3
|
+
title: AnnotationClientMixin
|
|
4
|
+
sidebar_position: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AnnotationClientMixin
|
|
8
|
+
|
|
9
|
+
Provides annotation and task management operations for the Synapse backend.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The `AnnotationClientMixin` handles all operations related to tasks, annotations, projects, and task tagging. This mixin is automatically included in the `BackendClient` and provides methods for annotation workflows.
|
|
14
|
+
|
|
15
|
+
## Project Operations
|
|
16
|
+
|
|
17
|
+
### `get_project(pk)`
|
|
18
|
+
|
|
19
|
+
Retrieve detailed information about a specific project.
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
project = client.get_project(123)
|
|
23
|
+
print(f"Project: {project['name']}")
|
|
24
|
+
print(f"Description: {project['description']}")
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Parameters:**
|
|
28
|
+
|
|
29
|
+
- `pk` (int): Project ID
|
|
30
|
+
|
|
31
|
+
**Returns:**
|
|
32
|
+
|
|
33
|
+
- `dict`: Project details including configuration, metadata, and settings
|
|
34
|
+
|
|
35
|
+
## Task Operations
|
|
36
|
+
|
|
37
|
+
### `get_task(pk, params)`
|
|
38
|
+
|
|
39
|
+
Get detailed information about a specific task.
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
# Basic task details
|
|
43
|
+
task = client.get_task(456)
|
|
44
|
+
|
|
45
|
+
# Task with expanded data unit
|
|
46
|
+
task = client.get_task(456, params={'expand': 'data_unit'})
|
|
47
|
+
|
|
48
|
+
# Task with multiple expansions
|
|
49
|
+
task = client.get_task(456, params={
|
|
50
|
+
'expand': ['data_unit', 'assignment', 'annotations']
|
|
51
|
+
})
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Parameters:**
|
|
55
|
+
|
|
56
|
+
- `pk` (int): Task ID
|
|
57
|
+
- `params` (dict): Query parameters for filtering and expansion
|
|
58
|
+
|
|
59
|
+
**Common params:**
|
|
60
|
+
|
|
61
|
+
- `expand`: List or string of related objects to include
|
|
62
|
+
- `include_annotations`: Whether to include annotation data
|
|
63
|
+
|
|
64
|
+
### `annotate_task_data(pk, data)`
|
|
65
|
+
|
|
66
|
+
Submit annotation data for a task.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
# Submit bounding box annotations
|
|
70
|
+
annotation_data = {
|
|
71
|
+
'annotations': [
|
|
72
|
+
{
|
|
73
|
+
'type': 'bbox',
|
|
74
|
+
'coordinates': [10, 10, 100, 100],
|
|
75
|
+
'label': 'person',
|
|
76
|
+
'confidence': 0.95
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
'type': 'polygon',
|
|
80
|
+
'points': [[0, 0], [50, 0], [50, 50], [0, 50]],
|
|
81
|
+
'label': 'vehicle'
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
'metadata': {
|
|
85
|
+
'annotator_id': 'user123',
|
|
86
|
+
'timestamp': '2023-10-01T12:00:00Z'
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
result = client.annotate_task_data(456, annotation_data)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Parameters:**
|
|
94
|
+
|
|
95
|
+
- `pk` (int): Task ID
|
|
96
|
+
- `data` (dict): Annotation data structure
|
|
97
|
+
|
|
98
|
+
**Returns:**
|
|
99
|
+
|
|
100
|
+
- `dict`: Updated task with submitted annotations
|
|
101
|
+
|
|
102
|
+
### `list_tasks(params=None, url_conversion=None, list_all=False)`
|
|
103
|
+
|
|
104
|
+
List tasks with filtering and pagination support.
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
# List tasks for a specific project
|
|
108
|
+
tasks = client.list_tasks(params={'project': 123})
|
|
109
|
+
|
|
110
|
+
# List tasks with status filter
|
|
111
|
+
tasks = client.list_tasks(params={
|
|
112
|
+
'project': 123,
|
|
113
|
+
'status': 'pending'
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
# Get all tasks (handles pagination automatically)
|
|
117
|
+
all_tasks = client.list_tasks(list_all=True)
|
|
118
|
+
|
|
119
|
+
# List tasks with custom URL conversion for files
|
|
120
|
+
tasks = client.list_tasks(
|
|
121
|
+
params={'project': 123},
|
|
122
|
+
url_conversion={'files': lambda url: f"https://cdn.example.com{url}"}
|
|
123
|
+
)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Parameters:**
|
|
127
|
+
|
|
128
|
+
- `params` (dict, optional): Filtering parameters
|
|
129
|
+
- `url_conversion` (dict, optional): Custom URL conversion for file fields
|
|
130
|
+
- `list_all` (bool): If True, automatically handles pagination to get all results
|
|
131
|
+
|
|
132
|
+
**Common filtering params:**
|
|
133
|
+
|
|
134
|
+
- `project`: Filter by project ID
|
|
135
|
+
- `status`: Filter by task status (`pending`, `in_progress`, `completed`)
|
|
136
|
+
- `assignee`: Filter by assigned user ID
|
|
137
|
+
- `created_after`: Filter by creation date
|
|
138
|
+
- `search`: Text search in task content
|
|
139
|
+
|
|
140
|
+
**Returns:**
|
|
141
|
+
|
|
142
|
+
- `tuple`: (tasks_list, total_count) if `list_all=False`
|
|
143
|
+
- `list`: All tasks if `list_all=True`
|
|
144
|
+
|
|
145
|
+
### `create_tasks(data)`
|
|
146
|
+
|
|
147
|
+
Create one or more new tasks.
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
# Create single task
|
|
151
|
+
new_task = client.create_tasks({
|
|
152
|
+
'project': 123,
|
|
153
|
+
'data_unit': 789,
|
|
154
|
+
'priority': 'high',
|
|
155
|
+
'metadata': {'batch': 'batch_001'}
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
# Create multiple tasks
|
|
159
|
+
new_tasks = client.create_tasks([
|
|
160
|
+
{'project': 123, 'data_unit': 789},
|
|
161
|
+
{'project': 123, 'data_unit': 790},
|
|
162
|
+
{'project': 123, 'data_unit': 791}
|
|
163
|
+
])
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Parameters:**
|
|
167
|
+
|
|
168
|
+
- `data` (dict or list): Task data or list of task data
|
|
169
|
+
|
|
170
|
+
**Task data structure:**
|
|
171
|
+
|
|
172
|
+
- `project` (int, required): Project ID
|
|
173
|
+
- `data_unit` (int, required): Data unit ID
|
|
174
|
+
- `priority` (str, optional): Task priority (`low`, `normal`, `high`)
|
|
175
|
+
- `assignee` (int, optional): User ID to assign task to
|
|
176
|
+
- `metadata` (dict, optional): Additional task metadata
|
|
177
|
+
|
|
178
|
+
**Returns:**
|
|
179
|
+
|
|
180
|
+
- `dict` or `list`: Created task(s) with generated IDs
|
|
181
|
+
|
|
182
|
+
### `set_tags_tasks(data, params=None)`
|
|
183
|
+
|
|
184
|
+
Set tags for multiple tasks in batch.
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
# Set tags for multiple tasks
|
|
188
|
+
client.set_tags_tasks({
|
|
189
|
+
'task_ids': [456, 457, 458],
|
|
190
|
+
'tag_ids': [1, 2, 3] # Tag IDs to apply
|
|
191
|
+
})
|
|
192
|
+
|
|
193
|
+
# Set tags with additional parameters
|
|
194
|
+
client.set_tags_tasks(
|
|
195
|
+
{
|
|
196
|
+
'task_ids': [456, 457],
|
|
197
|
+
'tag_ids': [1, 2]
|
|
198
|
+
},
|
|
199
|
+
params={'replace': True} # Replace existing tags
|
|
200
|
+
)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Parameters:**
|
|
204
|
+
|
|
205
|
+
- `data` (dict): Batch tagging data
|
|
206
|
+
- `params` (dict, optional): Additional parameters
|
|
207
|
+
|
|
208
|
+
**Data structure:**
|
|
209
|
+
|
|
210
|
+
- `task_ids` (list): List of task IDs to tag
|
|
211
|
+
- `tag_ids` (list): List of tag IDs to apply
|
|
212
|
+
|
|
213
|
+
**Optional params:**
|
|
214
|
+
|
|
215
|
+
- `replace` (bool): If True, replace existing tags; if False, add to existing
|
|
216
|
+
|
|
217
|
+
## Task Tag Operations
|
|
218
|
+
|
|
219
|
+
### `get_task_tag(pk)`
|
|
220
|
+
|
|
221
|
+
Get details about a specific task tag.
|
|
222
|
+
|
|
223
|
+
```python
|
|
224
|
+
tag = client.get_task_tag(123)
|
|
225
|
+
print(f"Tag: {tag['name']} - {tag['description']}")
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**Parameters:**
|
|
229
|
+
|
|
230
|
+
- `pk` (int): Tag ID
|
|
231
|
+
|
|
232
|
+
**Returns:**
|
|
233
|
+
|
|
234
|
+
- `dict`: Tag details including name, description, and meta
|
|
235
|
+
|
|
236
|
+
### `list_task_tags(params)`
|
|
237
|
+
|
|
238
|
+
List available task tags with filtering.
|
|
239
|
+
|
|
240
|
+
```python
|
|
241
|
+
# List all tags
|
|
242
|
+
tags = client.list_task_tags({})
|
|
243
|
+
|
|
244
|
+
# List tags for a specific project
|
|
245
|
+
project_tags = client.list_task_tags({
|
|
246
|
+
'project': 123
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
# Search tags by name
|
|
250
|
+
search_tags = client.list_task_tags({
|
|
251
|
+
'search': 'quality'
|
|
252
|
+
})
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Parameters:**
|
|
256
|
+
|
|
257
|
+
- `params` (dict): Filtering parameters
|
|
258
|
+
|
|
259
|
+
**Common filtering params:**
|
|
260
|
+
|
|
261
|
+
- `project`: Filter by project ID
|
|
262
|
+
- `search`: Text search in tag names
|
|
263
|
+
- `color`: Filter by tag color
|
|
264
|
+
|
|
265
|
+
**Returns:**
|
|
266
|
+
|
|
267
|
+
- `tuple`: (tags_list, total_count)
|
|
268
|
+
|
|
269
|
+
## Example Workflows
|
|
270
|
+
|
|
271
|
+
### Complete Annotation Workflow
|
|
272
|
+
|
|
273
|
+
```python
|
|
274
|
+
from synapse_sdk.clients.backend import BackendClient
|
|
275
|
+
|
|
276
|
+
client = BackendClient(
|
|
277
|
+
base_url="https://api.synapse.sh",
|
|
278
|
+
api_token="your-token"
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
# 1. Get project details
|
|
282
|
+
project = client.get_project(123)
|
|
283
|
+
print(f"Working on project: {project['name']}")
|
|
284
|
+
|
|
285
|
+
# 2. List pending tasks
|
|
286
|
+
pending_tasks = client.list_tasks(params={
|
|
287
|
+
'project': 123,
|
|
288
|
+
'status': 'pending'
|
|
289
|
+
})
|
|
290
|
+
|
|
291
|
+
# 3. Process first task
|
|
292
|
+
if pending_tasks[0]:
|
|
293
|
+
task = pending_tasks[0][0] # First task from results
|
|
294
|
+
task_id = task['id']
|
|
295
|
+
|
|
296
|
+
# Get detailed task info
|
|
297
|
+
detailed_task = client.get_task(task_id, params={'expand': 'data_unit'})
|
|
298
|
+
|
|
299
|
+
# Submit annotations
|
|
300
|
+
annotations = {
|
|
301
|
+
'annotations': [
|
|
302
|
+
{
|
|
303
|
+
'type': 'bbox',
|
|
304
|
+
'coordinates': [10, 10, 100, 100],
|
|
305
|
+
'label': 'person'
|
|
306
|
+
}
|
|
307
|
+
]
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
result = client.annotate_task_data(task_id, annotations)
|
|
311
|
+
print(f"Annotations submitted for task {task_id}")
|
|
312
|
+
|
|
313
|
+
# Add quality tag
|
|
314
|
+
quality_tags = client.list_task_tags({'search': 'quality'})
|
|
315
|
+
if quality_tags[0]:
|
|
316
|
+
tag_id = quality_tags[0][0]['id']
|
|
317
|
+
client.set_tags_tasks({
|
|
318
|
+
'task_ids': [task_id],
|
|
319
|
+
'tag_ids': [tag_id]
|
|
320
|
+
})
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### Batch Task Creation
|
|
324
|
+
|
|
325
|
+
```python
|
|
326
|
+
# Create tasks for multiple data units
|
|
327
|
+
data_units = [789, 790, 791, 792, 793]
|
|
328
|
+
|
|
329
|
+
tasks_data = []
|
|
330
|
+
for data_unit_id in data_units:
|
|
331
|
+
tasks_data.append({
|
|
332
|
+
'project': 123,
|
|
333
|
+
'data_unit': data_unit_id,
|
|
334
|
+
'priority': 'normal',
|
|
335
|
+
'metadata': {
|
|
336
|
+
'batch': 'automated_batch_001',
|
|
337
|
+
'source': 'data_import'
|
|
338
|
+
}
|
|
339
|
+
})
|
|
340
|
+
|
|
341
|
+
# Create all tasks in one request
|
|
342
|
+
created_tasks = client.create_tasks(tasks_data)
|
|
343
|
+
print(f"Created {len(created_tasks)} tasks")
|
|
344
|
+
|
|
345
|
+
# Get IDs of created tasks
|
|
346
|
+
task_ids = [task['id'] for task in created_tasks]
|
|
347
|
+
|
|
348
|
+
# Apply initial tags
|
|
349
|
+
initial_tags = client.list_task_tags({'search': 'new'})
|
|
350
|
+
if initial_tags[0]:
|
|
351
|
+
tag_id = initial_tags[0][0]['id']
|
|
352
|
+
client.set_tags_tasks({
|
|
353
|
+
'task_ids': task_ids,
|
|
354
|
+
'tag_ids': [tag_id]
|
|
355
|
+
})
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
## Error Handling
|
|
359
|
+
|
|
360
|
+
```python
|
|
361
|
+
from synapse_sdk.clients.exceptions import ClientError
|
|
362
|
+
|
|
363
|
+
try:
|
|
364
|
+
task = client.get_task(999999)
|
|
365
|
+
except ClientError as e:
|
|
366
|
+
if e.status_code == 404:
|
|
367
|
+
print("Task not found")
|
|
368
|
+
elif e.status_code == 403:
|
|
369
|
+
print("Permission denied")
|
|
370
|
+
else:
|
|
371
|
+
print(f"API Error: {e}")
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## See Also
|
|
375
|
+
|
|
376
|
+
- [BackendClient](./backend.md) - Main backend client
|
|
377
|
+
- [HITLClientMixin](./hitl-mixin.md) - Human-in-the-loop operations
|
|
378
|
+
- [DataCollectionClientMixin](./data-collection-mixin.md) - Data management
|