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.
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/PKG-INFO +1 -1
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/actions/upload.py +91 -58
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/PKG-INFO +1 -1
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.claude/commands/compare-branch.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.claude/commands/review-pr.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.claude/commands/update-pr-desc.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.coverage +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.github/workflows/lint.yml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.github/workflows/pypi-publish.yml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.github/workflows/test.yml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.gitignore +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.mcp.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/.pre-commit-config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/AGENT.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/CLAUDE.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/GEMINI.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/LICENSE +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/Makefile +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P1_rules.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P2_rules.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P3_rules.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/P4_rules.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/README.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/clients/agent.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/clients/backend.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/clients/base.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/plugins/categories.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/plugins/models.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/plugins/utils.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/utils/file.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/utils/storage.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/api/utils/types.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/categories.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/concepts/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/configuration.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/contributing.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/examples/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/faq.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/features/converters/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/features/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/features/plugins/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/code.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-theme-classic/footer.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-theme-classic/navbar.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/installation.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/introduction.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/quickstart.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/troubleshooting.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/_category_.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/congratulations.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/create-a-blog-post.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/create-a-document.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/create-a-page.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/deploy-your-site.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-basics/markdown-features.mdx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/_category_.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/img/localeDropdown.png +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/manage-docs-versions.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/translate-your-site.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/en/LC_MESSAGES/messages.mo +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/en/LC_MESSAGES/messages.po +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/ko/LC_MESSAGES/messages.mo +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/locale/ko/LC_MESSAGES/messages.po +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/pyproject.toml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/pytest-ci.ini +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/pytest.ini +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/requirements.test.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/requirements.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/setup.cfg +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/create.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/dataclass.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/default.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/delete.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/list.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/read.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/update.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/alias/utils.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/config.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/devtools.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/create.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/publish.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/cli/plugin/run.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/core.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/ray.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/agent/service.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/annotation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/core.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/data_collection.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/hitl.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/integration.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/ml.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/models.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/base.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/exceptions.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/ray/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/ray/core.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/ray/serve.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/utils.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/validators/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/validators/collections.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/config.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/.gitignore +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/README.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +0 -0
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/authors.yml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/blog/tags.yml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/docusaurus.config.ts +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/package-lock.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/package.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/sidebars.ts +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/css/custom.css +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/index.module.css +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/index.tsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/markdown-page.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/.nojekyll +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/logo.png +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/tsconfig.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/models.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/server.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/utils.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/.gitignore +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/README.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/dist/index.html +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/index.html +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/jsconfig.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/package-lock.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/package.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/pnpm-lock.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/App.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/App.module.css +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/assets/favicon.ico +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/Breadcrumbs.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/Layout.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/LogViewer.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/MessageViewer.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/NavigationSidebar.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/ServerStatusBar.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/components/icons.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/index.css +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/index.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/logo.svg +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/router.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/utils/api.js +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/ApplicationDetailView.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/ApplicationsView.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/HomeView.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/JobDetailView.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/src/views/PluginView.jsx +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/web/vite.config.js +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/i18n.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/loggers.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/base.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/decorators.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/actions/export.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/enums.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/export/templates/plugin/export.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/gradio.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/train.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/actions/tune.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/registry.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/templates.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/templates/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/enums.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/exceptions.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/models.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/plugin-config-schema.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/schema.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/upload.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/actions.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/config.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/legacy.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/plugins/utils/registry.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/shared/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/shared/enums.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/types.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/coco/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/coco/from_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/coco/to_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/dm/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/dm/from_v1.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/dm/to_v1.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/pascal/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/pascal/from_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/pascal/to_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/yolo/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/yolo/from_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/converters/yolo/to_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/dataset.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/debug.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/file.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/http.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/module_loading.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/network.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/config.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/errors.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/pydantic/validators.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/file_system.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/gcp.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/http.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/s3.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/providers/sftp.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/storage/registry.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/utils/string.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/SOURCES.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/dependency_links.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/requires.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk.egg-info/top_level.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/README.md +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/conftest.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/test_backend_models.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/test_base_client.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/clients/test_collection_validators.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/conftest.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/loggers/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/loggers/conftest.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/loggers/test_base_logger.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/conftest.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/data_validation/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/data_validation/validation/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/data_validation/validation/test_validation_action.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/test_actions.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/test_config.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/plugins/utils/test_registry.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/test_cli.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/test_cli_integration.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/__init__,py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/conftest.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/__init__.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/coco.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/test/annotations.json +0 -0
- {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
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/train/annotations.json +0 -0
- {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
- {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
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/categorized/valid/annotations.json +0 -0
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/coco/not_categorized/annotations.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/ver1/json/25669.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/dm/ver2/json/25669.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/categorized/classes.txt +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/pascal/not_categorized/classes.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/categorized/dataset.yaml +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/classes.txt +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/image/yolo/not_categorized/dataset.yaml +0 -0
- {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
- {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
- {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
- {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
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/pcd/dm/ver1/json/23791.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/pcd/dm/ver2/json/23791.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/prompt/dm/ver1/json/18662.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/prompt/dm/ver2/json/18662.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/text/dm/ver1/json/23811.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/text/dm/ver2/json/23811.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/video/dm/ver1/json/23831.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/data_types/video/dm/ver2/json/23831.json +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/dm_schema.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/pascal.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/fixtures/yolo.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_coco_from_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_coco_to_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_dm_v1_to_v2.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_dm_v2_to_v1.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_pascal_from_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_pascal_to_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_yolo_from_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/converters/test_yolo_to_dm.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/storage/conftest.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/storage/test_file_system_storage.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/storage/test_provider_selection.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/tests/utils/test_debug.py +0 -0
- {synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/uv.lock +0 -0
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
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
|
-
|
|
564
|
-
return {}
|
|
591
|
+
excel_path = None
|
|
565
592
|
|
|
566
|
-
|
|
567
|
-
if
|
|
568
|
-
|
|
569
|
-
|
|
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
|
|
630
|
-
if self.params.get('
|
|
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
|
-
#
|
|
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
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-theme-classic/footer.json
RENAMED
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/i18n/ko/docusaurus-theme-classic/navbar.json
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/docs/tutorial-extras/img/docsVersionDropdown.png
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/clients/backend/data_collection.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/docusaurus.config.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/index.module.css
RENAMED
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/src/pages/markdown-page.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/docusaurus.png
RENAMED
|
File without changes
|
{synapse_sdk-1.0.0a94 → synapse_sdk-1.0.0a96}/synapse_sdk/devtools/docs/static/img/favicon.ico
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|