fix: functions and tools with a required Valves field cannot be saved (#32165)

Since the recent change that keeps a history of function and tool edits, saving a new function or tool whose Valves (its admin settings, such as an API key) have a required field with no default was refused with "Current Valves are incompatible with this code: ... Field required", because a new one has no Valves set yet. Editing the code to add a new required field failed the same way. Missing required fields no longer block saving, so the function or tool can be installed first and its Valves filled in afterwards, as before that change. Saved Valves that have the wrong type for the new code are still rejected.

Fixes #32145
This commit is contained in:
Classic298 2026-10-10 17:59:52 +02:00 • committed by GitHub
parent 93838060b2
commit c9f9c4b1da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -50,6 +50,9 @@ def validate_valves(module, valves):
# Validate without replacing the stored values (including unused keys/secrets).
module.Valves(**{key: value for key, value in values.items() if value is not None})
except Exception as error:
# Required fields with no stored value yet get filled in after saving.
if isinstance(error, ValidationError) and all(item['type'] == 'missing' for item in error.errors()):
return
detail = (
'; '.join(
f'{".".join(map(str, item["loc"]))}: {item["msg"]}' for item in error.errors(include_input=False)