synapse-sdk 2025.9.1__py3-none-any.whl → 2025.9.3__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 (80) 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 +23 -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 +238 -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 +5 -0
  73. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.3.dist-info}/METADATA +2 -1
  74. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.3.dist-info}/RECORD +78 -27
  75. synapse_sdk/plugins/categories/export/actions/export.py +0 -385
  76. synapse_sdk/plugins/categories/export/enums.py +0 -7
  77. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.3.dist-info}/WHEEL +0 -0
  78. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.3.dist-info}/entry_points.txt +0 -0
  79. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.3.dist-info}/licenses/LICENSE +0 -0
  80. {synapse_sdk-2025.9.1.dist-info → synapse_sdk-2025.9.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,391 @@
1
+ ---
2
+ id: index
3
+ title: 클라이언트 API
4
+ sidebar_position: 1
5
+ ---
6
+
7
+ # 클라이언트 API
8
+
9
+ Synapse SDK는 다양한 백엔드 서비스 및 시스템과 상호 작용하기 위한 포괄적인 클라이언트 라이브러리를 제공합니다. 이 섹션에서는 사용 가능한 모든 클라이언트 API와 사용법을 문서화합니다.
10
+
11
+ ## 개요
12
+
13
+ 클라이언트 API는 여러 카테고리로 구성됩니다:
14
+
15
+ ### 핵심 클라이언트
16
+
17
+ - **[BackendClient](./backend.md)** - Synapse 백엔드 작업을 위한 메인 클라이언트
18
+ - **[BaseClient](./base.md)** - 공통 기능을 가진 기본 클라이언트
19
+ - **[AgentClient](./agent.md)** - 에이전트별 작업
20
+ - **[RayClient](./ray.md)** - Ray 분산 컴퓨팅 통합
21
+
22
+ ### 백엔드 클라이언트 믹스인
23
+
24
+ BackendClient는 집중된 기능을 제공하는 여러 전문화된 믹스인으로 구성됩니다:
25
+
26
+ - **[AnnotationClientMixin](./annotation-mixin.md)** - 태스크 및 어노테이션 관리
27
+ - **[CoreClientMixin](./core-mixin.md)** - 핵심 파일 업로드 작업
28
+ - **[DataCollectionClientMixin](./data-collection-mixin.md)** - 데이터 수집 및 파일 관리
29
+ - **[HITLClientMixin](./hitl-mixin.md)** - Human-in-the-loop 워크플로
30
+ - **[IntegrationClientMixin](./integration-mixin.md)** - 플러그인 및 작업 관리
31
+ - **[MLClientMixin](./ml-mixin.md)** - 머신러닝 작업
32
+
33
+ ## 빠른 시작
34
+
35
+ ### 기본 백엔드 클라이언트 사용법
36
+
37
+ ```python
38
+ from synapse_sdk.clients.backend import BackendClient
39
+
40
+ # 클라이언트 초기화
41
+ client = BackendClient(
42
+ base_url="https://api.synapse.sh",
43
+ api_token="your-api-token"
44
+ )
45
+
46
+ # 어노테이션 작업 사용
47
+ tasks = client.list_tasks(params={'project': 123})
48
+
49
+ # 데이터 컬렉션 작업 사용
50
+ collections = client.list_data_collection()
51
+
52
+ # ML 작업 사용
53
+ models = client.list_models(params={'project': 123})
54
+ ```
55
+
56
+ ### 환경 구성
57
+
58
+ ```python
59
+ import os
60
+
61
+ # 환경 변수 설정
62
+ os.environ['SYNAPSE_API_TOKEN'] = "your-api-token"
63
+ os.environ['SYNAPSE_AGENT_TOKEN'] = "your-agent-token"
64
+
65
+ # 클라이언트가 자동으로 환경 변수 사용
66
+ client = BackendClient(base_url="https://api.synapse.sh")
67
+ ```
68
+
69
+ ## 인증
70
+
71
+ 모든 클라이언트는 여러 인증 방법을 지원합니다:
72
+
73
+ ### API 토큰 인증
74
+
75
+ ```python
76
+ client = BackendClient(
77
+ base_url="https://api.synapse.sh",
78
+ api_token="your-api-token"
79
+ )
80
+ ```
81
+
82
+ ### 환경 변수 인증
83
+
84
+ ```python
85
+ # SYNAPSE_API_TOKEN 환경 변수 설정
86
+ client = BackendClient(base_url="https://api.synapse.sh")
87
+ ```
88
+
89
+ ### 에이전트 토큰 인증 (에이전트용)
90
+
91
+ ```python
92
+ client = BackendClient(
93
+ base_url="https://api.synapse.sh",
94
+ agent_token="your-agent-token"
95
+ )
96
+ ```
97
+
98
+ ## 일반적인 패턴
99
+
100
+ ### 오류 처리
101
+
102
+ ```python
103
+ from synapse_sdk.clients.exceptions import ClientError
104
+
105
+ try:
106
+ result = client.get_project(123)
107
+ except ClientError as e:
108
+ if e.status_code == 404:
109
+ print("프로젝트를 찾을 수 없음")
110
+ elif e.status_code == 403:
111
+ print("권한이 거부됨")
112
+ else:
113
+ print(f"API 오류: {e}")
114
+ ```
115
+
116
+ ### 페이지네이션
117
+
118
+ ```python
119
+ # 수동 페이지네이션
120
+ page1 = client.list_tasks(params={'page': 1, 'page_size': 50})
121
+
122
+ # 자동 페이지네이션 (권장)
123
+ all_tasks = client.list_tasks(list_all=True)
124
+ ```
125
+
126
+ ### 일괄 작업
127
+
128
+ ```python
129
+ # 여러 태스크 생성
130
+ tasks_data = [
131
+ {'project': 123, 'data_unit': 789},
132
+ {'project': 123, 'data_unit': 790},
133
+ {'project': 123, 'data_unit': 791}
134
+ ]
135
+ created_tasks = client.create_tasks(tasks_data)
136
+
137
+ # 여러 할당에 태그 설정
138
+ client.set_tags_assignments({
139
+ 'assignment_ids': [1, 2, 3],
140
+ 'tag_ids': [10, 11]
141
+ })
142
+ ```
143
+
144
+ ### 파일 작업
145
+
146
+ ```python
147
+ from pathlib import Path
148
+
149
+ # 청크 업로드로 대용량 파일 업로드
150
+ result = client.create_chunked_upload(Path('/path/to/large_file.zip'))
151
+
152
+ # 데이터 파일 생성
153
+ data_file = client.create_data_file(
154
+ Path('/path/to/data.jpg'),
155
+ use_chunked_upload=True
156
+ )
157
+ ```
158
+
159
+ ## 사용 사례별 클라이언트 기능
160
+
161
+ ### 어노테이션 워크플로
162
+
163
+ **AnnotationClientMixin** 사용:
164
+
165
+ - 어노테이션 프로젝트 관리
166
+ - 태스크 생성 및 할당
167
+ - 어노테이션 데이터 제출
168
+ - 태스크 태깅 및 조직
169
+
170
+ **주요 메서드:**
171
+
172
+ - `list_tasks()`, `create_tasks()`, `annotate_task_data()`
173
+ - `get_project()`, `set_tags_tasks()`
174
+
175
+ ### 데이터 관리
176
+
177
+ **DataCollectionClientMixin** 사용:
178
+
179
+ - 데이터 컬렉션 관리
180
+ - 파일 및 데이터셋 업로드
181
+ - 데이터 유닛 생성
182
+ - 일괄 데이터 처리
183
+
184
+ **주요 메서드:**
185
+
186
+ - `list_data_collection()`, `get_data_collection()`
187
+ - `create_data_file()`, `upload_data_file()`
188
+ - `create_data_units()`
189
+
190
+ ### Human-in-the-Loop
191
+
192
+ **HITLClientMixin** 사용:
193
+
194
+ - 인간 검토 할당 관리
195
+ - 품질 관리 워크플로
196
+ - 할당 배포
197
+ - 성능 분석
198
+
199
+ **주요 메서드:**
200
+
201
+ - `list_assignments()`, `get_assignment()`
202
+ - `set_tags_assignments()`
203
+
204
+ ### 시스템 통합
205
+
206
+ **IntegrationClientMixin** 사용:
207
+
208
+ - 플러그인 개발 및 관리
209
+ - 작업 실행 및 모니터링
210
+ - 스토리지 구성
211
+ - 에이전트 상태 모니터링
212
+
213
+ **주요 메서드:**
214
+
215
+ - `create_plugin()`, `run_plugin()`
216
+ - `list_jobs()`, `update_job()`
217
+ - `create_storage()`, `health_check_agent()`
218
+
219
+ ### 머신러닝
220
+
221
+ **MLClientMixin** 사용:
222
+
223
+ - 모델 관리 및 배포
224
+ - 그라운드 트루스 데이터 작업
225
+ - 모델 평가 워크플로
226
+ - 훈련 데이터 준비
227
+
228
+ **주요 메서드:**
229
+
230
+ - `create_model()`, `list_models()`
231
+ - `list_ground_truth_events()`, `get_ground_truth_version()`
232
+
233
+ ### 핵심 작업
234
+
235
+ **CoreClientMixin** 사용:
236
+
237
+ - 대용량 파일 업로드
238
+ - 청크 업로드 작업
239
+ - 파일 무결성 검증
240
+
241
+ **주요 메서드:**
242
+
243
+ - `create_chunked_upload()`
244
+
245
+ ## 완전한 워크플로 예제
246
+
247
+ ### 엔드투엔드 데이터 처리
248
+
249
+ ```python
250
+ def complete_data_workflow():
251
+ client = BackendClient(
252
+ base_url="https://api.synapse.sh",
253
+ api_token="your-token"
254
+ )
255
+
256
+ # 1. 데이터 수집
257
+ collection = client.get_data_collection(123)
258
+ data_file = client.create_data_file(Path('/data/image.jpg'))
259
+
260
+ # 2. 태스크 생성
261
+ tasks = client.create_tasks([
262
+ {'project': 123, 'data_unit': data_file['data_unit_id']}
263
+ ])
264
+
265
+ # 3. 할당 관리
266
+ assignments = client.list_assignments(params={'project': 123})
267
+
268
+ # 4. 모델 작업
269
+ models = client.list_models(params={'project': 123})
270
+
271
+ return {
272
+ 'data_file': data_file,
273
+ 'tasks': tasks,
274
+ 'assignments': assignments,
275
+ 'models': models
276
+ }
277
+ ```
278
+
279
+ ### 플러그인 개발 및 배포
280
+
281
+ ```python
282
+ def plugin_deployment_workflow():
283
+ client = BackendClient(
284
+ base_url="https://api.synapse.sh",
285
+ api_token="your-token"
286
+ )
287
+
288
+ # 1. 플러그인 생성
289
+ plugin = client.create_plugin({
290
+ 'name': 'My Plugin',
291
+ 'description': '사용자 정의 처리 플러그인'
292
+ })
293
+
294
+ # 2. 릴리스 생성
295
+ with open('plugin.zip', 'rb') as f:
296
+ release = client.create_plugin_release({
297
+ 'plugin': plugin['id'],
298
+ 'version': '1.0.0',
299
+ 'file': f
300
+ })
301
+
302
+ # 3. 플러그인 실행
303
+ job = client.run_plugin(plugin['id'], {
304
+ 'parameters': {'threshold': 0.8}
305
+ })
306
+
307
+ # 4. 실행 모니터링
308
+ job_status = client.get_job(job['job_id'])
309
+
310
+ return {
311
+ 'plugin': plugin,
312
+ 'release': release,
313
+ 'job': job_status
314
+ }
315
+ ```
316
+
317
+ ## 모범 사례
318
+
319
+ ### 성능 최적화
320
+
321
+ - 완전한 데이터셋에 대해 `list_all=True` 사용하여 자동으로 페이지네이션 처리
322
+ - 50MB보다 큰 파일에 청크 업로드 사용
323
+ - 중요한 작업에 재시도 로직 구현
324
+ - 가능한 경우 일괄 작업 사용
325
+
326
+ ### 오류 처리
327
+
328
+ - 항상 try-catch 블록으로 API 호출 감싸기
329
+ - 특정 오류 코드 확인 (404, 403, 429, 500)
330
+ - 요청 제한에 지수 백오프 구현
331
+ - 충분한 컨텍스트로 오류 로깅
332
+
333
+ ### 리소스 관리
334
+
335
+ - 파일 핸들 즉시 닫기
336
+ - 파일 작업에 컨텍스트 매니저 사용
337
+ - 대용량 업로드 시 메모리 사용량 모니터링
338
+ - 임시 리소스 정리
339
+
340
+ ### 보안
341
+
342
+ - API 토큰을 안전하게 저장 (환경 변수)
343
+ - HTTPS 엔드포인트만 사용
344
+ - 파일 경로 및 입력 검증
345
+ - 적절한 액세스 제어 구현
346
+
347
+ ## 마이그레이션 가이드
348
+
349
+ 이전 SDK 버전에서 마이그레이션할 때:
350
+
351
+ 1. **임포트 업데이트**: 새로운 믹스인 구조로 인해 임포트 업데이트가 필요할 수 있음
352
+ 2. **메서드 시그니처 확인**: 일부 메서드의 매개변수가 업데이트되었을 수 있음
353
+ 3. **오류 처리**: 오류 유형 및 상태 코드가 변경되었을 수 있음
354
+ 4. **구성**: 인증 방법이 개선되었을 수 있음
355
+
356
+ ## 문제 해결
357
+
358
+ ### 일반적인 문제
359
+
360
+ **인증 오류 (401/403)**
361
+
362
+ - API 토큰이 올바르고 만료되지 않았는지 확인
363
+ - 요청된 작업에 대한 토큰 권한 확인
364
+ - 올바른 기본 URL 확인
365
+
366
+ **요청 제한 (429)**
367
+
368
+ - 지수 백오프 구현
369
+ - 요청 빈도 감소
370
+ - 가능한 경우 일괄 작업 사용
371
+
372
+ **파일 업로드 실패**
373
+
374
+ - 파일 크기 제한 확인
375
+ - 파일 권한 확인
376
+ - 대용량 파일에 청크 업로드 사용
377
+ - 네트워크 연결 확인
378
+
379
+ **연결 시간 초과**
380
+
381
+ - 시간 초과 설정 증가
382
+ - 네트워크 안정성 확인
383
+ - 서버 가용성 확인
384
+
385
+ ## 지원
386
+
387
+ 추가 지원이 필요한 경우:
388
+
389
+ - [문제 해결 가이드](../../troubleshooting.md) 확인
390
+ - [예제](../../examples/index.md) 검토
391
+ - [FAQ](../../faq.md) 참조