synapse-sdk 1.0.0a37__tar.gz → 1.0.0a38__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.0a37/synapse_sdk.egg-info → synapse_sdk-1.0.0a38}/PKG-INFO +1 -1
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/base.py +3 -1
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/base.py +11 -3
- synapse_sdk-1.0.0a38/synapse_sdk/plugins/categories/neural_net/actions/tune.py +268 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/upload/actions/upload.py +5 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/models.py +9 -1
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/file.py +3 -2
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38/synapse_sdk.egg-info}/PKG-INFO +1 -1
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk.egg-info/SOURCES.txt +1 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/.github/workflows/lint.yml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/.github/workflows/pypi-publish.yml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/.gitignore +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/.pre-commit-config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/LICENSE +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/README.md +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/locale/en/LC_MESSAGES/messages.mo +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/locale/en/LC_MESSAGES/messages.po +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/locale/ko/LC_MESSAGES/messages.mo +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/locale/ko/LC_MESSAGES/messages.po +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/pyproject.toml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/requirements.test.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/requirements.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/setup.cfg +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/create.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/dataclass.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/default.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/delete.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/list.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/read.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/update.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/alias/utils.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/plugin/create.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/plugin/publish.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/cli/plugin/run.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/agent/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/agent/core.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/agent/ray.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/agent/service.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/annotation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/core.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/dataset.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/hitl.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/integration.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/ml.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/backend/models.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/exceptions.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/ray/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/ray/core.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/ray/serve.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/utils.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/validators/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/clients/validators/collections.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/i18n.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/loggers.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/decorators.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/actions/export.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/enums.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/templates/plugin/export.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/actions/train.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/post_annotation/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/post_annotation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/pre_annotation/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/registry.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/smart_tool/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/smart_tool/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/templates.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/upload/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/upload/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/enums.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/exceptions.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/upload.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/utils.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/shared/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/shared/enums.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/types.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/dataset.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/debug.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/module_loading.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/network.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/pydantic/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/pydantic/config.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/pydantic/errors.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/pydantic/validators.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/storage/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/storage/providers/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/storage/providers/gcp.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/storage/providers/s3.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/storage/providers/sftp.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/storage/registry.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/utils/string.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk.egg-info/dependency_links.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk.egg-info/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk.egg-info/requires.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk.egg-info/top_level.txt +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/clients/__init__.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/clients/test_backend_models.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/clients/test_base_client.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/clients/test_collection_validators.py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/utils/__init__,py +0 -0
- {synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/tests/utils/test_debug.py +0 -0
|
@@ -11,6 +11,7 @@ from synapse_sdk.utils.file import files_url_to_path_from_objs
|
|
|
11
11
|
class BaseClient:
|
|
12
12
|
name = None
|
|
13
13
|
base_url = None
|
|
14
|
+
page_size = 100
|
|
14
15
|
|
|
15
16
|
def __init__(self, base_url):
|
|
16
17
|
self.base_url = base_url
|
|
@@ -146,7 +147,8 @@ class BaseClient:
|
|
|
146
147
|
else:
|
|
147
148
|
return response
|
|
148
149
|
|
|
149
|
-
def _list_all(self, path, url_conversion=None, params=
|
|
150
|
+
def _list_all(self, path, url_conversion=None, params={}, **kwargs):
|
|
151
|
+
params['page_size'] = self.page_size
|
|
150
152
|
response = self._get(path, url_conversion, params=params, **kwargs)
|
|
151
153
|
yield from response['results']
|
|
152
154
|
if response['next']:
|
|
@@ -133,6 +133,11 @@ class Action:
|
|
|
133
133
|
def plugin_package_manager(self):
|
|
134
134
|
return self.plugin_config.get('package_manager', 'pip')
|
|
135
135
|
|
|
136
|
+
@property
|
|
137
|
+
def package_manager_options(self):
|
|
138
|
+
options = {'pip': {}, 'uv': {'uv_pip_install_options': []}}
|
|
139
|
+
return options[self.plugin_package_manager]
|
|
140
|
+
|
|
136
141
|
def get_run(self):
|
|
137
142
|
context = {
|
|
138
143
|
'plugin_release': self.plugin_release,
|
|
@@ -147,13 +152,16 @@ class Action:
|
|
|
147
152
|
return {env: os.environ[env] for env in self.REQUIRED_ENVS if env in os.environ}
|
|
148
153
|
|
|
149
154
|
def get_runtime_env(self):
|
|
150
|
-
runtime_env = {self.plugin_package_manager: [], 'working_dir': self.plugin_url}
|
|
155
|
+
runtime_env = {self.plugin_package_manager: {'packages': []}, 'working_dir': self.plugin_url}
|
|
151
156
|
|
|
152
157
|
if self.requirements:
|
|
153
|
-
runtime_env[self.plugin_package_manager] += self.requirements
|
|
158
|
+
runtime_env[self.plugin_package_manager]['packages'] += self.requirements
|
|
154
159
|
|
|
155
160
|
if self.debug:
|
|
156
|
-
runtime_env[self.plugin_package_manager] += self.debug_modules
|
|
161
|
+
runtime_env[self.plugin_package_manager]['packages'] += self.debug_modules
|
|
162
|
+
|
|
163
|
+
for key, value in self.package_manager_options.items():
|
|
164
|
+
runtime_env[self.plugin_package_manager][key] = value
|
|
157
165
|
|
|
158
166
|
# 맨 마지막에 진행되어야 함
|
|
159
167
|
runtime_env['env_vars'] = self.envs
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import copy
|
|
2
|
+
import tempfile
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Annotated, Optional
|
|
5
|
+
|
|
6
|
+
from pydantic import AfterValidator, BaseModel, field_validator
|
|
7
|
+
from pydantic_core import PydanticCustomError
|
|
8
|
+
|
|
9
|
+
from synapse_sdk.clients.exceptions import ClientError
|
|
10
|
+
from synapse_sdk.plugins.categories.decorators import register_action
|
|
11
|
+
from synapse_sdk.plugins.categories.neural_net.actions.train import TrainAction, TrainRun
|
|
12
|
+
from synapse_sdk.plugins.enums import PluginCategory, RunMethod
|
|
13
|
+
from synapse_sdk.utils.file import archive
|
|
14
|
+
from synapse_sdk.utils.module_loading import import_string
|
|
15
|
+
from synapse_sdk.utils.pydantic.validators import non_blank
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class TuneRun(TrainRun):
|
|
19
|
+
is_tune = True
|
|
20
|
+
completed_samples = 0
|
|
21
|
+
num_samples = 0
|
|
22
|
+
checkpoint_output = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TuneConfig(BaseModel):
|
|
26
|
+
mode: Optional[str] = None
|
|
27
|
+
metric: Optional[str] = None
|
|
28
|
+
num_samples: int = 1
|
|
29
|
+
max_concurrent_trials: Optional[int] = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class TuneParams(BaseModel):
|
|
33
|
+
name: Annotated[str, AfterValidator(non_blank)]
|
|
34
|
+
description: str
|
|
35
|
+
checkpoint: int | None
|
|
36
|
+
dataset: int
|
|
37
|
+
tune_config: TuneConfig
|
|
38
|
+
|
|
39
|
+
@field_validator('name')
|
|
40
|
+
@staticmethod
|
|
41
|
+
def unique_name(value, info):
|
|
42
|
+
action = info.context['action']
|
|
43
|
+
client = action.client
|
|
44
|
+
try:
|
|
45
|
+
job_exists = client.exists(
|
|
46
|
+
'list_jobs',
|
|
47
|
+
params={
|
|
48
|
+
'ids_ex': action.job_id,
|
|
49
|
+
'category': 'neural_net',
|
|
50
|
+
'job__action': 'tune',
|
|
51
|
+
'is_active': True,
|
|
52
|
+
'params': f'name:{value}',
|
|
53
|
+
},
|
|
54
|
+
)
|
|
55
|
+
assert not job_exists, '존재하는 튜닝 작업 이름입니다.'
|
|
56
|
+
except ClientError:
|
|
57
|
+
raise PydanticCustomError('client_error', '')
|
|
58
|
+
return value
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@register_action
|
|
62
|
+
class TuneAction(TrainAction):
|
|
63
|
+
"""
|
|
64
|
+
**Must read** Important notes before using Tune:
|
|
65
|
+
|
|
66
|
+
1. Path to the model output (which is the return value of your train function)
|
|
67
|
+
should be set to the checkpoint_output attribute of the run object **before**
|
|
68
|
+
starting the training.
|
|
69
|
+
2. Before exiting the training function, report the results to Tune.
|
|
70
|
+
3. When using own tune.py, take note of the difference in the order of parameters.
|
|
71
|
+
tune() function starts with hyperparameter, run, dataset, checkpoint, **kwargs
|
|
72
|
+
whereas the train() function starts with run, dataset, hyperparameter, checkpoint, **kwargs.
|
|
73
|
+
----
|
|
74
|
+
1)
|
|
75
|
+
Set the output path for the checkpoint to export best model
|
|
76
|
+
|
|
77
|
+
output_path = Path('path/to/your/weights')
|
|
78
|
+
run.checkpoint_output = str(output_path)
|
|
79
|
+
|
|
80
|
+
2)
|
|
81
|
+
Before exiting the training function, report the results to Tune.
|
|
82
|
+
The results_dict should contain the metrics you want to report.
|
|
83
|
+
|
|
84
|
+
Example: (In train function)
|
|
85
|
+
results_dict = {
|
|
86
|
+
"accuracy": accuracy,
|
|
87
|
+
"loss": loss,
|
|
88
|
+
# Add other metrics as needed
|
|
89
|
+
}
|
|
90
|
+
if hasattr(self.dm_run, 'is_tune') and self.dm_run.is_tune:
|
|
91
|
+
tune.report(results_dict, checkpoint=tune.Checkpoint.from_directory(self.dm_run.checkpoint_output))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
3)
|
|
95
|
+
tune() function takes hyperparameter, run, dataset, checkpoint, **kwargs in that order
|
|
96
|
+
whereas train() function takes run, dataset, hyperparameter, checkpoint, **kwargs in that order.
|
|
97
|
+
|
|
98
|
+
--------------------------------------------------------------------------------------------------------
|
|
99
|
+
|
|
100
|
+
**중요** Tune 사용 전 반드시 읽어야 할 사항들
|
|
101
|
+
|
|
102
|
+
1. 본 플러그인의 train 함수에서, 학습을 진행하기 코드 전에
|
|
103
|
+
결과 모델 파일의 경로(train함수의 리턴 값)을 checkpoint_output 속성에 설정해야 합니다.
|
|
104
|
+
2. 학습이 종료되기 전에, 결과를 Tune에 보고해야 합니다.
|
|
105
|
+
3. 플러그인에서 tune.py를 직접 생성해서 사용할 시, 매개변수의 순서가 다릅니다.
|
|
106
|
+
|
|
107
|
+
----
|
|
108
|
+
1)
|
|
109
|
+
체크포인트를 설정할 경로를 지정합니다.
|
|
110
|
+
output_path = Path('path/to/your/weights')
|
|
111
|
+
run.checkpoint_output = str(output_path)
|
|
112
|
+
|
|
113
|
+
2)
|
|
114
|
+
학습이 종료되기 전에, 결과를 Tune에 보고합니다.
|
|
115
|
+
results_dict = {
|
|
116
|
+
"accuracy": accuracy,
|
|
117
|
+
"loss": loss,
|
|
118
|
+
# 필요한 다른 메트릭 추가
|
|
119
|
+
}
|
|
120
|
+
if hasattr(self.dm_run, 'is_tune') and self.dm_run.is_tune:
|
|
121
|
+
tune.report(results_dict, checkpoint=tune.Checkpoint.from_directory(self.dm_run.checkpoint_output))
|
|
122
|
+
|
|
123
|
+
3)
|
|
124
|
+
tune() 함수는 hyperparameter, run, dataset, checkpoint, **kwargs 순서이고
|
|
125
|
+
train() 함수는 run, dataset, hyperparameter, checkpoint, **kwargs 순서입니다.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
name = 'tune'
|
|
129
|
+
category = PluginCategory.NEURAL_NET
|
|
130
|
+
method = RunMethod.JOB
|
|
131
|
+
run_class = TuneRun
|
|
132
|
+
params_model = TuneParams
|
|
133
|
+
progress_categories = {
|
|
134
|
+
'dataset': {
|
|
135
|
+
'proportion': 5,
|
|
136
|
+
},
|
|
137
|
+
'trials': {
|
|
138
|
+
'proportion': 90,
|
|
139
|
+
},
|
|
140
|
+
'model_upload': {
|
|
141
|
+
'proportion': 5,
|
|
142
|
+
},
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
def start(self):
|
|
146
|
+
from ray import tune
|
|
147
|
+
|
|
148
|
+
# download dataset
|
|
149
|
+
self.run.log_message('Preparing dataset for hyperparameter tuning.')
|
|
150
|
+
input_dataset = self.get_dataset()
|
|
151
|
+
|
|
152
|
+
# retrieve checkpoint
|
|
153
|
+
checkpoint = None
|
|
154
|
+
if self.params['checkpoint']:
|
|
155
|
+
self.run.log_message('Retrieving checkpoint.')
|
|
156
|
+
checkpoint = self.get_model(self.params['checkpoint'])
|
|
157
|
+
|
|
158
|
+
# train dataset
|
|
159
|
+
self.run.log_message('Starting training for hyperparameter tuning.')
|
|
160
|
+
|
|
161
|
+
# Save num_samples to TuneRun for logging
|
|
162
|
+
self.run.num_samples = self.params['tune_config']['num_samples']
|
|
163
|
+
|
|
164
|
+
entrypoint = self.entrypoint
|
|
165
|
+
if not self._tune_override_exists():
|
|
166
|
+
# entrypoint must be train entrypoint
|
|
167
|
+
def _tune(param_space, run, dataset, checkpoint=None, **kwargs):
|
|
168
|
+
return entrypoint(run, dataset, param_space, checkpoint, **kwargs)
|
|
169
|
+
|
|
170
|
+
entrypoint = _tune
|
|
171
|
+
|
|
172
|
+
trainable = tune.with_parameters(entrypoint, run=self.run, dataset=input_dataset, checkpoint=checkpoint)
|
|
173
|
+
tune_config = self.params['tune_config']
|
|
174
|
+
|
|
175
|
+
hyperparameter = self.params['hyperparameter']
|
|
176
|
+
param_space = self.convert_tune_params(hyperparameter)
|
|
177
|
+
temp_path = tempfile.TemporaryDirectory()
|
|
178
|
+
|
|
179
|
+
tuner = tune.Tuner(
|
|
180
|
+
tune.with_resources(trainable, resources=self.tune_resources),
|
|
181
|
+
tune_config=tune.TuneConfig(**tune_config),
|
|
182
|
+
run_config=tune.RunConfig(
|
|
183
|
+
name=f'synapse_tune_hpo_{self.job_id}',
|
|
184
|
+
log_to_file=('stdout.log', 'stderr.log'),
|
|
185
|
+
storage_path=temp_path.name,
|
|
186
|
+
),
|
|
187
|
+
param_space=param_space,
|
|
188
|
+
)
|
|
189
|
+
result = tuner.fit()
|
|
190
|
+
|
|
191
|
+
best_result = result.get_best_result()
|
|
192
|
+
|
|
193
|
+
# upload model_data
|
|
194
|
+
self.run.log_message('Registering best model data.')
|
|
195
|
+
self.run.set_progress(0, 1, category='model_upload')
|
|
196
|
+
self.create_model_from_result(best_result)
|
|
197
|
+
self.run.set_progress(1, 1, category='model_upload')
|
|
198
|
+
|
|
199
|
+
self.run.end_log()
|
|
200
|
+
|
|
201
|
+
return {'best_result': best_result.config}
|
|
202
|
+
|
|
203
|
+
@property
|
|
204
|
+
def tune_resources(self):
|
|
205
|
+
resources = {}
|
|
206
|
+
for option in ['num_cpus', 'num_gpus']:
|
|
207
|
+
option_value = self.params.get(option)
|
|
208
|
+
if option_value:
|
|
209
|
+
# Remove the 'num_' prefix and trailing s from the option name
|
|
210
|
+
resources[(lambda s: s[4:-1])(option)] = option_value
|
|
211
|
+
return resources
|
|
212
|
+
|
|
213
|
+
def create_model_from_result(self, result):
|
|
214
|
+
params = copy.deepcopy(self.params)
|
|
215
|
+
configuration_fields = ['hyperparameter']
|
|
216
|
+
configuration = {field: params.pop(field) for field in configuration_fields}
|
|
217
|
+
|
|
218
|
+
with tempfile.TemporaryDirectory() as temp_path:
|
|
219
|
+
archive_path = Path(temp_path, 'archive.zip')
|
|
220
|
+
|
|
221
|
+
# Archive tune results
|
|
222
|
+
# https://docs.ray.io/en/latest/tune/tutorials/tune_get_data_in_and_out.html#getting-data-out-of-tune-using-checkpoints-other-artifacts
|
|
223
|
+
archive(result.path, archive_path)
|
|
224
|
+
|
|
225
|
+
return self.client.create_model({
|
|
226
|
+
'plugin': self.plugin_release.plugin,
|
|
227
|
+
'version': self.plugin_release.version,
|
|
228
|
+
'file': str(archive_path),
|
|
229
|
+
'configuration': configuration,
|
|
230
|
+
**params,
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
@staticmethod
|
|
234
|
+
def convert_tune_params(param_list):
|
|
235
|
+
"""
|
|
236
|
+
Convert YAML hyperparameter configuration to Ray Tune parameter dictionary.
|
|
237
|
+
|
|
238
|
+
Args:
|
|
239
|
+
param_list (list): List of hyperparameter configurations.
|
|
240
|
+
|
|
241
|
+
Returns:
|
|
242
|
+
dict: Ray Tune parameter dictionary
|
|
243
|
+
"""
|
|
244
|
+
from ray import tune
|
|
245
|
+
|
|
246
|
+
param_space = {}
|
|
247
|
+
|
|
248
|
+
for param in param_list:
|
|
249
|
+
name = param['name']
|
|
250
|
+
param_type = param['type']
|
|
251
|
+
|
|
252
|
+
if param_type == 'loguniform':
|
|
253
|
+
param_space[name] = tune.loguniform(param['min'], param['max'])
|
|
254
|
+
elif param_type == 'choice':
|
|
255
|
+
param_space[name] = tune.choice(param['options'])
|
|
256
|
+
elif param_type == 'randint':
|
|
257
|
+
param_space[name] = tune.randint(param['min'], param['max'])
|
|
258
|
+
# Add more type handlers as needed
|
|
259
|
+
|
|
260
|
+
return param_space
|
|
261
|
+
|
|
262
|
+
@staticmethod
|
|
263
|
+
def _tune_override_exists(module_path='plugin.tune') -> bool:
|
|
264
|
+
try:
|
|
265
|
+
import_string(module_path)
|
|
266
|
+
return True
|
|
267
|
+
except ImportError:
|
|
268
|
+
return False
|
|
@@ -218,12 +218,14 @@ class UploadAction(Action):
|
|
|
218
218
|
organized_files = uploader.handle_upload_files()
|
|
219
219
|
if not self._validate_organized_files(file_specification_template, organized_files):
|
|
220
220
|
self.run.log_message('Validate organized files failed.')
|
|
221
|
+
self.run.end_log()
|
|
221
222
|
return result
|
|
222
223
|
|
|
223
224
|
# Upload files to synapse-backend.
|
|
224
225
|
organized_files_count = len(organized_files)
|
|
225
226
|
if not organized_files_count:
|
|
226
227
|
self.run.log_message('Files not found on the path.', context=Context.WARNING.value)
|
|
228
|
+
self.run.end_log()
|
|
227
229
|
return result
|
|
228
230
|
uploaded_files = self._upload_files(organized_files, organized_files_count)
|
|
229
231
|
result['uploaded_files_count'] = len(uploaded_files)
|
|
@@ -232,6 +234,7 @@ class UploadAction(Action):
|
|
|
232
234
|
upload_result_count = len(uploaded_files)
|
|
233
235
|
if not upload_result_count:
|
|
234
236
|
self.run.log_message('No files were uploaded.', context=Context.WARNING.value)
|
|
237
|
+
self.run.end_log()
|
|
235
238
|
return result
|
|
236
239
|
generated_data_units = self._generate_data_units(uploaded_files, upload_result_count)
|
|
237
240
|
result['generated_data_units_count'] = len(generated_data_units)
|
|
@@ -239,6 +242,7 @@ class UploadAction(Action):
|
|
|
239
242
|
# Setup task with uploaded synapse-backend data units.
|
|
240
243
|
if not len(generated_data_units):
|
|
241
244
|
self.run.log_message('No data units were generated.', context=Context.WARNING.value)
|
|
245
|
+
self.run.end_log()
|
|
242
246
|
return result
|
|
243
247
|
|
|
244
248
|
if self.config['options']['allow_generate_tasks'] and self.params['is_generate_tasks']:
|
|
@@ -255,6 +259,7 @@ class UploadAction(Action):
|
|
|
255
259
|
else:
|
|
256
260
|
self.run.log_message('Generating ground truths process has passed.')
|
|
257
261
|
|
|
262
|
+
self.run.end_log()
|
|
258
263
|
return result
|
|
259
264
|
|
|
260
265
|
def _analyze_collection(self) -> Dict:
|
|
@@ -45,6 +45,11 @@ class PluginRelease:
|
|
|
45
45
|
def package_manager(self):
|
|
46
46
|
return self.config.get('package_manager', 'pip')
|
|
47
47
|
|
|
48
|
+
@cached_property
|
|
49
|
+
def package_manager_options(self):
|
|
50
|
+
options = {'pip': {}, 'uv': {'uv_pip_install_options': []}}
|
|
51
|
+
return options[self.package_manager]
|
|
52
|
+
|
|
48
53
|
@cached_property
|
|
49
54
|
def checksum(self):
|
|
50
55
|
return hash_text(self.code)
|
|
@@ -69,7 +74,10 @@ class PluginRelease:
|
|
|
69
74
|
|
|
70
75
|
warm_up.options(
|
|
71
76
|
runtime_env={
|
|
72
|
-
self.package_manager:
|
|
77
|
+
self.package_manager: {
|
|
78
|
+
'packages': ['-r ${RAY_RUNTIME_ENV_CREATE_WORKING_DIR}/requirements.txt']
|
|
79
|
+
** self.package_manager_options
|
|
80
|
+
},
|
|
73
81
|
'working_dir': self.get_url(self.envs['SYNAPSE_PLUGIN_STORAGE']),
|
|
74
82
|
},
|
|
75
83
|
scheduling_strategy=strategy,
|
|
@@ -150,11 +150,12 @@ def calculate_checksum(file_path, prefix=''):
|
|
|
150
150
|
return checksum
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
def archive(input_path, output_path):
|
|
153
|
+
def archive(input_path, output_path, append=False):
|
|
154
154
|
input_path = Path(input_path)
|
|
155
155
|
output_path = Path(output_path)
|
|
156
156
|
|
|
157
|
-
|
|
157
|
+
mode = 'a' if append and output_path.exists() else 'w'
|
|
158
|
+
with zipfile.ZipFile(output_path, mode=mode, compression=zipfile.ZIP_DEFLATED) as zipf:
|
|
158
159
|
if input_path.is_file():
|
|
159
160
|
zipf.write(input_path, input_path.name)
|
|
160
161
|
else:
|
|
@@ -88,6 +88,7 @@ synapse_sdk/plugins/categories/neural_net/actions/deployment.py
|
|
|
88
88
|
synapse_sdk/plugins/categories/neural_net/actions/inference.py
|
|
89
89
|
synapse_sdk/plugins/categories/neural_net/actions/test.py
|
|
90
90
|
synapse_sdk/plugins/categories/neural_net/actions/train.py
|
|
91
|
+
synapse_sdk/plugins/categories/neural_net/actions/tune.py
|
|
91
92
|
synapse_sdk/plugins/categories/neural_net/base/__init__.py
|
|
92
93
|
synapse_sdk/plugins/categories/neural_net/base/inference.py
|
|
93
94
|
synapse_sdk/plugins/categories/neural_net/templates/config.yaml
|
|
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
|
|
File without changes
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/categories/export/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/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
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/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.0a37 → synapse_sdk-1.0.0a38}/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
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/synapse_sdk/plugins/templates/cookiecutter.json
RENAMED
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/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
|
{synapse_sdk-1.0.0a37 → synapse_sdk-1.0.0a38}/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
|
|
File without changes
|
|
File without changes
|