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.
- synapse_sdk/cli/__init__.py +139 -84
- synapse_sdk/cli/code_server.py +169 -0
- synapse_sdk/cli/config.py +105 -4
- synapse_sdk/cli/devtools.py +54 -34
- synapse_sdk/clients/base.py +3 -4
- synapse_sdk/devtools/server.py +24 -791
- synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
- synapse_sdk/devtools/streamlit_app/app.py +128 -0
- synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
- synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
- synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
- synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
- synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
- synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
- synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
- synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
- synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
- synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
- synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
- synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
- synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
- synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
- synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
- synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
- synapse_sdk/devtools/streamlit_app.py +10 -0
- synapse_sdk/plugins/categories/upload/actions/upload.py +2 -1
- synapse_sdk/utils/converters/coco/from_dm.py +2 -2
- synapse_sdk/utils/converters/dm/__init__.py +0 -1
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/METADATA +4 -6
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/RECORD +34 -45
- synapse_sdk/devtools/models.py +0 -55
- synapse_sdk/devtools/utils.py +0 -52
- synapse_sdk/devtools/web/.gitignore +0 -2
- synapse_sdk/devtools/web/README.md +0 -34
- synapse_sdk/devtools/web/dist/index.html +0 -17
- synapse_sdk/devtools/web/index.html +0 -16
- synapse_sdk/devtools/web/jsconfig.json +0 -15
- synapse_sdk/devtools/web/package-lock.json +0 -2609
- synapse_sdk/devtools/web/package.json +0 -27
- synapse_sdk/devtools/web/pnpm-lock.yaml +0 -1055
- synapse_sdk/devtools/web/src/App.jsx +0 -14
- synapse_sdk/devtools/web/src/App.module.css +0 -33
- synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
- synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +0 -42
- synapse_sdk/devtools/web/src/components/Layout.jsx +0 -12
- synapse_sdk/devtools/web/src/components/LogViewer.jsx +0 -280
- synapse_sdk/devtools/web/src/components/MessageViewer.jsx +0 -150
- synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +0 -128
- synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +0 -245
- synapse_sdk/devtools/web/src/components/icons.jsx +0 -325
- synapse_sdk/devtools/web/src/index.css +0 -470
- synapse_sdk/devtools/web/src/index.jsx +0 -15
- synapse_sdk/devtools/web/src/logo.svg +0 -1
- synapse_sdk/devtools/web/src/router.jsx +0 -34
- synapse_sdk/devtools/web/src/utils/api.js +0 -442
- synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +0 -241
- synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +0 -224
- synapse_sdk/devtools/web/src/views/HomeView.jsx +0 -197
- synapse_sdk/devtools/web/src/views/JobDetailView.jsx +0 -310
- synapse_sdk/devtools/web/src/views/PluginView.jsx +0 -914
- synapse_sdk/devtools/web/vite.config.js +0 -13
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/WHEEL +0 -0
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/licenses/LICENSE +0 -0
- {synapse_sdk-1.0.0a98.dist-info → synapse_sdk-1.0.0b2.dist-info}/top_level.txt +0 -0
synapse_sdk/cli/devtools.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
31
|
-
|
|
47
|
+
# Build streamlit command
|
|
48
|
+
cmd = ['streamlit', 'run', str(app_path)]
|
|
32
49
|
|
|
33
|
-
if
|
|
34
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
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(_('\
|
|
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)
|
synapse_sdk/clients/base.py
CHANGED
|
@@ -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(
|
|
45
|
-
return
|
|
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):
|