@@ -717,17 +717,8 @@ def make_expr(
717717 if (not expression and not func ) or (not remotepath and not name ):
718718 raise ValueError ("name/remotepath and expression should not be empty" )
719719
720- # Open expression datasets
721- # For expressions, only open the operands actually used
722- # For functions, we need all operands in order
723- if func is None :
724- vars_to_open = blosc2 .get_expr_operands (expression .strip ())
725- else :
726- vars_to_open = vars .keys ()
727-
728720 var_dict = {}
729- for var in vars_to_open :
730- path = vars [var ]
721+ for var , path in vars .items ():
731722 # Detect special roots
732723 path = pathlib .Path (path )
733724 abspath = get_writable_path (path , user )
@@ -2148,11 +2139,15 @@ async def htmx_command(
21482139 compute = operator == ":="
21492140 try :
21502141 result_name , expr = command .split (operator , maxsplit = 1 )
2142+ alt_ops = {}
21512143 if "#" in expr : # get alternative operands
21522144 expr , alt_ops = expr .split ("#" , maxsplit = 1 )
21532145 alt_ops = ast .literal_eval (alt_ops .strip ()) # convert str to dict
2154- for k , v in alt_ops .items ():
2155- operands [k ] = v # overwrite or add operands if necessary
2146+ opkeys = blosc2 .get_expr_operands (expr .strip ()) # get operands from expression
2147+ operands = {k : operands [k ] for k in opkeys }
2148+ for k , v in alt_ops .items ():
2149+ operands [k ] = v # overwrite or add operands if necessary
2150+
21562151 expr = {
21572152 "name" : result_name ,
21582153 "expression" : expr ,
0 commit comments