lmnr 0.2.2__tar.gz → 0.2.3.1__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.
- {lmnr-0.2.2 → lmnr-0.2.3.1}/PKG-INFO +1 -1
- {lmnr-0.2.2 → lmnr-0.2.3.1}/pyproject.toml +2 -2
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/sdk/remote_debugger.py +13 -11
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/types.py +6 -1
- {lmnr-0.2.2 → lmnr-0.2.3.1}/LICENSE +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/README.md +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/__main__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/cli.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/cookiecutter.json +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/parser/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/parser/nodes/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/parser/nodes/types.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/parser/parser.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/parser/utils.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/action.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/engine.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/state.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/task.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/pipelines/{{cookiecutter.pipeline_dir_name}}/__init__.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/pipelines/{{cookiecutter.pipeline_dir_name}}/nodes/functions.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/pipelines/{{cookiecutter.pipeline_dir_name}}/{{cookiecutter.pipeline_dir_name}}.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/types.py +0 -0
- {lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/sdk/endpoint.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "lmnr"
|
3
|
-
version = "0.2.
|
3
|
+
version = "0.2.3.1"
|
4
4
|
description = "Python SDK for Laminar AI"
|
5
5
|
authors = [
|
6
6
|
{ name = "lmnr.ai", email = "founders@lmnr.ai" }
|
@@ -11,7 +11,7 @@ license = "Apache-2.0"
|
|
11
11
|
|
12
12
|
[tool.poetry]
|
13
13
|
name = "lmnr"
|
14
|
-
version = "0.2.
|
14
|
+
version = "0.2.3.1"
|
15
15
|
description = "Python SDK for Laminar AI"
|
16
16
|
authors = ["lmnr.ai"]
|
17
17
|
readme = "README.md"
|
@@ -1,6 +1,6 @@
|
|
1
|
-
from typing import Callable
|
1
|
+
from typing import Callable, Optional
|
2
2
|
from websockets.sync.client import connect
|
3
|
-
from lmnr.types import NodeInput, RegisterDebuggerRequest, SDKError, ToolCall
|
3
|
+
from lmnr.types import DeregisterDebuggerRequest, NodeInput, RegisterDebuggerRequest, SDKError, ToolCall
|
4
4
|
import uuid
|
5
5
|
import json
|
6
6
|
from threading import Thread
|
@@ -14,9 +14,11 @@ class RemoteDebugger:
|
|
14
14
|
self.stop_flag = False
|
15
15
|
self.session = None
|
16
16
|
|
17
|
-
def start(self):
|
17
|
+
def start(self) -> Optional[str]:
|
18
18
|
self.stop_flag = False
|
19
|
+
self.session = self._generate_session_id()
|
19
20
|
self.thread.start()
|
21
|
+
return self.session
|
20
22
|
|
21
23
|
def stop(self):
|
22
24
|
self.stop_flag = True
|
@@ -26,9 +28,11 @@ class RemoteDebugger:
|
|
26
28
|
# in case the user wants to start the debugger again
|
27
29
|
self.thread = Thread(target=self._run)
|
28
30
|
|
31
|
+
def get_session_id(self) -> str:
|
32
|
+
return self.session
|
33
|
+
|
29
34
|
def _run(self):
|
30
|
-
|
31
|
-
request = RegisterDebuggerRequest(debugger_session_id=self.session)
|
35
|
+
request = RegisterDebuggerRequest(debuggerSessionId=self.session)
|
32
36
|
with connect(
|
33
37
|
self.url,
|
34
38
|
additional_headers={
|
@@ -36,6 +40,7 @@ class RemoteDebugger:
|
|
36
40
|
}
|
37
41
|
) as websocket:
|
38
42
|
websocket.send(request.model_dump_json())
|
43
|
+
print(self._format_session_id())
|
39
44
|
while not self.stop_flag:
|
40
45
|
try:
|
41
46
|
# blocks the thread until a message is received or a timeout (3 seconds) occurs
|
@@ -66,20 +71,17 @@ class RemoteDebugger:
|
|
66
71
|
pass
|
67
72
|
response = tool(**arguments)
|
68
73
|
websocket.send(json.dumps(response))
|
69
|
-
|
70
|
-
|
71
|
-
def get_session_id(self) -> str:
|
72
|
-
return self._format_session_id(self.session)
|
74
|
+
websocket.send(DeregisterDebuggerRequest(debuggerSessionId=self.session, deregister=True).model_dump_json())
|
73
75
|
|
74
76
|
def _generate_session_id(self) -> str:
|
75
77
|
return uuid.uuid4().urn[9:]
|
76
78
|
|
77
|
-
def _format_session_id(self
|
79
|
+
def _format_session_id(self) -> str:
|
78
80
|
return \
|
79
81
|
f"""
|
80
82
|
========================================
|
81
83
|
Debugger Session ID:
|
82
|
-
{
|
84
|
+
{self.session}
|
83
85
|
========================================
|
84
86
|
"""
|
85
87
|
|
@@ -51,5 +51,10 @@ class ToolCall(pydantic.BaseModel):
|
|
51
51
|
type: Optional[str]
|
52
52
|
function: ToolCallRequest
|
53
53
|
|
54
|
+
# TODO: allow snake_case and manually convert to camelCase
|
54
55
|
class RegisterDebuggerRequest(pydantic.BaseModel):
|
55
|
-
|
56
|
+
debuggerSessionId: str
|
57
|
+
|
58
|
+
class DeregisterDebuggerRequest(pydantic.BaseModel):
|
59
|
+
debuggerSessionId: str
|
60
|
+
deregister: bool
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/__init__.py
RENAMED
File without changes
|
{lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/__init__.py
RENAMED
File without changes
|
{lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/action.py
RENAMED
File without changes
|
{lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/engine.py
RENAMED
File without changes
|
{lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/state.py
RENAMED
File without changes
|
{lmnr-0.2.2 → lmnr-0.2.3.1}/src/lmnr/cli/{{cookiecutter.lmnr_pipelines_dir_name}}/engine/task.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|