(msg: str)
| 9 | import itertools |
| 10 | |
| 11 | async def spin(msg: str) -> None: # <1> |
| 12 | for char in itertools.cycle(r'\|/-'): |
| 13 | status = f'\r{char} {msg}' |
| 14 | print(status, flush=True, end='') |
| 15 | try: |
| 16 | await asyncio.sleep(.1) # <2> |
| 17 | except asyncio.CancelledError: # <3> |
| 18 | break |
| 19 | blanks = ' ' * len(status) |
| 20 | print(f'\r{blanks}\r', end='') |
| 21 | |
| 22 | async def slow() -> int: |
| 23 | await asyncio.sleep(3) # <4> |