synapse-sdk 2025.9.1__py3-none-any.whl → 2025.9.4__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 (81) hide show
  1. synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
  2. synapse_sdk/devtools/docs/docs/api/clients/backend.md +368 -1
  3. synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
  4. synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
  5. synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
  6. synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
  7. synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
  8. synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
  9. synapse_sdk/devtools/docs/docs/plugins/developing-upload-template.md +1463 -0
  10. synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +161 -34
  11. synapse_sdk/devtools/docs/docs/plugins/upload-plugins.md +1497 -213
  12. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
  13. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +378 -11
  14. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
  15. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
  16. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
  17. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
  18. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
  19. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
  20. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/developing-upload-template.md +1463 -0
  21. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +161 -34
  22. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/upload-plugins.md +1752 -572
  23. synapse_sdk/devtools/docs/sidebars.ts +7 -0
  24. synapse_sdk/plugins/README.md +1 -2
  25. synapse_sdk/plugins/categories/base.py +7 -0
  26. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  27. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  28. synapse_sdk/plugins/categories/export/actions/export/action.py +160 -0
  29. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  30. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  31. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  32. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  33. synapse_sdk/plugins/categories/export/actions/export/utils.py +187 -0
  34. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +1 -1
  35. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +1 -2
  36. synapse_sdk/plugins/categories/upload/actions/upload/action.py +154 -531
  37. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  38. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +143 -0
  39. synapse_sdk/plugins/categories/upload/actions/upload/models.py +66 -29
  40. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +182 -0
  41. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  42. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  43. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +106 -0
  44. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  45. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +62 -0
  46. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +80 -0
  47. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +66 -0
  48. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +101 -0
  49. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +89 -0
  50. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +96 -0
  51. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +61 -0
  52. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  53. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +86 -0
  54. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  55. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  56. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +34 -0
  57. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  58. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +233 -0
  59. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +253 -0
  60. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  61. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  62. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  63. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  64. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/async_upload.py +109 -0
  65. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +43 -0
  66. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  67. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +45 -0
  68. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +194 -83
  69. synapse_sdk/plugins/categories/upload/templates/config.yaml +4 -0
  70. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +269 -0
  71. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +71 -27
  72. synapse_sdk/plugins/models.py +7 -0
  73. synapse_sdk/shared/__init__.py +21 -0
  74. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.4.dist-info}/METADATA +2 -1
  75. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.4.dist-info}/RECORD +79 -28
  76. synapse_sdk/plugins/categories/export/actions/export.py +0 -385
  77. synapse_sdk/plugins/categories/export/enums.py +0 -7
  78. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.4.dist-info}/WHEEL +0 -0
  79. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.4.dist-info}/entry_points.txt +0 -0
  80. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.4.dist-info}/licenses/LICENSE +0 -0
  81. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.4.dist-info}/top_level.txt +0 -0
@@ -10,7 +10,14 @@ Main client for interacting with the Synapse backend API.
10
10
 
11
11
  ## Overview
12
12
 
13
- The `BackendClient` provides comprehensive access to all backend operations including data management, plugin execution, annotations, and machine learning workflows. It aggregates functionality from multiple specialized mixins.
13
+ The `BackendClient` provides comprehensive access to all backend operations including data management, plugin execution, annotations, and machine learning workflows. It aggregates functionality from multiple specialized mixins:
14
+
15
+ - **AnnotationClientMixin**: Task and annotation management
16
+ - **CoreClientMixin**: File upload and core operations
17
+ - **DataCollectionClientMixin**: Data collection and file management
18
+ - **HITLClientMixin**: Human-in-the-loop assignment operations
19
+ - **IntegrationClientMixin**: Plugin and job management
20
+ - **MLClientMixin**: Machine learning models and ground truth operations
14
21
 
15
22
  ## Constructor
16
23
 
@@ -47,6 +54,366 @@ os.environ['SYNAPSE_API_TOKEN'] = "your-api-token"
47
54
  client = BackendClient(base_url="https://api.synapse.sh")
48
55
  ```
49
56
 
57
+ ## API Methods
58
+
59
+ ### Annotation Operations
60
+
61
+ #### `get_project(pk)`
62
+
63
+ Get project details by ID.
64
+
65
+ ```python
66
+ project = client.get_project(123)
67
+ ```
68
+
69
+ #### `get_task(pk, params)`
70
+
71
+ Get task details with optional parameters.
72
+
73
+ ```python
74
+ task = client.get_task(456, params={'expand': 'data_unit'})
75
+ ```
76
+
77
+ #### `annotate_task_data(pk, data)`
78
+
79
+ Submit annotation data for a task.
80
+
81
+ ```python
82
+ result = client.annotate_task_data(456, {
83
+ 'annotations': [
84
+ {'type': 'bbox', 'coordinates': [10, 10, 100, 100]}
85
+ ]
86
+ })
87
+ ```
88
+
89
+ #### `list_tasks(params=None, url_conversion=None, list_all=False)`
90
+
91
+ List tasks with filtering and pagination.
92
+
93
+ ```python
94
+ # Get tasks for a project
95
+ tasks = client.list_tasks(params={'project': 123})
96
+
97
+ # Get all tasks (handles pagination automatically)
98
+ all_tasks = client.list_tasks(list_all=True)
99
+ ```
100
+
101
+ #### `create_tasks(data)`
102
+
103
+ Create new tasks.
104
+
105
+ ```python
106
+ new_tasks = client.create_tasks([
107
+ {'project': 123, 'data_unit': 789},
108
+ {'project': 123, 'data_unit': 790}
109
+ ])
110
+ ```
111
+
112
+ #### `set_tags_tasks(data, params=None)`
113
+
114
+ Set tags for multiple tasks.
115
+
116
+ ```python
117
+ client.set_tags_tasks({
118
+ 'task_ids': [456, 457],
119
+ 'tag_ids': [1, 2, 3]
120
+ })
121
+ ```
122
+
123
+ ### Core Operations
124
+
125
+ #### `create_chunked_upload(file_path)`
126
+
127
+ Upload large files using chunked upload for optimal performance.
128
+
129
+ ```python
130
+ from pathlib import Path
131
+
132
+ result = client.create_chunked_upload(Path('/path/to/large_file.zip'))
133
+ print(f"Upload completed: {result}")
134
+ ```
135
+
136
+ **Features:**
137
+
138
+ - Uses 50MB chunks for optimal performance
139
+ - Automatic retry and resume capability
140
+ - MD5 integrity verification
141
+ - Progress tracking support
142
+
143
+ ### Data Collection Operations
144
+
145
+ #### `list_data_collection()`
146
+
147
+ List all available data collections.
148
+
149
+ ```python
150
+ collections = client.list_data_collection()
151
+ ```
152
+
153
+ #### `get_data_collection(data_collection_id)`
154
+
155
+ Get detailed information about a specific data collection.
156
+
157
+ ```python
158
+ collection = client.get_data_collection(123)
159
+ file_specs = collection['file_specifications']
160
+ ```
161
+
162
+ #### `create_data_file(file_path, use_chunked_upload=False)`
163
+
164
+ Create and upload a data file to the backend.
165
+
166
+ ```python
167
+ from pathlib import Path
168
+
169
+ # Regular upload
170
+ data_file = client.create_data_file(Path('/path/to/file.jpg'))
171
+
172
+ # Chunked upload for large files
173
+ large_file = client.create_data_file(
174
+ Path('/path/to/large_file.zip'),
175
+ use_chunked_upload=True
176
+ )
177
+ ```
178
+
179
+ #### `upload_data_file(organized_file, collection_id, use_chunked_upload=False)`
180
+
181
+ Upload organized file data to a collection.
182
+
183
+ ```python
184
+ result = client.upload_data_file(
185
+ organized_file={'files': {...}, 'meta': {...}},
186
+ collection_id=123,
187
+ use_chunked_upload=False
188
+ )
189
+ ```
190
+
191
+ #### `create_data_units(uploaded_files)`
192
+
193
+ Create data units from uploaded files.
194
+
195
+ ```python
196
+ data_units = client.create_data_units([
197
+ {'id': 1, 'file': {...}},
198
+ {'id': 2, 'file': {...}}
199
+ ])
200
+ ```
201
+
202
+ ### HITL (Human-in-the-Loop) Operations
203
+
204
+ #### `get_assignment(pk)`
205
+
206
+ Get assignment details by ID.
207
+
208
+ ```python
209
+ assignment = client.get_assignment(789)
210
+ ```
211
+
212
+ #### `list_assignments(params=None, url_conversion=None, list_all=False)`
213
+
214
+ List assignments with filtering options.
215
+
216
+ ```python
217
+ # Get assignments for a project
218
+ assignments = client.list_assignments(params={'project': 123})
219
+
220
+ # Get all assignments
221
+ all_assignments = client.list_assignments(list_all=True)
222
+ ```
223
+
224
+ #### `set_tags_assignments(data, params=None)`
225
+
226
+ Set tags for multiple assignments.
227
+
228
+ ```python
229
+ client.set_tags_assignments({
230
+ 'assignment_ids': [789, 790],
231
+ 'tag_ids': [1, 2]
232
+ })
233
+ ```
234
+
235
+ ### Integration Operations
236
+
237
+ #### `health_check_agent(token)`
238
+
239
+ Check agent health status.
240
+
241
+ ```python
242
+ status = client.health_check_agent('agent-token-123')
243
+ ```
244
+
245
+ #### `get_plugin(pk)` / `create_plugin(data)` / `update_plugin(pk, data)`
246
+
247
+ Manage plugins.
248
+
249
+ ```python
250
+ # Get plugin
251
+ plugin = client.get_plugin(123)
252
+
253
+ # Create plugin
254
+ new_plugin = client.create_plugin({
255
+ 'name': 'My Plugin',
256
+ 'description': 'Plugin description'
257
+ })
258
+
259
+ # Update plugin
260
+ updated = client.update_plugin(123, {'description': 'Updated description'})
261
+ ```
262
+
263
+ #### `run_plugin(pk, data)`
264
+
265
+ Execute a plugin with provided data.
266
+
267
+ ```python
268
+ result = client.run_plugin(123, {
269
+ 'parameters': {'input': 'value'},
270
+ 'context': {...}
271
+ })
272
+ ```
273
+
274
+ #### Plugin Release Management
275
+
276
+ ```python
277
+ # Create plugin release
278
+ release = client.create_plugin_release({
279
+ 'plugin': 123,
280
+ 'version': '1.0.0',
281
+ 'file': open('/path/to/plugin.zip', 'rb')
282
+ })
283
+
284
+ # Get release details
285
+ release_info = client.get_plugin_release(456)
286
+ ```
287
+
288
+ #### Job Management
289
+
290
+ ```python
291
+ # List jobs
292
+ jobs = client.list_jobs(params={'status': 'running'})
293
+
294
+ # Get job details
295
+ job = client.get_job(789, params={'expand': 'logs'})
296
+
297
+ # Update job status
298
+ client.update_job(789, {'status': 'completed'})
299
+
300
+ # Get job console logs
301
+ logs = client.list_job_console_logs(789)
302
+ ```
303
+
304
+ #### Storage Operations
305
+
306
+ ```python
307
+ # List storages
308
+ storages = client.list_storages()
309
+
310
+ # Get storage details
311
+ storage = client.get_storage(123)
312
+
313
+ # Create storage
314
+ new_storage = client.create_storage({
315
+ 'name': 'My Storage',
316
+ 'provider': 'amazon_s3',
317
+ 'configuration': {...}
318
+ })
319
+ ```
320
+
321
+ ### Machine Learning Operations
322
+
323
+ #### `list_models(params=None)` / `get_model(pk, params=None, url_conversion=None)`
324
+
325
+ Manage ML models.
326
+
327
+ ```python
328
+ # List models
329
+ models = client.list_models(params={'project': 123})
330
+
331
+ # Get model details
332
+ model = client.get_model(456, params={'expand': 'metrics'})
333
+ ```
334
+
335
+ #### `create_model(data)`
336
+
337
+ Create a new ML model with file upload.
338
+
339
+ ```python
340
+ new_model = client.create_model({
341
+ 'name': 'My Model',
342
+ 'project': 123,
343
+ 'file': '/path/to/model.pkl'
344
+ })
345
+ ```
346
+
347
+ #### Ground Truth Operations
348
+
349
+ ```python
350
+ # List ground truth events
351
+ events = client.list_ground_truth_events(
352
+ params={'ground_truth_dataset_versions': [123]},
353
+ list_all=True
354
+ )
355
+
356
+ # Get ground truth version
357
+ version = client.get_ground_truth_version(123)
358
+ ```
359
+
360
+ ## Storage Models
361
+
362
+ The backend client includes predefined models for storage operations:
363
+
364
+ ### StorageCategory
365
+
366
+ - `INTERNAL`: Internal storage systems
367
+ - `EXTERNAL`: External storage providers
368
+
369
+ ### StorageProvider
370
+
371
+ - `AMAZON_S3`: Amazon S3
372
+ - `AZURE`: Microsoft Azure Blob Storage
373
+ - `DIGITAL_OCEAN`: DigitalOcean Spaces
374
+ - `FILE_SYSTEM`: Local file system
375
+ - `FTP` / `SFTP`: FTP protocols
376
+ - `MINIO`: MinIO storage
377
+ - `GCP`: Google Cloud Storage
378
+
379
+ ## Error Handling
380
+
381
+ All API methods may raise `ClientError` exceptions for various error conditions:
382
+
383
+ ```python
384
+ from synapse_sdk.clients.exceptions import ClientError
385
+
386
+ try:
387
+ project = client.get_project(999)
388
+ except ClientError as e:
389
+ print(f"API Error: {e}")
390
+ print(f"Status Code: {e.status_code}")
391
+ print(f"Response: {e.response}")
392
+ ```
393
+
394
+ ## Pagination
395
+
396
+ Methods supporting `list_all=True` will automatically handle pagination:
397
+
398
+ ```python
399
+ # Manual pagination
400
+ tasks_page1 = client.list_tasks(params={'page': 1, 'page_size': 100})
401
+
402
+ # Automatic pagination (recommended)
403
+ all_tasks = client.list_tasks(list_all=True)
404
+ ```
405
+
406
+ ## URL Conversion
407
+
408
+ Some methods support URL conversion for file fields:
409
+
410
+ ```python
411
+ # Custom URL conversion
412
+ tasks = client.list_tasks(
413
+ url_conversion={'files': lambda url: f"https://cdn.example.com{url}"}
414
+ )
415
+ ```
416
+
50
417
  ## See Also
51
418
 
52
419
  - [AgentClient](./agent.md) - For agent-specific operations