synapse-sdk 1.0.0a62__py3-none-any.whl → 1.0.0a64__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/cli/plugin/publish.py +22 -13
- synapse_sdk/devtools/server.py +5 -24
- synapse_sdk/plugins/categories/neural_net/base/inference.py +4 -1
- synapse_sdk/plugins/categories/upload/actions/upload.py +6 -14
- synapse_sdk/plugins/models.py +5 -3
- {synapse_sdk-1.0.0a62.dist-info → synapse_sdk-1.0.0a64.dist-info}/METADATA +1 -1
- {synapse_sdk-1.0.0a62.dist-info → synapse_sdk-1.0.0a64.dist-info}/RECORD +11 -11
- {synapse_sdk-1.0.0a62.dist-info → synapse_sdk-1.0.0a64.dist-info}/WHEEL +0 -0
- {synapse_sdk-1.0.0a62.dist-info → synapse_sdk-1.0.0a64.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a62.dist-info → synapse_sdk-1.0.0a64.dist-info}/licenses/LICENSE +0 -0
- {synapse_sdk-1.0.0a62.dist-info → synapse_sdk-1.0.0a64.dist-info}/top_level.txt +0 -0
|
@@ -8,14 +8,14 @@ from synapse_sdk.plugins.models import PluginRelease
|
|
|
8
8
|
from synapse_sdk.plugins.upload import archive
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
debug
|
|
18
|
-
|
|
11
|
+
def _publish(host, access_token, debug, debug_modules=''):
|
|
12
|
+
"""
|
|
13
|
+
Publish a plugin release to the Synapse backend.
|
|
14
|
+
|
|
15
|
+
:param host: The host URL of the Synapse backend.
|
|
16
|
+
:param access_token: The access token for authentication.
|
|
17
|
+
:param debug_modules: Comma-separated list of debug modules.
|
|
18
|
+
"""
|
|
19
19
|
plugin_release = PluginRelease()
|
|
20
20
|
|
|
21
21
|
source_path = Path('./')
|
|
@@ -29,8 +29,17 @@ def publish(ctx, host, access_token, debug_modules):
|
|
|
29
29
|
|
|
30
30
|
client = BackendClient(host, access_token)
|
|
31
31
|
client.create_plugin_release(data)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
|
|
33
|
+
message = _('Successfully published "{}" ({}) to synapse backend!').format(plugin_release.name, plugin_release.code)
|
|
34
|
+
click.secho(message, fg='green', bold=True)
|
|
35
|
+
return plugin_release
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@click.command()
|
|
39
|
+
@click.option('--host', required=True)
|
|
40
|
+
@click.option('--access_token', required=True)
|
|
41
|
+
@click.option('--debug_modules', default='', envvar='SYNAPSE_DEBUG_MODULES')
|
|
42
|
+
@click.pass_context
|
|
43
|
+
def publish(ctx, host, access_token, debug_modules):
|
|
44
|
+
debug = ctx.obj['DEBUG']
|
|
45
|
+
_publish(host, access_token, debug, debug_modules)
|
synapse_sdk/devtools/server.py
CHANGED
|
@@ -14,6 +14,7 @@ from fastapi.middleware.cors import CORSMiddleware
|
|
|
14
14
|
from fastapi.responses import StreamingResponse
|
|
15
15
|
from fastapi.staticfiles import StaticFiles
|
|
16
16
|
|
|
17
|
+
from synapse_sdk.cli.plugin.publish import _publish
|
|
17
18
|
from synapse_sdk.clients.agent import AgentClient
|
|
18
19
|
from synapse_sdk.clients.backend import BackendClient
|
|
19
20
|
from synapse_sdk.clients.exceptions import ClientError
|
|
@@ -68,7 +69,7 @@ class DevtoolsServer:
|
|
|
68
69
|
def _init_backend_client(self) -> Optional[BackendClient]:
|
|
69
70
|
config = get_backend_config()
|
|
70
71
|
if config:
|
|
71
|
-
return BackendClient(config['host'],
|
|
72
|
+
return BackendClient(config['host'], access_token=config['token'])
|
|
72
73
|
return None
|
|
73
74
|
|
|
74
75
|
def _init_agent_client(self) -> Optional[AgentClient]:
|
|
@@ -93,32 +94,12 @@ class DevtoolsServer:
|
|
|
93
94
|
"""Internal method to publish plugin using CLI logic"""
|
|
94
95
|
import os
|
|
95
96
|
|
|
96
|
-
from synapse_sdk.clients.backend import BackendClient
|
|
97
|
-
from synapse_sdk.plugins.models import PluginRelease
|
|
98
|
-
from synapse_sdk.plugins.upload import archive
|
|
99
|
-
|
|
100
|
-
# Change to plugin directory
|
|
101
97
|
original_cwd = os.getcwd()
|
|
102
98
|
try:
|
|
103
99
|
os.chdir(str(source_path))
|
|
104
100
|
|
|
105
|
-
|
|
106
|
-
plugin_release =
|
|
107
|
-
|
|
108
|
-
# Create archive
|
|
109
|
-
archive_path = source_path / 'dist' / 'archive.zip'
|
|
110
|
-
archive(source_path, archive_path)
|
|
111
|
-
|
|
112
|
-
# Prepare data for backend
|
|
113
|
-
data = {'plugin': plugin_release.plugin, 'file': str(archive_path), 'debug': debug}
|
|
114
|
-
|
|
115
|
-
if debug:
|
|
116
|
-
modules = [] # TODO: Get debug modules from environment or config
|
|
117
|
-
data['meta'] = {'modules': modules}
|
|
118
|
-
|
|
119
|
-
# Create backend client and publish
|
|
120
|
-
client = BackendClient(host, access_token, debug=debug)
|
|
121
|
-
result = client.create_plugin_release(data)
|
|
101
|
+
debug_modules = os.getenv('SYNAPSE_DEBUG_MODULES', '')
|
|
102
|
+
plugin_release = _publish(host, access_token, debug, debug_modules)
|
|
122
103
|
|
|
123
104
|
return {
|
|
124
105
|
'success': True,
|
|
@@ -127,7 +108,7 @@ class DevtoolsServer:
|
|
|
127
108
|
'plugin_code': plugin_release.code,
|
|
128
109
|
'version': plugin_release.version,
|
|
129
110
|
'name': plugin_release.name,
|
|
130
|
-
'result':
|
|
111
|
+
'result': '',
|
|
131
112
|
}
|
|
132
113
|
|
|
133
114
|
finally:
|
|
@@ -5,6 +5,7 @@ from fastapi import FastAPI
|
|
|
5
5
|
from ray import serve
|
|
6
6
|
|
|
7
7
|
from synapse_sdk.clients.backend import BackendClient
|
|
8
|
+
from synapse_sdk.devtools.config import get_backend_config
|
|
8
9
|
from synapse_sdk.utils.file import unarchive
|
|
9
10
|
|
|
10
11
|
app = FastAPI()
|
|
@@ -20,7 +21,9 @@ class BaseInference:
|
|
|
20
21
|
@serve.multiplexed()
|
|
21
22
|
async def _load_model(self, model_id: str):
|
|
22
23
|
model_info = jwt.decode(model_id, self.backend_url, algorithms='HS256')
|
|
23
|
-
|
|
24
|
+
if not (config := get_backend_config()):
|
|
25
|
+
raise ValueError('Backend config not found. Please configure backend in devtools config.')
|
|
26
|
+
client = BackendClient(config['host'], access_token=config['token'])
|
|
24
27
|
model = client.get_model(model_info['model'])
|
|
25
28
|
with tempfile.TemporaryDirectory() as temp_path:
|
|
26
29
|
unarchive(model['file'], temp_path)
|
|
@@ -194,13 +194,13 @@ class UploadAction(Action):
|
|
|
194
194
|
run_class = UploadRun
|
|
195
195
|
progress_categories = {
|
|
196
196
|
'analyze_collection': {
|
|
197
|
-
'proportion':
|
|
197
|
+
'proportion': 10,
|
|
198
198
|
},
|
|
199
199
|
'upload_data_files': {
|
|
200
|
-
'proportion':
|
|
200
|
+
'proportion': 50,
|
|
201
201
|
},
|
|
202
202
|
'generate_data_units': {
|
|
203
|
-
'proportion':
|
|
203
|
+
'proportion': 40,
|
|
204
204
|
},
|
|
205
205
|
}
|
|
206
206
|
metrics_categories = {'data_file', 'data_unit'}
|
|
@@ -372,7 +372,6 @@ class UploadAction(Action):
|
|
|
372
372
|
List: List of dictionaries containing organized files.
|
|
373
373
|
"""
|
|
374
374
|
organized_files = []
|
|
375
|
-
self.run.log_message(f'Looking for files in {directory}...')
|
|
376
375
|
|
|
377
376
|
# Check for type-based directory structure (e.g., image_1/, pcd_1/)
|
|
378
377
|
type_dirs = {}
|
|
@@ -396,7 +395,7 @@ class UploadAction(Action):
|
|
|
396
395
|
if extensions:
|
|
397
396
|
common_ext = max(extensions.items(), key=lambda x: x[1])[0]
|
|
398
397
|
type_extensions[spec_name] = common_ext
|
|
399
|
-
self.run.log_message(f'Found type directory: {spec_name} (
|
|
398
|
+
self.run.log_message(f'Found type directory: {spec_name} (extension: {common_ext})')
|
|
400
399
|
|
|
401
400
|
# If type-based directories don't exist, exit early
|
|
402
401
|
if not type_dirs:
|
|
@@ -432,19 +431,13 @@ class UploadAction(Action):
|
|
|
432
431
|
)
|
|
433
432
|
|
|
434
433
|
if not dataset_files:
|
|
435
|
-
self.run.log_message('No
|
|
434
|
+
self.run.log_message('No files found.', context=Context.WARNING.value)
|
|
436
435
|
return organized_files
|
|
437
436
|
|
|
438
|
-
self.run.log_message(f'Found {len(dataset_files)}
|
|
437
|
+
self.run.log_message(f'Found {len(dataset_files)} files by ID')
|
|
439
438
|
|
|
440
439
|
# Second pass: organize valid datasets
|
|
441
440
|
for file_name, files_dict in sorted(dataset_files.items()):
|
|
442
|
-
self.run.log_message(f'Processing file name: {file_name}')
|
|
443
|
-
|
|
444
|
-
# Add file spec details for logging
|
|
445
|
-
for spec_name, file_path in files_dict.items():
|
|
446
|
-
self.run.log_message(f"Mapped '{spec_name}' to: {file_path.name}")
|
|
447
|
-
|
|
448
441
|
# Check if all required files are present
|
|
449
442
|
required_specs = [spec['name'] for spec in file_specification if spec.get('is_required', False)]
|
|
450
443
|
if all(req in files_dict for req in required_specs):
|
|
@@ -456,7 +449,6 @@ class UploadAction(Action):
|
|
|
456
449
|
|
|
457
450
|
# Add the organized dataset
|
|
458
451
|
organized_files.append({'files': files_dict, 'meta': meta_data})
|
|
459
|
-
self.run.log_message(f'Successfully organized dataset for ID {file_name}')
|
|
460
452
|
else:
|
|
461
453
|
# Missing required files warning
|
|
462
454
|
missing = [req for req in required_specs if req not in files_dict]
|
synapse_sdk/plugins/models.py
CHANGED
|
@@ -3,6 +3,7 @@ from functools import cached_property
|
|
|
3
3
|
from typing import Any, Dict
|
|
4
4
|
|
|
5
5
|
from synapse_sdk.clients.backend import BackendClient
|
|
6
|
+
from synapse_sdk.devtools.config import get_backend_config
|
|
6
7
|
from synapse_sdk.loggers import BackendLogger, ConsoleLogger
|
|
7
8
|
from synapse_sdk.plugins.utils import read_plugin_config
|
|
8
9
|
from synapse_sdk.shared.enums import Context
|
|
@@ -112,10 +113,11 @@ class Run:
|
|
|
112
113
|
def __init__(self, job_id, context):
|
|
113
114
|
self.job_id = job_id
|
|
114
115
|
self.context = context
|
|
116
|
+
if not (config := get_backend_config()):
|
|
117
|
+
raise ValueError('Backend config not found. Please configure backend in devtools config.')
|
|
115
118
|
self.client = BackendClient(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
tenant=self.context['envs'].get('SYNAPSE_PLUGIN_RUN_TENANT'),
|
|
119
|
+
config['host'],
|
|
120
|
+
access_token=config['token'],
|
|
119
121
|
)
|
|
120
122
|
self.set_logger()
|
|
121
123
|
|
|
@@ -20,7 +20,7 @@ synapse_sdk/cli/alias/update.py,sha256=LOpkpe6ZP_HcOOwC5RkJHVxQuNcQHGnyN98tABjz7
|
|
|
20
20
|
synapse_sdk/cli/alias/utils.py,sha256=mlWWVrOmF4klVc1kbtguj_Z_TJz4tsGWcCnRZN3R7Ds,1534
|
|
21
21
|
synapse_sdk/cli/plugin/__init__.py,sha256=fonDXnEc33Pz4ibFhp3WILLyElHDwMnXvaw0tZy6tak,784
|
|
22
22
|
synapse_sdk/cli/plugin/create.py,sha256=HpYTpohV1NbSrULaVUlc4jWLWznPrx7glgydTM3sS5E,218
|
|
23
|
-
synapse_sdk/cli/plugin/publish.py,sha256=
|
|
23
|
+
synapse_sdk/cli/plugin/publish.py,sha256=wok85WnfXzb4j6Aix7gRWM3kXW3E2eC31Q3bsDrn-vw,1547
|
|
24
24
|
synapse_sdk/cli/plugin/run.py,sha256=xz5LRm3zh8Y9DMjw5FFRFVRWSCWtYfZJskfCmrPikaQ,2598
|
|
25
25
|
synapse_sdk/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
synapse_sdk/clients/base.py,sha256=DPY2fNwJHYKa61z07ozJ0poCFRgGd43zfgmHgpI_ngc,12890
|
|
@@ -46,7 +46,7 @@ synapse_sdk/clients/validators/collections.py,sha256=LtnwvutsScubOUcZ2reGHLCzseX
|
|
|
46
46
|
synapse_sdk/devtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
47
|
synapse_sdk/devtools/config.py,sha256=ODAfnXD4TBZQM2dxL7pcHlx6JfkZo15Kwf1MEenbics,2509
|
|
48
48
|
synapse_sdk/devtools/models.py,sha256=6tdpNblSvE5VQ97J0NZreFkD0jK8v6JuJK4ap0DX2w8,1112
|
|
49
|
-
synapse_sdk/devtools/server.py,sha256=
|
|
49
|
+
synapse_sdk/devtools/server.py,sha256=WDeVYl5wuh2FneRMeIZ7BuZDrpA30wpFmykKCRtpNaw,34421
|
|
50
50
|
synapse_sdk/devtools/utils.py,sha256=-f3ZxnRpYg6suNQIL-m4n1DhvLdQEbS4e9Mk9tQ8crE,1706
|
|
51
51
|
synapse_sdk/devtools/docs/.gitignore,sha256=fCv2uiY7oUmiiFhHqfcYbg169Y-q4-AfLmmnRl98_sw,233
|
|
52
52
|
synapse_sdk/devtools/docs/README.md,sha256=yBzWf0K1ef4oymFXDaHo0nYWEgMQJqsOyrkNhIOPQrY,774
|
|
@@ -108,7 +108,7 @@ synapse_sdk/devtools/web/src/views/PluginView.jsx,sha256=_-V8elSiEtsvKECeROtQopS
|
|
|
108
108
|
synapse_sdk/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
109
|
synapse_sdk/plugins/enums.py,sha256=ibixwqA3sCNSriG1jAtL54JQc_Zwo3MufwYUqGhVncc,523
|
|
110
110
|
synapse_sdk/plugins/exceptions.py,sha256=Qs7qODp_RRLO9y2otU2T4ryj5LFwIZODvSIXkAh91u0,691
|
|
111
|
-
synapse_sdk/plugins/models.py,sha256=
|
|
111
|
+
synapse_sdk/plugins/models.py,sha256=AjfC8Cr8g_IrKh10M2sneVRJNIzSgCGi6d90Uu5N9EQ,4431
|
|
112
112
|
synapse_sdk/plugins/upload.py,sha256=VJOotYMayylOH0lNoAGeGHRkLdhP7jnC_A0rFQMvQpQ,3228
|
|
113
113
|
synapse_sdk/plugins/utils.py,sha256=4_K6jIl0WrsXOEhFp94faMOriSsddOhIiaXcawYYUUA,3300
|
|
114
114
|
synapse_sdk/plugins/categories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -138,7 +138,7 @@ synapse_sdk/plugins/categories/neural_net/actions/test.py,sha256=JY25eg-Fo6WbgtM
|
|
|
138
138
|
synapse_sdk/plugins/categories/neural_net/actions/train.py,sha256=i406Ar0V74QwdvqI_g_DgHblB_SoGRPMsuwWcxfoeew,5429
|
|
139
139
|
synapse_sdk/plugins/categories/neural_net/actions/tune.py,sha256=C2zv3o0S-5Hjjsms8ULDGD-ad_DdNTqCPOcDqXa0v1Y,13494
|
|
140
140
|
synapse_sdk/plugins/categories/neural_net/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
|
-
synapse_sdk/plugins/categories/neural_net/base/inference.py,sha256=
|
|
141
|
+
synapse_sdk/plugins/categories/neural_net/base/inference.py,sha256=tekHb5kNAVBqXtermtNUmpEOFvXbXNEEvGOXw51DYw8,1280
|
|
142
142
|
synapse_sdk/plugins/categories/neural_net/templates/config.yaml,sha256=TMdvthf0zQYYTHf0IibKJ6InziRCWM4100C1DKkJVqU,1094
|
|
143
143
|
synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
144
144
|
synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py,sha256=rXvECCewVlLSotv7UaIyyGfEv0OODlXBuk1JwBLNhh8,838
|
|
@@ -166,7 +166,7 @@ synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py,sha256=47
|
|
|
166
166
|
synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py,sha256=eevNg0nOcYFR4z_L_R-sCvVOYoLWSAH1jwDkAf3YCjY,320
|
|
167
167
|
synapse_sdk/plugins/categories/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
168
|
synapse_sdk/plugins/categories/upload/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
169
|
-
synapse_sdk/plugins/categories/upload/actions/upload.py,sha256=
|
|
169
|
+
synapse_sdk/plugins/categories/upload/actions/upload.py,sha256=YozR4WHDnoFQBth9hZoOYLLrMVtjrA9EFwLwQKqUK-M,18516
|
|
170
170
|
synapse_sdk/plugins/categories/upload/templates/config.yaml,sha256=kwHNWHFYbzDi1mEh40KozatPZbZGH44dlP0t0J7ejJw,483
|
|
171
171
|
synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
172
|
synapse_sdk/plugins/categories/upload/templates/plugin/upload.py,sha256=IZU4sdSMSLKPCtlNqF7DP2howTdYR6hr74HCUZsGdPk,1559
|
|
@@ -205,9 +205,9 @@ synapse_sdk/utils/storage/providers/__init__.py,sha256=x7RGwZryT2FpVxS7fGWryRVpq
|
|
|
205
205
|
synapse_sdk/utils/storage/providers/gcp.py,sha256=i2BQCu1Kej1If9SuNr2_lEyTcr5M_ncGITZrL0u5wEA,363
|
|
206
206
|
synapse_sdk/utils/storage/providers/s3.py,sha256=W94rQvhGRXti3R4mYP7gmU5pcyCQpGFIBLvxxqLVdRM,2231
|
|
207
207
|
synapse_sdk/utils/storage/providers/sftp.py,sha256=_8s9hf0JXIO21gvm-JVS00FbLsbtvly4c-ETLRax68A,1426
|
|
208
|
-
synapse_sdk-1.0.
|
|
209
|
-
synapse_sdk-1.0.
|
|
210
|
-
synapse_sdk-1.0.
|
|
211
|
-
synapse_sdk-1.0.
|
|
212
|
-
synapse_sdk-1.0.
|
|
213
|
-
synapse_sdk-1.0.
|
|
208
|
+
synapse_sdk-1.0.0a64.dist-info/licenses/LICENSE,sha256=bKzmC5YAg4V1Fhl8OO_tqY8j62hgdncAkN7VrdjmrGk,1101
|
|
209
|
+
synapse_sdk-1.0.0a64.dist-info/METADATA,sha256=KsTQlvh0eS2Fmrfma6vovk3TNgZ2FNBCG7jYy9I_3QI,1130
|
|
210
|
+
synapse_sdk-1.0.0a64.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
211
|
+
synapse_sdk-1.0.0a64.dist-info/entry_points.txt,sha256=VNptJoGoNJI8yLXfBmhgUefMsmGI0m3-0YoMvrOgbxo,48
|
|
212
|
+
synapse_sdk-1.0.0a64.dist-info/top_level.txt,sha256=ytgJMRK1slVOKUpgcw3LEyHHP7S34J6n_gJzdkcSsw8,12
|
|
213
|
+
synapse_sdk-1.0.0a64.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|