Unverified Commit 1c899abd authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #18002 from mvdbeek/fix_invalid_param_reporting

[24.0] Don't fail if reporting invalid parameter values
parents 88dcb255 48168faa
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -892,6 +892,11 @@ class BaseURLToolParameter(HiddenToolParameter):
        return d


def iter_to_string(iterable: typing.Iterable[typing.Any]) -> typing.Generator[str, None, None]:
    for item in iterable:
        yield str(item)


class SelectToolParameter(ToolParameter):
    """
    Parameter that takes on one (or many) or a specific set of values.
@@ -1041,8 +1046,9 @@ class SelectToolParameter(ToolParameter):
            elif set(value).issubset(set(fallback_values.keys())):
                return [fallback_values[v] for v in value]
            else:
                invalid_options = iter_to_string(set(value) - set(legal_values))
                raise ParameterValueError(
                    f"invalid options ({','.join(set(value) - set(legal_values))!r}) were selected (valid options: {','.join(legal_values)})",
                    f"invalid options ({','.join(invalid_options)!r}) were selected (valid options: {','.join(iter_to_string(legal_values))})",
                    self.name,
                    is_dynamic=self.is_dynamic,
                )
@@ -1066,7 +1072,7 @@ class SelectToolParameter(ToolParameter):
                return value
            else:
                raise ParameterValueError(
                    f"an invalid option ({value!r}) was selected (valid options: {','.join(legal_values)})",
                    f"an invalid option ({value!r}) was selected (valid options: {','.join(iter_to_string(legal_values))})",
                    self.name,
                    value,
                    is_dynamic=self.is_dynamic,