synapse-sdk 1.0.0a94__tar.gz → 1.0.0a96__tar.gz

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 (430) hide show
  1. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/PKG-INFO +1 -1
  2. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/actions/upload.py +91 -58
  3. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/PKG-INFO +1 -1
  4. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.claude/commands/compare-branch.md +0 -0
  5. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.claude/commands/review-pr.md +0 -0
  6. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.claude/commands/update-pr-desc.md +0 -0
  7. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.coverage +0 -0
  8. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.github/workflows/lint.yml +0 -0
  9. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.github/workflows/pypi-publish.yml +0 -0
  10. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.github/workflows/test.yml +0 -0
  11. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.gitignore +0 -0
  12. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.mcp.json +0 -0
  13. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.pre-commit-config.yaml +0 -0
  14. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/AGENT.md +0 -0
  15. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/CLAUDE.md +0 -0
  16. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/GEMINI.md +0 -0
  17. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/LICENSE +0 -0
  18. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/Makefile +0 -0
  19. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P1_rules.md +0 -0
  20. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P2_rules.md +0 -0
  21. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P3_rules.md +0 -0
  22. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P4_rules.md +0 -0
  23. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/README.md +0 -0
  24. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/clients/agent.md +0 -0
  25. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/clients/backend.md +0 -0
  26. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/clients/base.md +0 -0
  27. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/index.md +0 -0
  28. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/plugins/categories.md +0 -0
  29. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/plugins/models.md +0 -0
  30. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/plugins/utils.md +0 -0
  31. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/utils/file.md +0 -0
  32. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/utils/storage.md +0 -0
  33. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/utils/types.md +0 -0
  34. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/categories.md +0 -0
  35. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/concepts/index.md +0 -0
  36. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/configuration.md +0 -0
  37. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/contributing.md +0 -0
  38. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/examples/index.md +0 -0
  39. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/faq.md +0 -0
  40. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/features/converters/index.md +0 -0
  41. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/features/index.md +0 -0
  42. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/features/plugins/index.md +0 -0
  43. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/code.json +0 -0
  44. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +0 -0
  45. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +0 -0
  46. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-theme-classic/footer.json +0 -0
  47. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-theme-classic/navbar.json +0 -0
  48. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/installation.md +0 -0
  49. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/introduction.md +0 -0
  50. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/quickstart.md +0 -0
  51. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/troubleshooting.md +0 -0
  52. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/_category_.json +0 -0
  53. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/congratulations.md +0 -0
  54. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/create-a-blog-post.md +0 -0
  55. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/create-a-document.md +0 -0
  56. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/create-a-page.md +0 -0
  57. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/deploy-your-site.md +0 -0
  58. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/markdown-features.mdx +0 -0
  59. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/_category_.json +0 -0
  60. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
  61. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/img/localeDropdown.png +0 -0
  62. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/manage-docs-versions.md +0 -0
  63. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/translate-your-site.md +0 -0
  64. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/en/LC_MESSAGES/messages.mo +0 -0
  65. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/en/LC_MESSAGES/messages.po +0 -0
  66. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/ko/LC_MESSAGES/messages.mo +0 -0
  67. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/ko/LC_MESSAGES/messages.po +0 -0
  68. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/pyproject.toml +0 -0
  69. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/pytest-ci.ini +0 -0
  70. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/pytest.ini +0 -0
  71. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/requirements.test.txt +0 -0
  72. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/requirements.txt +0 -0
  73. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/setup.cfg +0 -0
  74. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/__init__.py +0 -0
  75. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/__init__.py +0 -0
  76. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/__init__.py +0 -0
  77. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/create.py +0 -0
  78. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/dataclass.py +0 -0
  79. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/default.py +0 -0
  80. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/delete.py +0 -0
  81. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/list.py +0 -0
  82. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/read.py +0 -0
  83. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/update.py +0 -0
  84. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/utils.py +0 -0
  85. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/config.py +0 -0
  86. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/devtools.py +0 -0
  87. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/__init__.py +0 -0
  88. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/create.py +0 -0
  89. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/publish.py +0 -0
  90. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/run.py +0 -0
  91. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/__init__.py +0 -0
  92. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/__init__.py +0 -0
  93. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/core.py +0 -0
  94. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/ray.py +0 -0
  95. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/service.py +0 -0
  96. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/__init__.py +0 -0
  97. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/annotation.py +0 -0
  98. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/core.py +0 -0
  99. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/data_collection.py +0 -0
  100. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/hitl.py +0 -0
  101. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/integration.py +0 -0
  102. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/ml.py +0 -0
  103. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/models.py +0 -0
  104. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/base.py +0 -0
  105. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/exceptions.py +0 -0
  106. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/ray/__init__.py +0 -0
  107. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/ray/core.py +0 -0
  108. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/ray/serve.py +0 -0
  109. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/utils.py +0 -0
  110. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/validators/__init__.py +0 -0
  111. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/validators/collections.py +0 -0
  112. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/__init__.py +0 -0
  113. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/config.py +0 -0
  114. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/.gitignore +0 -0
  115. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/README.md +0 -0
  116. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +0 -0
  117. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +0 -0
  118. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +0 -0
  119. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  120. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +0 -0
  121. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/authors.yml +0 -0
  122. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/tags.yml +0 -0
  123. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/docusaurus.config.ts +0 -0
  124. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/package-lock.json +0 -0
  125. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/package.json +0 -0
  126. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/sidebars.ts +0 -0
  127. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +0 -0
  128. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +0 -0
  129. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/css/custom.css +0 -0
  130. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/index.module.css +0 -0
  131. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/index.tsx +0 -0
  132. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/markdown-page.md +0 -0
  133. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/.nojekyll +0 -0
  134. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
  135. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
  136. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
  137. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/logo.png +0 -0
  138. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +0 -0
  139. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +0 -0
  140. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +0 -0
  141. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/tsconfig.json +0 -0
  142. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/models.py +0 -0
  143. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/server.py +0 -0
  144. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/utils.py +0 -0
  145. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/.gitignore +0 -0
  146. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/README.md +0 -0
  147. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/dist/index.html +0 -0
  148. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/index.html +0 -0
  149. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/jsconfig.json +0 -0
  150. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/package-lock.json +0 -0
  151. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/package.json +0 -0
  152. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/pnpm-lock.yaml +0 -0
  153. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/App.jsx +0 -0
  154. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/App.module.css +0 -0
  155. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
  156. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +0 -0
  157. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/Layout.jsx +0 -0
  158. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/LogViewer.jsx +0 -0
  159. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/MessageViewer.jsx +0 -0
  160. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +0 -0
  161. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +0 -0
  162. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/icons.jsx +0 -0
  163. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/index.css +0 -0
  164. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/index.jsx +0 -0
  165. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/logo.svg +0 -0
  166. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/router.jsx +0 -0
  167. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/utils/api.js +0 -0
  168. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +0 -0
  169. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +0 -0
  170. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/HomeView.jsx +0 -0
  171. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/JobDetailView.jsx +0 -0
  172. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/PluginView.jsx +0 -0
  173. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/vite.config.js +0 -0
  174. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/i18n.py +0 -0
  175. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/loggers.py +0 -0
  176. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/__init__.py +0 -0
  177. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/__init__.py +0 -0
  178. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/base.py +0 -0
  179. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
  180. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
  181. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
  182. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
  183. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
  184. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
  185. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/decorators.py +0 -0
  186. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
  187. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
  188. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/actions/export.py +0 -0
  189. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/enums.py +0 -0
  190. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/templates/config.yaml +0 -0
  191. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +0 -0
  192. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/templates/plugin/export.py +0 -0
  193. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/__init__.py +0 -0
  194. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/__init__.py +0 -0
  195. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
  196. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/gradio.py +0 -0
  197. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
  198. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
  199. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/train.py +0 -0
  200. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/tune.py +0 -0
  201. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
  202. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
  203. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
  204. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py +0 -0
  205. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
  206. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
  207. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
  208. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/__init__.py +0 -0
  209. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/actions/__init__.py +0 -0
  210. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
  211. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
  212. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py +0 -0
  213. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
  214. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/__init__.py +0 -0
  215. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +0 -0
  216. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
  217. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +0 -0
  218. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
  219. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
  220. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
  221. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +0 -0
  222. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/registry.py +0 -0
  223. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/__init__.py +0 -0
  224. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/actions/__init__.py +0 -0
  225. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
  226. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
  227. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py +0 -0
  228. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
  229. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/templates.py +0 -0
  230. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/__init__.py +0 -0
  231. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
  232. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/templates/config.yaml +0 -0
  233. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +0 -0
  234. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +0 -0
  235. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/enums.py +0 -0
  236. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/exceptions.py +0 -0
  237. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/models.py +0 -0
  238. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
  239. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
  240. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
  241. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/plugin-config-schema.json +0 -0
  242. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/schema.json +0 -0
  243. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
  244. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
  245. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
  246. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
  247. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
  248. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
  249. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
  250. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/upload.py +0 -0
  251. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/__init__.py +0 -0
  252. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/actions.py +0 -0
  253. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/config.py +0 -0
  254. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/legacy.py +0 -0
  255. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/registry.py +0 -0
  256. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/shared/__init__.py +0 -0
  257. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/shared/enums.py +0 -0
  258. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/types.py +0 -0
  259. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/__init__.py +0 -0
  260. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/__init__.py +0 -0
  261. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/coco/__init__.py +0 -0
  262. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/coco/from_dm.py +0 -0
  263. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/coco/to_dm.py +0 -0
  264. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/dm/__init__.py +0 -0
  265. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/dm/from_v1.py +0 -0
  266. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/dm/to_v1.py +0 -0
  267. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/pascal/__init__.py +0 -0
  268. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/pascal/from_dm.py +0 -0
  269. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/pascal/to_dm.py +0 -0
  270. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/yolo/__init__.py +0 -0
  271. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/yolo/from_dm.py +0 -0
  272. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/yolo/to_dm.py +0 -0
  273. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/dataset.py +0 -0
  274. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/debug.py +0 -0
  275. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/file.py +0 -0
  276. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/http.py +0 -0
  277. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/module_loading.py +0 -0
  278. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/network.py +0 -0
  279. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/__init__.py +0 -0
  280. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/config.py +0 -0
  281. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/errors.py +0 -0
  282. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/validators.py +0 -0
  283. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/__init__.py +0 -0
  284. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/__init__.py +0 -0
  285. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/file_system.py +0 -0
  286. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/gcp.py +0 -0
  287. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/http.py +0 -0
  288. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/s3.py +0 -0
  289. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/sftp.py +0 -0
  290. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/registry.py +0 -0
  291. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/string.py +0 -0
  292. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/SOURCES.txt +0 -0
  293. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/dependency_links.txt +0 -0
  294. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/entry_points.txt +0 -0
  295. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/requires.txt +0 -0
  296. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/top_level.txt +0 -0
  297. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/README.md +0 -0
  298. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/__init__.py +0 -0
  299. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/__init__.py +0 -0
  300. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/conftest.py +0 -0
  301. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/test_backend_models.py +0 -0
  302. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/test_base_client.py +0 -0
  303. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/test_collection_validators.py +0 -0
  304. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/conftest.py +0 -0
  305. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/loggers/__init__.py +0 -0
  306. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/loggers/conftest.py +0 -0
  307. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/loggers/test_base_logger.py +0 -0
  308. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/conftest.py +0 -0
  309. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/data_validation/__init__.py +0 -0
  310. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/data_validation/validation/__init__.py +0 -0
  311. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/data_validation/validation/test_validation_action.py +0 -0
  312. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/__init__.py +0 -0
  313. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/test_actions.py +0 -0
  314. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/test_config.py +0 -0
  315. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/test_registry.py +0 -0
  316. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/test_cli.py +0 -0
  317. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/test_cli_integration.py +0 -0
  318. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/__init__,py +0 -0
  319. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/__init__.py +0 -0
  320. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/conftest.py +0 -0
  321. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/__init__.py +0 -0
  322. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/coco.py +0 -0
  323. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/test/annotations.json +0 -0
  324. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/test/new_dm_data8.jpg +0 -0
  325. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/test/new_dm_data9.jpg +0 -0
  326. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/train/annotations.json +0 -0
  327. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/train/new_dm_data4.jpg +0 -0
  328. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/train/new_dm_data5.jpg +0 -0
  329. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/train/new_dm_data6.jpg +0 -0
  330. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/valid/annotations.json +0 -0
  331. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/valid/new_dm_data7.jpg +0 -0
  332. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/not_categorized/annotations.json +0 -0
  333. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/not_categorized/new_dm_data1.jpg +0 -0
  334. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/not_categorized/new_dm_data2.jpg +0 -0
  335. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/not_categorized/new_dm_data3.jpg +0 -0
  336. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/test/json/dm_1.json +0 -0
  337. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/test/json/dm_2.json +0 -0
  338. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/test/json/dm_3.json +0 -0
  339. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/test/original_files/dm_1.jpg +0 -0
  340. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/test/original_files/dm_2.jpg +0 -0
  341. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/test/original_files/dm_3.jpg +0 -0
  342. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/json/dm_4.json +0 -0
  343. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/json/dm_5.json +0 -0
  344. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/json/dm_6.json +0 -0
  345. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/json/dm_7.json +0 -0
  346. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/original_files/dm_4.jpg +0 -0
  347. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/original_files/dm_5.jpg +0 -0
  348. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/original_files/dm_6.jpg +0 -0
  349. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/train/original_files/dm_7.jpg +0 -0
  350. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/valid/json/dm_8.json +0 -0
  351. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/valid/json/dm_9.json +0 -0
  352. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/valid/original_files/dm_8.jpg +0 -0
  353. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/categorized/valid/original_files/dm_9.jpg +0 -0
  354. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/not_categorized/json/dm_1.json +0 -0
  355. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/not_categorized/json/dm_2.json +0 -0
  356. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/not_categorized/json/dm_3.json +0 -0
  357. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/not_categorized/original_files/dm_1.jpg +0 -0
  358. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/not_categorized/original_files/dm_2.jpg +0 -0
  359. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/not_categorized/original_files/dm_3.jpg +0 -0
  360. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/ver1/json/25669.json +0 -0
  361. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/ver2/json/25669.json +0 -0
  362. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/classes.txt +0 -0
  363. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/test/Annotations/9139.xml +0 -0
  364. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/test/Annotations/9140.xml +0 -0
  365. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/test/Annotations/9141.xml +0 -0
  366. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/test/Images/9139.jpg +0 -0
  367. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/test/Images/9140.jpg +0 -0
  368. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/test/Images/9141.jpg +0 -0
  369. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/train/Annotations/9136.xml +0 -0
  370. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/train/Annotations/9137.xml +0 -0
  371. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/train/Annotations/9138.xml +0 -0
  372. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/train/Images/9136.jpg +0 -0
  373. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/train/Images/9137.jpg +0 -0
  374. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/train/Images/9138.jpg +0 -0
  375. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/valid/Annotations/9125.xml +0 -0
  376. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/valid/Annotations/9126.xml +0 -0
  377. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/valid/Annotations/9127.xml +0 -0
  378. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/valid/Images/9125.jpg +0 -0
  379. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/valid/Images/9126.jpg +0 -0
  380. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/valid/Images/9127.jpg +0 -0
  381. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/Annotations/9122.xml +0 -0
  382. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/Annotations/9123.xml +0 -0
  383. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/Annotations/9124.xml +0 -0
  384. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/Images/9122.jpg +0 -0
  385. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/Images/9123.jpg +0 -0
  386. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/Images/9124.jpg +0 -0
  387. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/classes.txt +0 -0
  388. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/dataset.yaml +0 -0
  389. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/test/images/13744.jpg +0 -0
  390. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/test/images/13745.jpg +0 -0
  391. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/test/images/13746.jpg +0 -0
  392. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/test/labels/13744.txt +0 -0
  393. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/test/labels/13745.txt +0 -0
  394. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/test/labels/13746.txt +0 -0
  395. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/train/images/13782.jpg +0 -0
  396. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/train/labels/13782.txt +0 -0
  397. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/valid/images/13761.jpg +0 -0
  398. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/valid/images/13764.jpg +0 -0
  399. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/valid/labels/13761.txt +0 -0
  400. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/valid/labels/13764.txt +0 -0
  401. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/classes.txt +0 -0
  402. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/dataset.yaml +0 -0
  403. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/images/25332.jpg +0 -0
  404. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/images/25334.jpg +0 -0
  405. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/labels/25332.txt +0 -0
  406. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/labels/25334.txt +0 -0
  407. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/pcd/dm/ver1/json/23791.json +0 -0
  408. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/pcd/dm/ver2/json/23791.json +0 -0
  409. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/prompt/dm/ver1/json/18662.json +0 -0
  410. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/prompt/dm/ver2/json/18662.json +0 -0
  411. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/text/dm/ver1/json/23811.json +0 -0
  412. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/text/dm/ver2/json/23811.json +0 -0
  413. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/video/dm/ver1/json/23831.json +0 -0
  414. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/video/dm/ver2/json/23831.json +0 -0
  415. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/dm_schema.py +0 -0
  416. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/pascal.py +0 -0
  417. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/yolo.py +0 -0
  418. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_coco_from_dm.py +0 -0
  419. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_coco_to_dm.py +0 -0
  420. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_dm_v1_to_v2.py +0 -0
  421. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_dm_v2_to_v1.py +0 -0
  422. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_pascal_from_dm.py +0 -0
  423. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_pascal_to_dm.py +0 -0
  424. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_yolo_from_dm.py +0 -0
  425. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_yolo_to_dm.py +0 -0
  426. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/storage/conftest.py +0 -0
  427. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/storage/test_file_system_storage.py +0 -0
  428. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/storage/test_provider_selection.py +0 -0
  429. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/test_debug.py +0 -0
  430. {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a94
3
+ Version: 1.0.0a96
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -24,6 +24,20 @@ from synapse_sdk.utils.pydantic.validators import non_blank
24
24
  from synapse_sdk.utils.storage import get_pathlib
25
25
 
26
26
 
27
+ class PathAwareJSONEncoder(json.JSONEncoder):
28
+ """Custom JSON encoder that handles Path-like objects."""
29
+
30
+ def default(self, obj):
31
+ if hasattr(obj, '__fspath__') or hasattr(obj, 'as_posix'):
32
+ # Handle Path-like objects (including UPath, SFTPPath, pathlib.Path, etc.)
33
+ return str(obj)
34
+ elif hasattr(obj, 'isoformat'):
35
+ # Handle datetime objects
36
+ return obj.isoformat()
37
+ # Let the base class handle other types
38
+ return super().default(obj)
39
+
40
+
27
41
  class UploadStatus(str, Enum):
28
42
  SUCCESS = 'success'
29
43
  FAILED = 'failed'
@@ -67,7 +81,8 @@ class UploadRun(Run):
67
81
  status (UploadStatus): The status of the data file.
68
82
  """
69
83
  now = datetime.now().isoformat()
70
- data_file_info_str = json.dumps(data_file_info, ensure_ascii=False)
84
+ # Use custom JSON encoder to handle Path-like objects
85
+ data_file_info_str = json.dumps(data_file_info, ensure_ascii=False, cls=PathAwareJSONEncoder)
71
86
  self.log(
72
87
  'upload_data_file',
73
88
  self.DataFileLog(data_file_info=data_file_info_str, status=status.value, created=now).model_dump(),
@@ -192,8 +207,7 @@ class UploadParams(BaseModel):
192
207
  storage (int): The storage of the action.
193
208
  collection (int): The collection of the action.
194
209
  project (int | None): The project of the action.
195
- use_excel_metadata (bool): Whether to use excel file for additional metadata.
196
- excel_metadata_path (str | None): Path to excel file containing metadata.
210
+ excel_metadata_path (str | None): Path to excel file containing metadata. Defaults to 'meta.xlsx' or 'meta.xls' in the path directory.
197
211
  """
198
212
 
199
213
  name: Annotated[str, AfterValidator(non_blank)]
@@ -202,7 +216,6 @@ class UploadParams(BaseModel):
202
216
  storage: int
203
217
  collection: int
204
218
  project: int | None
205
- use_excel_metadata: bool = False
206
219
  excel_metadata_path: str | None = None
207
220
 
208
221
  @field_validator('storage', mode='before')
@@ -251,7 +264,7 @@ class UploadParams(BaseModel):
251
264
  @field_validator('excel_metadata_path', mode='before')
252
265
  @classmethod
253
266
  def check_excel_metadata_path(cls, value: str, info) -> str:
254
- """Validate excel metadata file exists and is secure if use_excel_metadata is True.
267
+ """Validate excel metadata file exists and is secure if provided.
255
268
 
256
269
  This validator performs comprehensive security checks including:
257
270
  - File existence and format validation
@@ -271,48 +284,45 @@ class UploadParams(BaseModel):
271
284
  if not value:
272
285
  return value
273
286
 
274
- # Check if use_excel_metadata is True
275
- data = info.data
276
- if data.get('use_excel_metadata', False):
277
- excel_path = Path(value)
287
+ excel_path = Path(value)
278
288
 
279
- # Check file existence
280
- if not excel_path.exists():
281
- raise PydanticCustomError('file_not_found', _('Excel metadata file not found.'))
282
-
283
- # Check file extension
284
- if excel_path.suffix.lower() not in ['.xlsx', '.xls']:
285
- raise PydanticCustomError('invalid_file_type', _('Excel metadata file must be .xlsx or .xls format.'))
286
-
287
- # Security check: file size limit
288
- file_size = excel_path.stat().st_size
289
- excel_config = ExcelSecurityConfig()
290
- if file_size > excel_config.MAX_FILE_SIZE_BYTES:
291
- raise PydanticCustomError(
292
- 'file_too_large',
293
- _('Excel metadata file is too large. Maximum size is {}MB.').format(excel_config.MAX_FILE_SIZE_MB),
294
- )
289
+ # Check file existence
290
+ if not excel_path.exists():
291
+ raise PydanticCustomError('file_not_found', _('Excel metadata file not found.'))
295
292
 
296
- # Basic security check: ensure file is readable and not corrupted
297
- try:
298
- with open(excel_path, 'rb') as f:
299
- # Read first few bytes to check if it's a valid Excel file
300
- header = f.read(8)
301
- if not header:
302
- raise PydanticCustomError('invalid_file', _('Excel metadata file appears to be empty.'))
303
-
304
- # Check for valid Excel file signatures
305
- if excel_path.suffix.lower() == '.xlsx':
306
- # XLSX files start with PK (ZIP signature)
307
- if not header.startswith(b'PK'):
308
- raise PydanticCustomError('invalid_file', _('Excel metadata file appears to be corrupted.'))
309
- elif excel_path.suffix.lower() == '.xls':
310
- # XLS files have specific OLE signatures
311
- if not (header.startswith(b'\xd0\xcf\x11\xe0') or header.startswith(b'\x09\x08')):
312
- raise PydanticCustomError('invalid_file', _('Excel metadata file appears to be corrupted.'))
313
-
314
- except (OSError, IOError):
315
- raise PydanticCustomError('file_access_error', _('Cannot access Excel metadata file.'))
293
+ # Check file extension
294
+ if excel_path.suffix.lower() not in ['.xlsx', '.xls']:
295
+ raise PydanticCustomError('invalid_file_type', _('Excel metadata file must be .xlsx or .xls format.'))
296
+
297
+ # Security check: file size limit
298
+ file_size = excel_path.stat().st_size
299
+ excel_config = ExcelSecurityConfig()
300
+ if file_size > excel_config.MAX_FILE_SIZE_BYTES:
301
+ raise PydanticCustomError(
302
+ 'file_too_large',
303
+ _('Excel metadata file is too large. Maximum size is {}MB.').format(excel_config.MAX_FILE_SIZE_MB),
304
+ )
305
+
306
+ # Basic security check: ensure file is readable and not corrupted
307
+ try:
308
+ with open(excel_path, 'rb') as f:
309
+ # Read first few bytes to check if it's a valid Excel file
310
+ header = f.read(8)
311
+ if not header:
312
+ raise PydanticCustomError('invalid_file', _('Excel metadata file appears to be empty.'))
313
+
314
+ # Check for valid Excel file signatures
315
+ if excel_path.suffix.lower() == '.xlsx':
316
+ # XLSX files start with PK (ZIP signature)
317
+ if not header.startswith(b'PK'):
318
+ raise PydanticCustomError('invalid_file', _('Excel metadata file appears to be corrupted.'))
319
+ elif excel_path.suffix.lower() == '.xls':
320
+ # XLS files have specific OLE signatures
321
+ if not (header.startswith(b'\xd0\xcf\x11\xe0') or header.startswith(b'\x09\x08')):
322
+ raise PydanticCustomError('invalid_file', _('Excel metadata file appears to be corrupted.'))
323
+
324
+ except (OSError, IOError):
325
+ raise PydanticCustomError('file_access_error', _('Cannot access Excel metadata file.'))
316
326
 
317
327
  return value
318
328
 
@@ -543,6 +553,24 @@ class UploadAction(Action):
543
553
  if row_count > self.excel_config.MAX_ROWS:
544
554
  raise ExcelParsingError(f'Too many rows: {row_count} (max: {self.excel_config.MAX_ROWS})')
545
555
 
556
+ def _find_excel_metadata_file(self, pathlib_cwd: Path) -> Optional[Path]:
557
+ """Find Excel metadata file in the directory.
558
+
559
+ Checks for meta.xlsx and meta.xls in the given directory.
560
+
561
+ Args:
562
+ pathlib_cwd (Path): The pathlib object representing the current working directory.
563
+
564
+ Returns:
565
+ Optional[Path]: Path to the Excel metadata file if found, None otherwise.
566
+ """
567
+ # Check for xlsx first, then xls
568
+ for extension in ['.xlsx', '.xls']:
569
+ excel_path = pathlib_cwd / f'meta{extension}'
570
+ if excel_path.exists() and excel_path.is_file():
571
+ return excel_path
572
+ return None
573
+
546
574
  def _read_excel_metadata(self, pathlib_cwd: Path) -> Dict[str, Dict[str, Any]]:
547
575
  """Read metadata from excel file with comprehensive security validation.
548
576
 
@@ -560,13 +588,20 @@ class UploadAction(Action):
560
588
  ExcelSecurityError: If security validation fails
561
589
  ExcelParsingError: If Excel content is invalid or exceeds limits
562
590
  """
563
- if not self.params.get('use_excel_metadata', False) or not self.params.get('excel_metadata_path'):
564
- return {}
591
+ excel_path = None
565
592
 
566
- excel_path = pathlib_cwd / self.params['excel_metadata_path']
567
- if not excel_path.exists():
568
- self.run.log_message(f'Excel metadata file not found: {excel_path}', context=Context.WARNING.value)
569
- return {}
593
+ # Check if user provided a specific excel_metadata_path
594
+ if self.params.get('excel_metadata_path'):
595
+ excel_path = pathlib_cwd / self.params['excel_metadata_path']
596
+ if not excel_path.exists():
597
+ self.run.log_message(f'Excel metadata file not found: {excel_path}', context=Context.WARNING.value)
598
+ return {}
599
+ else:
600
+ # Look for default meta.xlsx or meta.xls
601
+ excel_path = self._find_excel_metadata_file(pathlib_cwd)
602
+ if not excel_path:
603
+ # No Excel metadata file found, return empty dict (not an error)
604
+ return {}
570
605
 
571
606
  try:
572
607
  # Prepare Excel file with security validation
@@ -611,28 +646,26 @@ class UploadAction(Action):
611
646
  storage = self.client.get_storage(self.params['storage'])
612
647
  pathlib_cwd = get_pathlib(storage, self.params['path'])
613
648
 
614
- # Read excel metadata if configured
649
+ # Read excel metadata if configured or default file exists
615
650
  excel_metadata: Dict[str, Dict[str, Any]] = {}
616
651
  try:
617
652
  excel_metadata = self._read_excel_metadata(pathlib_cwd)
618
653
  if excel_metadata:
619
654
  self.run.log_message(f'Excel metadata loaded for {len(excel_metadata)} files')
620
- elif self.params.get('use_excel_metadata', False):
621
- self.run.log_message('Excel metadata enabled but no entries found')
622
- # Don't log anything if Excel metadata is not being used
623
655
  except ExcelSecurityError as e:
624
656
  # Security violations should stop the process entirely
625
657
  self.run.log_message(f'Excel security validation failed: {str(e)}', context=Context.ERROR.value)
626
658
  self.run.log_message('Upload aborted due to Excel security concerns.', context=Context.ERROR.value)
627
659
  return result
628
660
  except ExcelParsingError as e:
629
- # Parsing errors can be non-critical if Excel metadata is optional
630
- if self.params.get('use_excel_metadata', False):
661
+ # Parsing errors can be non-critical if user didn't explicitly provide Excel file
662
+ if self.params.get('excel_metadata_path'):
663
+ # User explicitly provided Excel file, treat as error
631
664
  self.run.log_message(f'Excel parsing failed: {str(e)}', context=Context.ERROR.value)
632
665
  self.run.log_message('Upload aborted due to Excel parsing failure.', context=Context.ERROR.value)
633
666
  return result
634
667
  else:
635
- # If Excel metadata is not explicitly enabled, treat as warning and continue
668
+ # Default Excel file found but failed to parse, treat as warning and continue
636
669
  self.run.log_message(f'Excel parsing failed (continuing): {str(e)}', context=Context.WARNING.value)
637
670
  excel_metadata = {}
638
671
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a94
3
+ Version: 1.0.0a96
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes