Example UsageΒΆ
from os import set_blocking
from selectors import EVENT_READ, DefaultSelector
from sys import stdin, stdout
from salve import AUTOCOMPLETE, IPC, Response
def main():
# Create context for IPC
context = IPC()
# Allow for nice input
set_blocking(stdin.fileno(), False)
set_blocking(stdin.fileno(), False)
selector = DefaultSelector()
selector.register(stdin, EVENT_READ)
# Print out "Code: "
stdout.write("Code: \n")
stdout.flush()
while True:
# Check input
events = selector.select(0.025)
if events:
# Make requests
for line in stdin:
# Update file
context.update_file("test", line)
# Make request to server
context.request(
AUTOCOMPLETE,
expected_keywords=[],
file="test",
current_word=line[-2],
)
# Check output
# context.cancel_request("autocomplete") # Uncommenting this line will cause the request to always be cancelled
output: Response | None = context.get_response(AUTOCOMPLETE) # type: ignore
if not output:
continue
# Write response
stdout.write(str(output) + "\n")
stdout.flush()
context.kill_IPC()
if __name__ == "__main__":
main()
See the file example file here.