def wrapped( arg: typing.Union[selectable.LabHost, board.UBootShell, None] = None, *args: typing.Any, **kwargs: typing.Any, ) -> typing.Any: with contextlib.ExitStack() as cx: lh: selectable.LabHost ub: board.UBootShell # Acquire LabHost if arg is None: lh = cx.enter_context(selectable.acquire_lab()) elif isinstance(arg, linux.Lab): lh = cx.enter_context(arg) elif not isinstance(arg, board.UBootShell): raise TypeError( f"Argument to {tc!r} must either be a lab-host or a UBootShell (found {arg!r})" ) # Acquire U-Boot if isinstance(arg, board.UBootShell): ub = cx.enter_context(arg) else: b = cx.enter_context(selectable.acquire_board(lh)) ub = cx.enter_context(selectable.acquire_uboot(b)) return tc(ub, *args, **kwargs)
def wrapped( arg: typing.Union[selectable.LabHost, linux.LinuxShell, None] = None, *args: typing.Any, **kwargs: typing.Any, ) -> typing.Any: with contextlib.ExitStack() as cx: lh: selectable.LabHost lnx: linux.LinuxShell # Acquire LabHost if arg is None: lh = cx.enter_context(selectable.acquire_lab()) elif isinstance(arg, linux.Lab): lh = cx.enter_context(arg) # type: ignore elif not isinstance(arg, linux.LinuxShell): raise TypeError( f"Argument to {tc!r} must either be a lab-host or a board linux (found {arg!r})" ) # Acquire Linux if arg is None or isinstance(arg, linux.Lab): b = cx.enter_context(selectable.acquire_board(lh)) lnx = cx.enter_context(selectable.acquire_linux(b)) else: lnx = cx.enter_context(arg) return tc(lnx, *args, **kwargs)
def wrapped( lab: typing.Optional[linux.Lab] = None, *args: typing.Any, **kwargs: typing.Any ) -> typing.Any: if lab is not None and not isinstance(lab, linux.Lab): raise TypeError(f"Argument to {tc!r} must be a lab-host (found {lab!r})") with lab or selectable.acquire_lab() as lh: return tc(lh, *args, **kwargs)