synapse-sdk 1.0.0a26__tar.gz → 1.0.0a27__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 (138) hide show
  1. {synapse_sdk-1.0.0a26/synapse_sdk.egg-info → synapse_sdk-1.0.0a27}/PKG-INFO +1 -1
  2. synapse_sdk-1.0.0a27/synapse_sdk/cli/__init__.py +13 -0
  3. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/__init__.py +22 -0
  4. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/create.py +36 -0
  5. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/dataclass.py +31 -0
  6. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/default.py +16 -0
  7. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/delete.py +15 -0
  8. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/list.py +19 -0
  9. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/read.py +15 -0
  10. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/update.py +17 -0
  11. synapse_sdk-1.0.0a27/synapse_sdk/cli/alias/utils.py +54 -0
  12. synapse_sdk-1.0.0a27/synapse_sdk/cli/plugin/__init__.py +31 -0
  13. synapse_sdk-1.0.0a26/synapse_sdk/cli/create_plugin.py → synapse_sdk-1.0.0a27/synapse_sdk/cli/plugin/create.py +2 -2
  14. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/backend/dataset.py +1 -2
  15. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/base.py +4 -3
  16. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/base.py +8 -4
  17. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/models.py +5 -1
  18. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +1 -0
  19. synapse_sdk-1.0.0a27/synapse_sdk/utils/pydantic/__init__.py +0 -0
  20. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27/synapse_sdk.egg-info}/PKG-INFO +1 -1
  21. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk.egg-info/SOURCES.txt +13 -7
  22. synapse_sdk-1.0.0a26/synapse_sdk/cli/__init__.py +0 -11
  23. synapse_sdk-1.0.0a26/synapse_sdk/plugins/__init__.py +0 -13
  24. synapse_sdk-1.0.0a26/synapse_sdk/plugins/cli/__init__.py +0 -21
  25. synapse_sdk-1.0.0a26/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -24
  26. synapse_sdk-1.0.0a26/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -24
  27. synapse_sdk-1.0.0a26/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -4
  28. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/.github/workflows/lint.yml +0 -0
  29. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/.github/workflows/pypi-publish.yml +0 -0
  30. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/.gitignore +0 -0
  31. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/.pre-commit-config.yaml +0 -0
  32. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/LICENSE +0 -0
  33. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/README.md +0 -0
  34. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/locale/en/LC_MESSAGES/messages.mo +0 -0
  35. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/locale/en/LC_MESSAGES/messages.po +0 -0
  36. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/locale/ko/LC_MESSAGES/messages.mo +0 -0
  37. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/locale/ko/LC_MESSAGES/messages.po +0 -0
  38. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/pyproject.toml +0 -0
  39. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/requirements.txt +0 -0
  40. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/setup.cfg +0 -0
  41. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/__init__.py +0 -0
  42. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/cli → synapse_sdk-1.0.0a27/synapse_sdk/cli/plugin}/publish.py +0 -0
  43. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/cli → synapse_sdk-1.0.0a27/synapse_sdk/cli/plugin}/run.py +0 -0
  44. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/__init__.py +0 -0
  45. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/agent/__init__.py +0 -0
  46. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/agent/core.py +0 -0
  47. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/agent/ray.py +0 -0
  48. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/agent/service.py +0 -0
  49. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/backend/__init__.py +0 -0
  50. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/backend/annotation.py +0 -0
  51. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/backend/core.py +0 -0
  52. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/backend/integration.py +0 -0
  53. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/backend/ml.py +0 -0
  54. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/exceptions.py +0 -0
  55. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/ray/__init__.py +0 -0
  56. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/ray/core.py +0 -0
  57. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/ray/serve.py +0 -0
  58. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/clients/utils.py +0 -0
  59. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/i18n.py +0 -0
  60. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/loggers.py +0 -0
  61. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories → synapse_sdk-1.0.0a27/synapse_sdk/plugins}/__init__.py +0 -0
  62. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/data_validation → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories}/__init__.py +0 -0
  63. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/data_validation/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/data_validation}/__init__.py +0 -0
  64. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/data_validation/templates/plugin → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/data_validation/actions}/__init__.py +0 -0
  65. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/data_validation/actions/validation.py +0 -0
  66. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/data_validation/templates/config.yaml +0 -0
  67. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/export → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/data_validation/templates/plugin}/__init__.py +0 -0
  68. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +0 -0
  69. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/decorators.py +0 -0
  70. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/export/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/export}/__init__.py +0 -0
  71. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/import → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/export/actions}/__init__.py +0 -0
  72. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/export/actions/export.py +0 -0
  73. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/import/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/import}/__init__.py +0 -0
  74. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/neural_net → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/import/actions}/__init__.py +0 -0
  75. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/import/actions/import.py +0 -0
  76. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/neural_net/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/neural_net}/__init__.py +0 -0
  77. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/neural_net/base → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/neural_net/actions}/__init__.py +0 -0
  78. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/actions/deployment.py +0 -0
  79. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/actions/inference.py +0 -0
  80. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/actions/test.py +0 -0
  81. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/actions/train.py +0 -0
  82. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/neural_net/templates/plugin → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/neural_net/base}/__init__.py +0 -0
  83. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/base/inference.py +0 -0
  84. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/templates/config.yaml +0 -0
  85. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/post_annotation → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/neural_net/templates/plugin}/__init__.py +0 -0
  86. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +0 -0
  87. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/templates/plugin/test.py +0 -0
  88. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/neural_net/templates/plugin/train.py +0 -0
  89. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/post_annotation/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/post_annotation}/__init__.py +0 -0
  90. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/post_annotation/templates/plugin → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/post_annotation/actions}/__init__.py +0 -0
  91. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/post_annotation/actions/post_annotation.py +0 -0
  92. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/post_annotation/templates/config.yaml +0 -0
  93. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/pre_annotation → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/post_annotation/templates/plugin}/__init__.py +0 -0
  94. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/post_annotation/templates/plugin/post_annotation.py +0 -0
  95. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/pre_annotation/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/pre_annotation}/__init__.py +0 -0
  96. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/pre_annotation/templates/plugin → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/pre_annotation/actions}/__init__.py +0 -0
  97. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation.py +0 -0
  98. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +0 -0
  99. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/smart_tool → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/pre_annotation/templates/plugin}/__init__.py +0 -0
  100. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/pre_annotation/templates/plugin/pre_annotation.py +0 -0
  101. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/registry.py +0 -0
  102. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/smart_tool/actions → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/smart_tool}/__init__.py +0 -0
  103. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/categories/smart_tool/templates/plugin → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/smart_tool/actions}/__init__.py +0 -0
  104. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py +0 -0
  105. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +0 -0
  106. {synapse_sdk-1.0.0a26/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin → synapse_sdk-1.0.0a27/synapse_sdk/plugins/categories/smart_tool/templates}/plugin/__init__.py +0 -0
  107. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py +0 -0
  108. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/categories/templates.py +0 -0
  109. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/enums.py +0 -0
  110. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/exceptions.py +0 -0
  111. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/cookiecutter.json +0 -0
  112. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/hooks/post_gen_project.py +0 -0
  113. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/hooks/pre_prompt.py +0 -0
  114. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore +0 -0
  115. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml +0 -0
  116. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md +0 -0
  117. {synapse_sdk-1.0.0a26/synapse_sdk/shared → synapse_sdk-1.0.0a27/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin}/__init__.py +0 -0
  118. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml +0 -0
  119. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +0 -0
  120. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/upload.py +0 -0
  121. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/plugins/utils.py +0 -0
  122. {synapse_sdk-1.0.0a26/synapse_sdk/utils → synapse_sdk-1.0.0a27/synapse_sdk/shared}/__init__.py +0 -0
  123. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/shared/enums.py +0 -0
  124. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/types.py +0 -0
  125. {synapse_sdk-1.0.0a26/synapse_sdk/utils/pydantic → synapse_sdk-1.0.0a27/synapse_sdk/utils}/__init__.py +0 -0
  126. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/debug.py +0 -0
  127. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/file.py +0 -0
  128. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/module_loading.py +0 -0
  129. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/network.py +0 -0
  130. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/pydantic/config.py +0 -0
  131. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/pydantic/errors.py +0 -0
  132. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/pydantic/validators.py +0 -0
  133. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/storage.py +0 -0
  134. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk/utils/string.py +0 -0
  135. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk.egg-info/dependency_links.txt +0 -0
  136. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk.egg-info/entry_points.txt +0 -0
  137. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk.egg-info/requires.txt +0 -0
  138. {synapse_sdk-1.0.0a26 → synapse_sdk-1.0.0a27}/synapse_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a26
3
+ Version: 1.0.0a27
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -0,0 +1,13 @@
1
+ import click
2
+
3
+ from .alias import alias
4
+ from .plugin import plugin
5
+
6
+
7
+ @click.group()
8
+ def cli():
9
+ pass
10
+
11
+
12
+ cli.add_command(plugin)
13
+ cli.add_command(alias)
@@ -0,0 +1,22 @@
1
+ import click
2
+
3
+ from .create import create
4
+ from .default import default
5
+ from .delete import delete
6
+ from .list import list as list_cli
7
+ from .read import read
8
+ from .update import update
9
+
10
+
11
+ @click.group()
12
+ def alias():
13
+ """Manage aliases"""
14
+ pass
15
+
16
+
17
+ alias.add_command(list_cli)
18
+ alias.add_command(create)
19
+ alias.add_command(read)
20
+ alias.add_command(update)
21
+ alias.add_command(delete)
22
+ alias.add_command(default)
@@ -0,0 +1,36 @@
1
+ import click
2
+
3
+ from .dataclass import ENV_VARS
4
+ from .utils import CONFIG_DIR, DEFAULT_FILE, ensure_config_dir, save_alias_field, set_default_alias
5
+
6
+
7
+ @click.command()
8
+ def create():
9
+ """Create a new alias."""
10
+ ensure_config_dir()
11
+ name = click.prompt('Enter alias name (eg. prod, test)', type=str)
12
+ alias_file = CONFIG_DIR / f'{name}.env'
13
+ if alias_file.exists():
14
+ click.echo(f"Alias '{name}' already exists.")
15
+ return
16
+ if alias_file.name == DEFAULT_FILE.name:
17
+ click.echo(f"Invalid alias name '{name}'.")
18
+ return
19
+
20
+ alias_data = {}
21
+
22
+ for key, value in ENV_VARS.items():
23
+ prompt_kwargs = {'text': value.name, 'type': value.type, 'show_default': value.show_default}
24
+ if bool(value.default):
25
+ prompt_kwargs['default'] = alias_data[value.default]
26
+
27
+ alias_data[key] = click.prompt(**prompt_kwargs)
28
+
29
+ for key, value in alias_data.items():
30
+ save_alias_field(name, key, value)
31
+
32
+ # Set the default alias if it is the first alias created
33
+ if not DEFAULT_FILE.exists():
34
+ set_default_alias(name)
35
+
36
+ click.echo(f"Alias '{name}' created.")
@@ -0,0 +1,31 @@
1
+ from dataclasses import dataclass
2
+ from typing import Union
3
+
4
+
5
+ @dataclass
6
+ class EnvVar:
7
+ name: str
8
+ type = str
9
+ default: Union[str, None] = None
10
+ show_default: bool = True
11
+
12
+
13
+ ENV_VARS = {
14
+ 'RAY_ADDRESS': EnvVar('RAY_ADDRESS'),
15
+ 'RAY_DASHBOARD_ADDRESS': EnvVar('RAY_DASHBOARD_ADDRESS'),
16
+ 'RAY_SERVE_ADDRESS': EnvVar('RAY_SERVE_ADDRESS'),
17
+ 'SYNAPSE_PLUGIN_STORAGE': EnvVar('SYNAPSE_PLUGIN_STORAGE', default='', show_default=False),
18
+ 'SYNAPSE_DEBUG_PLUGIN_PATH': EnvVar('SYNAPSE_DEBUG_PLUGIN_PATH', default='', show_default=False),
19
+ 'SYNAPSE_DEBUG_MODULES': EnvVar('SYNAPSE_DEBUG_MODULES', default='', show_default=False),
20
+ 'SYNAPSE_PLUGIN_PUBLISH_HOST': EnvVar('SYNAPSE_PLUGIN_PUBLISH_HOST'),
21
+ 'SYNAPSE_PLUGIN_PUBLISH_USER_TOKEN': EnvVar('SYNAPSE_PLUGIN_PUBLISH_USER_TOKEN'),
22
+ 'SYNAPSE_PLUGIN_PUBLISH_TENANT': EnvVar('SYNAPSE_PLUGIN_PUBLISH_TENANT'),
23
+ 'SYNAPSE_PLUGIN_RUN_HOST': EnvVar('SYNAPSE_PLUGIN_RUN_HOST', default='SYNAPSE_PLUGIN_PUBLISH_HOST'),
24
+ 'SYNAPSE_PLUGIN_RUN_AGENT': EnvVar('SYNAPSE_PLUGIN_RUN_AGENT', default='', show_default=False),
25
+ 'SYNAPSE_PLUGIN_RUN_AGENT_TOKEN': EnvVar('SYNAPSE_PLUGIN_RUN_AGENT_TOKEN'),
26
+ 'SYNAPSE_PLUGIN_RUN_AGENT_HOST': EnvVar('SYNAPSE_PLUGIN_RUN_AGENT_HOST'),
27
+ 'SYNAPSE_PLUGIN_RUN_USER_TOKEN': EnvVar(
28
+ 'SYNAPSE_PLUGIN_RUN_USER_TOKEN', default='SYNAPSE_PLUGIN_PUBLISH_USER_TOKEN'
29
+ ),
30
+ 'SYNAPSE_PLUGIN_RUN_TENANT': EnvVar('SYNAPSE_PLUGIN_RUN_TENANT', default='SYNAPSE_PLUGIN_PUBLISH_TENANT'),
31
+ }
@@ -0,0 +1,16 @@
1
+ import click
2
+
3
+ from .utils import load_alias, set_default_alias
4
+
5
+
6
+ @click.command()
7
+ @click.argument('name', required=True)
8
+ def default(name):
9
+ """Set an alias as the default."""
10
+ alias_data = load_alias(name)
11
+ if not alias_data:
12
+ click.echo(f"Alias '{name}' does not exist.")
13
+ return
14
+
15
+ set_default_alias(name)
16
+ click.echo(f"Alias '{name}' is now the default.")
@@ -0,0 +1,15 @@
1
+ import click
2
+
3
+ from .utils import delete_alias_file, load_alias
4
+
5
+
6
+ @click.command()
7
+ @click.argument('name', required=True)
8
+ def delete(name):
9
+ """Delete an alias."""
10
+ alias_data = load_alias(name)
11
+ if not alias_data:
12
+ click.echo(f"Alias '{name}' does not exist.")
13
+ return
14
+ delete_alias_file(name)
15
+ click.echo(f"Alias '{name}' deleted.")
@@ -0,0 +1,19 @@
1
+ import click
2
+
3
+ from .utils import CONFIG_DIR, DEFAULT_FILE, ensure_config_dir, get_default_alias
4
+
5
+
6
+ @click.command()
7
+ def list():
8
+ """List all aliases."""
9
+ ensure_config_dir()
10
+ aliases = [f.stem for f in CONFIG_DIR.glob('*') if f.is_file() and f.stem != DEFAULT_FILE.stem]
11
+ default_alias = get_default_alias()
12
+ if not aliases:
13
+ click.echo('No aliases found.')
14
+ return
15
+ for alias_name in aliases:
16
+ if alias_name == default_alias:
17
+ click.echo(f'{alias_name} (default)')
18
+ else:
19
+ click.echo(alias_name)
@@ -0,0 +1,15 @@
1
+ import click
2
+
3
+ from .utils import load_alias
4
+
5
+
6
+ @click.command()
7
+ @click.argument('name', required=True)
8
+ def read(name):
9
+ """Read an alias."""
10
+ alias_data = load_alias(name)
11
+ if not alias_data:
12
+ click.echo(f"Alias '{name}' does not exist.")
13
+ return
14
+ for key, value in alias_data.items():
15
+ click.echo(f'{key}: {value}')
@@ -0,0 +1,17 @@
1
+ import click
2
+
3
+ from .utils import load_alias, save_alias_field
4
+
5
+
6
+ @click.command()
7
+ @click.argument('name', required=True)
8
+ @click.argument('field', required=True)
9
+ @click.argument('value', required=True)
10
+ def update(name, field, value):
11
+ """Update a specific field in an alias."""
12
+ alias_data = load_alias(name)
13
+ if not alias_data:
14
+ click.echo(f"Alias '{name}' does not exist.")
15
+ return
16
+ save_alias_field(name, field.upper(), value)
17
+ click.echo(f"Alias '{name}' updated. Field '{field}' is now '{value}'.")
@@ -0,0 +1,54 @@
1
+ from pathlib import Path
2
+
3
+ from dotenv import dotenv_values, set_key, unset_key
4
+
5
+ CONFIG_DIR = Path.home() / '.config' / 'synapse_alias'
6
+ DEFAULT_FILE = CONFIG_DIR / '__default__'
7
+
8
+
9
+ def ensure_config_dir():
10
+ CONFIG_DIR.mkdir(parents=True, exist_ok=True)
11
+
12
+
13
+ def load_alias(alias_name):
14
+ ensure_config_dir()
15
+ alias_file = CONFIG_DIR / alias_name
16
+ if not alias_file.exists():
17
+ return None
18
+ return dotenv_values(alias_file)
19
+
20
+
21
+ # Save or update a field in an alias .env file
22
+ def save_alias_field(alias_name, key, value):
23
+ ensure_config_dir()
24
+ alias_file = CONFIG_DIR / alias_name
25
+ set_key(alias_file, key, value)
26
+
27
+
28
+ # Delete a field from an alias .env file
29
+ def delete_alias_field(alias_name, key):
30
+ ensure_config_dir()
31
+ alias_file = CONFIG_DIR / alias_name
32
+ unset_key(alias_file, key)
33
+
34
+
35
+ # Delete an alias .env file
36
+ def delete_alias_file(alias_name):
37
+ ensure_config_dir()
38
+ alias_file = CONFIG_DIR / alias_name
39
+ if alias_file.exists():
40
+ alias_file.unlink()
41
+
42
+
43
+ def get_default_alias():
44
+ if DEFAULT_FILE.exists():
45
+ default_data = dotenv_values(DEFAULT_FILE)
46
+ return default_data.get('DEFAULT_ALIAS')
47
+ return None
48
+
49
+
50
+ # Set the default alias
51
+ def set_default_alias(alias_name):
52
+ ensure_config_dir()
53
+ with open(DEFAULT_FILE, 'w') as f:
54
+ f.write(f'DEFAULT_ALIAS={alias_name}\n')
@@ -0,0 +1,31 @@
1
+ import os
2
+
3
+ import click
4
+ from dotenv import load_dotenv
5
+
6
+ from synapse_sdk.cli.alias.utils import CONFIG_DIR, get_default_alias
7
+ from synapse_sdk.i18n import gettext as _
8
+
9
+ from .create import create
10
+ from .publish import publish
11
+ from .run import run
12
+
13
+ load_dotenv(CONFIG_DIR / get_default_alias())
14
+ load_dotenv(os.path.join(os.getcwd(), '.env'), override=True)
15
+
16
+
17
+ @click.group(context_settings={'obj': {}, 'auto_envvar_prefix': 'SYNAPSE_PLUGIN'})
18
+ @click.option('--debug/--no-debug', default=False)
19
+ @click.pass_context
20
+ def plugin(ctx, debug):
21
+ """Manage Synapse plugins."""
22
+ ctx.ensure_object(dict)
23
+ ctx.obj['DEBUG'] = debug
24
+
25
+ if debug:
26
+ click.echo(_('Debug mode is "on"'))
27
+
28
+
29
+ plugin.add_command(create)
30
+ plugin.add_command(publish)
31
+ plugin.add_command(run)
@@ -5,6 +5,6 @@ from cookiecutter.main import cookiecutter
5
5
 
6
6
 
7
7
  @click.command()
8
- def create_plugin():
9
- project_root = Path(__file__).parent.parent
8
+ def create():
9
+ project_root = Path(__file__).parents[2]
10
10
  cookiecutter(str(project_root / 'plugins/templates'))
@@ -36,8 +36,7 @@ class DatasetClientMixin(BaseClient):
36
36
  tasks_data = []
37
37
  for data, data_unit in zip(batch, data_units):
38
38
  task_data = {'project': project_id, 'data_unit': data_unit['id']}
39
- if 'ground_truth' in data:
40
- task_data['ground_truth'] = data['ground_truth']
39
+ # TODO: 추후 import 시 Task data 저장 필요 시 해당 로직 추가 필요.
41
40
 
42
41
  tasks_data.append(task_data)
43
42
 
@@ -35,9 +35,10 @@ class BaseClient:
35
35
  for name, file in kwargs['files'].items():
36
36
  if isinstance(file, (str, Path)):
37
37
  kwargs['files'][name] = Path(str(file)).open(mode='rb')
38
- for name, value in kwargs['data'].items():
39
- if isinstance(value, dict):
40
- kwargs['data'][name] = json.dumps(value)
38
+ if 'data' in kwargs:
39
+ for name, value in kwargs['data'].items():
40
+ if isinstance(value, dict):
41
+ kwargs['data'][name] = json.dumps(value)
41
42
  else:
42
43
  headers['Content-Type'] = 'application/json'
43
44
  if 'data' in kwargs:
@@ -105,6 +105,10 @@ class Action:
105
105
  self.envs['SYNAPSE_DEBUG_MODULES'] = ','.join(debug_modules)
106
106
  return debug_modules
107
107
 
108
+ @property
109
+ def plugin_package_manager(self):
110
+ return self.plugin_config.get('package_manager', 'pip')
111
+
108
112
  def get_run(self):
109
113
  context = {
110
114
  'plugin_release': self.plugin_release,
@@ -119,13 +123,13 @@ class Action:
119
123
  return {env: os.environ[env] for env in self.REQUIRED_ENVS if env in os.environ}
120
124
 
121
125
  def get_runtime_env(self):
122
- runtime_env = {'pip': [], 'working_dir': self.plugin_url}
126
+ runtime_env = {self.plugin_package_manager: [], 'working_dir': self.plugin_url}
123
127
 
124
128
  if self.requirements:
125
- runtime_env['pip'] += self.requirements
129
+ runtime_env[self.plugin_package_manager] += self.requirements
126
130
 
127
131
  if self.debug:
128
- runtime_env['pip'] += self.debug_modules
132
+ runtime_env[self.plugin_package_manager] += self.debug_modules
129
133
 
130
134
  # 맨 마지막에 진행되어야 함
131
135
  runtime_env['env_vars'] = self.envs
@@ -206,7 +210,7 @@ class Action:
206
210
  client = self.get_job_client()
207
211
  return client.submit_job(
208
212
  submission_id=self.job_id,
209
- entrypoint=f'python main.py {cmd}',
213
+ entrypoint=f'synapse plugin {cmd}',
210
214
  runtime_env=self.get_runtime_env(),
211
215
  )
212
216
 
@@ -41,6 +41,10 @@ class PluginRelease:
41
41
  def name(self):
42
42
  return self.config['name']
43
43
 
44
+ @cached_property
45
+ def package_manager(self):
46
+ return self.config.get('package_manager', 'pip')
47
+
44
48
  @cached_property
45
49
  def checksum(self):
46
50
  return hash_text(self.code)
@@ -65,7 +69,7 @@ class PluginRelease:
65
69
 
66
70
  warm_up.options(
67
71
  runtime_env={
68
- 'pip': ['-r ${RAY_RUNTIME_ENV_CREATE_WORKING_DIR}/requirements.txt'],
72
+ self.package_manager: ['-r ${RAY_RUNTIME_ENV_CREATE_WORKING_DIR}/requirements.txt'],
69
73
  'working_dir': self.get_url(self.envs['SYNAPSE_PLUGIN_STORAGE']),
70
74
  },
71
75
  scheduling_strategy=strategy,
@@ -4,3 +4,4 @@ version: {{ cookiecutter.version }}
4
4
  readme: README.md
5
5
  description: {{ cookiecutter.description }}
6
6
  category: {{ cookiecutter.category }}
7
+ package_manager: pip
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: synapse-sdk
3
- Version: 1.0.0a26
3
+ Version: 1.0.0a27
4
4
  Summary: synapse sdk
5
5
  Author-email: datamaker <developer@datamaker.io>
6
6
  License: MIT
@@ -23,7 +23,19 @@ synapse_sdk/../locale/en/LC_MESSAGES/messages.po
23
23
  synapse_sdk/../locale/ko/LC_MESSAGES/messages.mo
24
24
  synapse_sdk/../locale/ko/LC_MESSAGES/messages.po
25
25
  synapse_sdk/cli/__init__.py
26
- synapse_sdk/cli/create_plugin.py
26
+ synapse_sdk/cli/alias/__init__.py
27
+ synapse_sdk/cli/alias/create.py
28
+ synapse_sdk/cli/alias/dataclass.py
29
+ synapse_sdk/cli/alias/default.py
30
+ synapse_sdk/cli/alias/delete.py
31
+ synapse_sdk/cli/alias/list.py
32
+ synapse_sdk/cli/alias/read.py
33
+ synapse_sdk/cli/alias/update.py
34
+ synapse_sdk/cli/alias/utils.py
35
+ synapse_sdk/cli/plugin/__init__.py
36
+ synapse_sdk/cli/plugin/create.py
37
+ synapse_sdk/cli/plugin/publish.py
38
+ synapse_sdk/cli/plugin/run.py
27
39
  synapse_sdk/clients/__init__.py
28
40
  synapse_sdk/clients/base.py
29
41
  synapse_sdk/clients/exceptions.py
@@ -95,19 +107,13 @@ synapse_sdk/plugins/categories/smart_tool/actions/auto_label.py
95
107
  synapse_sdk/plugins/categories/smart_tool/templates/config.yaml
96
108
  synapse_sdk/plugins/categories/smart_tool/templates/plugin/__init__.py
97
109
  synapse_sdk/plugins/categories/smart_tool/templates/plugin/auto_label.py
98
- synapse_sdk/plugins/cli/__init__.py
99
- synapse_sdk/plugins/cli/publish.py
100
- synapse_sdk/plugins/cli/run.py
101
110
  synapse_sdk/plugins/templates/cookiecutter.json
102
111
  synapse_sdk/plugins/templates/hooks/post_gen_project.py
103
112
  synapse_sdk/plugins/templates/hooks/pre_prompt.py
104
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env
105
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist
106
113
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.gitignore
107
114
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.pre-commit-config.yaml
108
115
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/README.md
109
116
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml
110
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py
111
117
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/pyproject.toml
112
118
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt
113
119
  synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/plugin/__init__.py
@@ -1,11 +0,0 @@
1
- import click
2
-
3
- from synapse_sdk.cli.create_plugin import create_plugin
4
-
5
-
6
- @click.group()
7
- def cli():
8
- pass
9
-
10
-
11
- cli.add_command(create_plugin)
@@ -1,13 +0,0 @@
1
- import os
2
-
3
- from dotenv import load_dotenv
4
-
5
- from synapse_sdk.plugins.cli import cli
6
-
7
-
8
- def init():
9
- load_dotenv(os.path.join(os.getcwd(), '.env'))
10
- cli(obj={}, auto_envvar_prefix='SYNAPSE_PLUGIN')
11
-
12
-
13
- __all__ = ['init']
@@ -1,21 +0,0 @@
1
- import click
2
-
3
- from synapse_sdk.i18n import gettext as _
4
-
5
- from .publish import publish
6
- from .run import run
7
-
8
-
9
- @click.group()
10
- @click.option('--debug/--no-debug', default=False)
11
- @click.pass_context
12
- def cli(ctx, debug):
13
- ctx.ensure_object(dict)
14
- ctx.obj['DEBUG'] = debug
15
-
16
- if debug:
17
- click.echo(_('Debug mode is "on"'))
18
-
19
-
20
- cli.add_command(run)
21
- cli.add_command(publish)
@@ -1,24 +0,0 @@
1
- # RAY 관련
2
- RAY_ADDRESS=
3
- RAY_DASHBOARD_ADDRESS=
4
- RAY_SERVE_ADDRESS=
5
-
6
- # 플러그인 관련
7
- SYNAPSE_PLUGIN_STORAGE=
8
-
9
- # 플러그인 디버그 관련
10
- SYNAPSE_DEBUG_PLUGIN_PATH=
11
- SYNAPSE_DEBUG_MODULES=
12
-
13
- # 플러그인 PUBLISH 관련
14
- SYNAPSE_PLUGIN_PUBLISH_HOST=https://synapse.datamaker.io
15
- SYNAPSE_PLUGIN_PUBLISH_USER_TOKEN=
16
- SYNAPSE_PLUGIN_PUBLISH_TENANT=
17
-
18
- # 플러그인 RUN 관련
19
- SYNAPSE_PLUGIN_RUN_HOST=
20
- SYNAPSE_PLUGIN_RUN_AGENT=
21
- SYNAPSE_PLUGIN_RUN_AGENT_HOST=
22
- SYNAPSE_PLUGIN_RUN_AGENT_TOKEN=
23
- SYNAPSE_PLUGIN_RUN_USER_TOKEN=
24
- SYNAPSE_PLUGIN_RUN_TENANT=
@@ -1,24 +0,0 @@
1
- # RAY 관련
2
- RAY_ADDRESS=
3
- RAY_DASHBOARD_ADDRESS=
4
- RAY_SERVE_ADDRESS=
5
-
6
- # 플러그인 관련
7
- SYNAPSE_PLUGIN_STORAGE=
8
-
9
- # 플러그인 디버그 관련
10
- SYNAPSE_DEBUG_PLUGIN_PATH=
11
- SYNAPSE_DEBUG_MODULES=
12
-
13
- # 플러그인 PUBLISH 관련
14
- SYNAPSE_PLUGIN_PUBLISH_HOST=https://synapse.datamaker.io
15
- SYNAPSE_PLUGIN_PUBLISH_USER_TOKEN=
16
- SYNAPSE_PLUGIN_PUBLISH_TENANT=
17
-
18
- # 플러그인 RUN 관련
19
- SYNAPSE_PLUGIN_RUN_HOST=
20
- SYNAPSE_PLUGIN_RUN_AGENT=
21
- SYNAPSE_PLUGIN_RUN_AGENT_HOST=
22
- SYNAPSE_PLUGIN_RUN_AGENT_TOKEN=
23
- SYNAPSE_PLUGIN_RUN_USER_TOKEN=
24
- SYNAPSE_PLUGIN_RUN_TENANT=
@@ -1,4 +0,0 @@
1
- from synapse_sdk import plugins
2
-
3
- if __name__ == '__main__':
4
- plugins.init()
File without changes
File without changes
File without changes