Skip to content

Commit c7e27ad

Browse files
committed
Add debug_mode: bool control to task mngr
Allows dynamically importing `pdbp` when enabled and a way for eventually linking with `tractor`'s own debug mode flag.
1 parent e0c888f commit c7e27ad

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

tractor/trionics/_supervisor.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
asynccontextmanager as acm,
2424
contextmanager as cm,
2525
)
26+
from functools import partial
2627
from typing import (
2728
Generator,
2829
Any,
@@ -32,7 +33,6 @@
3233
Outcome,
3334
acapture,
3435
)
35-
import pdbp
3636
from msgspec import Struct
3737
import trio
3838
from trio._core._run import (
@@ -206,6 +206,8 @@ async def _start_wrapped_in_scope(
206206
def add_task_handle_and_crash_handling(
207207
nursery: Nursery,
208208

209+
debug_mode: bool = False,
210+
209211
) -> Generator[
210212
Any,
211213
Outcome,
@@ -246,7 +248,9 @@ def add_task_handle_and_crash_handling(
246248
# a REPL on std errors.
247249
except Exception as err:
248250
print(f'{task.name} crashed, entering debugger!')
249-
pdbp.xpm()
251+
if debug_mode:
252+
import pdbp
253+
pdbp.xpm()
250254
raise
251255

252256
finally:
@@ -255,11 +259,15 @@ def add_task_handle_and_crash_handling(
255259

256260
@acm
257261
async def open_nursery(
258-
task_manager = None,
259-
**kwargs,
262+
task_manager: Generator[Any, Outcome, None] | None = None,
263+
264+
**lowlevel_nursery_kwargs,
260265
):
261-
async with trio.open_nursery(**kwargs) as nurse:
262-
yield TaskManagerNursery(nurse, task_manager=task_manager)
266+
async with trio.open_nursery(**lowlevel_nursery_kwargs) as nurse:
267+
yield TaskManagerNursery(
268+
nurse,
269+
task_manager=task_manager,
270+
)
263271

264272

265273
async def sleep_then_return_val(val: str):
@@ -284,7 +292,10 @@ async def ensure_cancelled():
284292

285293
async def main():
286294
async with open_nursery(
287-
task_manager=add_task_handle_and_crash_handling,
295+
task_manager=partial(
296+
add_task_handle_and_crash_handling,
297+
debug_mode=True,
298+
),
288299
) as sn:
289300
for _ in range(3):
290301
outcome, _ = await sn.start_soon(trio.sleep_forever)

0 commit comments

Comments
 (0)