synapse-sdk 1.0.0a12__py3-none-any.whl → 1.0.0a14__py3-none-any.whl

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.

@@ -46,9 +46,13 @@ class RayClientMixin(BaseClient):
46
46
  return self._get(path)
47
47
 
48
48
  def get_serve_application(self, pk):
49
- path = f'serve_application/{pk}/'
49
+ path = f'serve_applications/{pk}/'
50
50
  return self._get(path)
51
51
 
52
52
  def list_serve_applications(self):
53
53
  path = 'serve_applications/'
54
54
  return self._get(path)
55
+
56
+ def delete_serve_application(self, pk):
57
+ path = f'serve_applications/{pk}/'
58
+ return self._delete(path)
@@ -8,16 +8,20 @@ class BackendClient(AnnotationClientMixin, DatasetClientMixin, IntegrationClient
8
8
  name = 'Backend'
9
9
  token = None
10
10
  tenant = None
11
+ agent_token = None
11
12
 
12
- def __init__(self, base_url, token=None, tenant=None):
13
+ def __init__(self, base_url, token=None, tenant=None, agent_token=None):
13
14
  super().__init__(base_url)
14
15
  self.token = token
15
16
  self.tenant = tenant
17
+ self.agent_token = agent_token
16
18
 
17
19
  def _get_headers(self):
18
20
  headers = {}
19
21
  if self.token:
20
- headers = {'Authorization': f'Token {self.token}'}
22
+ headers['Authorization'] = f'Token {self.token}'
21
23
  if self.tenant:
22
24
  headers['SYNAPSE-Tenant'] = f'Token {self.tenant}'
25
+ if self.agent_token:
26
+ headers['SYNAPSE-Agent'] = f'Token {self.agent_token}'
23
27
  return headers
@@ -9,7 +9,7 @@ from synapse_sdk.clients.utils import get_batched_list
9
9
  class DatasetClientMixin(BaseClient):
10
10
  def list_dataset(self):
11
11
  path = 'datasets/'
12
- return self._get(path)
12
+ return self._list(path)
13
13
 
14
14
  def create_data_file(self, file_path):
15
15
  path = 'data_files/'
@@ -37,7 +37,7 @@ class IntegrationClientMixin(BaseClient):
37
37
 
38
38
  def list_jobs(self, params=None):
39
39
  path = 'jobs/'
40
- return self._get(path, params=params)
40
+ return self._list(path, params=params)
41
41
 
42
42
  def update_job(self, pk, data):
43
43
  path = f'jobs/{pk}/'
@@ -61,3 +61,11 @@ class IntegrationClientMixin(BaseClient):
61
61
  def create_logs(self, data):
62
62
  path = 'logs/'
63
63
  return self._post(path, data=data)
64
+
65
+ def create_serve_application(self, data):
66
+ path = 'serve_applications/'
67
+ return self._post(path, data=data)
68
+
69
+ def list_serve_applications(self, params=None, list_all=False):
70
+ path = 'serve_applications/'
71
+ return self._list(path, params=params, list_all=list_all)
@@ -5,7 +5,7 @@ from synapse_sdk.clients.utils import get_default_url_conversion
5
5
  class MLClientMixin(BaseClient):
6
6
  def list_models(self, params=None):
7
7
  path = 'models/'
8
- return self._get(path, params=params)
8
+ return self._list(path, params=params)
9
9
 
10
10
  def get_model(self, pk, params=None, url_conversion=None):
11
11
  path = f'models/{pk}/'
@@ -19,10 +19,6 @@ class MLClientMixin(BaseClient):
19
19
  files = {'file': data.pop('file')}
20
20
  return self._post(path, data=data, files=files)
21
21
 
22
- def create_serve_application(self, data):
23
- path = 'serve_applications/'
24
- return self._post(path, data=data)
25
-
26
22
  def list_ground_truth_events(self, params=None, url_conversion=None, list_all=False):
27
23
  path = 'ground_truth_events/'
28
24
  url_conversion = get_default_url_conversion(url_conversion, files_fields=['files'])
@@ -76,6 +76,9 @@ class BaseClient:
76
76
  def _patch(self, path, **kwargs):
77
77
  return self._request('patch', path, **kwargs)
78
78
 
79
+ def _delete(self, path, **kwargs):
80
+ return self._request('delete', path, **kwargs)
81
+
79
82
  def _list(self, path, url_conversion=None, list_all=False, **kwargs):
80
83
  response = self._get(path, url_conversion, **kwargs)
81
84
  if list_all:
@@ -4,11 +4,8 @@ import os
4
4
  from functools import cached_property
5
5
  from pprint import pprint
6
6
 
7
- import ray
8
7
  import requests
9
8
  from pydantic import ValidationError
10
- from ray.dashboard.modules.job.sdk import JobSubmissionClient
11
- from ray.exceptions import RayTaskError
12
9
 
13
10
  from synapse_sdk.clients.ray import RayClient
14
11
  from synapse_sdk.plugins.enums import RunMethod
@@ -39,7 +36,7 @@ class Action:
39
36
  envs = None
40
37
  run = None
41
38
 
42
- default_envs = [
39
+ REQUIRED_ENVS = [
43
40
  'RAY_ADDRESS',
44
41
  'RAY_DASHBOARD_URL',
45
42
  'RAY_SERVE_ADDRESS',
@@ -115,7 +112,7 @@ class Action:
115
112
  return self.run_class(self.job_id, context)
116
113
 
117
114
  def get_default_envs(self):
118
- return {env: os.environ[env] for env in self.default_envs if env in os.environ}
115
+ return {env: os.environ[env] for env in self.REQUIRED_ENVS if env in os.environ}
119
116
 
120
117
  def get_runtime_env(self):
121
118
  runtime_env = {
@@ -143,9 +140,6 @@ class Action:
143
140
  def run_action(self):
144
141
  self.validate_params()
145
142
 
146
- if not ray.is_initialized():
147
- ray.init(address=self.envs['RAY_ADDRESS'], ignore_reinit_error=True)
148
-
149
143
  if self.direct:
150
144
  if self.method == RunMethod.RESTAPI:
151
145
  return self.start_by_restapi()
@@ -161,6 +155,9 @@ class Action:
161
155
  return self.entrypoint(**self.params)
162
156
 
163
157
  def start_by_task(self):
158
+ import ray
159
+ from ray.exceptions import RayTaskError
160
+
164
161
  @ray.remote(runtime_env=self.get_runtime_env())
165
162
  def run_task(category, action, *args, **kwargs):
166
163
  from synapse_sdk.plugins.utils import get_action_class
@@ -183,6 +180,8 @@ class Action:
183
180
 
184
181
  kwargs['direct'] = True
185
182
  try:
183
+ if not ray.is_initialized():
184
+ ray.init(address=self.envs['RAY_ADDRESS'], ignore_reinit_error=True)
186
185
  return ray.get(run_task.remote(self.category.value, self.name, *args, **kwargs))
187
186
  except RayTaskError as e:
188
187
  raise ActionError(e.cause)
@@ -232,4 +231,6 @@ class Action:
232
231
  self.client.update_job(self.job_id, data={'result': result or {}, 'console_logs': logs})
233
232
 
234
233
  def get_job_client(self):
234
+ from ray.dashboard.modules.job.sdk import JobSubmissionClient
235
+
235
236
  return JobSubmissionClient(address=self.envs.get('RAY_DASHBOARD_URL'))
@@ -1,5 +1,3 @@
1
- from ray import serve
2
-
3
1
  from synapse_sdk.clients.exceptions import ClientError
4
2
  from synapse_sdk.plugins.categories.base import Action
5
3
  from synapse_sdk.plugins.categories.decorators import register_action
@@ -12,14 +10,13 @@ class DeploymentAction(Action):
12
10
  category = PluginCategory.NEURAL_NET
13
11
  method = RunMethod.JOB
14
12
 
15
- def get_deployment(self):
16
- return serve.deployment(ray_actor_options=self.get_actor_options())(self.entrypoint)
17
-
18
13
  def get_actor_options(self):
19
14
  return {'runtime_env': self.get_runtime_env()}
20
15
 
21
16
  def start(self):
22
- deployment = self.get_deployment()
17
+ from ray import serve
18
+
19
+ deployment = serve.deployment(ray_actor_options=self.get_actor_options())(self.entrypoint)
23
20
  serve.delete(self.plugin_release.code)
24
21
  # TODO add run object
25
22
  serve.run(deployment.bind(), name=self.plugin_release.code, route_prefix=f'/{self.plugin_release.checksum}')
@@ -31,12 +28,9 @@ class DeploymentAction(Action):
31
28
  def create_serve_application(self):
32
29
  if self.client:
33
30
  try:
34
- job = self.client.get_job(self.job_id)
35
31
  serve_application = self.ray_client.get_serve_application(self.plugin_release.code)
36
32
  return self.client.create_serve_application({
37
- 'plugin': self.plugin_release.plugin,
38
- 'version': self.plugin_release.version,
39
- 'agent': job['agent'],
33
+ 'job': self.job_id,
40
34
  'status': serve_application['status'],
41
35
  'data': serve_application,
42
36
  })
@@ -23,7 +23,7 @@ class TrainRun(Run):
23
23
 
24
24
  class Hyperparameter(BaseModel):
25
25
  batch_size: int
26
- iterations: int
26
+ epochs: int
27
27
  learning_rate: Decimal
28
28
 
29
29
 
@@ -2,10 +2,10 @@ task: object_detection
2
2
  data_type: image
3
3
  actions:
4
4
  train:
5
- dataset: datamaker
5
+ dataset: dataset
6
6
  entrypoint: plugin.train.train
7
7
  metrics:
8
- iteration:
8
+ epoch:
9
9
  - loss
10
10
  - miou
11
11
  deployment:
@@ -2,12 +2,12 @@ import time
2
2
 
3
3
 
4
4
  def train(run, dataset, hyperparameter, checkpoint=None):
5
- count_iterations = hyperparameter['iterations']
6
- run.set_progress(0, count_iterations, category='train')
7
- for i in range(1, count_iterations + 1):
5
+ count_epochs = hyperparameter['epochs']
6
+ run.set_progress(0, count_epochs, category='train')
7
+ for i in range(1, count_epochs + 1):
8
8
  time.sleep(0.5)
9
- loss = float(round((count_iterations - i) / count_iterations, 2))
9
+ loss = float(round((count_epochs - i) / count_epochs, 2))
10
10
  miou = 1 - loss
11
- run.log_metric('iteration', i, loss=loss, miou=miou)
12
- run.set_progress(i, count_iterations, category='train')
11
+ run.log_metric('epoch', i, loss=loss, miou=miou)
12
+ run.set_progress(i, count_epochs, category='train')
13
13
  return './'
@@ -1,8 +1,10 @@
1
1
  import json
2
2
  from pathlib import Path
3
3
 
4
+ from synapse_sdk.i18n import gettext as _
4
5
  from synapse_sdk.plugins.categories.registry import _REGISTERED_ACTIONS, register_actions
5
6
  from synapse_sdk.plugins.enums import PluginCategory
7
+ from synapse_sdk.plugins.exceptions import ActionError
6
8
  from synapse_sdk.utils.file import get_dict_from_file
7
9
 
8
10
 
@@ -48,3 +50,43 @@ def read_plugin_config(plugin_path=None):
48
50
  else:
49
51
  config_path = config_file_name
50
52
  return get_dict_from_file(config_path)
53
+
54
+
55
+ def run_plugin(action, params, plugin_config=None, plugin_path=None, modules=None, envs=None, debug=False, **kwargs):
56
+ from synapse_sdk.plugins.models import PluginRelease
57
+
58
+ if not envs:
59
+ envs = {}
60
+
61
+ if debug:
62
+ if not plugin_path:
63
+ raise ActionError({'plugin_path': _('디버그 모드에서는 plugin_path는 필수입니다.')})
64
+
65
+ if plugin_path.startswith('http'):
66
+ if not plugin_config:
67
+ raise ActionError({'config': _('"plugin_path"가 url인 경우에는 "config"가 필수입니다.')})
68
+ plugin_release = PluginRelease(config=plugin_config)
69
+ else:
70
+ plugin_release = PluginRelease(plugin_path=plugin_path)
71
+ plugin_config = plugin_release.config
72
+
73
+ if action not in plugin_release.actions:
74
+ raise ActionError({'action': _('해당 액션은 존재하지 않습니다.')})
75
+
76
+ envs['SYNAPSE_DEBUG_PLUGIN_PATH'] = plugin_path
77
+ if modules:
78
+ envs['SYNAPSE_DEBUG_MODULES'] = ','.join(modules)
79
+ else:
80
+ if plugin_config is None:
81
+ raise ActionError({'config': _('플러그인 설정은 필수입니다.')})
82
+
83
+ action = get_action(
84
+ action,
85
+ params,
86
+ config=plugin_config,
87
+ envs=envs,
88
+ debug=debug,
89
+ **kwargs,
90
+ )
91
+
92
+ return action.run_action()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a12
3
+ Version: 1.0.0a14
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -8,18 +8,18 @@ synapse_sdk/loggers.py,sha256=RsDDOiOeUCih1XOkWQJseYdYCX_wt50AZJRe6aPf96Q,4004
8
8
  synapse_sdk/cli/__init__.py,sha256=WmYGW1qZEXXIGJe3SGr8QjOStY4svuZKK1Lp_aPvtPs,140
9
9
  synapse_sdk/cli/create_plugin.py,sha256=egbW_92WwxfHz50Gy4znX5Bf5fxDdQj3GFyd0l3Y3SY,228
10
10
  synapse_sdk/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- synapse_sdk/clients/base.py,sha256=BPQjM-5Uq-u1wksPnIXaFAzKjNXtcKT4s6-WgxYWs80,3232
11
+ synapse_sdk/clients/base.py,sha256=b34uGFZyV13NVWPfycDK3FNz3W9gT5r4-oLQ_mVrDPQ,3327
12
12
  synapse_sdk/clients/exceptions.py,sha256=ylv7x10eOp4aA3a48jwonnvqvkiYwzJYXjkVkRTAjwk,220
13
13
  synapse_sdk/clients/utils.py,sha256=8pPJTdzHiRPSbZMoQYHAgR2BAMO6u_R_jMV6a2p34iQ,392
14
14
  synapse_sdk/clients/agent/__init__.py,sha256=Pz8_iTbIbnb7ywGJ3feqoZVmO2I3mEbwpWsISIxh0BU,1968
15
15
  synapse_sdk/clients/agent/core.py,sha256=YicfkO0YvjDDOt1jNWoZ0mokrh8xxKibBL4qF5yOjKs,169
16
- synapse_sdk/clients/agent/ray.py,sha256=eQydp2ar0XDlzaY82XbS9TvGPOn_c9c7t7pig48P14g,1436
16
+ synapse_sdk/clients/agent/ray.py,sha256=JrwLyVOUDG2yYsbPrxyUtWbM-FWp9B6Bl_GdDby0rt8,1559
17
17
  synapse_sdk/clients/agent/service.py,sha256=s7KuPK_DB1nr2VHrigttV1WyFonaGHNrPvU8loRxHcE,478
18
- synapse_sdk/clients/backend/__init__.py,sha256=SVC7kDO_z_4YqpLDR-O_RrrxJFkWmMhJC8Hl_Mc5Sz4,830
18
+ synapse_sdk/clients/backend/__init__.py,sha256=50MW1CMWGaKnALSv2fOjhJZG55Xb3yrqlKtnSZldwcU,1004
19
19
  synapse_sdk/clients/backend/annotation.py,sha256=eZc5EidgR_RfMGwvv1r1_mLkPdRd8e52c4zuuMjMX34,979
20
- synapse_sdk/clients/backend/dataset.py,sha256=X8R71vff1gLytlEaOnKhBWjVQaZcIG_WYy32new4Vq0,1737
21
- synapse_sdk/clients/backend/integration.py,sha256=0NNwbkGMYrfz5Baq8s_FfZ6U4uXs0AfTl78YuW6Samo,1860
22
- synapse_sdk/clients/backend/ml.py,sha256=rBF_iWRpGPbwP9obblqayYgAAMvGkERposBlOgoRXP8,1180
20
+ synapse_sdk/clients/backend/dataset.py,sha256=a_svyCKgzF7N99l8V4u4wXD8JxiGuLW9z2EBinnz7b8,1738
21
+ synapse_sdk/clients/backend/integration.py,sha256=Jg_8fEmbrgYXfZZcG8cDtLxR6ugPmnbNhPDyRu_Uib0,2160
22
+ synapse_sdk/clients/backend/ml.py,sha256=lg978cCMcPiLN4ByjhrSlJHlw1_kgZQgaNZNKr9zPsI,1054
23
23
  synapse_sdk/clients/ray/__init__.py,sha256=9ZSPXVVxlJ8Wp8ku7l021ENtPjVrGgQDgqifkkVAXgM,187
24
24
  synapse_sdk/clients/ray/core.py,sha256=a4wyCocAma2HAm-BHlbZnoVbpfdR-Aad2FM0z6vPFvw,731
25
25
  synapse_sdk/clients/ray/serve.py,sha256=rbCpXZYWf0oP8XJ9faa9QFNPYU7h8dltIG8xn9ZconY,907
@@ -28,9 +28,9 @@ synapse_sdk/plugins/enums.py,sha256=s59P6Oz2WAK9IX-kLVhNOvNKYJifKlWBhPpZbc9-ttE,
28
28
  synapse_sdk/plugins/exceptions.py,sha256=Qs7qODp_RRLO9y2otU2T4ryj5LFwIZODvSIXkAh91u0,691
29
29
  synapse_sdk/plugins/models.py,sha256=LTD5fUk1Y2i2kNx5MaCYVFvXEyzyheY6cEHpNC248ls,3621
30
30
  synapse_sdk/plugins/upload.py,sha256=VJOotYMayylOH0lNoAGeGHRkLdhP7jnC_A0rFQMvQpQ,3228
31
- synapse_sdk/plugins/utils.py,sha256=n3s-zFnj4hrGWFtaBTJFbaupI8qUQL6S8_5YcbxOmeY,1482
31
+ synapse_sdk/plugins/utils.py,sha256=UYkwxkmrs0-mRgQB63SkTGD1HpIQEIiHndzTcpdNaF4,2936
32
32
  synapse_sdk/plugins/categories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- synapse_sdk/plugins/categories/base.py,sha256=yTaV2Cx1kWiYY1LF9T4fWL56MVa2wNOmr2DujxdNvt4,8058
33
+ synapse_sdk/plugins/categories/base.py,sha256=Q14bnUTdPLeNeFodcOBMr9Z0d8LM1VRIq-pl8vTKgTc,8093
34
34
  synapse_sdk/plugins/categories/decorators.py,sha256=Gw6T-UHwpCKrSt596X-g2sZbY_Z1zbbogowClj7Pr5Q,518
35
35
  synapse_sdk/plugins/categories/registry.py,sha256=KdQR8SUlLT-3kgYzDNWawS1uJnAhrcw2j4zFaTpilRs,636
36
36
  synapse_sdk/plugins/categories/templates.py,sha256=FF5FerhkZMeW1YcKLY5cylC0SkWSYdJODA_Qcm4OGYQ,887
@@ -48,15 +48,15 @@ synapse_sdk/plugins/categories/import/actions/__init__.py,sha256=47DEQpj8HBSa-_T
48
48
  synapse_sdk/plugins/categories/import/actions/import.py,sha256=URn6TOp081odMT5D4NlZ2XEcyKelJx8fxzdoKSkXSAI,320
49
49
  synapse_sdk/plugins/categories/neural_net/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  synapse_sdk/plugins/categories/neural_net/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- synapse_sdk/plugins/categories/neural_net/actions/deployment.py,sha256=ASRY0-ijdNZl9zTslszIBoaKpn0q_MITcUSoGWoc25c,1741
51
+ synapse_sdk/plugins/categories/neural_net/actions/deployment.py,sha256=HeNGfRBIjiw_rRwzoApAuPm6nuT0qEj-BlJBpI8nGKc,1505
52
52
  synapse_sdk/plugins/categories/neural_net/actions/inference.py,sha256=i18bDDjkuF9V8nxxW-T_umNIOD-Jnq_MMjIjZc6W8n8,645
53
53
  synapse_sdk/plugins/categories/neural_net/actions/test.py,sha256=JY25eg-Fo6WbgtMkGoo_qNqoaZkp3AQNEypJmeGzEog,320
54
- synapse_sdk/plugins/categories/neural_net/actions/train.py,sha256=TPtCAfovmFyzCYRbiRtlrov9AjE6XPQLDB94W0M1OuU,4558
55
- synapse_sdk/plugins/categories/neural_net/templates/config.yaml,sha256=HHiXhCc8BEitfcCOy2Jjstc5IfAsl4yitTva8qYbk54,349
54
+ synapse_sdk/plugins/categories/neural_net/actions/train.py,sha256=7SNhETRw-L-dNEXXANejHMPYCYeqmYjpuUaRFS5vIYA,4554
55
+ synapse_sdk/plugins/categories/neural_net/templates/config.yaml,sha256=dXKB1hO53hDZB73xnxLVCNQl8Sm7svMmVmuMrOCQmEU,343
56
56
  synapse_sdk/plugins/categories/neural_net/templates/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py,sha256=InfqKWJYi6sqiUnfPKHC5KYGhxckDaWZNQ202u-uVP4,366
58
58
  synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py,sha256=kYyk7l4UtcDUAH4nkdVUGrHHHjxI4p1U13HSLnmGPyE,53
59
- synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py,sha256=easC8kVGB6AfvUVFyyywTsatSIMaR0i7n3QqQNKObko,492
59
+ synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py,sha256=R4sjNjqRHOJApdKy1p3wXiCPC0Hn_NQf44LJCDopY9E,460
60
60
  synapse_sdk/plugins/categories/post_annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  synapse_sdk/plugins/categories/post_annotation/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py,sha256=dkPqOPPMUoxn7h1e-momdhqezhTJ7wLf-Dyx04zKfjw,347
@@ -103,9 +103,9 @@ synapse_sdk/utils/pydantic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
103
103
  synapse_sdk/utils/pydantic/config.py,sha256=1vYOcUI35GslfD1rrqhFkNXXJOXt4IDqOPSx9VWGfNE,123
104
104
  synapse_sdk/utils/pydantic/errors.py,sha256=0v0T12eQBr1KrFiEOBu6KMaPK4aPEGEC6etPJGoR5b4,1061
105
105
  synapse_sdk/utils/pydantic/validators.py,sha256=G47P8ObPhsePmd_QZDK8EdPnik2CbaYzr_N4Z6En8dc,193
106
- synapse_sdk-1.0.0a12.dist-info/LICENSE,sha256=bKzmC5YAg4V1Fhl8OO_tqY8j62hgdncAkN7VrdjmrGk,1101
107
- synapse_sdk-1.0.0a12.dist-info/METADATA,sha256=cPJ9URHKdZwjsC4lFzzmMIx4bm-LET60fvKUMquaJC4,1049
108
- synapse_sdk-1.0.0a12.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
109
- synapse_sdk-1.0.0a12.dist-info/entry_points.txt,sha256=VNptJoGoNJI8yLXfBmhgUefMsmGI0m3-0YoMvrOgbxo,48
110
- synapse_sdk-1.0.0a12.dist-info/top_level.txt,sha256=ytgJMRK1slVOKUpgcw3LEyHHP7S34J6n_gJzdkcSsw8,12
111
- synapse_sdk-1.0.0a12.dist-info/RECORD,,
106
+ synapse_sdk-1.0.0a14.dist-info/LICENSE,sha256=bKzmC5YAg4V1Fhl8OO_tqY8j62hgdncAkN7VrdjmrGk,1101
107
+ synapse_sdk-1.0.0a14.dist-info/METADATA,sha256=wQSUzLHaBl0ihU9g9q19Mrh0X4B69hldpDnylJijZ2I,1049
108
+ synapse_sdk-1.0.0a14.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
109
+ synapse_sdk-1.0.0a14.dist-info/entry_points.txt,sha256=VNptJoGoNJI8yLXfBmhgUefMsmGI0m3-0YoMvrOgbxo,48
110
+ synapse_sdk-1.0.0a14.dist-info/top_level.txt,sha256=ytgJMRK1slVOKUpgcw3LEyHHP7S34J6n_gJzdkcSsw8,12
111
+ synapse_sdk-1.0.0a14.dist-info/RECORD,,