synapse-sdk 1.0.0a98__py3-none-any.whl → 1.0.0b2__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.

Files changed (65) hide show
  1. synapse_sdk/cli/__init__.py +139 -84
  2. synapse_sdk/cli/code_server.py +169 -0
  3. synapse_sdk/cli/config.py +105 -4
  4. synapse_sdk/cli/devtools.py +54 -34
  5. synapse_sdk/clients/base.py +3 -4
  6. synapse_sdk/devtools/server.py +24 -791
  7. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  8. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  9. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  10. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  11. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  12. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  13. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  14. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  15. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  16. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  17. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  18. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  19. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  20. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  21. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  22. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  23. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  24. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  25. synapse_sdk/devtools/streamlit_app.py +10 -0
  26. synapse_sdk/plugins/categories/upload/actions/upload.py +2 -1
  27. synapse_sdk/utils/converters/coco/from_dm.py +2 -2
  28. synapse_sdk/utils/converters/dm/__init__.py +0 -1
  29. {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/METADATA +4 -6
  30. {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/RECORD +34 -45
  31. synapse_sdk/devtools/models.py +0 -55
  32. synapse_sdk/devtools/utils.py +0 -52
  33. synapse_sdk/devtools/web/.gitignore +0 -2
  34. synapse_sdk/devtools/web/README.md +0 -34
  35. synapse_sdk/devtools/web/dist/index.html +0 -17
  36. synapse_sdk/devtools/web/index.html +0 -16
  37. synapse_sdk/devtools/web/jsconfig.json +0 -15
  38. synapse_sdk/devtools/web/package-lock.json +0 -2609
  39. synapse_sdk/devtools/web/package.json +0 -27
  40. synapse_sdk/devtools/web/pnpm-lock.yaml +0 -1055
  41. synapse_sdk/devtools/web/src/App.jsx +0 -14
  42. synapse_sdk/devtools/web/src/App.module.css +0 -33
  43. synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
  44. synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +0 -42
  45. synapse_sdk/devtools/web/src/components/Layout.jsx +0 -12
  46. synapse_sdk/devtools/web/src/components/LogViewer.jsx +0 -280
  47. synapse_sdk/devtools/web/src/components/MessageViewer.jsx +0 -150
  48. synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +0 -128
  49. synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +0 -245
  50. synapse_sdk/devtools/web/src/components/icons.jsx +0 -325
  51. synapse_sdk/devtools/web/src/index.css +0 -470
  52. synapse_sdk/devtools/web/src/index.jsx +0 -15
  53. synapse_sdk/devtools/web/src/logo.svg +0 -1
  54. synapse_sdk/devtools/web/src/router.jsx +0 -34
  55. synapse_sdk/devtools/web/src/utils/api.js +0 -442
  56. synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +0 -241
  57. synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +0 -224
  58. synapse_sdk/devtools/web/src/views/HomeView.jsx +0 -197
  59. synapse_sdk/devtools/web/src/views/JobDetailView.jsx +0 -310
  60. synapse_sdk/devtools/web/src/views/PluginView.jsx +0 -914
  61. synapse_sdk/devtools/web/vite.config.js +0 -13
  62. {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/WHEEL +0 -0
  63. {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/entry_points.txt +0 -0
  64. {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/licenses/LICENSE +0 -0
  65. {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,7 @@
1
1
  import os
2
+ import subprocess
2
3
  import sys
4
+ import time
3
5
 
4
6
  import click
5
7
 
@@ -14,10 +16,10 @@ def devtools(host, port, debug):
14
16
  """Start the Synapse devtools web interface"""
15
17
 
16
18
  try:
17
- from synapse_sdk.devtools.config import get_server_config
18
- from synapse_sdk.devtools.server import create_devtools_server
19
- from synapse_sdk.devtools.utils import find_available_port, is_port_available
19
+ import importlib.util
20
20
 
21
+ if not importlib.util.find_spec('streamlit') or not importlib.util.find_spec('streamlit_ace'):
22
+ raise ImportError('Missing dependencies')
21
23
  except ImportError:
22
24
  click.echo(
23
25
  click.style(
@@ -25,46 +27,64 @@ def devtools(host, port, debug):
25
27
  ),
26
28
  err=True,
27
29
  )
30
+ click.echo(
31
+ click.style(_('Specifically, you need: pip install streamlit streamlit-ace'), fg='yellow'),
32
+ err=True,
33
+ )
34
+ sys.exit(1)
35
+
36
+ click.echo('Starting Synapse DevTools...')
37
+
38
+ # Get the path to the streamlit app
39
+ from pathlib import Path
40
+
41
+ app_path = Path(__file__).parent.parent / 'devtools' / 'streamlit_app.py'
42
+
43
+ if not app_path.exists():
44
+ click.echo(click.style(f'Streamlit app not found at {app_path}', fg='red'), err=True)
28
45
  sys.exit(1)
29
46
 
30
- click.echo('Building assets...')
31
- from synapse_sdk.cli import build_frontend
47
+ # Build streamlit command
48
+ cmd = ['streamlit', 'run', str(app_path)]
32
49
 
33
- if not build_frontend():
34
- click.echo(click.style('Build failed, continuing with existing assets...', fg='yellow'))
50
+ # Add host and port if specified
51
+ if host:
52
+ cmd.extend(['--server.address', host])
53
+ else:
54
+ cmd.extend(['--server.address', '0.0.0.0'])
55
+
56
+ if port:
57
+ cmd.extend(['--server.port', str(port)])
58
+ else:
59
+ cmd.extend(['--server.port', '8080']) # Default port
60
+
61
+ cmd.extend(['--server.headless', 'false'])
35
62
 
36
63
  if debug:
37
- click.echo(_('Starting devtools in debug mode...'))
38
- os.environ['UVICORN_LOG_LEVEL'] = 'debug'
39
-
40
- click.echo('Starting Synapse Devtools...')
41
-
42
- # Get server configuration from config file
43
- server_config = get_server_config()
44
-
45
- # Use CLI arguments if provided, otherwise use config defaults
46
- final_host = host if host is not None else server_config['host']
47
- final_port = port if port is not None else server_config['port']
48
-
49
- # Check if the port is available, fallback to next available port if not
50
- if not is_port_available(final_host, final_port):
51
- try:
52
- fallback_port = find_available_port(final_host, final_port + 1)
53
- click.echo(click.style(f'Port {final_port} is in use, falling back to port {fallback_port}', fg='yellow'))
54
- final_port = fallback_port
55
- except RuntimeError as e:
56
- click.echo(click.style(f'Failed to find available port: {e}', fg='red'), err=True)
57
- sys.exit(1)
58
-
59
- # Create and start the devtools server
60
- # Pass the current working directory as the plugin directory
64
+ cmd.extend(['--logger.level', 'debug'])
65
+ else:
66
+ cmd.extend(['--logger.level', 'error'])
67
+
68
+ # Set working directory to current directory (plugin directory)
61
69
  plugin_directory = os.getcwd()
62
- server = create_devtools_server(host=final_host, port=final_port, plugin_directory=plugin_directory)
63
70
 
64
71
  try:
65
- server.start_server()
72
+ # Add a small delay to ensure clean output
73
+ time.sleep(0.5)
74
+
75
+ # Start streamlit
76
+ process = subprocess.Popen(cmd, cwd=plugin_directory, env=os.environ.copy())
77
+
78
+ click.echo('Press Ctrl+C to stop')
79
+
80
+ # Wait for process
81
+ process.wait()
82
+
66
83
  except KeyboardInterrupt:
67
- click.echo(_('\nDevtools stopped.'))
84
+ click.echo(_('\nDevTools stopped.'))
85
+ if process:
86
+ process.terminate()
87
+ process.wait()
68
88
  except Exception as e:
69
89
  click.echo(click.style(f'Failed to start devtools: {e}', fg='red'), err=True)
70
90
  sys.exit(1)
@@ -1,5 +1,4 @@
1
1
  import json
2
- import os
3
2
  from pathlib import Path
4
3
 
5
4
  import requests
@@ -16,7 +15,7 @@ class BaseClient:
16
15
  page_size = 100
17
16
 
18
17
  def __init__(self, base_url, timeout=None):
19
- self.base_url = base_url
18
+ self.base_url = base_url.rstrip('/')
20
19
  # Set reasonable default timeouts for better UX
21
20
  self.timeout = timeout or {
22
21
  'connect': 5, # Connection timeout: 5 seconds
@@ -41,8 +40,8 @@ class BaseClient:
41
40
  self.requests_session = requests_session
42
41
 
43
42
  def _get_url(self, path):
44
- if not path.startswith(self.base_url):
45
- return os.path.join(self.base_url, path)
43
+ if not path.startswith('http'):
44
+ return f'{self.base_url}/{path.lstrip("/")}'
46
45
  return path
47
46
 
48
47
  def _get_headers(self):