12345678910111213141516171819202122232425262728 |
- from typing import Optional, Sequence
- __all__ = ["did_you_mean"]
- MAX_LENGTH = 5
- def did_you_mean(suggestions: Sequence[str], sub_message: Optional[str] = None) -> str:
- """Given [ A, B, C ] return ' Did you mean A, B, or C?'"""
- if not suggestions or not MAX_LENGTH:
- return ""
- parts = [" Did you mean "]
- if sub_message:
- parts.extend([sub_message, " "])
- suggestions = suggestions[:MAX_LENGTH]
- n = len(suggestions)
- if n == 1:
- parts.append(f"'{suggestions[0]}'?")
- elif n == 2:
- parts.append(f"'{suggestions[0]}' or '{suggestions[1]}'?")
- else:
- parts.extend(
- [
- ", ".join(f"'{s}'" for s in suggestions[:-1]),
- f", or '{suggestions[-1]}'?",
- ]
- )
- return "".join(parts)
|