synapse-sdk 1.0.0b13__py3-none-any.whl → 1.0.0b15__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 (84) hide show
  1. synapse_sdk/clients/agent/ray.py +9 -11
  2. synapse_sdk/clients/backend/annotation.py +1 -1
  3. synapse_sdk/clients/backend/core.py +31 -4
  4. synapse_sdk/clients/backend/data_collection.py +78 -5
  5. synapse_sdk/clients/backend/hitl.py +1 -1
  6. synapse_sdk/clients/backend/ml.py +1 -1
  7. synapse_sdk/clients/base.py +23 -16
  8. synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
  9. synapse_sdk/devtools/docs/docs/api/clients/backend.md +53 -0
  10. synapse_sdk/devtools/docs/docs/api/clients/base.md +35 -0
  11. synapse_sdk/devtools/docs/docs/api/clients/ray.md +321 -0
  12. synapse_sdk/devtools/docs/docs/api/index.md +52 -0
  13. synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
  14. synapse_sdk/devtools/docs/docs/api/plugins/models.md +59 -0
  15. synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
  16. synapse_sdk/devtools/docs/docs/api/utils/file.md +195 -0
  17. synapse_sdk/devtools/docs/docs/api/utils/network.md +378 -0
  18. synapse_sdk/devtools/docs/docs/api/utils/storage.md +57 -0
  19. synapse_sdk/devtools/docs/docs/api/utils/types.md +51 -0
  20. synapse_sdk/devtools/docs/docs/categories.md +0 -0
  21. synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
  22. synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
  23. synapse_sdk/devtools/docs/docs/configuration.md +83 -0
  24. synapse_sdk/devtools/docs/docs/contributing.md +306 -0
  25. synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
  26. synapse_sdk/devtools/docs/docs/faq.md +179 -0
  27. synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
  28. synapse_sdk/devtools/docs/docs/features/index.md +24 -0
  29. synapse_sdk/devtools/docs/docs/features/plugins/index.md +509 -0
  30. synapse_sdk/devtools/docs/docs/installation.md +94 -0
  31. synapse_sdk/devtools/docs/docs/introduction.md +47 -0
  32. synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
  33. synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
  34. synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
  35. synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
  36. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
  37. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
  38. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
  39. synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
  40. synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
  41. synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
  42. synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
  43. synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
  44. synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
  45. synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
  46. synapse_sdk/devtools/docs/docusaurus.config.ts +5 -3
  47. synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
  48. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
  49. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +53 -0
  50. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +35 -0
  51. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +321 -0
  52. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
  53. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/utils/file.md +195 -0
  54. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/utils/network.md +378 -0
  55. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/utils/storage.md +60 -0
  56. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/utils/types.md +51 -0
  57. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
  58. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
  59. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
  60. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
  61. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
  62. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
  63. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
  64. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
  65. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
  66. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/plugins/index.md +30 -0
  67. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
  68. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
  69. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
  70. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
  71. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +22 -0
  72. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
  73. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
  74. synapse_sdk/devtools/docs/node_modules/shell-quote/print.py +3 -0
  75. synapse_sdk/devtools/docs/package.json +1 -1
  76. synapse_sdk/plugins/categories/export/actions/export.py +3 -0
  77. synapse_sdk/plugins/categories/upload/actions/upload.py +9 -4
  78. synapse_sdk/utils/file.py +77 -0
  79. {synapse_sdk-1.0.0b13.dist-info → synapse_sdk-1.0.0b15.dist-info}/METADATA +1 -1
  80. {synapse_sdk-1.0.0b13.dist-info → synapse_sdk-1.0.0b15.dist-info}/RECORD +84 -18
  81. {synapse_sdk-1.0.0b13.dist-info → synapse_sdk-1.0.0b15.dist-info}/WHEEL +0 -0
  82. {synapse_sdk-1.0.0b13.dist-info → synapse_sdk-1.0.0b15.dist-info}/entry_points.txt +0 -0
  83. {synapse_sdk-1.0.0b13.dist-info → synapse_sdk-1.0.0b15.dist-info}/licenses/LICENSE +0 -0
  84. {synapse_sdk-1.0.0b13.dist-info → synapse_sdk-1.0.0b15.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,321 @@
1
+ ---
2
+ id: ray
3
+ title: RayClient
4
+ sidebar_position: 4
5
+ ---
6
+
7
+ # RayClient
8
+
9
+ Client for Apache Ray cluster management and monitoring functionality.
10
+
11
+ ## Overview
12
+
13
+ The `RayClientMixin` provides comprehensive Ray cluster operations, including job management, real-time log streaming, node monitoring, and Ray Serve application control. It's designed as a mixin class that extends `BaseClient` with Ray-specific functionality.
14
+
15
+ ## Key Features
16
+
17
+ - **Job Lifecycle Management**: Create, monitor, and manage Ray jobs
18
+ - **Real-time Log Streaming**: WebSocket and HTTP-based log tailing
19
+ - **Node & Task Monitoring**: Monitor cluster resources and task execution
20
+ - **Ray Serve Integration**: Deploy and manage Ray Serve applications
21
+ - **Robust Error Handling**: Input validation and sanitized error messages
22
+ - **Resource Management**: Automatic cleanup and connection tracking
23
+
24
+ ## Constructor
25
+
26
+ ```python
27
+ # RayClientMixin is typically used as a mixin
28
+ class RayClient(RayClientMixin):
29
+ def __init__(self, base_url: str, timeout: dict = None):
30
+ super().__init__(base_url, timeout)
31
+ ```
32
+
33
+ ### Parameters
34
+
35
+ - `base_url` (str): Ray cluster dashboard URL (e.g., "http://ray-head:8265")
36
+ - `timeout` (dict, optional): Connection and read timeout configuration
37
+
38
+ ## Usage
39
+
40
+ ```python
41
+ from synapse_sdk.clients.agent.ray import RayClientMixin
42
+ from synapse_sdk.clients.base import BaseClient
43
+
44
+ class RayClient(RayClientMixin, BaseClient):
45
+ pass
46
+
47
+ client = RayClient(base_url="http://ray-head:8265")
48
+
49
+ # List all jobs
50
+ jobs = client.list_jobs()
51
+
52
+ # Get specific job details
53
+ job = client.get_job('job-12345')
54
+
55
+ # Stream logs in real-time
56
+ for log_line in client.tail_job_logs('job-12345'):
57
+ print(log_line.strip())
58
+ ```
59
+
60
+ ## Job Operations
61
+
62
+ ### `get_job(pk)`
63
+
64
+ Retrieve details for a specific job.
65
+
66
+ ```python
67
+ job = client.get_job('job-12345')
68
+ print(f"Job status: {job['status']}")
69
+ ```
70
+
71
+ ### `list_jobs()`
72
+
73
+ List all jobs in the Ray cluster.
74
+
75
+ ```python
76
+ jobs = client.list_jobs()
77
+ for job in jobs['results']:
78
+ print(f"Job {job['id']}: {job['status']}")
79
+ ```
80
+
81
+ ### `list_job_logs(pk)`
82
+
83
+ Get static log entries for a job.
84
+
85
+ ```python
86
+ logs = client.list_job_logs('job-12345')
87
+ ```
88
+
89
+ ## Real-time Log Streaming
90
+
91
+ ### `tail_job_logs(pk, stream_timeout=10, protocol='stream')`
92
+
93
+ Stream job logs using either WebSocket or HTTP protocol.
94
+
95
+ ```python
96
+ # HTTP streaming (default, more compatible)
97
+ for log_line in client.tail_job_logs('job-12345', protocol='stream'):
98
+ print(log_line.strip())
99
+
100
+ # WebSocket streaming (lower latency)
101
+ for log_line in client.tail_job_logs('job-12345', protocol='websocket'):
102
+ print(log_line.strip())
103
+
104
+ # With custom timeout
105
+ for log_line in client.tail_job_logs('job-12345', stream_timeout=30):
106
+ if 'ERROR' in log_line:
107
+ break
108
+ ```
109
+
110
+ ### `websocket_tail_job_logs(pk, stream_timeout=10)`
111
+
112
+ Stream logs via WebSocket for lowest latency.
113
+
114
+ ```python
115
+ try:
116
+ for log_line in client.websocket_tail_job_logs('job-12345'):
117
+ print(log_line.strip())
118
+ if 'COMPLETED' in log_line:
119
+ break
120
+ except ClientError as e:
121
+ print(f"WebSocket streaming failed: {e}")
122
+ ```
123
+
124
+ ### `stream_tail_job_logs(pk, stream_timeout=10)`
125
+
126
+ Stream logs via HTTP chunked transfer encoding.
127
+
128
+ ```python
129
+ for log_line in client.stream_tail_job_logs('job-12345', stream_timeout=60):
130
+ if 'FAILED' in log_line:
131
+ print(f"Job failed: {log_line}")
132
+ break
133
+ ```
134
+
135
+ ## Node Operations
136
+
137
+ ### `get_node(pk)`
138
+
139
+ Get details for a specific cluster node.
140
+
141
+ ```python
142
+ node = client.get_node('node-abc123')
143
+ print(f"Node status: {node['alive']}")
144
+ ```
145
+
146
+ ### `list_nodes()`
147
+
148
+ List all nodes in the Ray cluster.
149
+
150
+ ```python
151
+ nodes = client.list_nodes()
152
+ for node in nodes['results']:
153
+ print(f"Node {node['node_id']}: {node['state']}")
154
+ ```
155
+
156
+ ## Task Operations
157
+
158
+ ### `get_task(pk)`
159
+
160
+ Retrieve details for a specific task.
161
+
162
+ ```python
163
+ task = client.get_task('task-xyz789')
164
+ ```
165
+
166
+ ### `list_tasks()`
167
+
168
+ List all tasks in the cluster.
169
+
170
+ ```python
171
+ tasks = client.list_tasks()
172
+ ```
173
+
174
+ ## Ray Serve Operations
175
+
176
+ ### `get_serve_application(pk)`
177
+
178
+ Get details for a Ray Serve application.
179
+
180
+ ```python
181
+ app = client.get_serve_application('app-123')
182
+ print(f"Application status: {app['status']}")
183
+ ```
184
+
185
+ ### `list_serve_applications()`
186
+
187
+ List all Ray Serve applications.
188
+
189
+ ```python
190
+ apps = client.list_serve_applications()
191
+ ```
192
+
193
+ ### `delete_serve_application(pk)`
194
+
195
+ Delete a Ray Serve application.
196
+
197
+ ```python
198
+ client.delete_serve_application('app-123')
199
+ ```
200
+
201
+ ## Error Handling
202
+
203
+ All methods include robust error handling with specific `ClientError` exceptions:
204
+
205
+ ```python
206
+ from synapse_sdk.clients.exceptions import ClientError
207
+
208
+ try:
209
+ for log_line in client.tail_job_logs('invalid-job'):
210
+ print(log_line)
211
+ except ClientError as e:
212
+ if e.status == 400:
213
+ print("Invalid job ID or parameters")
214
+ elif e.status == 404:
215
+ print("Job not found")
216
+ elif e.status == 503:
217
+ print("Connection to Ray cluster failed")
218
+ else:
219
+ print(f"Unexpected error: {e}")
220
+ ```
221
+
222
+ ### Common Error Codes
223
+
224
+ - **400**: Invalid parameters (job ID, timeout, protocol)
225
+ - **404**: Resource not found (job, node, task, application)
226
+ - **408**: Connection or read timeout
227
+ - **429**: Stream limits exceeded
228
+ - **500**: WebSocket library unavailable or internal error
229
+ - **503**: Ray cluster connection failed
230
+
231
+ ## Resource Management
232
+
233
+ The RayClient includes automatic resource management:
234
+
235
+ - **Thread Pool**: 5 worker threads for concurrent operations
236
+ - **Connection Tracking**: WeakSet for active connections
237
+ - **Stream Limits**: Prevents memory exhaustion
238
+ - **Automatic Cleanup**: Resources cleaned up on destruction
239
+
240
+ ### Stream Limits
241
+
242
+ Default limits for log streaming:
243
+
244
+ - Max messages: 10,000
245
+ - Max lines: 50,000
246
+ - Max bytes: 50MB
247
+ - Max message size: 10KB
248
+ - Queue size: 1,000
249
+
250
+ ## Best Practices
251
+
252
+ ### 1. Protocol Selection
253
+
254
+ ```python
255
+ # Use WebSocket for lowest latency when available
256
+ try:
257
+ logs = client.tail_job_logs(job_id, protocol='websocket')
258
+ except ClientError:
259
+ # Fallback to HTTP streaming
260
+ logs = client.tail_job_logs(job_id, protocol='stream')
261
+ ```
262
+
263
+ ### 2. Timeout Management
264
+
265
+ ```python
266
+ # Use appropriate timeouts for long-running jobs
267
+ for log_line in client.tail_job_logs(job_id, stream_timeout=300):
268
+ process_log_line(log_line)
269
+ ```
270
+
271
+ ### 3. Error Recovery
272
+
273
+ ```python
274
+ import time
275
+
276
+ def robust_log_streaming(client, job_id, max_retries=3):
277
+ for attempt in range(max_retries):
278
+ try:
279
+ for log_line in client.tail_job_logs(job_id):
280
+ yield log_line
281
+ break
282
+ except ClientError as e:
283
+ if e.status == 503 and attempt < max_retries - 1:
284
+ time.sleep(2 ** attempt) # Exponential backoff
285
+ continue
286
+ raise
287
+ ```
288
+
289
+ ### 4. Resource Cleanup
290
+
291
+ ```python
292
+ # Context manager for proper cleanup
293
+ class RayClientContext:
294
+ def __init__(self, base_url):
295
+ self.client = RayClient(base_url)
296
+
297
+ def __enter__(self):
298
+ return self.client
299
+
300
+ def __exit__(self, exc_type, exc_val, exc_tb):
301
+ # Cleanup handled automatically by RayClient.__del__()
302
+ pass
303
+
304
+ with RayClientContext("http://ray-head:8265") as client:
305
+ for log_line in client.tail_job_logs('job-12345'):
306
+ print(log_line.strip())
307
+ ```
308
+
309
+ ## Thread Safety
310
+
311
+ RayClient is designed for concurrent use with proper thread safety mechanisms:
312
+
313
+ - Thread pool for background operations
314
+ - WeakSet for connection tracking
315
+ - Proper resource cleanup mechanisms
316
+
317
+ ## See Also
318
+
319
+ - [AgentClient](./agent.md) - For agent-specific operations
320
+ - [BaseClient](./base.md) - Base client implementation
321
+ - [Network Utilities](../utils/network.md) - Streaming and validation utilities
@@ -0,0 +1,52 @@
1
+ ---
2
+ id: index
3
+ title: API Reference
4
+ sidebar_position: 1
5
+ ---
6
+
7
+ # API Reference
8
+
9
+ Complete reference documentation for Synapse SDK classes and functions.
10
+
11
+ ## Overview
12
+
13
+ The Synapse SDK API is organized into the following main modules:
14
+
15
+ ### [Clients](./clients/backend.md)
16
+ Client classes for interacting with backend services and agents.
17
+
18
+ - **[BackendClient](./clients/backend.md)** - Main client for backend operations
19
+ - **[AgentClient](./clients/agent.md)** - Client for agent-specific operations
20
+ - **[RayClient](./clients/ray.md)** - Client for Ray cluster management and monitoring
21
+ - **[BaseClient](./clients/base.md)** - Base class for all clients
22
+
23
+ Core plugin system components.
24
+
25
+ ### [Utilities](./utils/file.md)
26
+ Helper functions and utilities.
27
+
28
+ - **[File Utils](./utils/file.md)** - File operations and handling
29
+ - **[Network](./utils/network.md)** - Streaming, validation, and connection management
30
+ - **[Storage](./utils/storage.md)** - Storage providers (S3, GCS, SFTP)
31
+ - **[Types](./utils/types.md)** - Custom types and fields
32
+
33
+ ## Quick Reference
34
+
35
+ ### Creating a Client
36
+
37
+ ```python
38
+ from synapse_sdk.clients.backend import BackendClient
39
+
40
+ client = BackendClient(
41
+ base_url="https://api.synapse.sh",
42
+ api_token="your-api-token"
43
+ )
44
+ ```
45
+
46
+ ### Running a Plugin
47
+
48
+ ### Creating a Plugin Action
49
+
50
+ ## Type Annotations
51
+
52
+ ## File Handling
@@ -0,0 +1,43 @@
1
+ ---
2
+ id: categories
3
+ title: Plugin Categories
4
+ sidebar_position: 2
5
+ ---
6
+
7
+ # Plugin Categories
8
+
9
+ Available plugin categories in the Synapse SDK.
10
+
11
+ ## Available Categories
12
+
13
+ ### NEURAL_NET
14
+ Machine learning model operations including training, inference, and deployment.
15
+
16
+ ### EXPORT
17
+ Data export and transformation operations.
18
+
19
+ ### UPLOAD
20
+ File and data upload functionality.
21
+
22
+ ### SMART_TOOL
23
+ Intelligent automation tools and utilities.
24
+
25
+ ### POST_ANNOTATION
26
+ Post-processing workflows after data annotation.
27
+
28
+ ### PRE_ANNOTATION
29
+ Pre-processing workflows before data annotation.
30
+
31
+ ### DATA_VALIDATION
32
+ Data quality checks and validation operations.
33
+
34
+ ## Usage
35
+
36
+ ```python
37
+ from synapse_sdk.plugins.categories.smart_tool import register_action, Action
38
+
39
+ @register_action("my_action")
40
+ class MyAction(Action):
41
+ category = "SMART_TOOL"
42
+ # Implementation...
43
+ ```
@@ -0,0 +1,59 @@
1
+ ---
2
+ id: models
3
+ title: Plugin Models
4
+ sidebar_position: 1
5
+ ---
6
+
7
+ # Plugin Models
8
+
9
+ Core data models and structures for the plugin system.
10
+
11
+ ## PluginRelease
12
+
13
+ Represents a specific version of a plugin.
14
+
15
+ ```python
16
+ from synapse_sdk.plugins.models import PluginRelease
17
+
18
+ release = PluginRelease(plugin_path="./my-plugin")
19
+ ```
20
+
21
+ ### Properties
22
+
23
+ - `plugin`: Plugin code identifier
24
+ - `version`: Plugin version
25
+ - `code`: Combined plugin and version string
26
+ - `category`: Plugin category
27
+ - `name`: Human-readable plugin name
28
+ - `actions`: Available plugin actions
29
+
30
+ ## PluginAction
31
+
32
+ Represents a plugin action execution request.
33
+
34
+ ```python
35
+ from synapse_sdk.plugins.models import PluginAction
36
+
37
+ action = PluginAction(
38
+ plugin="my-plugin",
39
+ version="1.0.0",
40
+ action="process",
41
+ params={"input": "data"}
42
+ )
43
+ ```
44
+
45
+ ## Run
46
+
47
+ Execution context for plugin actions.
48
+
49
+ ```python
50
+ def start(self):
51
+ # Log messages
52
+ self.run.log("Processing started")
53
+
54
+ # Update progress
55
+ self.run.set_progress(0.5)
56
+
57
+ # Set metrics
58
+ self.run.set_metrics({"processed": 100})
59
+ ```