suggestions
Smart suggestions for typos and common mistakes using Levenshtein distance.
format_suggestions(suggestions)
Format suggestion list for display in error messages.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
suggestions
|
list[tuple[str, float]]
|
List of (suggestion, similarity_score) tuples |
required |
Returns:
| Type | Description |
|---|---|
str
|
Formatted string with suggestions, or empty string if no suggestions |
Examples:
>>> format_suggestions([('parameters', 0.9), ('param_groups', 0.54)])
'💡 Did you mean one of these?\n - parameters ✓ (90% match)\n - param_groups (54% match)'
Source code in src/sparkwheel/errors/suggestions.py
get_suggestions(key, available_keys, max_suggestions=3, similarity_threshold=0.6)
Get suggestions for a potentially misspelled key.
Uses Levenshtein distance to find similar keys and ranks them by similarity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key
|
str
|
The key that wasn't found |
required |
available_keys
|
Sequence[str]
|
List of available keys to compare against |
required |
max_suggestions
|
int
|
Maximum number of suggestions to return (default: 3) |
3
|
similarity_threshold
|
float
|
Minimum similarity score (0-1) for suggestions (default: 0.6) Lower values are more lenient, higher values are stricter |
0.6
|
Returns:
| Type | Description |
|---|---|
list[tuple[str, float]]
|
List of (suggestion, similarity_score) tuples, sorted by similarity (best first) |
Examples:
>>> keys = ["parameters", "param_groups", "learning_rate", "weight_decay"]
>>> get_suggestions("paramters", keys)
[('parameters', 0.9), ('param_groups', 0.54)]
>>> get_suggestions("lr", keys)
[] # No matches above threshold
Source code in src/sparkwheel/errors/suggestions.py
levenshtein_distance(s1, s2)
Calculate the Levenshtein distance between two strings.
The Levenshtein distance is the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one word into another.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
s1
|
str
|
First string |
required |
s2
|
str
|
Second string |
required |
Returns:
| Type | Description |
|---|---|
int
|
Integer representing the edit distance between s1 and s2 |
Examples:
>>> levenshtein_distance("kitten", "sitting")
3
>>> levenshtein_distance("hello", "hello")
0
>>> levenshtein_distance("hello", "helo")
1