Skip to content

Commit bbb9d7e

Browse files
author
Luke Shaw
committed
Enable execution of lazy expressions server-side
1 parent b77a457 commit bbb9d7e

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

caterva2/client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,7 @@ def copy(self, src, dst):
11301130
)
11311131
return pathlib.PurePosixPath(result)
11321132

1133-
def lazyexpr(self, name, expression, operands=None):
1133+
def lazyexpr(self, name, expression, operands=None, compute=False):
11341134
"""
11351135
Creates a lazy expression dataset in personal space.
11361136
@@ -1145,6 +1145,10 @@ def lazyexpr(self, name, expression, operands=None):
11451145
Expression to be evaluated, which must yield a lazy expression.
11461146
operands : dict
11471147
Mapping of variables in the expression to their corresponding dataset paths.
1148+
compute : bool, optional
1149+
If false, generate lazyexpr and do not compute anything.
1150+
If true, compute lazy expression on creation and save (full) result.
1151+
Default false.
11481152
11491153
Returns
11501154
-------
@@ -1173,7 +1177,7 @@ def lazyexpr(self, name, expression, operands=None):
11731177
"User has not provided operands for the LazyExpression. Proceeding with empty operands arg"
11741178
)
11751179
operands = {}
1176-
expr = {"name": name, "expression": expression, "operands": operands}
1180+
expr = {"name": name, "expression": expression, "operands": operands, "lazy": not compute}
11771181
dataset = api_utils.post(f"{self.urlbase}/api/lazyexpr/", expr, auth_cookie=self.cookie)
11781182
return pathlib.PurePosixPath(dataset)
11791183

caterva2/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class NewLazyExpr(pydantic.BaseModel):
6565
name: str
6666
expression: str
6767
operands: dict[str, str]
68+
lazy: bool
6869

6970

7071
class MoveCopyPayload(pydantic.BaseModel):

caterva2/services/sub.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -969,7 +969,7 @@ def error(msg):
969969
return fastapi.HTTPException(status_code=400, detail=msg) # bad request
970970

971971
try:
972-
result_path = make_expr(expr.name, expr.expression, expr.operands, user)
972+
result_path = make_expr(expr.name, expr.expression, expr.operands, user, expr.lazy)
973973
except (SyntaxError, ValueError, TypeError) as exc:
974974
raise error(f"Invalid name or expression: {exc}") from exc
975975
except KeyError as ke:

0 commit comments

Comments
 (0)