synapse-sdk 1.0.0a46__tar.gz → 1.0.0a47__tar.gz
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-1.0.0a46/synapse_sdk.egg-info → synapse_sdk-1.0.0a47}/PKG-INFO +1 -1
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/integration.py +3 -3
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/models.py +33 -1
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/base.py +97 -16
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/actions/export.py +8 -3
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47/synapse_sdk.egg-info}/PKG-INFO +1 -1
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/clients/test_backend_models.py +26 -1
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/clients/test_base_client.py +12 -1
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/clients/test_collection_validators.py +3 -3
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/.github/workflows/lint.yml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/.github/workflows/pypi-publish.yml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/.gitignore +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/.pre-commit-config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/LICENSE +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/README.md +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/locale/en/LC_MESSAGES/messages.mo +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/locale/en/LC_MESSAGES/messages.po +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/locale/ko/LC_MESSAGES/messages.mo +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/locale/ko/LC_MESSAGES/messages.po +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/pyproject.toml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/requirements.test.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/requirements.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/setup.cfg +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/create.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/dataclass.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/default.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/delete.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/list.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/read.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/update.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/alias/utils.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/plugin/create.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/plugin/publish.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/cli/plugin/run.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/agent/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/agent/core.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/agent/ray.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/agent/service.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/annotation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/core.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/dataset.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/hitl.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/backend/ml.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/exceptions.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/ray/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/ray/core.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/ray/serve.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/utils.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/validators/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/clients/validators/collections.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/i18n.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/loggers.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/base.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/decorators.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/enums.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/templates/plugin/export.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/gradio.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/train.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/actions/tune.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/post_annotation/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/post_annotation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/pre_annotation/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/registry.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/templates.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/actions/upload.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/enums.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/exceptions.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/models.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/upload.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/utils.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/shared/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/shared/enums.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/types.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/dataset.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/debug.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/file.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/http.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/module_loading.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/network.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/pydantic/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/pydantic/config.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/pydantic/errors.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/pydantic/validators.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/providers/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/providers/gcp.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/providers/s3.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/providers/sftp.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/registry.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/string.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk.egg-info/SOURCES.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk.egg-info/dependency_links.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk.egg-info/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk.egg-info/requires.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk.egg-info/top_level.txt +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/clients/__init__.py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/utils/__init__,py +0 -0
- {synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/tests/utils/test_debug.py +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from synapse_sdk.clients.backend.models import Storage
|
|
1
|
+
from synapse_sdk.clients.backend.models import Storage, UpdateJob
|
|
2
2
|
from synapse_sdk.clients.base import BaseClient
|
|
3
3
|
from synapse_sdk.utils.file import convert_file_to_base64
|
|
4
4
|
|
|
@@ -43,7 +43,7 @@ class IntegrationClientMixin(BaseClient):
|
|
|
43
43
|
|
|
44
44
|
def update_job(self, pk, data):
|
|
45
45
|
path = f'jobs/{pk}/'
|
|
46
|
-
return self._patch(path, data=data)
|
|
46
|
+
return self._patch(path, request_model=UpdateJob, data=data)
|
|
47
47
|
|
|
48
48
|
def list_job_console_logs(self, pk):
|
|
49
49
|
path = f'jobs/{pk}/console_logs/'
|
|
@@ -82,4 +82,4 @@ class IntegrationClientMixin(BaseClient):
|
|
|
82
82
|
def get_storage(self, pk):
|
|
83
83
|
"""Get specific storage data from synapse backend."""
|
|
84
84
|
path = f'storages/{pk}/'
|
|
85
|
-
return self._get(path,
|
|
85
|
+
return self._get(path, response_model=Storage)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import Dict
|
|
2
|
+
from typing import Dict, Optional
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel
|
|
5
5
|
|
|
@@ -42,3 +42,35 @@ class Storage(BaseModel):
|
|
|
42
42
|
provider: StorageProvider
|
|
43
43
|
configuration: Dict
|
|
44
44
|
is_default: bool
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class JobStatus(str, Enum):
|
|
48
|
+
"""Synapse Backend Job Status Enum."""
|
|
49
|
+
|
|
50
|
+
PENDING = 'pending'
|
|
51
|
+
RUNNING = 'running'
|
|
52
|
+
STOPPED = 'stopped'
|
|
53
|
+
SUCCEEDED = 'succeeded'
|
|
54
|
+
FAILED = 'failed'
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class UpdateJob(BaseModel):
|
|
58
|
+
"""Synapse Backend Update Job Request Payload Model.
|
|
59
|
+
|
|
60
|
+
Attrs:
|
|
61
|
+
status (str): The job status. (ex: pending, running, stopped, succeeded, failed)
|
|
62
|
+
progress_record (Dict): The job progress record.
|
|
63
|
+
console_logs (Dict): The job console logs.
|
|
64
|
+
result (Dict): The job result.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
status: Optional[JobStatus] = None
|
|
68
|
+
progress_record: Optional[Dict] = None
|
|
69
|
+
console_logs: Optional[Dict] = None
|
|
70
|
+
result: Optional[Dict] = None
|
|
71
|
+
|
|
72
|
+
def model_dump(self, **kwargs):
|
|
73
|
+
data = super().model_dump(**kwargs)
|
|
74
|
+
if data.get('status') is not None:
|
|
75
|
+
data['status'] = data['status'].value
|
|
76
|
+
return data
|
|
@@ -86,14 +86,15 @@ class BaseClient:
|
|
|
86
86
|
except ValueError:
|
|
87
87
|
return response.text
|
|
88
88
|
|
|
89
|
-
def _get(self, path, url_conversion=None,
|
|
89
|
+
def _get(self, path, url_conversion=None, response_model=None, **kwargs):
|
|
90
90
|
"""
|
|
91
91
|
Perform a GET request and optionally convert response to a pydantic model.
|
|
92
92
|
|
|
93
93
|
Args:
|
|
94
94
|
path (str): URL path to request.
|
|
95
95
|
url_conversion (dict, optional): Configuration for URL to path conversion.
|
|
96
|
-
|
|
96
|
+
request_model (pydantic.BaseModel, optional): Pydantic model to validate the request.
|
|
97
|
+
response_model (pydantic.BaseModel, optional): Pydantic model to validate the response.
|
|
97
98
|
**kwargs: Additional keyword arguments to pass to the request.
|
|
98
99
|
|
|
99
100
|
Returns:
|
|
@@ -107,36 +108,100 @@ class BaseClient:
|
|
|
107
108
|
else:
|
|
108
109
|
files_url_to_path_from_objs(response, **url_conversion)
|
|
109
110
|
|
|
110
|
-
if
|
|
111
|
-
return self._validate_response_with_pydantic_model(response,
|
|
111
|
+
if response_model:
|
|
112
|
+
return self._validate_response_with_pydantic_model(response, response_model)
|
|
112
113
|
|
|
113
114
|
return response
|
|
114
115
|
|
|
115
|
-
def _post(self, path,
|
|
116
|
+
def _post(self, path, request_model=None, response_model=None, **kwargs):
|
|
117
|
+
"""
|
|
118
|
+
Perform a POST request and optionally convert response to a pydantic model.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
path (str): URL path to request.
|
|
122
|
+
request_model (pydantic.BaseModel, optional): Pydantic model to validate the request.
|
|
123
|
+
response_model (pydantic.BaseModel, optional): Pydantic model to validate the response.
|
|
124
|
+
**kwargs: Additional keyword arguments to pass to the request.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
The response data, optionally converted to a pydantic model.
|
|
128
|
+
"""
|
|
129
|
+
if kwargs.get('data') and request_model:
|
|
130
|
+
kwargs['data'] = self._validate_request_body_with_pydantic_model(kwargs['data'], request_model)
|
|
116
131
|
response = self._request('post', path, **kwargs)
|
|
117
|
-
if
|
|
118
|
-
return self._validate_response_with_pydantic_model(response,
|
|
132
|
+
if response_model:
|
|
133
|
+
return self._validate_response_with_pydantic_model(response, response_model)
|
|
119
134
|
else:
|
|
120
135
|
return response
|
|
121
136
|
|
|
122
|
-
def _put(self, path,
|
|
137
|
+
def _put(self, path, request_model=None, response_model=None, **kwargs):
|
|
138
|
+
"""
|
|
139
|
+
Perform a PUT request to the specified path.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
path (str): The URL path for the request.
|
|
143
|
+
request_model (Optional[Type[BaseModel]]): A Pydantic model class to validate the request body against.
|
|
144
|
+
response_model (Optional[Type[BaseModel]]): A Pydantic model class to validate and parse the response.
|
|
145
|
+
**kwargs: Additional arguments to pass to the request method.
|
|
146
|
+
- data: The request body to be sent. If provided along with request_model, it will be validated.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
Union[dict, BaseModel]:
|
|
150
|
+
If response_model is provided, returns an instance of that model populated with the response data.
|
|
151
|
+
"""
|
|
152
|
+
if kwargs.get('data') and request_model:
|
|
153
|
+
kwargs['data'] = self._validate_request_body_with_pydantic_model(kwargs['data'], request_model)
|
|
123
154
|
response = self._request('put', path, **kwargs)
|
|
124
|
-
if
|
|
125
|
-
return self._validate_response_with_pydantic_model(response,
|
|
155
|
+
if response_model:
|
|
156
|
+
return self._validate_response_with_pydantic_model(response, response_model)
|
|
126
157
|
else:
|
|
127
158
|
return response
|
|
128
159
|
|
|
129
|
-
def _patch(self, path,
|
|
160
|
+
def _patch(self, path, request_model=None, response_model=None, **kwargs):
|
|
161
|
+
"""
|
|
162
|
+
Perform a PATCH HTTP request to the specified path.
|
|
163
|
+
|
|
164
|
+
Args:
|
|
165
|
+
path (str): The API endpoint path to make the request to.
|
|
166
|
+
request_model (Optional[Type[BaseModel]]): A Pydantic model class used to validate the request body.
|
|
167
|
+
response_model (Optional[Type[BaseModel]]): A Pydantic model class used to validate and parse the response.
|
|
168
|
+
**kwargs: Additional keyword arguments to pass to the request method.
|
|
169
|
+
- data: The request body data. If provided along with request_model, it will be validated.
|
|
170
|
+
|
|
171
|
+
Returns:
|
|
172
|
+
Union[dict, BaseModel]: If response_model is provided, returns an instance of that model.
|
|
173
|
+
Otherwise, returns the raw response data.
|
|
174
|
+
"""
|
|
175
|
+
|
|
176
|
+
if kwargs.get('data') and request_model:
|
|
177
|
+
kwargs['data'] = self._validate_request_body_with_pydantic_model(kwargs['data'], request_model)
|
|
130
178
|
response = self._request('patch', path, **kwargs)
|
|
131
|
-
if
|
|
132
|
-
return self._validate_response_with_pydantic_model(response,
|
|
179
|
+
if response_model:
|
|
180
|
+
return self._validate_response_with_pydantic_model(response, response_model)
|
|
133
181
|
else:
|
|
134
182
|
return response
|
|
135
183
|
|
|
136
|
-
def _delete(self, path,
|
|
184
|
+
def _delete(self, path, request_model=None, response_model=None, **kwargs):
|
|
185
|
+
"""
|
|
186
|
+
Performs a DELETE request to the specified path.
|
|
187
|
+
|
|
188
|
+
Args:
|
|
189
|
+
path (str): The API endpoint path to send the DELETE request to.
|
|
190
|
+
request_model (Optional[Type[BaseModel]]): Pydantic model to validate the request data against.
|
|
191
|
+
response_model (Optional[Type[BaseModel]]): Pydantic model to validate and convert the response data.
|
|
192
|
+
**kwargs: Additional keyword arguments passed to the request method.
|
|
193
|
+
- data: Request payload to send. Will be validated against request_model if both are provided.
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
Union[dict, BaseModel]: If response_model is provided, returns an instance of that model.
|
|
197
|
+
Otherwise, returns the raw response data as a dictionary.
|
|
198
|
+
"""
|
|
199
|
+
|
|
200
|
+
if kwargs.get('data') and request_model:
|
|
201
|
+
kwargs['data'] = self._validate_request_body_with_pydantic_model(kwargs['data'], request_model)
|
|
137
202
|
response = self._request('delete', path, **kwargs)
|
|
138
|
-
if
|
|
139
|
-
return self._validate_response_with_pydantic_model(response,
|
|
203
|
+
if response_model:
|
|
204
|
+
return self._validate_response_with_pydantic_model(response, response_model)
|
|
140
205
|
else:
|
|
141
206
|
return response
|
|
142
207
|
|
|
@@ -170,3 +235,19 @@ class BaseClient:
|
|
|
170
235
|
else:
|
|
171
236
|
# Not a pydantic model
|
|
172
237
|
raise TypeError('The provided model is not a pydantic model')
|
|
238
|
+
|
|
239
|
+
def _validate_request_body_with_pydantic_model(self, request_body, pydantic_model):
|
|
240
|
+
"""Validate a request body with a pydantic model."""
|
|
241
|
+
# Check if model is a pydantic model (has the __pydantic_model__ attribute)
|
|
242
|
+
if (
|
|
243
|
+
hasattr(pydantic_model, '__pydantic_model__')
|
|
244
|
+
or hasattr(pydantic_model, 'model_validate')
|
|
245
|
+
or hasattr(pydantic_model, 'parse_obj')
|
|
246
|
+
):
|
|
247
|
+
# Validate the request body and convert to model instance
|
|
248
|
+
model_instance = pydantic_model.model_validate(request_body)
|
|
249
|
+
# Convert model to dict and remove None values
|
|
250
|
+
return {k: v for k, v in model_instance.model_dump().items() if v is not None}
|
|
251
|
+
else:
|
|
252
|
+
# Not a pydantic model
|
|
253
|
+
raise TypeError('The provided model is not a pydantic model')
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import json
|
|
2
1
|
from abc import ABC, abstractmethod
|
|
3
2
|
from datetime import datetime
|
|
4
3
|
from typing import Annotated, Any, Literal
|
|
@@ -17,12 +16,18 @@ from synapse_sdk.utils.pydantic.validators import non_blank
|
|
|
17
16
|
from synapse_sdk.utils.storage import get_pathlib
|
|
18
17
|
|
|
19
18
|
|
|
19
|
+
class DataFileInfo(BaseModel):
|
|
20
|
+
"""Schema for data_file_info."""
|
|
21
|
+
|
|
22
|
+
file_name: str
|
|
23
|
+
|
|
24
|
+
|
|
20
25
|
class ExportRun(Run):
|
|
21
26
|
class DataFileLog(BaseModel):
|
|
22
27
|
"""Data file log model."""
|
|
23
28
|
|
|
24
29
|
target_id: int
|
|
25
|
-
data_file_info:
|
|
30
|
+
data_file_info: DataFileInfo
|
|
26
31
|
status: ExportStatus
|
|
27
32
|
error: str | None = None
|
|
28
33
|
created: str
|
|
@@ -44,7 +49,7 @@ class ExportRun(Run):
|
|
|
44
49
|
log_type,
|
|
45
50
|
self.DataFileLog(
|
|
46
51
|
target_id=target_id,
|
|
47
|
-
data_file_info=
|
|
52
|
+
data_file_info=data_file_info,
|
|
48
53
|
status=status.value,
|
|
49
54
|
error=error,
|
|
50
55
|
created=now,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
from pydantic import ValidationError
|
|
3
3
|
|
|
4
|
-
from synapse_sdk.clients.backend.models import Storage, StorageCategory, StorageProvider
|
|
4
|
+
from synapse_sdk.clients.backend.models import Storage, StorageCategory, StorageProvider, UpdateJob
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def test_storage_model_validation_success():
|
|
@@ -72,3 +72,28 @@ def test_storage_model_enum_values():
|
|
|
72
72
|
)
|
|
73
73
|
assert storage.category == category
|
|
74
74
|
assert storage.provider == provider
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_update_job_model_validation_success():
|
|
78
|
+
job_response = {
|
|
79
|
+
'status': 'running',
|
|
80
|
+
'progress_record': {'key': 'value'},
|
|
81
|
+
'console_logs': {'log': 'log content'},
|
|
82
|
+
'result': {'result_key': 'result_value'},
|
|
83
|
+
}
|
|
84
|
+
update_job = UpdateJob(**job_response)
|
|
85
|
+
assert update_job.status == 'running'
|
|
86
|
+
assert update_job.progress_record == {'key': 'value'}
|
|
87
|
+
assert update_job.console_logs == {'log': 'log content'}
|
|
88
|
+
assert update_job.result == {'result_key': 'result_value'}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_update_job_model_validation_with_single_field_success():
|
|
92
|
+
job_response = {
|
|
93
|
+
'status': 'running',
|
|
94
|
+
}
|
|
95
|
+
update_job = UpdateJob(**job_response)
|
|
96
|
+
assert update_job.status == 'running'
|
|
97
|
+
assert update_job.progress_record is None
|
|
98
|
+
assert update_job.console_logs is None
|
|
99
|
+
assert update_job.result is None
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
from pydantic import ValidationError
|
|
3
3
|
|
|
4
|
-
from synapse_sdk.clients.backend.models import Storage
|
|
4
|
+
from synapse_sdk.clients.backend.models import Storage, UpdateJob
|
|
5
5
|
from synapse_sdk.clients.base import BaseClient
|
|
6
6
|
|
|
7
7
|
|
|
@@ -44,3 +44,14 @@ def test_validate_response_with_pydantic_model_not_pydantic_model(base_client, v
|
|
|
44
44
|
with pytest.raises(TypeError) as exc_info:
|
|
45
45
|
base_client._validate_response_with_pydantic_model(valid_storage_response, {})
|
|
46
46
|
assert 'The provided model is not a pydantic model' in str(exc_info.value)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_validate_update_job_request_body_with_pydantic_model_success(base_client):
|
|
50
|
+
request_body = {
|
|
51
|
+
'status': 'running',
|
|
52
|
+
}
|
|
53
|
+
validated_request_body = base_client._validate_request_body_with_pydantic_model(
|
|
54
|
+
request_body,
|
|
55
|
+
UpdateJob,
|
|
56
|
+
)
|
|
57
|
+
assert validated_request_body['status'] == request_body['status']
|
|
@@ -25,13 +25,13 @@ def single_image_file_spec_template():
|
|
|
25
25
|
def single_image_organized_files():
|
|
26
26
|
original_files = []
|
|
27
27
|
for i in range(1, 21):
|
|
28
|
-
|
|
28
|
+
image_file_name = f'{i:04d}.jpg'
|
|
29
29
|
original_files.append({
|
|
30
30
|
'files': {
|
|
31
|
-
'image_1': '',
|
|
31
|
+
'image_1': f'/path/to/{image_file_name}',
|
|
32
32
|
},
|
|
33
33
|
'meta': {
|
|
34
|
-
'original_file_name':
|
|
34
|
+
'original_file_name': image_file_name,
|
|
35
35
|
},
|
|
36
36
|
})
|
|
37
37
|
return original_files
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/export/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/neural_net/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/smart_tool/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/categories/upload/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/cookiecutter.json
RENAMED
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/plugins/templates/hooks/pre_prompt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a46 → synapse_sdk-1.0.0a47}/synapse_sdk/utils/storage/providers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|