did_you_mean.py 804 B

12345678910111213141516171819202122232425262728
  1. from typing import Optional, Sequence
  2. __all__ = ["did_you_mean"]
  3. MAX_LENGTH = 5
  4. def did_you_mean(suggestions: Sequence[str], sub_message: Optional[str] = None) -> str:
  5. """Given [ A, B, C ] return ' Did you mean A, B, or C?'"""
  6. if not suggestions or not MAX_LENGTH:
  7. return ""
  8. parts = [" Did you mean "]
  9. if sub_message:
  10. parts.extend([sub_message, " "])
  11. suggestions = suggestions[:MAX_LENGTH]
  12. n = len(suggestions)
  13. if n == 1:
  14. parts.append(f"'{suggestions[0]}'?")
  15. elif n == 2:
  16. parts.append(f"'{suggestions[0]}' or '{suggestions[1]}'?")
  17. else:
  18. parts.extend(
  19. [
  20. ", ".join(f"'{s}'" for s in suggestions[:-1]),
  21. f", or '{suggestions[-1]}'?",
  22. ]
  23. )
  24. return "".join(parts)