MCPcopy Index your code
hub / github.com/fluentpython/example-code-2e / finder

Function finder

21-async/mojifinder/tcp_mojifinder.py:15–38  ·  view source on GitHub ↗
(index: InvertedIndex,          # <2>
                 reader: asyncio.StreamReader,
                 writer: asyncio.StreamWriter)

Source from the content-addressed store, hash-verified

13PROMPT = b'?> '
14
15async def finder(index: InvertedIndex, # <2>
16 reader: asyncio.StreamReader,
17 writer: asyncio.StreamWriter) -> None:
18 client = writer.get_extra_info('peername') # <3>
19 while True: # <4>
20 writer.write(PROMPT) # can't await! # <5>
21 await writer.drain() # must await! # <6>
22 data = await reader.readline() # <7>
23 if not data: # <8>
24 break
25 try:
26 query = data.decode().strip() # <9>
27 except UnicodeDecodeError: # <10>
28 query = '\x00'
29 print(f' From {client}: {query!r}') # <11>
30 if query:
31 if ord(query[:1]) < 32: # <12>
32 break
33 results = await search(query, index, writer) # <13>
34 print(f' To {client}: {results} results.') # <14>
35
36 writer.close() # <15>
37 await writer.wait_closed() # <16>
38 print(f'Close {client}.') # <17>
39# end::TCP_MOJIFINDER_TOP[]
40
41# tag::TCP_MOJIFINDER_SEARCH[]

Callers

nothing calls this directly

Calls 3

decodeMethod · 0.80
searchFunction · 0.70
closeMethod · 0.45

Tested by

no test coverage detected