hyperpocket 0.3.7__py3-none-any.whl → 0.4.0__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.
Files changed (45) hide show
  1. hyperpocket/auth/provider.py +1 -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/cli/eject.py +2 -7
  7. hyperpocket/cli/pull.py +2 -7
  8. hyperpocket/config/settings.py +2 -1
  9. hyperpocket/pocket_core.py +41 -68
  10. hyperpocket/pocket_main.py +37 -16
  11. hyperpocket/repository/__init__.py +3 -4
  12. hyperpocket/repository/repository.py +6 -41
  13. hyperpocket/repository/tool_reference.py +28 -0
  14. hyperpocket/server/auth/weaviate.py +27 -0
  15. hyperpocket/server/server.py +127 -61
  16. hyperpocket/session/in_memory.py +13 -3
  17. hyperpocket/tool/__init__.py +0 -3
  18. hyperpocket/tool/dock/__init__.py +3 -0
  19. hyperpocket/tool/dock/dock.py +34 -0
  20. hyperpocket/tool/function/__init__.py +1 -1
  21. hyperpocket/tool/function/tool.py +62 -32
  22. hyperpocket/tool/tool.py +1 -9
  23. hyperpocket/tool_like.py +2 -1
  24. hyperpocket/util/generate_slug.py +4 -0
  25. hyperpocket/util/json_schema_to_model.py +5 -1
  26. {hyperpocket-0.3.7.dist-info → hyperpocket-0.4.0.dist-info}/METADATA +4 -1
  27. {hyperpocket-0.3.7.dist-info → hyperpocket-0.4.0.dist-info}/RECORD +30 -36
  28. hyperpocket/cli/sync.py +0 -17
  29. hyperpocket/repository/lock.py +0 -240
  30. hyperpocket/repository/lockfile.py +0 -62
  31. hyperpocket/server/tool/__init__.py +0 -10
  32. hyperpocket/server/tool/dto/script.py +0 -33
  33. hyperpocket/server/tool/wasm.py +0 -46
  34. hyperpocket/tool/wasm/README.md +0 -166
  35. hyperpocket/tool/wasm/__init__.py +0 -3
  36. hyperpocket/tool/wasm/browser.py +0 -63
  37. hyperpocket/tool/wasm/invoker.py +0 -41
  38. hyperpocket/tool/wasm/script.py +0 -134
  39. hyperpocket/tool/wasm/templates/__init__.py +0 -35
  40. hyperpocket/tool/wasm/templates/node.py +0 -87
  41. hyperpocket/tool/wasm/templates/python.py +0 -93
  42. hyperpocket/tool/wasm/tool.py +0 -163
  43. /hyperpocket/{server/tool/dto → auth/weaviate}/__init__.py +0 -0
  44. {hyperpocket-0.3.7.dist-info → hyperpocket-0.4.0.dist-info}/WHEEL +0 -0
  45. {hyperpocket-0.3.7.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
- )