From 7068e77d2726809e734bc95eaf1d36059edc3070 Mon Sep 17 00:00:00 2001 From: imanjra Date: Mon, 30 Sep 2024 13:26:34 -0400 Subject: [PATCH] fix save workspace built-in operator --- fiftyone/operators/builtin.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/fiftyone/operators/builtin.py b/fiftyone/operators/builtin.py index bffe9d6565..12d4ee76bb 100644 --- a/fiftyone/operators/builtin.py +++ b/fiftyone/operators/builtin.py @@ -1940,8 +1940,9 @@ def resolve_input(self, ctx): ) # @todo infer this automatically from current App spaces - spaces_prop = inputs.str( + spaces_prop = inputs.oneof( "spaces", + [types.String(), types.Object()], default=None, required=True, label="Spaces", @@ -1955,7 +1956,7 @@ def resolve_input(self, ctx): spaces = ctx.params.get("spaces", None) if spaces is not None: try: - fo.Space.from_json(spaces) + _parse_spaces(spaces) except: spaces_prop.invalid = True spaces_prop.error_message = "Invalid workspace definition" @@ -1978,10 +1979,7 @@ def execute(self, ctx): color = ctx.params.get("color", None) spaces = ctx.params.get("spaces", None) - if isinstance(spaces, dict): - spaces = fo.Space.from_dict(spaces) - else: - spaces = fo.Space.from_json(spaces) + spaces = _parse_spaces(spaces) ctx.dataset.save_workspace( name, @@ -2294,6 +2292,12 @@ def _get_non_default_frame_fields(dataset): return schema +def _parse_spaces(spaces): + if isinstance(spaces, dict): + return fo.Space.from_dict(spaces) + return fo.Space.from_json(spaces) + + BUILTIN_OPERATORS = [ EditFieldInfo(_builtin=True), CloneSelectedSamples(_builtin=True),