MCPcopy Create free account
hub / github.com/bslatkin/effectivepython / AsyncClientSession

Class AsyncClientSession

example_code/item_076.py:387–430  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

385
386print("Example 23")
387class AsyncClientSession:
388 def __init__(self, send, receive, secret):
389 self.send = send
390 self.receive = receive
391 self.secret = secret
392 self.last_distance = None
393
394
395 print("Example 24")
396 async def request_number(self):
397 await self.send("NUMBER") # Changed
398 data = await self.receive() # Changed
399 return int(data)
400
401
402 print("Example 25")
403 async def report_outcome(self, number): # Changed
404 new_distance = math.fabs(number - self.secret)
405
406 if new_distance == 0:
407 decision = CORRECT
408 elif self.last_distance is None:
409 decision = UNSURE
410 elif new_distance < self.last_distance:
411 decision = WARMER
412 elif new_distance > self.last_distance:
413 decision = COLDER
414 else:
415 decision = SAME
416
417 self.last_distance = new_distance
418
419 await self.send(f"REPORT {decision}") # Changed
420 return decision
421
422
423 print("Example 26")
424 async def __aiter__(self): # Changed
425 while True:
426 number = await self.request_number() # Changed
427 decision = await self.report_outcome(number) # Changed
428 yield number, decision
429 if decision == CORRECT:
430 return
431
432
433print("Example 27")

Callers 1

new_async_gameFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected