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.

@@ -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
- @click.command()
12
- @click.option('--host', required=True)
13
- @click.option('--access_token', required=True)
14
- @click.option('--debug_modules', default='', envvar='SYNAPSE_DEBUG_MODULES')
15
- @click.pass_context
16
- def publish(ctx, host, access_token, debug_modules):
17
- debug = ctx.obj['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
- click.secho(
33
- _('Successfully published "{}" ({}) to synapse backend!').format(plugin_release.name, plugin_release.code),
34
- fg='green',
35
- bold=True,
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)
@@ -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'], api_token=config['token'])
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
- # Create plugin release from config in plugin directory
106
- plugin_release = PluginRelease()
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': 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
- client = BackendClient(self.backend_url, token=model_info['token'], tenant=model_info['tenant'])
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': 0,
197
+ 'proportion': 10,
198
198
  },
199
199
  'upload_data_files': {
200
- 'proportion': 0,
200
+ 'proportion': 50,
201
201
  },
202
202
  'generate_data_units': {
203
- 'proportion': 0,
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} (common extension: {common_ext})')
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 dataset files found.', context=Context.WARNING.value)
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)} potential datasets by ID')
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]
@@ -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
- self.context['envs']['SYNAPSE_PLUGIN_RUN_HOST'],
117
- token=self.context['envs'].get('SYNAPSE_PLUGIN_RUN_USER_TOKEN'),
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a62
3
+ Version: 1.0.0a64
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -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=1pFewXC6bzeDegB2ahyXiyA7dpf9h3VNRNXiy_ii-pM,1163
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=xLRgZuaHuq8a38WW0-TVDavhNxJZ89EOexPSy88BAU0,35160
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=QSsF9A3MSbujdKEeVgkt7vpm0LGQYg_9P_T05WVSmCA,4362
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=R5DASI6-5vzsjDOYxqeGGMBjnav5qHF4hNJT8zNUR3I,1097
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=zZx14F3789IJUH7BmZdXI43HXy0RdLknqT3aZk0WIHQ,18965
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.0a62.dist-info/licenses/LICENSE,sha256=bKzmC5YAg4V1Fhl8OO_tqY8j62hgdncAkN7VrdjmrGk,1101
209
- synapse_sdk-1.0.0a62.dist-info/METADATA,sha256=EZ7nVLBGFvc5_j9iIq5_9HYxUfcMa7XBfHnhc0JR24I,1130
210
- synapse_sdk-1.0.0a62.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
211
- synapse_sdk-1.0.0a62.dist-info/entry_points.txt,sha256=VNptJoGoNJI8yLXfBmhgUefMsmGI0m3-0YoMvrOgbxo,48
212
- synapse_sdk-1.0.0a62.dist-info/top_level.txt,sha256=ytgJMRK1slVOKUpgcw3LEyHHP7S34J6n_gJzdkcSsw8,12
213
- synapse_sdk-1.0.0a62.dist-info/RECORD,,
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,,