hyperpocket 0.3.6__py3-none-any.whl → 0.4.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. hyperpocket/auth/provider.py +2 -0
  2. hyperpocket/auth/weaviate/context.py +12 -0
  3. hyperpocket/auth/weaviate/token_context.py +11 -0
  4. hyperpocket/auth/weaviate/token_handler.py +68 -0
  5. hyperpocket/auth/weaviate/token_schema.py +7 -0
  6. hyperpocket/auth/zinc/__init__.py +0 -0
  7. hyperpocket/auth/zinc/context.py +12 -0
  8. hyperpocket/auth/zinc/token_context.py +11 -0
  9. hyperpocket/auth/zinc/token_handler.py +64 -0
  10. hyperpocket/auth/zinc/token_schema.py +7 -0
  11. hyperpocket/cli/eject.py +2 -7
  12. hyperpocket/cli/pull.py +2 -7
  13. hyperpocket/config/settings.py +2 -1
  14. hyperpocket/pocket_core.py +41 -68
  15. hyperpocket/pocket_main.py +37 -16
  16. hyperpocket/repository/__init__.py +3 -4
  17. hyperpocket/repository/repository.py +6 -41
  18. hyperpocket/repository/tool_reference.py +28 -0
  19. hyperpocket/server/auth/weaviate.py +27 -0
  20. hyperpocket/server/auth/zinc.py +27 -0
  21. hyperpocket/server/server.py +127 -61
  22. hyperpocket/session/in_memory.py +13 -3
  23. hyperpocket/tool/__init__.py +0 -3
  24. hyperpocket/tool/dock/__init__.py +3 -0
  25. hyperpocket/tool/dock/dock.py +34 -0
  26. hyperpocket/tool/function/__init__.py +1 -1
  27. hyperpocket/tool/function/tool.py +62 -32
  28. hyperpocket/tool/tool.py +1 -9
  29. hyperpocket/tool_like.py +2 -1
  30. hyperpocket/util/generate_slug.py +4 -0
  31. hyperpocket/util/json_schema_to_model.py +5 -1
  32. {hyperpocket-0.3.6.dist-info → hyperpocket-0.4.0.dist-info}/METADATA +4 -1
  33. {hyperpocket-0.3.6.dist-info → hyperpocket-0.4.0.dist-info}/RECORD +36 -36
  34. hyperpocket/cli/sync.py +0 -17
  35. hyperpocket/repository/lock.py +0 -240
  36. hyperpocket/repository/lockfile.py +0 -62
  37. hyperpocket/server/tool/__init__.py +0 -10
  38. hyperpocket/server/tool/dto/script.py +0 -33
  39. hyperpocket/server/tool/wasm.py +0 -46
  40. hyperpocket/tool/wasm/README.md +0 -166
  41. hyperpocket/tool/wasm/__init__.py +0 -3
  42. hyperpocket/tool/wasm/browser.py +0 -63
  43. hyperpocket/tool/wasm/invoker.py +0 -41
  44. hyperpocket/tool/wasm/script.py +0 -134
  45. hyperpocket/tool/wasm/templates/__init__.py +0 -35
  46. hyperpocket/tool/wasm/templates/node.py +0 -87
  47. hyperpocket/tool/wasm/templates/python.py +0 -93
  48. hyperpocket/tool/wasm/tool.py +0 -163
  49. /hyperpocket/{server/tool/dto → auth/weaviate}/__init__.py +0 -0
  50. {hyperpocket-0.3.6.dist-info → hyperpocket-0.4.0.dist-info}/WHEEL +0 -0
  51. {hyperpocket-0.3.6.dist-info → hyperpocket-0.4.0.dist-info}/entry_points.txt +0 -0
@@ -1,163 +0,0 @@
1
- import json
2
- import pathlib
3
- from typing import Any, Optional
4
-
5
- import toml
6
-
7
- from hyperpocket.auth import AuthProvider
8
- from hyperpocket.config import pocket_logger
9
- from hyperpocket.repository import Lock, Lockfile
10
- from hyperpocket.repository.lock import GitLock, LocalLock
11
- from hyperpocket.tool import Tool, ToolRequest
12
- from hyperpocket.tool.tool import ToolAuth
13
- from hyperpocket.tool.wasm.invoker import WasmInvoker
14
- from hyperpocket.tool.wasm.script import ScriptRuntime
15
-
16
-
17
- class WasmToolRequest(ToolRequest):
18
- lock: Lock
19
- rel_path: str
20
-
21
- def __init__(self, lock: Lock, rel_path: str, tool_vars: dict):
22
- self.lock = lock
23
- self.rel_path = rel_path
24
- self.overridden_tool_vars = tool_vars
25
-
26
- def __str__(self):
27
- return f"ToolRequest(lock={self.lock}, rel_path={self.rel_path})"
28
-
29
-
30
- def from_local(
31
- path: str, tool_vars: Optional[dict[str, str]] = None
32
- ) -> WasmToolRequest:
33
- if tool_vars is None:
34
- tool_vars = dict()
35
- return WasmToolRequest(LocalLock(path), "", tool_vars)
36
-
37
-
38
- def from_git(
39
- repository: str, ref: str, rel_path: str, tool_vars: Optional[dict[str, str]] = None
40
- ) -> WasmToolRequest:
41
- if not tool_vars:
42
- tool_vars = dict()
43
- return WasmToolRequest(
44
- GitLock(repository_url=repository, git_ref=ref), rel_path, tool_vars
45
- )
46
-
47
-
48
- class WasmTool(Tool):
49
- """
50
- WasmTool is Tool executing local python method.
51
- """
52
-
53
- _invoker: WasmInvoker = None
54
- pkg_lock: Lock = None
55
- rel_path: str
56
- runtime: ScriptRuntime = None
57
- json_schema: Optional[dict] = None
58
- readme: Optional[str] = None
59
-
60
- @property
61
- def invoker(self) -> WasmInvoker:
62
- if not self._invoker:
63
- self._invoker = WasmInvoker()
64
- return self._invoker
65
-
66
- @classmethod
67
- def from_tool_request(
68
- cls, tool_req: WasmToolRequest, lockfile: Lockfile = None, **kwargs
69
- ) -> "WasmTool":
70
- if not lockfile:
71
- raise ValueError("lockfile is required")
72
- tool_req.lock = lockfile.get_lock(tool_req.lock.key())
73
- toolpkg_path = tool_req.lock.toolpkg_path()
74
- rel_path = tool_req.rel_path
75
- rootpath = pathlib.Path(toolpkg_path) / rel_path
76
- schema_path = rootpath / "schema.json"
77
- config_path = rootpath / "config.toml"
78
- readme_path = rootpath / "README.md"
79
-
80
- try:
81
- with schema_path.open("r") as f:
82
- json_schema = json.load(f)
83
- except Exception as e:
84
- pocket_logger.warning(
85
- f"{toolpkg_path} failed to load json schema. error : {e}"
86
- )
87
- json_schema = None
88
-
89
- default_tool_vars = dict()
90
- try:
91
- with config_path.open("r") as f:
92
- config = toml.load(f)
93
- name = config.get("name")
94
- description = config.get("description")
95
- if language := config.get("language"):
96
- lang = language.lower()
97
- if lang == "python":
98
- runtime = ScriptRuntime.Python
99
- elif lang == "node":
100
- runtime = ScriptRuntime.Node
101
- else:
102
- raise ValueError(f"The language `{lang}` is not supported.")
103
- else:
104
- raise ValueError("`language` field is required in config.toml")
105
- auth = cls._get_auth(config)
106
- default_tool_vars = config.get("tool_vars", {})
107
- except Exception as e:
108
- raise ValueError(f"Failed to load config.toml: {e}")
109
-
110
- if readme_path.exists():
111
- with readme_path.open("r") as f:
112
- readme = f.read()
113
- else:
114
- readme = None
115
-
116
- return cls(
117
- name=name,
118
- description=description,
119
- argument_json_schema=json_schema,
120
- auth=auth,
121
- runtime=runtime,
122
- readme=readme,
123
- pkg_lock=tool_req.lock,
124
- rel_path=tool_req.rel_path,
125
- postprocessings=tool_req.postprocessings,
126
- default_tool_vars=default_tool_vars,
127
- overridden_tool_vars=tool_req.overridden_tool_vars,
128
- )
129
-
130
- @classmethod
131
- def _get_auth(cls, config: dict) -> Optional[ToolAuth]:
132
- auth = config.get("auth")
133
- if not auth:
134
- return
135
- auth_provider = auth.get("auth_provider")
136
- auth_handler = auth.get("auth_handler")
137
- scopes = auth.get("scopes", [])
138
- return ToolAuth(
139
- auth_provider=AuthProvider.get_auth_provider(auth_provider),
140
- auth_handler=auth_handler,
141
- scopes=scopes,
142
- )
143
-
144
- def template_arguments(self) -> dict[str, str]:
145
- return {}
146
-
147
- def invoke(self, body: Any, envs: dict, **kwargs) -> str:
148
- return self.invoker.invoke(
149
- str(self.pkg_lock.toolpkg_path() / self.rel_path),
150
- self.runtime,
151
- body,
152
- envs | self.tool_vars,
153
- **kwargs,
154
- )
155
-
156
- async def ainvoke(self, body: Any, envs: dict, **kwargs) -> str:
157
- return await self.invoker.ainvoke(
158
- str(self.pkg_lock.toolpkg_path() / self.rel_path),
159
- self.runtime,
160
- body,
161
- envs | self.tool_vars,
162
- **kwargs,
163
- )