| Server IP : 3.96.16.70 / Your IP : 216.73.216.15 Web Server : Apache System : Linux ip-172-31-26-103.ca-central-1.compute.internal 6.1.163-186.299.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Feb 24 16:35:42 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/thread-self/root/lib/python3.9/site-packages/prompt_toolkit/completion/ |
Upload File : |
from typing import Iterable, Set
from prompt_toolkit.document import Document
from .base import CompleteEvent, Completer, Completion
__all__ = ["DeduplicateCompleter"]
class DeduplicateCompleter(Completer):
"""
Wrapper around a completer that removes duplicates. Only the first unique
completions are kept.
Completions are considered to be a duplicate if they result in the same
document text when they would be applied.
"""
def __init__(self, completer: Completer) -> None:
self.completer = completer
def get_completions(
self, document: Document, complete_event: CompleteEvent
) -> Iterable[Completion]:
# Keep track of the document strings we'd get after applying any completion.
found_so_far: Set[str] = set()
for completion in self.completer.get_completions(document, complete_event):
text_if_applied = (
document.text[: document.cursor_position + completion.start_position]
+ completion.text
+ document.text[document.cursor_position :]
)
if text_if_applied == document.text:
# Don't include completions that don't have any effect at all.
continue
if text_if_applied in found_so_far:
continue
found_so_far.add(text_if_applied)
yield completion