(sp: ServerProcess)
| 58 | |
| 59 | @contextmanager |
| 60 | def scoped_server(sp: ServerProcess): |
| 61 | def stop(): |
| 62 | nonlocal sp |
| 63 | if sp is not None: |
| 64 | sp.stop() |
| 65 | sp = None # type: ignore |
| 66 | atexit.register(stop) |
| 67 | yield sp |
| 68 | stop() |
| 69 | |
| 70 | |
| 71 | logging.basicConfig( |