recline.commands.async_command module

Original © NetApp 2024

This is the implementation of an async command for the recline library. It allows for a command to be run in the foreground or background.

class recline.commands.async_command.AsyncCommand(command, *args, **kwargs)

Bases: Thread

This is a custom Thread class meant to wrap an asynchronous recline command.

It provides the ability to gather a result as well as put the thread in the foreground or the background of the main REPL thread.

background() None

Unblock the calling thread and put this thread into the background

foreground() Any

Block the calling thread until this thread is complete and return the result

Also setup up a signal handler for SIGTSTP so that pressing ctrl+z will put this thread in the background

run() None

Start the command in an asyncio loop. When it’s complete, the result will be recorded in this thread

stop(dont_delete=False) None

Kill the command and return control to the main thread

exception recline.commands.async_command.CommandBackgrounded(job_pid, *args, **kwargs)

Bases: Exception

When a command is moved from the foreground to the background, this exception is raised to signal the shell.

exception recline.commands.async_command.CommandCancelled(job_pid, *args, **kwargs)

Bases: Exception

When a command is cancelled, this is exception is raised to signal the shell

recline.commands.async_command.set_terminal_echo(enabled=True)

Code from https://docs.python.org/2/library/termios.html