fix: handle None/empty edge cases in SearchFilter and Update.set() #282
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes two related edge-case handling issues where SQLSpec raised errors instead of handling gracefully.
The Problem
SearchFilterraisedTypeErrorwhenvalue=Nonewas passed (common when no search query param provided)Update.set(**{})raisedSQLBuilderError(common with Pydantic/msgspecexclude_unset=Truepatterns)The Solution
Handle edge cases at the source rather than requiring defensive checks everywhere:
value: str | None- theappend_to_statementmethod already handles None as no-opselfunchanged when called with empty args/kwargsKey Changes
sqlspec/core/filters.py:SearchFilter.__init__acceptsvalue: str | Nonesqlspec/builder/_dml.py:set()returns early whennot args and not kwargssqlspec/extensions/litestar/providers.py: Removed now-unnecessary# type: ignorecommentCloses #281, closes #279