Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 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)