synapse-sdk 1.0.0a39__tar.gz → 1.0.0a41__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 (161) hide show
  1. {synapse_sdk-1.0.0a39/synapse_sdk.egg-info → synapse_sdk-1.0.0a41}/PKG-INFO +1 -1
  2. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/gradio.py +45 -49
  3. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/file.py +0 -1
  4. synapse_sdk-1.0.0a41/synapse_sdk/utils/http.py +110 -0
  5. synapse_sdk-1.0.0a41/synapse_sdk/utils/network.py +37 -0
  6. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41/synapse_sdk.egg-info}/PKG-INFO +1 -1
  7. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk.egg-info/SOURCES.txt +1 -0
  8. synapse_sdk-1.0.0a39/synapse_sdk/utils/network.py +0 -16
  9. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/.github/workflows/lint.yml +0 -0
  10. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/.github/workflows/pypi-publish.yml +0 -0
  11. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/.gitignore +0 -0
  12. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/.pre-commit-config.yaml +0 -0
  13. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/LICENSE +0 -0
  14. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/README.md +0 -0
  15. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/locale/en/LC_MESSAGES/messages.mo +0 -0
  16. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/locale/en/LC_MESSAGES/messages.po +0 -0
  17. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/locale/ko/LC_MESSAGES/messages.mo +0 -0
  18. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/locale/ko/LC_MESSAGES/messages.po +0 -0
  19. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/pyproject.toml +0 -0
  20. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/requirements.test.txt +0 -0
  21. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/requirements.txt +0 -0
  22. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/setup.cfg +0 -0
  23. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/__init__.py +0 -0
  24. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/__init__.py +0 -0
  25. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/__init__.py +0 -0
  26. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/create.py +0 -0
  27. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/dataclass.py +0 -0
  28. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/default.py +0 -0
  29. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/delete.py +0 -0
  30. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/list.py +0 -0
  31. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/read.py +0 -0
  32. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/update.py +0 -0
  33. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/alias/utils.py +0 -0
  34. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/plugin/__init__.py +0 -0
  35. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/plugin/create.py +0 -0
  36. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/plugin/publish.py +0 -0
  37. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/cli/plugin/run.py +0 -0
  38. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/__init__.py +0 -0
  39. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/agent/__init__.py +0 -0
  40. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/agent/core.py +0 -0
  41. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/agent/ray.py +0 -0
  42. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/agent/service.py +0 -0
  43. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/__init__.py +0 -0
  44. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/annotation.py +0 -0
  45. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/core.py +0 -0
  46. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/dataset.py +0 -0
  47. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/hitl.py +0 -0
  48. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/integration.py +0 -0
  49. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/ml.py +0 -0
  50. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/backend/models.py +0 -0
  51. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/base.py +0 -0
  52. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/exceptions.py +0 -0
  53. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/ray/__init__.py +0 -0
  54. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/ray/core.py +0 -0
  55. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/ray/serve.py +0 -0
  56. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/utils.py +0 -0
  57. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/validators/__init__.py +0 -0
  58. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/clients/validators/collections.py +0 -0
  59. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/i18n.py +0 -0
  60. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/loggers.py +0 -0
  61. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/__init__.py +0 -0
  62. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/__init__.py +0 -0
  63. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/base.py +0 -0
  64. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
  65. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
  66. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
  67. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
  68. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
  69. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
  70. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/decorators.py +0 -0
  71. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
  72. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
  73. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/actions/export.py +0 -0
  74. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/enums.py +0 -0
  75. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/templates/config.yaml +0 -0
  76. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +0 -0
  77. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/export/templates/plugin/export.py +0 -0
  78. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/__init__.py +0 -0
  79. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/__init__.py +0 -0
  80. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
  81. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
  82. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
  83. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/train.py +0 -0
  84. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/actions/tune.py +0 -0
  85. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
  86. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
  87. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
  88. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py +0 -0
  89. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
  90. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
  91. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
  92. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/post_annotation/__init__.py +0 -0
  93. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/post_annotation/actions/__init__.py +0 -0
  94. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
  95. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
  96. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py +0 -0
  97. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
  98. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/pre_annotation/__init__.py +0 -0
  99. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +0 -0
  100. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
  101. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
  102. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
  103. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
  104. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/registry.py +0 -0
  105. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/smart_tool/__init__.py +0 -0
  106. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/smart_tool/actions/__init__.py +0 -0
  107. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
  108. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
  109. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py +0 -0
  110. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
  111. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/templates.py +0 -0
  112. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/upload/__init__.py +0 -0
  113. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
  114. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/upload/actions/upload.py +0 -0
  115. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/upload/templates/config.yaml +0 -0
  116. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +0 -0
  117. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +0 -0
  118. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/enums.py +0 -0
  119. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/exceptions.py +0 -0
  120. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/models.py +0 -0
  121. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
  122. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
  123. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
  124. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
  125. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
  126. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
  127. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
  128. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
  129. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
  130. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
  131. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/upload.py +0 -0
  132. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/plugins/utils.py +0 -0
  133. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/shared/__init__.py +0 -0
  134. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/shared/enums.py +0 -0
  135. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/types.py +0 -0
  136. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/__init__.py +0 -0
  137. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/dataset.py +0 -0
  138. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/debug.py +0 -0
  139. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/module_loading.py +0 -0
  140. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/pydantic/__init__.py +0 -0
  141. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/pydantic/config.py +0 -0
  142. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/pydantic/errors.py +0 -0
  143. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/pydantic/validators.py +0 -0
  144. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/storage/__init__.py +0 -0
  145. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/storage/providers/__init__.py +0 -0
  146. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/storage/providers/gcp.py +0 -0
  147. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/storage/providers/s3.py +0 -0
  148. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/storage/providers/sftp.py +0 -0
  149. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/storage/registry.py +0 -0
  150. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk/utils/string.py +0 -0
  151. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk.egg-info/dependency_links.txt +0 -0
  152. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk.egg-info/entry_points.txt +0 -0
  153. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk.egg-info/requires.txt +0 -0
  154. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/synapse_sdk.egg-info/top_level.txt +0 -0
  155. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/__init__.py +0 -0
  156. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/clients/__init__.py +0 -0
  157. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/clients/test_backend_models.py +0 -0
  158. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/clients/test_base_client.py +0 -0
  159. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/clients/test_collection_validators.py +0 -0
  160. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/utils/__init__,py +0 -0
  161. {synapse_sdk-1.0.0a39 → synapse_sdk-1.0.0a41}/tests/utils/test_debug.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a39
3
+ Version: 1.0.0a41
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -6,6 +6,7 @@ from pathlib import Path
6
6
  from synapse_sdk.plugins.categories.base import Action
7
7
  from synapse_sdk.plugins.categories.decorators import register_action
8
8
  from synapse_sdk.plugins.enums import PluginCategory, RunMethod
9
+ from synapse_sdk.utils.network import get_available_ports_host
9
10
 
10
11
 
11
12
  @register_action
@@ -21,8 +22,10 @@ class GradioAction(Action):
21
22
  return dir
22
23
 
23
24
  @property
24
- def _requirements(self):
25
- return self.config.get('requirements', ['gradio>=5'])
25
+ def requirements_file(self):
26
+ requirements_file = self.working_directory / 'requirements.txt'
27
+ if requirements_file.exists():
28
+ return requirements_file
26
29
 
27
30
  @property
28
31
  def tag(self):
@@ -31,7 +34,7 @@ class GradioAction(Action):
31
34
 
32
35
  @cached_property
33
36
  def deploy_port(self):
34
- return self._get_avail_ports_host()
37
+ return get_available_ports_host()
35
38
 
36
39
  def deploy(self):
37
40
  self.run.log('deploy', 'Start deploying')
@@ -39,7 +42,7 @@ class GradioAction(Action):
39
42
  try:
40
43
  # Write Dockerfile and requirements.txt
41
44
  path_dockerfile = self.write_dockerfile_template()
42
- self.write_requirements(path_dockerfile.parent / 'requirements.txt')
45
+ self.check_requirements()
43
46
 
44
47
  # Build docker image
45
48
  self.build_docker_image(path_dockerfile)
@@ -58,11 +61,15 @@ class GradioAction(Action):
58
61
  dockerfile_path = self.working_directory / 'Dockerfile'
59
62
 
60
63
  with open(dockerfile_path, 'w') as f:
61
- f.write("""FROM python:3.10
64
+ f.write("""FROM python:3.12-slim
62
65
  WORKDIR /home/user/app
63
66
 
64
67
  RUN pip install --no-cache-dir pip -U && \\
65
68
  pip install --no-cache-dir uvicorn
69
+
70
+ RUN apt-get update && \\
71
+ apt-get install -y git nmap ffmpeg libsm6 libxext6 libgl1-mesa-glx && \\
72
+ rm -rf /var/lib/apt/lists/*
66
73
 
67
74
  RUN apt-get update && \\
68
75
  apt-get install -y curl && \\
@@ -81,48 +88,24 @@ CMD ["python", "app.py"]
81
88
  """)
82
89
  return dockerfile_path
83
90
 
84
- def write_requirements(self, path):
85
- with open(path, 'w') as f:
86
- f.write('\n'.join(self._requirements))
91
+ def check_requirements(self):
92
+ default_packages = ['gradio', 'synapse-sdk', 'python-nmap']
93
+ if self.requirements_file is None:
94
+ with open(self.working_directory / 'requirements.txt', 'a') as f:
95
+ f.write('\n' + '\n'.join(default_packages))
96
+ else:
97
+ with open(self.requirements_file, 'a') as f:
98
+ f.write('\n' + '\n'.join(default_packages[1:]))
87
99
 
88
100
  def build_docker_image(self, path_dockerfile):
89
101
  self.run.log('deploy', 'Start building docker image')
90
102
  result = subprocess.run(
91
- [
92
- 'docker',
93
- 'build',
94
- '-t',
95
- self.tag,
96
- '-f',
97
- str(path_dockerfile),
98
- '.',
99
- ],
103
+ ['docker', 'build', '-t', self.tag, '-f', str(path_dockerfile), '.'],
100
104
  cwd=self.working_directory,
101
105
  check=True,
102
106
  )
103
107
  print(result)
104
108
 
105
- @staticmethod
106
- def _get_avail_ports_host(start_port=8900, end_port=8999):
107
- import nmap
108
-
109
- nm = nmap.PortScanner()
110
-
111
- scan_range = f'{start_port}-{end_port}'
112
- nm.scan(hosts='host.docker.internal', arguments=f'-p {scan_range}')
113
-
114
- try:
115
- open_ports = nm['host.docker.internal']['tcp'].keys()
116
- open_ports = [int(port) for port in open_ports]
117
- except KeyError:
118
- open_ports = []
119
-
120
- for port in range(start_port, end_port + 1):
121
- if port not in open_ports:
122
- return port
123
-
124
- raise IOError(f'No free ports available in range {start_port}-{end_port}')
125
-
126
109
  def run_docker_image(self):
127
110
  self.run.log('deploy', 'Start running docker image')
128
111
 
@@ -133,17 +116,30 @@ CMD ["python", "app.py"]
133
116
  subprocess.run(['docker', 'rm', self.tag], check=True)
134
117
 
135
118
  # Run docker image
136
- self.run.log('deploy', 'Starting docker container')
119
+ command = [
120
+ 'docker',
121
+ 'run',
122
+ '-d',
123
+ '--name',
124
+ self.tag,
125
+ '-p',
126
+ f'{self.deploy_port}:7860',
127
+ '-p',
128
+ '8991-8999:8991-8999',
129
+ '--add-host',
130
+ 'host.docker.internal:host-gateway',
131
+ '-e',
132
+ 'GRADIO_SERVER_NAME=0.0.0.0',
133
+ ]
134
+
135
+ # extend synapse env vars
136
+ for key, value in self.envs.items():
137
+ command.extend(['-e', f'{key}={value}'])
138
+ command.append(self.tag)
139
+
140
+ self.run.log('deploy', f'Starting docker container with command: {" ".join(command)}')
141
+
137
142
  subprocess.run(
138
- [
139
- 'docker',
140
- 'run',
141
- '-d',
142
- '--name',
143
- self.tag,
144
- '-p',
145
- f'{self.deploy_port}:7860',
146
- self.tag,
147
- ],
143
+ command,
148
144
  check=True,
149
145
  )
@@ -4,7 +4,6 @@ import hashlib
4
4
  import json
5
5
  import mimetypes
6
6
  import operator
7
- import re
8
7
  import zipfile
9
8
  from functools import reduce
10
9
  from pathlib import Path
@@ -0,0 +1,110 @@
1
+ import logging
2
+ import os
3
+ import tempfile
4
+ import threading
5
+ import time
6
+ from contextlib import contextmanager
7
+ from http.server import HTTPServer, SimpleHTTPRequestHandler
8
+
9
+ from synapse_sdk.utils.network import get_available_ports_host
10
+
11
+
12
+ class SingleFileHttpServer(SimpleHTTPRequestHandler):
13
+ """
14
+ Custom HTTP request handler that serves a single specified file
15
+ regardless of the request path.
16
+ """
17
+
18
+ def __init__(self, *args, file_path=None, content_type=None, **kwargs):
19
+ self.file_path = file_path
20
+ self.content_type = content_type
21
+ super().__init__(*args, **kwargs)
22
+
23
+ def do_GET(self):
24
+ """Handle GET requests by serving the single file."""
25
+ try:
26
+ # Always serve the specified file regardless of the path requested
27
+ self.send_response(200)
28
+ if self.content_type:
29
+ self.send_header('Content-type', self.content_type)
30
+ self.send_header('Content-Length', str(os.path.getsize(self.file_path)))
31
+ self.end_headers()
32
+
33
+ with open(self.file_path, 'rb') as file:
34
+ self.wfile.write(file.read())
35
+
36
+ except Exception as e:
37
+ self.send_error(500, str(e))
38
+
39
+
40
+ @contextmanager
41
+ def temp_file_server(image=None, file_path=None, format='JPEG', host='0.0.0.0', port=None, content_type=None):
42
+ """
43
+ Context manager that serves a file temporarily via HTTP.
44
+
45
+ Args:
46
+ image: A PIL Image object to serve (optional)
47
+ file_path: Path to an existing file to serve (optional - used if image not provided)
48
+ format: Image format when saving a PIL Image (default: "JPEG")
49
+ host: Host to serve on (default: "0.0.0.0")
50
+ port: Port to serve on (default: auto-selected free port)
51
+ content_type: Content type header (default: auto-detected based on format)
52
+
53
+ Returns:
54
+ URL where the file is being served
55
+
56
+ Usage:
57
+ with temp_file_serve(image=my_pillow_img) as url:
58
+ # use url to access the image
59
+ print(f"Image available at: {url}")
60
+ """
61
+ if image is None and file_path is None:
62
+ raise ValueError('Either image or file_path must be provided')
63
+
64
+ # Use a free port if none specified
65
+ if port is None:
66
+ port = get_available_ports_host(start_port=8991, end_port=8999)
67
+
68
+ temp_dir = None
69
+
70
+ try:
71
+ if image is not None:
72
+ temp_dir = tempfile.mkdtemp()
73
+ ext_map = {'JPEG': '.jpg', 'PNG': '.png', 'GIF': '.gif', 'WEBP': '.webp'}
74
+ content_type_map = {'JPEG': 'image/jpeg', 'PNG': 'image/png', 'GIF': 'image/gif', 'WEBP': 'image/webp'}
75
+
76
+ ext = ext_map.get(format, '.jpg')
77
+ if content_type is None:
78
+ content_type = content_type_map.get(format, 'image/jpeg')
79
+
80
+ temp_file_path = os.path.join(temp_dir, f'temp_image{ext}')
81
+ image.save(temp_file_path, format=format)
82
+ file_path = temp_file_path
83
+
84
+ def handler(*args, **kwargs):
85
+ return SingleFileHttpServer(*args, file_path=file_path, content_type=content_type, **kwargs)
86
+
87
+ server = HTTPServer((host, port), handler)
88
+
89
+ server_thread = threading.Thread(target=server.serve_forever)
90
+ server_thread.daemon = True
91
+ server_thread.start()
92
+
93
+ time.sleep(0.1)
94
+
95
+ url = f'http://localhost:{port}'
96
+
97
+ try:
98
+ yield url
99
+ finally:
100
+ server.shutdown()
101
+ server.server_close()
102
+
103
+ finally:
104
+ if temp_dir:
105
+ try:
106
+ if temp_file_path and os.path.exists(temp_file_path):
107
+ os.unlink(temp_file_path)
108
+ os.rmdir(temp_dir)
109
+ except Exception as e:
110
+ logging.warning(f'Error cleaning up temporary files: {e}')
@@ -0,0 +1,37 @@
1
+ from urllib.parse import urlparse, urlunparse
2
+
3
+
4
+ def clean_url(url, remove_query_params=True, remove_fragment=True):
5
+ parsed = urlparse(url)
6
+ query = '' if remove_query_params else parsed.query
7
+ fragment = '' if remove_fragment else parsed.fragment
8
+
9
+ return urlunparse((
10
+ parsed.scheme,
11
+ parsed.netloc,
12
+ parsed.path,
13
+ parsed.params,
14
+ query,
15
+ fragment,
16
+ ))
17
+
18
+
19
+ def get_available_ports_host(start_port=8900, end_port=8990):
20
+ import nmap
21
+
22
+ nm = nmap.PortScanner()
23
+
24
+ scan_range = f'{start_port}-{end_port}'
25
+ nm.scan(hosts='host.docker.internal', arguments=f'-p {scan_range}')
26
+
27
+ try:
28
+ open_ports = nm['host.docker.internal']['tcp'].keys()
29
+ open_ports = [int(port) for port in open_ports]
30
+ except KeyError:
31
+ open_ports = []
32
+
33
+ for port in range(start_port, end_port + 1):
34
+ if port not in open_ports:
35
+ return port
36
+
37
+ raise IOError(f'No free ports available in range {start_port}-{end_port}')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a39
3
+ Version: 1.0.0a41
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -137,6 +137,7 @@ synapse_sdk/utils/__init__.py
137
137
  synapse_sdk/utils/dataset.py
138
138
  synapse_sdk/utils/debug.py
139
139
  synapse_sdk/utils/file.py
140
+ synapse_sdk/utils/http.py
140
141
  synapse_sdk/utils/module_loading.py
141
142
  synapse_sdk/utils/network.py
142
143
  synapse_sdk/utils/string.py
@@ -1,16 +0,0 @@
1
- from urllib.parse import urlparse, urlunparse
2
-
3
-
4
- def clean_url(url, remove_query_params=True, remove_fragment=True):
5
- parsed = urlparse(url)
6
- query = '' if remove_query_params else parsed.query
7
- fragment = '' if remove_fragment else parsed.fragment
8
-
9
- return urlunparse((
10
- parsed.scheme,
11
- parsed.netloc,
12
- parsed.path,
13
- parsed.params,
14
- query,
15
- fragment,
16
- ))
File without changes
File without changes
File without changes