synapse-sdk 2025.10.3__py3-none-any.whl → 2025.10.5__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 (29) hide show
  1. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  2. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  3. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  4. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  5. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +25 -0
  6. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  7. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  8. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  9. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  10. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +25 -0
  11. synapse_sdk/devtools/docs/sidebars.ts +14 -0
  12. synapse_sdk/plugins/categories/export/actions/export/action.py +8 -3
  13. synapse_sdk/plugins/categories/export/actions/export/utils.py +108 -8
  14. synapse_sdk/plugins/categories/upload/actions/upload/action.py +8 -1
  15. synapse_sdk/plugins/categories/upload/actions/upload/context.py +0 -1
  16. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +6 -2
  17. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +24 -9
  18. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +27 -7
  19. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +45 -12
  20. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +10 -5
  21. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +31 -6
  22. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +65 -37
  23. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +17 -2
  24. {synapse_sdk-2025.10.3.dist-info → synapse_sdk-2025.10.5.dist-info}/METADATA +1 -1
  25. {synapse_sdk-2025.10.3.dist-info → synapse_sdk-2025.10.5.dist-info}/RECORD +29 -21
  26. {synapse_sdk-2025.10.3.dist-info → synapse_sdk-2025.10.5.dist-info}/WHEEL +0 -0
  27. {synapse_sdk-2025.10.3.dist-info → synapse_sdk-2025.10.5.dist-info}/entry_points.txt +0 -0
  28. {synapse_sdk-2025.10.3.dist-info → synapse_sdk-2025.10.5.dist-info}/licenses/LICENSE +0 -0
  29. {synapse_sdk-2025.10.3.dist-info → synapse_sdk-2025.10.5.dist-info}/top_level.txt +0 -0
@@ -10,7 +10,14 @@ class RecursiveFileDiscoveryStrategy(FileDiscoveryStrategy):
10
10
 
11
11
  def discover(self, path: Path, recursive: bool) -> List[Path]:
12
12
  """Discover files recursively in the given path."""
13
- return [file_path for file_path in path.rglob('*') if file_path.is_file()]
13
+ # Exclude system directories
14
+ excluded_dirs = {'@eaDir', '.@__thumb', '@Recycle', '#recycle', '.DS_Store', 'Thumbs.db', '.synology'}
15
+
16
+ def exclude_dirs(file_path: Path) -> bool:
17
+ """Check if file path contains excluded directories."""
18
+ return any(excluded_dir in file_path.parts for excluded_dir in excluded_dirs)
19
+
20
+ return [file_path for file_path in path.rglob('*') if file_path.is_file() and not exclude_dirs(file_path)]
14
21
 
15
22
  def organize(self, files: List[Path], specs: Dict, metadata: Dict, type_dirs: Dict = None) -> List[Dict]:
16
23
  """Organize files according to specifications with metadata."""
@@ -42,57 +49,78 @@ class RecursiveFileDiscoveryStrategy(FileDiscoveryStrategy):
42
49
  # Performance optimization 2: Build metadata index for faster lookups
43
50
  metadata_index = self._build_metadata_index(metadata)
44
51
 
45
- # Group files by dataset
52
+ # Group files by dataset_key (stem-based matching)
53
+ # Strategy:
54
+ # 1. Group all files (required + optional) by their file stem
55
+ # 2. Only create data units for groups that have ALL required files
56
+ # 3. Optional files are automatically included if they match the stem
46
57
  dataset_files = {}
47
58
  required_specs = [spec['name'] for spec in specs if spec.get('is_required', False)]
48
59
 
49
60
  for file_path in files:
50
61
  # Determine which type directory this file belongs to
51
- file_path_str = str(file_path)
62
+ matched = False
52
63
  for spec_name, dir_path in type_dirs.items():
53
- dir_path_str = path_cache[dir_path]
54
- if file_path_str.startswith(dir_path_str):
55
- # Create unique dataset key using relative path from spec directory
64
+ # Check if file is under this spec's directory
65
+ # Use try/except for relative_to to ensure proper path matching
66
+ try:
56
67
  relative_path = file_path.relative_to(dir_path)
57
- # Use parent directory + stem as unique key to group related files
58
- if relative_path.parent != Path('.'):
59
- dataset_key = f'{relative_path.parent}_{file_path.stem}'
60
- else:
61
- dataset_key = file_path.stem
62
-
63
- if dataset_key not in dataset_files:
64
- dataset_files[dataset_key] = {}
65
-
66
- if spec_name not in dataset_files[dataset_key]:
67
- dataset_files[dataset_key][spec_name] = file_path
68
- else:
69
- # Keep the most recent file - only stat when needed
70
- existing_file = dataset_files[dataset_key][spec_name]
71
- try:
72
- if file_path.stat().st_mtime > existing_file.stat().st_mtime:
73
- dataset_files[dataset_key][spec_name] = file_path
74
- except (OSError, IOError):
75
- # If stat fails, keep existing file
76
- pass
77
-
78
- # Create organized files for datasets with all required files
79
- for dataset_key, files_dict in sorted(dataset_files.items()):
80
- if all(req in files_dict for req in required_specs):
81
- # Extract original file stem from dataset_key
82
- # If dataset_key contains path info (parent_stem), extract just the stem part
83
- if '_' in dataset_key and len(dataset_key.split('_')) >= 2:
84
- # Extract the last part after the last underscore as the original stem
85
- original_stem = dataset_key.split('_')[-1]
68
+ matched = True
69
+ except ValueError:
70
+ # File is not under this directory
71
+ continue
72
+
73
+ # Create unique dataset key using relative path from spec directory
74
+ # Use parent directory + stem as unique key to group related files
75
+ if relative_path.parent != Path('.'):
76
+ dataset_key = f'{relative_path.parent}_{file_path.stem}'
77
+ else:
78
+ dataset_key = file_path.stem
79
+
80
+ if dataset_key not in dataset_files:
81
+ dataset_files[dataset_key] = {}
82
+
83
+ if spec_name not in dataset_files[dataset_key]:
84
+ dataset_files[dataset_key][spec_name] = file_path
86
85
  else:
87
- original_stem = dataset_key
86
+ # Keep the most recent file - only stat when needed
87
+ existing_file = dataset_files[dataset_key][spec_name]
88
+ try:
89
+ if file_path.stat().st_mtime > existing_file.stat().st_mtime:
90
+ dataset_files[dataset_key][spec_name] = file_path
91
+ except (OSError, IOError):
92
+ # If stat fails, keep existing file
93
+ pass
94
+
95
+ # Found matching directory, move to next file
96
+ break
97
+
98
+ # Create organized files ONLY for datasets with ALL required files
99
+ # Optional files are included automatically if they match the stem
100
+ for dataset_key, files_dict in sorted(dataset_files.items()):
101
+ # Check if all required files are present
102
+ has_all_required = all(req in files_dict for req in required_specs)
88
103
 
89
- # Calculate most common file extension (optimized)
104
+ if has_all_required:
105
+ # Extract original file stem from actual file paths (more reliable than parsing dataset_key)
106
+ # Collect stems from all files in the group
107
+ file_stems = {}
90
108
  file_extensions = {}
109
+
91
110
  for file_path in files_dict.values():
111
+ stem = file_path.stem
92
112
  ext = file_path.suffix.lower()
113
+
114
+ # Count stems (to handle multiple files with slightly different names)
115
+ if stem:
116
+ file_stems[stem] = file_stems.get(stem, 0) + 1
117
+
118
+ # Count extensions
93
119
  if ext:
94
120
  file_extensions[ext] = file_extensions.get(ext, 0) + 1
95
121
 
122
+ # Use the most common stem (usually they're all the same)
123
+ original_stem = max(file_stems, key=file_stems.get) if file_stems else dataset_key
96
124
  origin_file_extension = max(file_extensions, key=file_extensions.get) if file_extensions else ''
97
125
 
98
126
  meta_data = {
@@ -12,12 +12,24 @@ class DefaultValidationStrategy(ValidationStrategy):
12
12
  """Validate action parameters."""
13
13
  errors = []
14
14
 
15
- # Check required parameters
16
- required_params = ['storage', 'data_collection', 'path', 'name']
15
+ # Check required parameters (common to all modes)
16
+ required_params = ['storage', 'data_collection', 'name']
17
17
  for param in required_params:
18
18
  if param not in params:
19
19
  errors.append(f'Missing required parameter: {param}')
20
20
 
21
+ # Check mode-specific requirements
22
+ use_single_path = params.get('use_single_path', True)
23
+
24
+ if use_single_path:
25
+ # Single-path mode: 'path' is required
26
+ if 'path' not in params:
27
+ errors.append("Missing required parameter 'path' in single-path mode")
28
+ else:
29
+ # Multi-path mode: 'assets' is required
30
+ if 'assets' not in params:
31
+ errors.append("Missing required parameter 'assets' in multi-path mode")
32
+
21
33
  # Check parameter types
22
34
  if 'storage' in params and not isinstance(params['storage'], int):
23
35
  errors.append("Parameter 'storage' must be an integer")
@@ -28,6 +40,9 @@ class DefaultValidationStrategy(ValidationStrategy):
28
40
  if 'is_recursive' in params and not isinstance(params['is_recursive'], bool):
29
41
  errors.append("Parameter 'is_recursive' must be a boolean")
30
42
 
43
+ if 'use_single_path' in params and not isinstance(params['use_single_path'], bool):
44
+ errors.append("Parameter 'use_single_path' must be a boolean")
45
+
31
46
  return ValidationResult(valid=len(errors) == 0, errors=errors)
32
47
 
33
48
  def validate_files(self, files: List[Dict], specs: Dict) -> ValidationResult:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 2025.10.3
3
+ Version: 2025.10.5
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -53,7 +53,7 @@ synapse_sdk/devtools/docs/README.md,sha256=yBzWf0K1ef4oymFXDaHo0nYWEgMQJqsOyrkNh
53
53
  synapse_sdk/devtools/docs/docusaurus.config.ts,sha256=K1b002RS0x0tsOyib_6CSgUlASEULC9vAX8YDpbsRN4,3229
54
54
  synapse_sdk/devtools/docs/package-lock.json,sha256=dtepgbPC8gq5uz-hdcac4hIU-Cs209tX0sfBuB7RfEQ,705694
55
55
  synapse_sdk/devtools/docs/package.json,sha256=8veqayA4U3OLpdQaz6AzB59RQwTU-5soeYlYYWIxq28,1187
56
- synapse_sdk/devtools/docs/sidebars.ts,sha256=6MuXgPLBmk-URt37Jnv1uJjiL98xiqSCiHvu-utCXq4,2427
56
+ synapse_sdk/devtools/docs/sidebars.ts,sha256=A0LdvAgIBOfZTfcGcc7QI4pvEEYoC--7N1g2KZPkG8k,3031
57
57
  synapse_sdk/devtools/docs/tsconfig.json,sha256=O9BNlRPjPiaVHW2_boShMbmTnh0Z2k0KQO6Alf9FMVY,215
58
58
  synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md,sha256=iP7gl_FPqo-qX13lkSRcRoT6ayJNmCkXoyvlm7GH248,312
59
59
  synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md,sha256=cM-dhhTeurEWMcdn0Kx-NpNts2YUUraSI_XFk_gVHEE,3122
@@ -96,8 +96,12 @@ synapse_sdk/devtools/docs/docs/features/utils/storage.md,sha256=uIpc37trKUm4XHe1
96
96
  synapse_sdk/devtools/docs/docs/features/utils/types.md,sha256=l84J1Ooa40xBYdvK1YpeKBT9kaqaWQUMNIFPUiC2e_U,1046
97
97
  synapse_sdk/devtools/docs/docs/plugins/export-plugins.md,sha256=Wajf3CZRQiytRx6SS1lIBlGO5o4F2vOw-xog51JiHJU,37074
98
98
  synapse_sdk/devtools/docs/docs/plugins/plugins.md,sha256=G6y3XZZHuC65ApfKE0fYHCAC5TOFnZqzE7VR-KOExVk,25074
99
+ synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md,sha256=Dhnlqd7okB3SoOZ5RYRYqeBBZnGfctZrlCYo1A7GWyA,6832
100
+ synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md,sha256=itkXVOV-pZNsqX0PIA9YhCJNp8iNgxVdQvM0sVahHJ4,47810
101
+ synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md,sha256=J-z2KkLt5WWTgbJGRxvqrZQxfHvur_QtCGA6iT5a0Og,17134
102
+ synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md,sha256=ARirm2jq5X2fVXWpZFX6ezh0aSIK5PCWvYC9nvsXIwY,41159
99
103
  synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md,sha256=GmTZYLyPDuUC9WzjNjf_zNh5FkN-VYzLuSo_dQzewWw,30796
100
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md,sha256=E42ycC5Jfb19DBdLZ2QnCiABUuXkJW4a0ZEQwnXi2ZY,15740
104
+ synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md,sha256=Q4jqN_W3AB-7PEDpkCxwKjmrjERGpb-UNqYA9I0O63Y,16513
101
105
  synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md,sha256=HpqGQ9yUYy4673gkdPNsqFZRdAXnDv3xbrC87brG50o,22288
102
106
  synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json,sha256=qQVHZ1p0CxHg5Gb4CYNxUSeqZ3LVo4nXN_N0yUMVpDM,180
103
107
  synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md,sha256=zJbcwKNVYGpLAGJO7e3cTdptFhb6m_NUzYDU5i6MWgc,1078
@@ -145,8 +149,12 @@ synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/feature
145
149
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md,sha256=JdDMC2FKovAU55pPEBoIUPPniU5mKAvA5w1Zb36u9AE,1207
146
150
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md,sha256=XcvZuio6NUDuDSe_XhYq1ACDaAJThmekP3anEzOCRks,38804
147
151
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md,sha256=wUuuOmQQY1dURZzJ0HSpiABaJWqKbxQn31Xfn-wUf8E,4947
152
+ synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md,sha256=JlPxHFzeyXx0xi2vpGXc-GTkFeg9R-Smpap0OjCyE7g,7592
153
+ synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md,sha256=UowD_fqWFVD81ubJKguX-O9fSf7L07i6Pft8DFdfVn0,48803
154
+ synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md,sha256=InL4EI0BkVXgjs-j7cPRYaRXDVxxMgBYYLs_9FdyKxk,18408
155
+ synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md,sha256=Ab8EeSYMWZclb_qxvBaLaz4IdCXySrKN2o68s24VT6I,42441
148
156
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md,sha256=zaodG2yGwNQiPLrI59dhShB0WxZ1EMNdXnQx9E5Kzlk,32523
149
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md,sha256=mcqq_bbC13KAgNZX6OUEbHxt03QhGMN9vF2MmU0WW-A,17111
157
+ synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md,sha256=7xo-N4NwDvF3QFVKafZosjG1IbtwI-BzTTTyo4kzU44,17953
150
158
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md,sha256=Rldxjo5DKmHfEBMoF86yLkgYGoip99gVkF7gBSkqNxM,23603
151
159
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json,sha256=SCLmysIhJ6XEEfnL7cOQb3s08EG4LA-ColdRRxecIH8,1601
152
160
  synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json,sha256=M-ly81cWnesYYtCRcfMvOsKl5P0z52K9kiw0T6GIQ60,429
@@ -202,12 +210,12 @@ synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py,sh
202
210
  synapse_sdk/plugins/categories/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
211
  synapse_sdk/plugins/categories/export/actions/__init__.py,sha256=crCFQ3tTUFjI3UhszDBpsE7eYi7zpswSHjQgTh3tccI,61
204
212
  synapse_sdk/plugins/categories/export/actions/export/__init__.py,sha256=6y0WRhcqyhxbZIfbRCF0ZI6CQgqSXmqCRLP1hTkdBPc,727
205
- synapse_sdk/plugins/categories/export/actions/export/action.py,sha256=-jlPIkm8BGxouq6rr0Q8nBSCIFAGEmMOlmmbX4DZxYI,6125
213
+ synapse_sdk/plugins/categories/export/actions/export/action.py,sha256=hh1_to4xPmY6Dv-4Ge24oGbyj3J92Wy95Dl0XIaS36Q,6303
206
214
  synapse_sdk/plugins/categories/export/actions/export/enums.py,sha256=XO4CF8jWt0c9lcUenKcjaKb0iXqQBFLyVMHmLm2_Nv8,3601
207
215
  synapse_sdk/plugins/categories/export/actions/export/exceptions.py,sha256=cDXVQetJvSlTbijN3elNwDLACELn2UxjyGnM2ALlKOk,1753
208
216
  synapse_sdk/plugins/categories/export/actions/export/models.py,sha256=NM9mSJAhcFFREUVlCy1LRbmq4Tm8rH_FGyZimS2aXho,2779
209
217
  synapse_sdk/plugins/categories/export/actions/export/run.py,sha256=bmilGnxfMWtIIvdIoY9sHkCPkQf_1-myur10I5TUEFY,6912
210
- synapse_sdk/plugins/categories/export/actions/export/utils.py,sha256=rbqoOIcgAOjlHV9Vn-2czHk6nzsxQUNu_lJzjkU9XfM,6367
218
+ synapse_sdk/plugins/categories/export/actions/export/utils.py,sha256=rr-PajbTmFagVCDBJzPgeh34jgPzjW6eDwS70Wwp76o,10902
211
219
  synapse_sdk/plugins/categories/export/templates/config.yaml,sha256=fkbSPp7ISZ9NJ1Vvcz1dBSWoYjseVp1eJKyu5PPoboM,516
212
220
  synapse_sdk/plugins/categories/export/templates/plugin/__init__.py,sha256=oC8hczDebLaWoTaxANw0n9uMjVR5sydBs7pgTw78rbM,16057
213
221
  synapse_sdk/plugins/categories/export/templates/plugin/export.py,sha256=q9dbJIM3iCNu8W7J6HfIqQ5zeCx1QfyUaj7adhBvshI,6892
@@ -266,8 +274,8 @@ synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py,sha256=
266
274
  synapse_sdk/plugins/categories/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
267
275
  synapse_sdk/plugins/categories/upload/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
276
  synapse_sdk/plugins/categories/upload/actions/upload/__init__.py,sha256=ShmALSr3rncCMHYlSJkYwdvEOsEHUxAzG5-hoERhmI0,548
269
- synapse_sdk/plugins/categories/upload/actions/upload/action.py,sha256=fFAZpNk_pZImaipeCcVKL4HdCnnj3BMr12mPduE-Cg0,9993
270
- synapse_sdk/plugins/categories/upload/actions/upload/context.py,sha256=RbAt1aag42H5h-m7VWv98e0X_7rVjlfBfILsQqrsK_c,6329
277
+ synapse_sdk/plugins/categories/upload/actions/upload/action.py,sha256=RtOV-Q2oG5oLggJQ5A2FKFj7axmIJT8wUcaF0zJTTZo,10357
278
+ synapse_sdk/plugins/categories/upload/actions/upload/context.py,sha256=4sBWs-IRstzK5U-9N-Ag1vuux6zos_D1P8MFQMaPrKk,6292
271
279
  synapse_sdk/plugins/categories/upload/actions/upload/enums.py,sha256=TQ-HiGI_-15rc11XQiCT6O5hRzmjkdCnRhX3Ci3bKk0,7856
272
280
  synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py,sha256=QIpts9h78OD8GWCIGjX9jSV4v3Gb0cqH9Eo-6OwN1Qk,1223
273
281
  synapse_sdk/plugins/categories/upload/actions/upload/factory.py,sha256=n8PE_LEz8ajLWmRg-CacBt0Bo0vhpDp89_QhvY2VMnQ,6336
@@ -280,11 +288,11 @@ synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py,sha256=-O
280
288
  synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py,sha256=yzOmjQKlcsmlB5XZqGgQbCyNwwUiKa9nWd2-Pn22Vls,3682
281
289
  synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py,sha256=JAc1L9UfiEhNQ2NWnBMX2Bs4Vej08QPYML6Mb0-a0jg,2200
282
290
  synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py,sha256=zLm4BOuu4d8YqXOjOEDhbEUFQ2t4eSsPJB5e_FKYczI,2345
283
- synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py,sha256=ooShRR1w7lAaA2STAtOo3LaLPnK_tC08oefP3dZ2V60,3366
284
- synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py,sha256=ymnTfsaVJj58r7U8nWIbjHgIdm0kXFjZlvl2PHJWksI,2401
285
- synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py,sha256=xgBVneUZQFeHe6l2MWc5ZZ5PCGtq_l7AHX8NLdmEQvg,8473
286
- synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py,sha256=ftphDYloGG0G0pmRHyMAF8pIpQPiofxYyHRR4RTxxAU,6932
287
- synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py,sha256=cuWjxfWrmHrklTt5rcM8XYJ40qE7IRXE4KdY5oK5ga4,3893
291
+ synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py,sha256=dekCGjg-uSTBY7eNcM7emptl9Yxr038xup86Kfea-NE,3604
292
+ synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py,sha256=JaPK1Mn7Cq4z69AIYps6iOsvVztownW5RnvyhbKhiGk,3137
293
+ synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py,sha256=bQ9V8BaZ0LW42_cCsojA3hyQoa7RUCUGOzEaNCqN9wM,9197
294
+ synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py,sha256=0MqkqeFxDjVFt5Jn_eOwHCrjhUNJU6xnS8H71eGkPdE,8712
295
+ synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py,sha256=GPw5RyTZLAPY2uPeay1iTMf0U86lTDT3n99FdRsBzgA,4147
288
296
  synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py,sha256=31N7lb41G1-LlwLaGkCQkKB8ep4FPxxtLhp0sv3-1Vs,2427
289
297
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py,sha256=JXysLlVGJDVtqZYFE6WIGcKgFNHcjqTzC0HO233Sak0,54
290
298
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py,sha256=fMzTpZA6M-qqi9ZHBQ134a5w97QChiafHoi03AqwTpA,2488
@@ -292,8 +300,8 @@ synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init
292
300
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py,sha256=YzKq5wHvrQ1_Tv__1xsX1ArLOEwgJNkDilZHg9k7GTY,1475
293
301
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py,sha256=bjvWu5t_nAK9Z8AWM_n1uwusMWd9G-7ddqSmwsH39l0,1344
294
302
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py,sha256=ELVncVuhTFvPrbGUjZZAD7upvV3IEsaRi9eTXyjaOU8,42
295
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py,sha256=OW_EyZJYi40Qgri4MhRKGj98M-0SOUz58ldM-de00Cc,9866
296
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py,sha256=gdIaOFB9QyO7MZTQTnX_iI_fn_ysEfRLKQRyRHzZkLE,11072
303
+ synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py,sha256=QLd8pS9y3NyeNRQf1Ch5xFkwGRFjJoYXgV6QmHAn8hs,11155
304
+ synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py,sha256=Q2tvBmuhlNndBVHR9asBaRH_N2Sx7N4doCXT1uLkP-M,12243
297
305
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py,sha256=d3sSL9boHCmYmbWupbJ7s8LOBakGCgjiPKRQIbfDCs8,36
298
306
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py,sha256=LlykEvwfyuRRCWozExQoolvIfHH1-B4vHOu7dykSTnQ,7333
299
307
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py,sha256=RGcSmc4N9JnqxC8R-AEo_4_wmg1KS0lij1PxXij9ipk,507
@@ -301,7 +309,7 @@ synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.
301
309
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/async_upload.py,sha256=Jn-yK0BqLgx1zRmIh9AJCDPsM2B9Yzu_0im5U305vnw,5720
302
310
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py,sha256=IkRpy561HMHE1Ji0l2Nv21CfH9ZiCrm4qBCADeZFTXs,1875
303
311
  synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py,sha256=aq-sI8tScvc0rX21qlLeBgJyKaVpC0hziMB5vcg5K3Y,38
304
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py,sha256=3v-nBoI8osnRKCYE0YqXRiA-yqe2_JRklVQ-Lo03LgY,1830
312
+ synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py,sha256=3_jLBqw2snnBAtDuKKwVS6ImMwDZHeOSnqph_jCq2nE,2515
305
313
  synapse_sdk/plugins/categories/upload/templates/README.md,sha256=30BC3CpHrPmjPeLExFtjnYi6qZrBcDdn4fOc5F-uMmc,8995
306
314
  synapse_sdk/plugins/categories/upload/templates/config.yaml,sha256=xrLMhK6QTvxnqep7ulrEuq8DxVPS7TOI2cogCaBxK2g,1127
307
315
  synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py,sha256=G8xv24PGWmL84Y77tElaEJhbjyjxklkqqdmxmZ834L0,11239
@@ -368,9 +376,9 @@ synapse_sdk/utils/storage/providers/gcp.py,sha256=i2BQCu1Kej1If9SuNr2_lEyTcr5M_n
368
376
  synapse_sdk/utils/storage/providers/http.py,sha256=2DhIulND47JOnS5ZY7MZUex7Su3peAPksGo1Wwg07L4,5828
369
377
  synapse_sdk/utils/storage/providers/s3.py,sha256=ZmqekAvIgcQBdRU-QVJYv1Rlp6VHfXwtbtjTSphua94,2573
370
378
  synapse_sdk/utils/storage/providers/sftp.py,sha256=_8s9hf0JXIO21gvm-JVS00FbLsbtvly4c-ETLRax68A,1426
371
- synapse_sdk-2025.10.3.dist-info/licenses/LICENSE,sha256=bKzmC5YAg4V1Fhl8OO_tqY8j62hgdncAkN7VrdjmrGk,1101
372
- synapse_sdk-2025.10.3.dist-info/METADATA,sha256=wvNWIgxu6dCxIudxnaO9yKxC-mg0xApM6CRul_s95m0,4186
373
- synapse_sdk-2025.10.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
374
- synapse_sdk-2025.10.3.dist-info/entry_points.txt,sha256=VNptJoGoNJI8yLXfBmhgUefMsmGI0m3-0YoMvrOgbxo,48
375
- synapse_sdk-2025.10.3.dist-info/top_level.txt,sha256=ytgJMRK1slVOKUpgcw3LEyHHP7S34J6n_gJzdkcSsw8,12
376
- synapse_sdk-2025.10.3.dist-info/RECORD,,
379
+ synapse_sdk-2025.10.5.dist-info/licenses/LICENSE,sha256=bKzmC5YAg4V1Fhl8OO_tqY8j62hgdncAkN7VrdjmrGk,1101
380
+ synapse_sdk-2025.10.5.dist-info/METADATA,sha256=N1gJlSwg8kEhRTkXxmHMAJntzig0DtxmmV_t1Z5uPkE,4186
381
+ synapse_sdk-2025.10.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
382
+ synapse_sdk-2025.10.5.dist-info/entry_points.txt,sha256=VNptJoGoNJI8yLXfBmhgUefMsmGI0m3-0YoMvrOgbxo,48
383
+ synapse_sdk-2025.10.5.dist-info/top_level.txt,sha256=ytgJMRK1slVOKUpgcw3LEyHHP7S34J6n_gJzdkcSsw8,12
384
+ synapse_sdk-2025.10.5.dist-info/RECORD,,