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
@@ -0,0 +1,284 @@
1
+ ---
2
+ id: ml-mixin
3
+ title: MLClientMixin
4
+ sidebar_position: 16
5
+ ---
6
+
7
+ # MLClientMixin
8
+
9
+ Synapse 백엔드를 위한 머신러닝 모델 관리 및 정답 데이터 작업을 제공합니다.
10
+
11
+ ## 개요
12
+
13
+ `MLClientMixin`은 머신러닝 모델, 정답 데이터셋, 모델 평가 워크플로와 관련된 모든 작업을 처리합니다. 이 믹스인은 `BackendClient`에 자동으로 포함되며 ML 파이프라인 통합을 위한 메서드를 제공합니다.
14
+
15
+ ## 모델 관리
16
+
17
+ ### `list_models(params=None)`
18
+
19
+ 필터링 옵션과 함께 사용 가능한 머신러닝 모델을 나열합니다.
20
+
21
+ ```python
22
+ # 모든 모델 나열
23
+ models = client.list_models()
24
+ for model in models[0]:
25
+ print(f"모델: {model['name']} (ID: {model['id']})")
26
+
27
+ # 특정 프로젝트의 모델 나열
28
+ project_models = client.list_models(params={'project': 123})
29
+
30
+ # 유형별 모델 나열
31
+ classification_models = client.list_models(params={'model_type': 'classification'})
32
+
33
+ # 활성 모델만 나열
34
+ active_models = client.list_models(params={'is_active': True})
35
+ ```
36
+
37
+ **매개변수:**
38
+
39
+ - `params` (dict, 선택사항): 필터링 매개변수
40
+
41
+ **일반적인 필터링 params:**
42
+
43
+ - `project`: 프로젝트 ID로 필터링
44
+ - `model_type`: 모델 유형으로 필터링 (`classification`, `detection`, `segmentation`)
45
+ - `is_active`: 모델 상태로 필터링
46
+ - `created_after`: 생성 날짜로 필터링
47
+ - `search`: 모델 이름 및 설명에서 텍스트 검색
48
+
49
+ **반환값:**
50
+
51
+ - `tuple`: (models_list, total_count)
52
+
53
+ ### `get_model(pk, params=None, url_conversion=None)`
54
+
55
+ 특정 모델에 대한 상세 정보를 가져옵니다.
56
+
57
+ ```python
58
+ # 기본 모델 정보 가져오기
59
+ model = client.get_model(456)
60
+ print(f"모델: {model['name']}")
61
+ print(f"유형: {model['model_type']}")
62
+ print(f"정확도: {model['metrics']['accuracy']}")
63
+
64
+ # 확장된 메트릭과 함께 모델 가져오기
65
+ model = client.get_model(456, params={'expand': 'metrics'})
66
+
67
+ # 파일에 대한 사용자 정의 URL 변환과 함께 모델 가져오기
68
+ model = client.get_model(
69
+ 456,
70
+ url_conversion={'file': lambda url: f"https://cdn.example.com{url}"}
71
+ )
72
+ ```
73
+
74
+ **매개변수:**
75
+
76
+ - `pk` (int): 모델 ID
77
+ - `params` (dict, 선택사항): 쿼리 매개변수
78
+ - `url_conversion` (dict, 선택사항): 파일 필드에 대한 사용자 정의 URL 변환
79
+
80
+ **일반적인 params:**
81
+
82
+ - `expand`: 추가 데이터 포함 (`metrics`, `evaluations`, `versions`)
83
+ - `include_file`: 모델 파일 정보 포함 여부
84
+
85
+ **반환값:**
86
+
87
+ - `dict`: 메타데이터와 메트릭을 포함한 완전한 모델 정보
88
+
89
+ **모델 구조:**
90
+
91
+ - `id`: 모델 ID
92
+ - `name`: 모델 이름
93
+ - `description`: 모델 설명
94
+ - `model_type`: 모델 유형
95
+ - `file`: 모델 파일 참조
96
+ - `metrics`: 성능 메트릭
97
+ - `project`: 연관된 프로젝트 ID
98
+ - `is_active`: 모델이 현재 활성 상태인지 여부
99
+ - `created_at`: 생성 타임스탬프
100
+
101
+ ### `create_model(data)`
102
+
103
+ 파일 업로드와 함께 새로운 머신러닝 모델을 생성합니다.
104
+
105
+ ```python
106
+ # 파일 업로드와 함께 모델 생성
107
+ model_data = {
108
+ 'name': 'Object Detection Model v2',
109
+ 'description': '향상된 정확도를 가진 개선된 객체 탐지 모델',
110
+ 'model_type': 'detection',
111
+ 'project': 123,
112
+ 'metrics': {
113
+ 'accuracy': 0.92,
114
+ 'precision': 0.89,
115
+ 'recall': 0.94,
116
+ 'f1_score': 0.91
117
+ },
118
+ 'configuration': {
119
+ 'input_size': [640, 640],
120
+ 'num_classes': 10,
121
+ 'framework': 'pytorch'
122
+ },
123
+ 'file': '/path/to/model.pkl' # 청크 업로드를 통해 업로드됨
124
+ }
125
+
126
+ new_model = client.create_model(model_data)
127
+ print(f"ID {new_model['id']}로 모델 생성됨")
128
+ ```
129
+
130
+ **매개변수:**
131
+
132
+ - `data` (dict): 모델 구성 및 메타데이터
133
+
134
+ **모델 데이터 구조:**
135
+
136
+ - `name` (str, 필수): 모델 이름
137
+ - `description` (str): 모델 설명
138
+ - `model_type` (str, 필수): 모델 유형
139
+ - `project` (int, 필수): 프로젝트 ID
140
+ - `file` (str, 필수): 모델 파일 경로
141
+ - `metrics` (dict): 성능 메트릭
142
+ - `configuration` (dict): 모델 구성
143
+ - `is_active` (bool): 모델이 활성 상태여야 하는지 여부
144
+
145
+ **반환값:**
146
+
147
+ - `dict`: 생성된 ID가 포함된 생성된 모델
148
+
149
+ **참고:** 모델 파일은 최적 성능을 위해 청크 업로드를 사용하여 자동으로 업로드됩니다.
150
+
151
+ ## 정답 데이터 작업
152
+
153
+ ### `list_ground_truth_events(params=None, url_conversion=None, list_all=False)`
154
+
155
+ 포괄적인 필터링 옵션과 함께 정답 이벤트를 나열합니다.
156
+
157
+ ```python
158
+ # 데이터셋 버전의 정답 이벤트 나열
159
+ events = client.list_ground_truth_events(params={
160
+ 'ground_truth_dataset_versions': [123]
161
+ })
162
+
163
+ # 모든 이벤트 나열 (페이지네이션 자동 처리)
164
+ all_events = client.list_ground_truth_events(list_all=True)
165
+
166
+ # 날짜 필터링과 함께 이벤트 나열
167
+ from datetime import datetime, timedelta
168
+ recent_date = (datetime.now() - timedelta(days=30)).isoformat()
169
+ recent_events = client.list_ground_truth_events(params={
170
+ 'created_after': recent_date,
171
+ 'ground_truth_dataset_versions': [123]
172
+ })
173
+
174
+ # 사용자 정의 URL 변환과 함께 이벤트 나열
175
+ events = client.list_ground_truth_events(
176
+ params={'ground_truth_dataset_versions': [123]},
177
+ url_conversion={'files': lambda url: f"https://cdn.example.com{url}"}
178
+ )
179
+ ```
180
+
181
+ **매개변수:**
182
+
183
+ - `params` (dict, 선택사항): 필터링 매개변수
184
+ - `url_conversion` (dict, 선택사항): 파일 필드에 대한 사용자 정의 URL 변환
185
+ - `list_all` (bool): True인 경우, 페이지네이션을 자동 처리
186
+
187
+ **일반적인 필터링 params:**
188
+
189
+ - `ground_truth_dataset_versions`: 데이터셋 버전 ID 목록
190
+ - `project`: 프로젝트 ID로 필터링
191
+ - `created_after`: 생성 날짜로 필터링
192
+ - `data_type`: 데이터 유형으로 필터링
193
+ - `search`: 이벤트 데이터에서 텍스트 검색
194
+
195
+ **반환값:**
196
+
197
+ - `tuple`: `list_all=False`인 경우 (events_list, total_count)
198
+ - `list`: `list_all=True`인 경우 모든 이벤트
199
+
200
+ **정답 이벤트 구조:**
201
+
202
+ - `id`: 이벤트 ID
203
+ - `data`: 어노테이션/정답 데이터
204
+ - `data_unit`: 연관된 데이터 유닛 정보
205
+ - `ground_truth_dataset_version`: 데이터셋 버전 ID
206
+ - `created_at`: 생성 타임스탬프
207
+ - `metadata`: 추가 이벤트 메타데이터
208
+
209
+ ### `get_ground_truth_version(pk)`
210
+
211
+ 정답 데이터셋 버전에 대한 상세 정보를 가져옵니다.
212
+
213
+ ```python
214
+ version = client.get_ground_truth_version(123)
215
+ print(f"데이터셋 버전: {version['version']}")
216
+ print(f"데이터셋: {version['ground_truth_dataset']['name']}")
217
+ print(f"총 이벤트: {version['event_count']}")
218
+ print(f"생성됨: {version['created_at']}")
219
+ ```
220
+
221
+ **매개변수:**
222
+
223
+ - `pk` (int): 정답 데이터셋 버전 ID
224
+
225
+ **반환값:**
226
+
227
+ - `dict`: 완전한 데이터셋 버전 정보
228
+
229
+ **데이터셋 버전 구조:**
230
+
231
+ - `id`: 버전 ID
232
+ - `version`: 버전 번호/이름
233
+ - `ground_truth_dataset`: 부모 데이터셋 정보
234
+ - `event_count`: 이 버전의 이벤트 수
235
+ - `description`: 버전 설명
236
+ - `is_active`: 버전이 현재 활성 상태인지 여부
237
+ - `created_at`: 생성 타임스탬프
238
+ - `statistics`: 버전 통계 및 메트릭
239
+
240
+ ## 오류 처리
241
+
242
+ ```python
243
+ from synapse_sdk.clients.exceptions import ClientError
244
+
245
+ def robust_model_operations():
246
+ """오류 처리가 있는 안정적인 모델 작업 예제."""
247
+
248
+ try:
249
+ # 모델 가져오기 시도
250
+ model = client.get_model(999)
251
+ except ClientError as e:
252
+ if e.status_code == 404:
253
+ print("모델을 찾을 수 없음")
254
+ return None
255
+ else:
256
+ print(f"모델 가져오기 오류: {e}")
257
+ raise
258
+
259
+ try:
260
+ # 모델 생성 시도
261
+ model_data = {
262
+ 'name': 'Test Model',
263
+ 'model_type': 'classification',
264
+ 'project': 123,
265
+ 'file': '/path/to/model.pkl'
266
+ }
267
+ new_model = client.create_model(model_data)
268
+ except ClientError as e:
269
+ if e.status_code == 400:
270
+ print(f"잘못된 모델 데이터: {e.response}")
271
+ elif e.status_code == 413:
272
+ print("모델 파일이 너무 큼")
273
+ else:
274
+ print(f"모델 생성 오류: {e}")
275
+ return None
276
+
277
+ return new_model
278
+ ```
279
+
280
+ ## 참고
281
+
282
+ - [BackendClient](./backend.md) - 메인 백엔드 클라이언트
283
+ - [DataCollectionClientMixin](./data-collection-mixin.md) - 데이터 관리 작업
284
+ - [IntegrationClientMixin](./integration-mixin.md) - 플러그인 및 작업 관리