synapse-sdk 1.0.0a20__tar.gz → 1.0.0a22__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 (122) hide show
  1. {synapse_sdk-1.0.0a20/synapse_sdk.egg-info → synapse_sdk-1.0.0a22}/PKG-INFO +1 -1
  2. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/backend/__init__.py +8 -1
  3. synapse_sdk-1.0.0a22/synapse_sdk/clients/backend/core.py +32 -0
  4. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/backend/ml.py +3 -2
  5. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/base.py +3 -1
  6. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/base.py +7 -5
  7. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/actions/train.py +2 -2
  8. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/cli/publish.py +1 -2
  9. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/cli/run.py +12 -5
  10. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/utils.py +30 -7
  11. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22/synapse_sdk.egg-info}/PKG-INFO +1 -1
  12. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk.egg-info/SOURCES.txt +1 -0
  13. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/.github/workflows/lint.yml +0 -0
  14. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/.github/workflows/pypi-publish.yml +0 -0
  15. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/.gitignore +0 -0
  16. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/.pre-commit-config.yaml +0 -0
  17. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/LICENSE +0 -0
  18. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/README.md +0 -0
  19. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/locale/en/LC_MESSAGES/messages.mo +0 -0
  20. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/locale/en/LC_MESSAGES/messages.po +0 -0
  21. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/locale/ko/LC_MESSAGES/messages.mo +0 -0
  22. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/locale/ko/LC_MESSAGES/messages.po +0 -0
  23. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/pyproject.toml +0 -0
  24. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/requirements.txt +0 -0
  25. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/setup.cfg +0 -0
  26. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/__init__.py +0 -0
  27. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/cli/__init__.py +0 -0
  28. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/cli/create_plugin.py +0 -0
  29. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/__init__.py +0 -0
  30. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/agent/__init__.py +0 -0
  31. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/agent/core.py +0 -0
  32. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/agent/ray.py +0 -0
  33. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/agent/service.py +0 -0
  34. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/backend/annotation.py +0 -0
  35. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/backend/dataset.py +0 -0
  36. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/backend/integration.py +0 -0
  37. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/exceptions.py +0 -0
  38. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/ray/__init__.py +0 -0
  39. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/ray/core.py +0 -0
  40. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/ray/serve.py +0 -0
  41. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/clients/utils.py +0 -0
  42. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/i18n.py +0 -0
  43. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/loggers.py +0 -0
  44. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/__init__.py +0 -0
  45. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/__init__.py +0 -0
  46. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
  47. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
  48. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
  49. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
  50. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py +0 -0
  51. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
  52. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/decorators.py +0 -0
  53. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/export/__init__.py +0 -0
  54. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/export/actions/__init__.py +0 -0
  55. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/export/actions/export.py +0 -0
  56. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/import/__init__.py +0 -0
  57. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/import/actions/__init__.py +0 -0
  58. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/import/actions/import.py +0 -0
  59. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/__init__.py +0 -0
  60. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/actions/__init__.py +0 -0
  61. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
  62. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
  63. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
  64. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
  65. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py +0 -0
  66. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
  67. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
  68. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
  69. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/post_annotation/__init__.py +0 -0
  70. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/post_annotation/actions/__init__.py +0 -0
  71. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
  72. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
  73. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py +0 -0
  74. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
  75. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/pre_annotation/__init__.py +0 -0
  76. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +0 -0
  77. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
  78. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
  79. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
  80. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
  81. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/registry.py +0 -0
  82. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/smart_tool/__init__.py +0 -0
  83. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/smart_tool/actions/__init__.py +0 -0
  84. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
  85. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
  86. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py +0 -0
  87. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
  88. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/categories/templates.py +0 -0
  89. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/cli/__init__.py +0 -0
  90. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/enums.py +0 -0
  91. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/exceptions.py +0 -0
  92. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/models.py +0 -0
  93. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
  94. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
  95. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
  96. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -0
  97. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -0
  98. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
  99. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
  100. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
  101. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
  102. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -0
  103. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
  104. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
  105. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
  106. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/plugins/upload.py +0 -0
  107. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/shared/__init__.py +0 -0
  108. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/shared/enums.py +0 -0
  109. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/__init__.py +0 -0
  110. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/debug.py +0 -0
  111. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/file.py +0 -0
  112. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/module_loading.py +0 -0
  113. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/pydantic/__init__.py +0 -0
  114. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/pydantic/config.py +0 -0
  115. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/pydantic/errors.py +0 -0
  116. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/pydantic/validators.py +0 -0
  117. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/storage.py +0 -0
  118. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk/utils/string.py +0 -0
  119. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk.egg-info/dependency_links.txt +0 -0
  120. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk.egg-info/entry_points.txt +0 -0
  121. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk.egg-info/requires.txt +0 -0
  122. {synapse_sdk-1.0.0a20 → synapse_sdk-1.0.0a22}/synapse_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a20
3
+ Version: 1.0.0a22
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -1,10 +1,17 @@
1
1
  from synapse_sdk.clients.backend.annotation import AnnotationClientMixin
2
+ from synapse_sdk.clients.backend.core import CoreClientMixin
2
3
  from synapse_sdk.clients.backend.dataset import DatasetClientMixin
3
4
  from synapse_sdk.clients.backend.integration import IntegrationClientMixin
4
5
  from synapse_sdk.clients.backend.ml import MLClientMixin
5
6
 
6
7
 
7
- class BackendClient(AnnotationClientMixin, DatasetClientMixin, IntegrationClientMixin, MLClientMixin):
8
+ class BackendClient(
9
+ AnnotationClientMixin,
10
+ CoreClientMixin,
11
+ DatasetClientMixin,
12
+ IntegrationClientMixin,
13
+ MLClientMixin,
14
+ ):
8
15
  name = 'Backend'
9
16
  token = None
10
17
  tenant = None
@@ -0,0 +1,32 @@
1
+ import hashlib
2
+ import os
3
+ from pathlib import Path
4
+
5
+ from synapse_sdk.clients.base import BaseClient
6
+
7
+
8
+ class CoreClientMixin(BaseClient):
9
+ def create_chunked_upload(self, file_path):
10
+ def read_file_in_chunks(file_path, chunk_size=1024 * 1024 * 50):
11
+ with open(file_path, 'rb') as file:
12
+ while chunk := file.read(chunk_size):
13
+ yield chunk
14
+
15
+ file_path = Path(file_path)
16
+ size = os.path.getsize(file_path)
17
+ hash_md5 = hashlib.md5()
18
+
19
+ url = 'chunked_upload/'
20
+ offset = 0
21
+ for chunk in read_file_in_chunks(file_path):
22
+ hash_md5.update(chunk)
23
+ data = self._put(
24
+ url,
25
+ data={'filename': file_path.name},
26
+ files={'file': chunk},
27
+ headers={'Content-Range': f'bytes {offset}-{offset + len(chunk) - 1}/{size}'},
28
+ )
29
+ offset = data['offset']
30
+ url = data['url']
31
+
32
+ return self._post(url, data={'md5': hash_md5.hexdigest()})
@@ -14,8 +14,9 @@ class MLClientMixin(BaseClient):
14
14
 
15
15
  def create_model(self, data):
16
16
  path = 'models/'
17
- files = {'file': data.pop('file')}
18
- return self._post(path, data=data, files=files)
17
+ file = data.pop('file')
18
+ data['chunked_upload'] = self.create_chunked_upload(file)['id']
19
+ return self._post(path, data=data)
19
20
 
20
21
  def list_ground_truth_events(self, params=None, url_conversion=None, list_all=False):
21
22
  path = 'ground_truth_events/'
@@ -28,11 +28,13 @@ class BaseClient:
28
28
  def _request(self, method, path, **kwargs):
29
29
  url = self._get_url(path)
30
30
  headers = self._get_headers()
31
+ headers.update(kwargs.pop('headers', {}))
31
32
 
32
33
  if method in ['post', 'put', 'patch']:
33
34
  if kwargs.get('files') is not None:
34
35
  for name, file in kwargs['files'].items():
35
- kwargs['files'][name] = Path(str(file)).open(mode='rb')
36
+ if isinstance(file, (str, Path)):
37
+ kwargs['files'][name] = Path(str(file)).open(mode='rb')
36
38
  for name, value in kwargs['data'].items():
37
39
  if isinstance(value, dict):
38
40
  kwargs['data'][name] = json.dumps(value)
@@ -30,6 +30,7 @@ class Action:
30
30
  plugin_config = None
31
31
  plugin_release = None
32
32
  config = None
33
+ requirements = None
33
34
  job_id = None
34
35
  direct = None
35
36
  debug = None
@@ -48,11 +49,12 @@ class Action:
48
49
  'SYNAPSE_PLUGIN_RUN_TENANT',
49
50
  ]
50
51
 
51
- def __init__(self, params, plugin_config, envs=None, job_id=None, direct=False, debug=False):
52
+ def __init__(self, params, plugin_config, requirements=None, envs=None, job_id=None, direct=False, debug=False):
52
53
  self.params = params
53
54
  self.plugin_config = plugin_config
54
55
  self.plugin_release = PluginRelease(config=plugin_config)
55
56
  self.config = self.plugin_release.get_action_config(self.name)
57
+ self.requirements = requirements
56
58
  self.job_id = job_id
57
59
  self.direct = direct
58
60
  self.debug = debug
@@ -117,10 +119,10 @@ class Action:
117
119
  return {env: os.environ[env] for env in self.REQUIRED_ENVS if env in os.environ}
118
120
 
119
121
  def get_runtime_env(self):
120
- runtime_env = {
121
- 'pip': ['-r ${RAY_RUNTIME_ENV_CREATE_WORKING_DIR}/requirements.txt'],
122
- 'working_dir': self.plugin_url,
123
- }
122
+ runtime_env = {'pip': [], 'working_dir': self.plugin_url}
123
+
124
+ if self.requirements:
125
+ runtime_env['pip'] += self.requirements
124
126
 
125
127
  if self.debug:
126
128
  runtime_env['pip'] += self.debug_modules
@@ -17,8 +17,8 @@ from synapse_sdk.utils.pydantic.validators import non_blank
17
17
 
18
18
 
19
19
  class TrainRun(Run):
20
- def log_metric(self, key, value, **metrics):
21
- self.log('metric', {'key': key, 'value': value, 'metrics': metrics})
20
+ def log_metric(self, category, key, value, **metrics):
21
+ self.log('metric', {'category': category, 'key': key, 'value': value, 'metrics': metrics})
22
22
 
23
23
 
24
24
  class Hyperparameter(BaseModel):
@@ -1,4 +1,3 @@
1
- import json
2
1
  from pathlib import Path
3
2
 
4
3
  import click
@@ -27,7 +26,7 @@ def publish(ctx, host, user_token, tenant, debug_modules):
27
26
  data = {'plugin': plugin_release.plugin, 'file': str(archive_path), 'debug': debug}
28
27
  if debug:
29
28
  modules = debug_modules.split(',') if debug_modules else []
30
- data['debug_meta'] = json.dumps({'modules': modules})
29
+ data['meta'] = {'modules': modules}
31
30
 
32
31
  client = BackendClient(host, user_token, tenant=tenant)
33
32
  client.create_plugin_release(data)
@@ -1,11 +1,12 @@
1
1
  import os
2
+ from pathlib import Path
2
3
 
3
4
  import click
4
5
 
5
6
  from synapse_sdk.clients.agent import AgentClient
6
7
  from synapse_sdk.clients.backend import BackendClient
7
8
  from synapse_sdk.plugins.models import PluginRelease
8
- from synapse_sdk.plugins.utils import get_action
9
+ from synapse_sdk.plugins.utils import read_requirements, run_plugin
9
10
 
10
11
 
11
12
  @click.command()
@@ -33,8 +34,8 @@ def run(ctx, action, params, job_id, direct, run_by, agent_host, agent_token, ho
33
34
 
34
35
 
35
36
  def run_by_script(action, params, job_id, direct, debug):
36
- action = get_action(action, params, job_id=job_id, direct=direct, debug=debug)
37
- result = action.run_action()
37
+ requirements = read_requirements('./requirements.txt')
38
+ result = run_plugin(action, params, requirements=requirements, debug=debug, job_id=job_id, direct=direct)
38
39
 
39
40
  if debug:
40
41
  click.echo(result)
@@ -43,17 +44,23 @@ def run_by_script(action, params, job_id, direct, debug):
43
44
  def run_by_agent(action, params, job_id, agent_host, agent_token, user_token, tenant, debug):
44
45
  client = AgentClient(agent_host, agent_token, user_token, tenant)
45
46
  data = {'action': action, 'params': params}
47
+ plugin_path = os.getcwd()
48
+ requirements = read_requirements(Path(plugin_path) / 'requirements.txt')
49
+ if requirements:
50
+ data = {'requirements': requirements}
51
+
46
52
  if job_id:
47
53
  data['job_id'] = job_id
54
+
48
55
  if debug:
49
56
  data.update({
50
- 'plugin_path': os.getcwd(),
57
+ 'plugin_path': plugin_path,
51
58
  'modules': os.getenv('SYNAPSE_DEBUG_MODULES', '').split(','),
52
59
  })
53
60
  result = client.run_debug_plugin_release(data=data)
54
61
  else:
55
62
  plugin_release = PluginRelease()
56
- result = client.run_plugin_release(code=plugin_release.code, data=data)
63
+ result = client.run_plugin_release(plugin_release.code, data=data)
57
64
 
58
65
  click.echo(result)
59
66
 
@@ -52,17 +52,37 @@ def read_plugin_config(plugin_path=None):
52
52
  return get_dict_from_file(config_path)
53
53
 
54
54
 
55
- def run_plugin(action, params, plugin_config=None, plugin_path=None, modules=None, envs=None, debug=False, **kwargs):
55
+ def read_requirements(file_path):
56
+ file_path = Path(file_path)
57
+ if not file_path.exists():
58
+ return None
59
+
60
+ requirements = []
61
+ for line in file_path.read_text().splitlines():
62
+ stripped_line = line.strip()
63
+ if stripped_line and not stripped_line.startswith('#'):
64
+ requirements.append(stripped_line)
65
+ return requirements
66
+
67
+
68
+ def run_plugin(
69
+ action,
70
+ params,
71
+ plugin_config=None,
72
+ plugin_path=None,
73
+ modules=None,
74
+ requirements=None,
75
+ envs=None,
76
+ debug=False,
77
+ **kwargs,
78
+ ):
56
79
  from synapse_sdk.plugins.models import PluginRelease
57
80
 
58
81
  if not envs:
59
82
  envs = {}
60
83
 
61
84
  if debug:
62
- if not plugin_path:
63
- raise ActionError({'plugin_path': _('디버그 모드에서는 plugin_path는 필수입니다.')})
64
-
65
- if plugin_path.startswith('http'):
85
+ if plugin_path and plugin_path.startswith('http'):
66
86
  if not plugin_config:
67
87
  raise ActionError({'config': _('"plugin_path"가 url인 경우에는 "config"가 필수입니다.')})
68
88
  plugin_release = PluginRelease(config=plugin_config)
@@ -73,9 +93,12 @@ def run_plugin(action, params, plugin_config=None, plugin_path=None, modules=Non
73
93
  if action not in plugin_release.actions:
74
94
  raise ActionError({'action': _('해당 액션은 존재하지 않습니다.')})
75
95
 
76
- envs['SYNAPSE_DEBUG_PLUGIN_PATH'] = plugin_path
96
+ if plugin_path:
97
+ envs['SYNAPSE_DEBUG_PLUGIN_PATH'] = plugin_path
98
+
77
99
  if modules:
78
100
  envs['SYNAPSE_DEBUG_MODULES'] = ','.join(modules)
101
+
79
102
  else:
80
103
  if plugin_config is None:
81
104
  raise ActionError({'config': _('플러그인 설정은 필수입니다.')})
@@ -84,9 +107,9 @@ def run_plugin(action, params, plugin_config=None, plugin_path=None, modules=Non
84
107
  action,
85
108
  params,
86
109
  config=plugin_config,
110
+ requirements=requirements,
87
111
  envs=envs,
88
112
  debug=debug,
89
113
  **kwargs,
90
114
  )
91
-
92
115
  return action.run_action()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a20
3
+ Version: 1.0.0a22
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -33,6 +33,7 @@ synapse_sdk/clients/agent/ray.py
33
33
  synapse_sdk/clients/agent/service.py
34
34
  synapse_sdk/clients/backend/__init__.py
35
35
  synapse_sdk/clients/backend/annotation.py
36
+ synapse_sdk/clients/backend/core.py
36
37
  synapse_sdk/clients/backend/dataset.py
37
38
  synapse_sdk/clients/backend/integration.py
38
39
  synapse_sdk/clients/backend/ml.py
File without changes
File without changes
File without changes