synapse-sdk 1.0.0a6__tar.gz → 1.0.0a7__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 (96) hide show
  1. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/PKG-INFO +1 -1
  2. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/pyproject.toml +1 -1
  3. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/backend/dataset.py +1 -0
  4. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/base.py +24 -38
  5. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +1 -1
  6. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +3 -0
  7. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +5 -0
  8. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/export/actions/export.py +1 -1
  9. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/import/actions/import.py +1 -1
  10. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +2 -1
  11. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +1 -1
  12. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/actions/test.py +2 -2
  13. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/actions/train.py +17 -13
  14. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +1 -1
  15. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +3 -0
  16. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +3 -0
  17. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +1 -1
  18. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +3 -0
  19. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py +0 -0
  20. synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +3 -0
  21. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/enums.py +5 -0
  22. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/models.py +32 -3
  23. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +1 -0
  24. synapse_sdk-1.0.0a7/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py +0 -0
  25. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +1 -1
  26. synapse_sdk-1.0.0a7/synapse_sdk/utils/__init__.py +0 -0
  27. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/utils/storage.py +1 -1
  28. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk.egg-info/PKG-INFO +1 -1
  29. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk.egg-info/SOURCES.txt +9 -0
  30. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/.github/workflows/lint.yml +0 -0
  31. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/.github/workflows/pypi-publish.yml +0 -0
  32. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/.gitignore +0 -0
  33. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/.pre-commit-config.yaml +0 -0
  34. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/LICENSE +0 -0
  35. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/README.md +0 -0
  36. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/requirements.txt +0 -0
  37. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/setup.cfg +0 -0
  38. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/__init__.py +0 -0
  39. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/cli/__init__.py +0 -0
  40. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/cli/create_plugin.py +0 -0
  41. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/__init__.py +0 -0
  42. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/agent/__init__.py +0 -0
  43. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/agent/service.py +0 -0
  44. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/backend/__init__.py +0 -0
  45. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/backend/annotation.py +0 -0
  46. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/backend/integration.py +0 -0
  47. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/backend/ml.py +0 -0
  48. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/base.py +1 -1
  49. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/exceptions.py +0 -0
  50. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/clients/utils.py +0 -0
  51. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/loggers.py +0 -0
  52. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/__init__.py +0 -0
  53. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/__init__.py +0 -0
  54. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/data_validation/__init__.py +0 -0
  55. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/data_validation/actions/__init__.py +0 -0
  56. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/export → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/data_validation/templates/plugin}/__init__.py +0 -0
  57. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/decorators.py +0 -0
  58. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/export/actions → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/export}/__init__.py +0 -0
  59. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/import → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/export/actions}/__init__.py +0 -0
  60. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/import/actions → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/import}/__init__.py +0 -0
  61. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/neural_net → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/import/actions}/__init__.py +0 -0
  62. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/neural_net/actions → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/neural_net}/__init__.py +0 -0
  63. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/neural_net/templates/plugin → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/neural_net/actions}/__init__.py +0 -0
  64. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
  65. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/post_annotation → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/neural_net/templates/plugin}/__init__.py +0 -0
  66. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
  67. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
  68. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
  69. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/post_annotation/actions → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/post_annotation}/__init__.py +0 -0
  70. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/pre_annotation → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/post_annotation/actions}/__init__.py +0 -0
  71. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/categories/pre_annotation/actions → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/post_annotation/templates/plugin}/__init__.py +0 -0
  72. {synapse_sdk-1.0.0a6/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/pre_annotation}/__init__.py +0 -0
  73. {synapse_sdk-1.0.0a6/synapse_sdk/utils → synapse_sdk-1.0.0a7/synapse_sdk/plugins/categories/pre_annotation/actions}/__init__.py +0 -0
  74. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/registry.py +0 -0
  75. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/categories/templates.py +0 -0
  76. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/cli/__init__.py +0 -0
  77. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/cli/publish.py +0 -0
  78. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/cli/run.py +0 -0
  79. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
  80. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
  81. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -0
  82. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
  83. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
  84. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
  85. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +0 -0
  86. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
  87. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/upload.py +0 -0
  88. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/plugins/utils.py +0 -0
  89. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/utils/debug.py +0 -0
  90. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/utils/file.py +0 -0
  91. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/utils/module_loading.py +0 -0
  92. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk/utils/string.py +0 -0
  93. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk.egg-info/dependency_links.txt +0 -0
  94. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk.egg-info/entry_points.txt +0 -0
  95. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/synapse_sdk.egg-info/requires.txt +0 -0
  96. {synapse_sdk-1.0.0a6 → synapse_sdk-1.0.0a7}/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.0a6
3
+ Version: 1.0.0a7
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -38,7 +38,7 @@ synapse = 'synapse_sdk.cli:cli'
38
38
  line-length = 120
39
39
 
40
40
  [tool.ruff.lint]
41
- select = ['E', 'F', 'Q']
41
+ select = ['E', 'F', 'I', 'Q']
42
42
  ignore = ['W191', 'E111', 'E114', 'E117', 'D206', 'D300', 'Q000', 'Q001', 'Q002', 'Q003', 'COM812', 'COM819', 'ISC001', 'ISC002']
43
43
 
44
44
  [tool.ruff.lint.pydocstyle]
@@ -1,4 +1,5 @@
1
1
  from multiprocessing import Pool
2
+
2
3
  from tqdm import tqdm
3
4
 
4
5
  from synapse_sdk.clients.base import BaseClient
@@ -8,11 +8,9 @@ import ray
8
8
  import requests
9
9
  from ray.dashboard.modules.job.sdk import JobSubmissionClient
10
10
 
11
- from synapse_sdk.clients.backend import BackendClient
12
- from synapse_sdk.loggers import ConsoleLogger, BackendLogger
13
11
  from synapse_sdk.plugins.enums import RunMethod
14
- from synapse_sdk.plugins.models import PluginRelease
15
- from synapse_sdk.plugins.upload import build_and_upload, archive_and_upload, download_and_upload
12
+ from synapse_sdk.plugins.models import PluginRelease, Run
13
+ from synapse_sdk.plugins.upload import archive_and_upload, build_and_upload, download_and_upload
16
14
  from synapse_sdk.utils.module_loading import import_string
17
15
 
18
16
 
@@ -25,8 +23,9 @@ class Action:
25
23
  plugin_release = None
26
24
  config = None
27
25
  client = None
28
- logger = None
29
26
  debug = False
27
+ run_class = Run
28
+ run = None
30
29
 
31
30
  default_envs = [
32
31
  'RAY_DASHBOARD_URL',
@@ -48,7 +47,7 @@ class Action:
48
47
  self.direct = direct
49
48
  self.debug = debug
50
49
  self.envs = {**envs, **self.get_default_envs()} if envs else self.get_default_envs()
51
- self.set_logger()
50
+ self.run = self.get_run()
52
51
 
53
52
  @cached_property
54
53
  def entrypoint(self):
@@ -84,16 +83,13 @@ class Action:
84
83
  self.envs['SYNAPSE_DEBUG_MODULES'] = ','.join(debug_modules)
85
84
  return debug_modules
86
85
 
87
- def set_logger(self):
88
- if self.job_id:
89
- client = BackendClient(
90
- self.envs['SYNAPSE_PLUGIN_RUN_HOST'],
91
- self.envs['SYNAPSE_PLUGIN_RUN_USER_TOKEN'],
92
- self.envs['SYNAPSE_PLUGIN_RUN_TENANT'],
93
- )
94
- self.logger = BackendLogger(client, self.job_id)
95
- else:
96
- self.logger = ConsoleLogger()
86
+ def get_run(self):
87
+ context = {
88
+ 'params': self.params,
89
+ 'envs': self.envs,
90
+ 'debug': self.debug,
91
+ }
92
+ return self.run_class(self.job_id, context)
97
93
 
98
94
  def get_default_envs(self):
99
95
  return {env: os.environ[env] for env in self.default_envs if env in os.environ}
@@ -105,7 +101,7 @@ class Action:
105
101
  }
106
102
 
107
103
  if self.debug:
108
- runtime_env['pip'] = self.debug_modules + runtime_env['pip']
104
+ runtime_env['pip'] += self.debug_modules
109
105
 
110
106
  # 맨 마지막에 진행되어야 함
111
107
  runtime_env['env_vars'] = self.envs
@@ -114,18 +110,20 @@ class Action:
114
110
  pprint(runtime_env)
115
111
  return runtime_env
116
112
 
117
- def run(self):
118
- return self.entrypoint(self, **self.params)
119
-
120
113
  def run_action(self):
121
114
  if self.direct:
122
115
  if self.method == RunMethod.RESTAPI:
123
- return self.run_by_restapi()
116
+ return self.start_by_restapi()
124
117
  else:
125
- return self.run()
126
- return getattr(self, f'run_by_{self.method.value}')()
118
+ return self.start()
119
+ return getattr(self, f'start_by_{self.method.value}')()
120
+
121
+ def start(self):
122
+ if self.method == RunMethod.JOB:
123
+ return self.entrypoint(self.run, **self.params)
124
+ return self.entrypoint(**self.params)
127
125
 
128
- def run_by_task(self):
126
+ def start_by_task(self):
129
127
  @ray.remote(runtime_env=self.get_runtime_env())
130
128
  def run_task(category, action, *args, **kwargs):
131
129
  from synapse_sdk.plugins.utils import get_action_class
@@ -149,7 +147,7 @@ class Action:
149
147
  kwargs['direct'] = True
150
148
  return ray.get(run_task.remote(self.category.value, self.name, *args, **kwargs))
151
149
 
152
- def run_by_job(self):
150
+ def start_by_job(self):
153
151
  main_options = []
154
152
  options = ['run', '--direct']
155
153
  arguments = [self.name, f'{json.dumps(json.dumps(self.params))}']
@@ -169,7 +167,7 @@ class Action:
169
167
  runtime_env=self.get_runtime_env(),
170
168
  )
171
169
 
172
- def run_by_restapi(self):
170
+ def start_by_restapi(self):
173
171
  path = self.params.pop('path', '')
174
172
  method = self.params.pop('method')
175
173
 
@@ -177,15 +175,3 @@ class Action:
177
175
  response = getattr(requests, method)(url, **self.params)
178
176
  # TODO ok response가 아닌 경우 대응하기
179
177
  return response.json()
180
-
181
- def set_progress(self, current, total, category=''):
182
- self.logger.set_progress(current, total, category)
183
-
184
- def log(self, action, data):
185
- self.logger.log(action, data)
186
-
187
- def log_event(self, message):
188
- self.logger.log('event', {'content': message})
189
-
190
- def end_log(self):
191
- self.log_event('Plugin run is complete.')
@@ -1,6 +1,6 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
@@ -0,0 +1,3 @@
1
+ actions:
2
+ validation:
3
+ entrypoint: plugin.validation.validate
@@ -0,0 +1,5 @@
1
+ def validate(data, assignment_id, **kwargs):
2
+ errors = []
3
+ if data.get('errors'):
4
+ errors += data['errors']
5
+ return errors
@@ -1,6 +1,6 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
@@ -1,6 +1,6 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
@@ -17,7 +17,8 @@ class DeploymentAction(Action):
17
17
  def get_actor_options(self):
18
18
  return {'runtime_env': self.get_runtime_env()}
19
19
 
20
- def run(self):
20
+ def start(self):
21
21
  deployment = self.get_deployment()
22
22
  serve.delete(self.plugin_release.code)
23
+ # TODO add run object
23
24
  serve.run(deployment.bind(), name=self.plugin_release.code, route_prefix=f'/{self.plugin_release.checksum}')
@@ -1,6 +1,6 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
@@ -1,10 +1,10 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
7
7
  class TestAction(Action):
8
8
  name = 'test'
9
9
  category = PluginCategory.NEURAL_NET
10
- method = RunMethod.TASK
10
+ method = RunMethod.JOB
@@ -1,6 +1,15 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
+ from synapse_sdk.plugins.models import Run
5
+
6
+
7
+ class TrainRun(Run):
8
+ def log_metric(self, x, i, **kwargs):
9
+ self.log(x, {x: i, **kwargs})
10
+
11
+ def log_model(self, files, status=None):
12
+ pass
4
13
 
5
14
 
6
15
  @register_action
@@ -8,30 +17,25 @@ class TrainAction(Action):
8
17
  name = 'train'
9
18
  category = PluginCategory.NEURAL_NET
10
19
  method = RunMethod.JOB
20
+ run_class = TrainRun
11
21
 
12
22
  def get_dataset(self):
13
23
  return {}
14
24
 
15
- def run(self):
25
+ def start(self):
16
26
  hyperparameter = self.params['hyperparameter']
17
27
 
18
28
  # download dataset
19
- self.log_event('Preparing dataset for training.')
29
+ self.run.log_event('Preparing dataset for training.')
20
30
  input_dataset = self.get_dataset()
21
31
 
22
32
  # train dataset
23
- self.log_event('Starting model training.')
33
+ self.run.log_event('Starting model training.')
24
34
 
25
- model_files = self.entrypoint(self, input_dataset, hyperparameter)
35
+ model_files = self.entrypoint(self.run, input_dataset, hyperparameter)
26
36
 
27
37
  # upload model_data
28
- self.log_event('Registering model data.')
38
+ self.run.log_event('Registering model data.')
29
39
 
30
- self.end_log()
40
+ self.run.end_log()
31
41
  return model_files
32
-
33
- def log_metric(self, x, i, **kwargs):
34
- self.log(x, {x: i, **kwargs})
35
-
36
- def log_model(self, files, status=None):
37
- pass
@@ -1,6 +1,6 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
@@ -0,0 +1,3 @@
1
+ actions:
2
+ post_annotation:
3
+ entrypoint: plugin.post_annotation.post_annotate
@@ -0,0 +1,3 @@
1
+ def post_annotate(data, assignment_id, **kwargs):
2
+ data['post_annotate'] = 'hello world'
3
+ return data
@@ -1,6 +1,6 @@
1
1
  from synapse_sdk.plugins.categories.base import Action
2
2
  from synapse_sdk.plugins.categories.decorators import register_action
3
- from synapse_sdk.plugins.enums import RunMethod, PluginCategory
3
+ from synapse_sdk.plugins.enums import PluginCategory, RunMethod
4
4
 
5
5
 
6
6
  @register_action
@@ -0,0 +1,3 @@
1
+ actions:
2
+ pre_annotation:
3
+ entrypoint: plugin.pre_annotation.pre_annotate
@@ -0,0 +1,3 @@
1
+ def pre_annotate(data, assignment_id, **kwargs):
2
+ data['pre_annotate'] = 'hello world'
3
+ return data
@@ -11,6 +11,11 @@ class PluginCategory(Enum):
11
11
  NEURAL_NET = 'neural_net'
12
12
  EXPORT = 'export'
13
13
  IMPORT = 'import'
14
+ SMART_TOOL = 'smart_tool'
14
15
  POST_ANNOTATION = 'post_annotation'
15
16
  PRE_ANNOTATION = 'pre_annotation'
16
17
  DATA_VALIDATION = 'data_validation'
18
+
19
+ @classmethod
20
+ def choices(cls):
21
+ return [(member.value, member.name.replace('_', ' ').title()) for member in cls]
@@ -1,7 +1,9 @@
1
1
  import os
2
2
  from functools import cached_property
3
- from typing import Dict, Any
3
+ from typing import Any, Dict
4
4
 
5
+ from synapse_sdk.clients.backend import BackendClient
6
+ from synapse_sdk.loggers import BackendLogger, ConsoleLogger
5
7
  from synapse_sdk.plugins.utils import read_plugin_config
6
8
  from synapse_sdk.utils.storage import get_storage
7
9
  from synapse_sdk.utils.string import hash_text
@@ -59,8 +61,35 @@ class PluginRelease:
59
61
  return os.path.join(serve_address, self.checksum, path)
60
62
 
61
63
 
62
- class Job:
64
+ class Run:
65
+ logger = None
63
66
  job_id = None
67
+ context = None
64
68
 
65
- def __init__(self, job_id):
69
+ def __init__(self, job_id, context):
66
70
  self.job_id = job_id
71
+ self.context = context
72
+ self.set_logger()
73
+
74
+ def set_logger(self):
75
+ if self.job_id:
76
+ client = BackendClient(
77
+ self.context['envs']['SYNAPSE_PLUGIN_RUN_HOST'],
78
+ self.context['envs']['SYNAPSE_PLUGIN_RUN_USER_TOKEN'],
79
+ self.context['envs']['SYNAPSE_PLUGIN_RUN_TENANT'],
80
+ )
81
+ self.logger = BackendLogger(client, self.job_id)
82
+ else:
83
+ self.logger = ConsoleLogger()
84
+
85
+ def set_progress(self, current, total, category=''):
86
+ self.logger.set_progress(current, total, category)
87
+
88
+ def log(self, action, data):
89
+ self.logger.log(action, data)
90
+
91
+ def log_event(self, message):
92
+ self.logger.log('event', {'content': message})
93
+
94
+ def end_log(self):
95
+ self.log_event('Plugin run is complete.')
@@ -1,5 +1,6 @@
1
1
  import json
2
2
  from pathlib import Path
3
+
3
4
  from synapse_sdk.plugins.utils import get_plugin_categories
4
5
  from synapse_sdk.utils.file import get_dict_from_file
5
6
 
@@ -2,7 +2,7 @@
2
2
  line-length = 120
3
3
 
4
4
  [tool.ruff.lint]
5
- select = ['E', 'F', 'Q']
5
+ select = ['E', 'F', 'I', 'Q']
6
6
  ignore = ['W191', 'E111', 'E114', 'E117', 'D206', 'D300', 'Q000', 'Q001', 'Q002', 'Q003', 'COM812', 'COM819', 'ISC001', 'ISC002']
7
7
 
8
8
  [tool.ruff.lint.pydocstyle]
File without changes
@@ -1,5 +1,5 @@
1
1
  import os
2
- from urllib.parse import urlparse, parse_qs
2
+ from urllib.parse import parse_qs, urlparse
3
3
 
4
4
  import boto3
5
5
  from botocore.exceptions import ClientError
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a6
3
+ Version: 1.0.0a7
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -40,6 +40,9 @@ synapse_sdk/plugins/categories/templates.py
40
40
  synapse_sdk/plugins/categories/data_validation/__init__.py
41
41
  synapse_sdk/plugins/categories/data_validation/actions/__init__.py
42
42
  synapse_sdk/plugins/categories/data_validation/actions/validation.py
43
+ synapse_sdk/plugins/categories/data_validation/templates/config.yaml
44
+ synapse_sdk/plugins/categories/data_validation/templates/plugin/__init__.py
45
+ synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py
43
46
  synapse_sdk/plugins/categories/export/__init__.py
44
47
  synapse_sdk/plugins/categories/export/actions/__init__.py
45
48
  synapse_sdk/plugins/categories/export/actions/export.py
@@ -60,9 +63,15 @@ synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py
60
63
  synapse_sdk/plugins/categories/post_annotation/__init__.py
61
64
  synapse_sdk/plugins/categories/post_annotation/actions/__init__.py
62
65
  synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py
66
+ synapse_sdk/plugins/categories/post_annotation/templates/config.yaml
67
+ synapse_sdk/plugins/categories/post_annotation/templates/plugin/__init__.py
68
+ synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py
63
69
  synapse_sdk/plugins/categories/pre_annotation/__init__.py
64
70
  synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py
65
71
  synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py
72
+ synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml
73
+ synapse_sdk/plugins/categories/pre_annotation/templates/plugin/__init__.py
74
+ synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py
66
75
  synapse_sdk/plugins/cli/__init__.py
67
76
  synapse_sdk/plugins/cli/publish.py
68
77
  synapse_sdk/plugins/cli/run.py
File without changes
File without changes
File without changes
File without changes
@@ -1,5 +1,5 @@
1
- import os
2
1
  import json
2
+ import os
3
3
  from pathlib import Path
4
4
 
5
5
  import requests