runway.cfngin.ui module

CFNgin UI manipulation.

class runway.cfngin.ui.UI[source]

Bases: AbstractContextManager[UI]

Used internally from terminal output in a multithreaded environment.

Ensures that two threads don’t write over each other while asking a user for input (e.g. in interactive mode).

__enter__() Self[source]

Enter the context manager.

__exit__(exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) None[source]

Exit the context manager.

__init__() None[source]

Instantiate class.

ask(message: str) str[source]

Collect input from a user in a multithreaded environment.

This wraps the built-in input function to ensure that only 1 thread is asking for input from the user at a give time. Any process that tries to log output to the terminal will be blocked while the user is being prompted.

getpass(prompt: str, stream: TextIO | None = None) str[source]

Wrap getpass to lock the UI.

info(msg: str, *args: ~typing.Any, logger: ~logging.Logger | ~logging.LoggerAdapter[~typing.Any] = <RunwayLogger runway.cfngin.ui (WARNING)>, **kwargs: ~typing.Any) None[source]

Log the line if the current thread owns the underlying lock.

Parameters:
  • msg – String template or exception to use for the log record.

  • logger – Specific logger to log to.

  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

log(lvl: int, msg: Exception | str, *args: ~typing.Any, logger: ~logging.Logger | ~logging.LoggerAdapter[~typing.Any] = <RunwayLogger runway.cfngin.ui (WARNING)>, **kwargs: ~typing.Any) None[source]

Log the message if the current thread owns the underlying lock.

Parameters:
  • lvl – Log level.

  • msg – String template or exception to use for the log record.

  • logger – Specific logger to log to.

  • *args – Variable length argument list.

  • **kwargs – Arbitrary keyword arguments.

runway.cfngin.ui.get_raw_input(message: str) str[source]

Just a wrapper for input() for testing purposes.