First commit.

This commit is contained in:
2025-11-18 11:02:39 +01:00
parent e57266f93d
commit d4c4ccfc18
16 changed files with 874 additions and 1 deletions

35
python/baseController.py Normal file
View File

@@ -0,0 +1,35 @@
class BaseController:
def set_stream_func(self, stream_func):
self._stream_func = stream_func
def send(self, data):
if getattr(self, "_stream_func", None) is not None:
self._stream_func(data)
def setProperty(self, params):
name = params.get("name")
value = params.get("value")
if not isinstance(name, str):
return {"error": "Property name must be a string"}
if not hasattr(self, name):
return {"error": f"Property '{name}' does not exist"}
setattr(self, name, value)
return {"success": True}
def getProperty(self, params):
name = params.get("name")
if not hasattr(self, name):
return {"error": f"Property '{name}' does not exist"}
value = getattr(self, name)
return {"value": value}

41
python/controller.py Normal file
View File

@@ -0,0 +1,41 @@
import time
from baseController import BaseController
class Controller(BaseController):
model = None
tokenizer = None
counter = 0
def getModelPath(self, params):
return {"Model": self.model}
def getTokenizer(self, params):
return {"Tokenizer": self.tokenizer}
def increment(self, params):
self.counter += params.get("by", 1)
return {"counter": self.counter}
def reset(self, params):
self.counter = 0
return {"counter": self.counter}
def testStream(self, params):
for i in range(5):
time.sleep(0.5)
self.send({"partial": f"step {i+1} complete"})
return {"counter": self.counter}

5
python/index.py Normal file
View File

@@ -0,0 +1,5 @@
from router import Router
if __name__ == "__main__":
router = Router()
router.run()

42
python/router.py Normal file
View File

@@ -0,0 +1,42 @@
import time
from controller import Controller
import sys
import json
class Router:
def __init__(self):
self.controller = Controller()
self.controller.send = self.send_stream # inject send method here
def send_response(self, response):
print(json.dumps(response))
sys.stdout.flush()
def send_stream(self, stream_data):
print("__STREAM__" + json.dumps(stream_data))
sys.stdout.flush()
def run(self):
for line in sys.stdin:
if not line.strip():
continue
try:
message = json.loads(line)
method = message.get("method")
params = message.get("params", {})
if not hasattr(self.controller, method):
self.send_response({"error": f"Method '{method}' not found in ./python/controller.py"})
continue
method_to_call = getattr(self.controller, method)
# Call method WITHOUT stream_func argument,
# controller methods use self.send() internally
result = method_to_call(params)
self.send_response({"result": result})
except Exception as e:
self.send_response({"error": str(e)})

4
python/test_import.py Normal file
View File

@@ -0,0 +1,4 @@
from controller import Controller
c = Controller()
print(c.increment({"by": 3}))