Spaces:
Running
Running
Avoid execution for unchanged workspaces.
Browse files
lynxkite-app/src/lynxkite_app/crdt.py
CHANGED
@@ -54,6 +54,10 @@ class WebsocketServer(pycrdt_websocket.WebsocketServer):
|
|
54 |
# We have two possible sources of truth for the workspaces, the YStore and the JSON files.
|
55 |
# In case we didn't find the workspace in the YStore, we try to load it from the JSON files.
|
56 |
try_to_load_workspace(ws, name)
|
|
|
|
|
|
|
|
|
57 |
room = pycrdt_websocket.YRoom(
|
58 |
ystore=ystore, ydoc=ydoc, exception_handler=ws_exception_handler
|
59 |
)
|
|
|
54 |
# We have two possible sources of truth for the workspaces, the YStore and the JSON files.
|
55 |
# In case we didn't find the workspace in the YStore, we try to load it from the JSON files.
|
56 |
try_to_load_workspace(ws, name)
|
57 |
+
ws_simple = workspace.Workspace.model_validate(ws.to_py())
|
58 |
+
clean_input(ws_simple)
|
59 |
+
# Set the last known version to the current state, so we don't trigger a change event.
|
60 |
+
last_known_versions[name] = ws_simple
|
61 |
room = pycrdt_websocket.YRoom(
|
62 |
ystore=ystore, ydoc=ydoc, exception_handler=ws_exception_handler
|
63 |
)
|
lynxkite-core/src/lynxkite/core/ops.py
CHANGED
@@ -126,7 +126,6 @@ def basic_outputs(*names):
|
|
126 |
|
127 |
def _param_to_type(name, value, type):
|
128 |
value = value or ""
|
129 |
-
print(f'Converting "{name}" {value} to {type}')
|
130 |
if type is int:
|
131 |
assert value != "", f"{name} is unset."
|
132 |
return int(value)
|
@@ -158,7 +157,6 @@ class Op(BaseConfig):
|
|
158 |
for p in params:
|
159 |
if p in self.params:
|
160 |
params[p] = _param_to_type(p, params[p], self.params[p].type)
|
161 |
-
print(self.name, p, params[p])
|
162 |
res = self.func(*inputs, **params)
|
163 |
if not isinstance(res, Result):
|
164 |
# Automatically wrap the result in a Result object, if it isn't already.
|
|
|
126 |
|
127 |
def _param_to_type(name, value, type):
|
128 |
value = value or ""
|
|
|
129 |
if type is int:
|
130 |
assert value != "", f"{name} is unset."
|
131 |
return int(value)
|
|
|
157 |
for p in params:
|
158 |
if p in self.params:
|
159 |
params[p] = _param_to_type(p, params[p], self.params[p].type)
|
|
|
160 |
res = self.func(*inputs, **params)
|
161 |
if not isinstance(res, Result):
|
162 |
# Automatically wrap the result in a Result object, if it isn't already.
|