Spaces:
Sleeping
Sleeping
| """ | |
| Interface for an output. | |
| """ | |
| from __future__ import annotations | |
| from abc import ABCMeta, abstractmethod | |
| from typing import TextIO | |
| from prompt_toolkit.cursor_shapes import CursorShape | |
| from prompt_toolkit.data_structures import Size | |
| from prompt_toolkit.styles import Attrs | |
| from .color_depth import ColorDepth | |
| __all__ = [ | |
| "Output", | |
| "DummyOutput", | |
| ] | |
| class Output(metaclass=ABCMeta): | |
| """ | |
| Base class defining the output interface for a | |
| :class:`~prompt_toolkit.renderer.Renderer`. | |
| Actual implementations are | |
| :class:`~prompt_toolkit.output.vt100.Vt100_Output` and | |
| :class:`~prompt_toolkit.output.win32.Win32Output`. | |
| """ | |
| stdout: TextIO | None = None | |
| def fileno(self) -> int: | |
| "Return the file descriptor to which we can write for the output." | |
| def encoding(self) -> str: | |
| """ | |
| Return the encoding for this output, e.g. 'utf-8'. | |
| (This is used mainly to know which characters are supported by the | |
| output the data, so that the UI can provide alternatives, when | |
| required.) | |
| """ | |
| def write(self, data: str) -> None: | |
| "Write text (Terminal escape sequences will be removed/escaped.)" | |
| def write_raw(self, data: str) -> None: | |
| "Write text." | |
| def set_title(self, title: str) -> None: | |
| "Set terminal title." | |
| def clear_title(self) -> None: | |
| "Clear title again. (or restore previous title.)" | |
| def flush(self) -> None: | |
| "Write to output stream and flush." | |
| def erase_screen(self) -> None: | |
| """ | |
| Erases the screen with the background color and moves the cursor to | |
| home. | |
| """ | |
| def enter_alternate_screen(self) -> None: | |
| "Go to the alternate screen buffer. (For full screen applications)." | |
| def quit_alternate_screen(self) -> None: | |
| "Leave the alternate screen buffer." | |
| def enable_mouse_support(self) -> None: | |
| "Enable mouse." | |
| def disable_mouse_support(self) -> None: | |
| "Disable mouse." | |
| def erase_end_of_line(self) -> None: | |
| """ | |
| Erases from the current cursor position to the end of the current line. | |
| """ | |
| def erase_down(self) -> None: | |
| """ | |
| Erases the screen from the current line down to the bottom of the | |
| screen. | |
| """ | |
| def reset_attributes(self) -> None: | |
| "Reset color and styling attributes." | |
| def set_attributes(self, attrs: Attrs, color_depth: ColorDepth) -> None: | |
| "Set new color and styling attributes." | |
| def disable_autowrap(self) -> None: | |
| "Disable auto line wrapping." | |
| def enable_autowrap(self) -> None: | |
| "Enable auto line wrapping." | |
| def cursor_goto(self, row: int = 0, column: int = 0) -> None: | |
| "Move cursor position." | |
| def cursor_up(self, amount: int) -> None: | |
| "Move cursor `amount` place up." | |
| def cursor_down(self, amount: int) -> None: | |
| "Move cursor `amount` place down." | |
| def cursor_forward(self, amount: int) -> None: | |
| "Move cursor `amount` place forward." | |
| def cursor_backward(self, amount: int) -> None: | |
| "Move cursor `amount` place backward." | |
| def hide_cursor(self) -> None: | |
| "Hide cursor." | |
| def show_cursor(self) -> None: | |
| "Show cursor." | |
| def set_cursor_shape(self, cursor_shape: CursorShape) -> None: | |
| "Set cursor shape to block, beam or underline." | |
| def reset_cursor_shape(self) -> None: | |
| "Reset cursor shape." | |
| def ask_for_cpr(self) -> None: | |
| """ | |
| Asks for a cursor position report (CPR). | |
| (VT100 only.) | |
| """ | |
| def responds_to_cpr(self) -> bool: | |
| """ | |
| `True` if the `Application` can expect to receive a CPR response after | |
| calling `ask_for_cpr` (this will come back through the corresponding | |
| `Input`). | |
| This is used to determine the amount of available rows we have below | |
| the cursor position. In the first place, we have this so that the drop | |
| down autocompletion menus are sized according to the available space. | |
| On Windows, we don't need this, there we have | |
| `get_rows_below_cursor_position`. | |
| """ | |
| return False | |
| def get_size(self) -> Size: | |
| "Return the size of the output window." | |
| def bell(self) -> None: | |
| "Sound bell." | |
| def enable_bracketed_paste(self) -> None: | |
| "For vt100 only." | |
| def disable_bracketed_paste(self) -> None: | |
| "For vt100 only." | |
| def reset_cursor_key_mode(self) -> None: | |
| """ | |
| For vt100 only. | |
| Put the terminal in normal cursor mode (instead of application mode). | |
| See: https://vt100.net/docs/vt100-ug/chapter3.html | |
| """ | |
| def scroll_buffer_to_prompt(self) -> None: | |
| "For Win32 only." | |
| def get_rows_below_cursor_position(self) -> int: | |
| "For Windows only." | |
| raise NotImplementedError | |
| def get_default_color_depth(self) -> ColorDepth: | |
| """ | |
| Get default color depth for this output. | |
| This value will be used if no color depth was explicitly passed to the | |
| `Application`. | |
| .. note:: | |
| If the `$PROMPT_TOOLKIT_COLOR_DEPTH` environment variable has been | |
| set, then `outputs.defaults.create_output` will pass this value to | |
| the implementation as the default_color_depth, which is returned | |
| here. (This is not used when the output corresponds to a | |
| prompt_toolkit SSH/Telnet session.) | |
| """ | |
| class DummyOutput(Output): | |
| """ | |
| For testing. An output class that doesn't render anything. | |
| """ | |
| def fileno(self) -> int: | |
| "There is no sensible default for fileno()." | |
| raise NotImplementedError | |
| def encoding(self) -> str: | |
| return "utf-8" | |
| def write(self, data: str) -> None: | |
| pass | |
| def write_raw(self, data: str) -> None: | |
| pass | |
| def set_title(self, title: str) -> None: | |
| pass | |
| def clear_title(self) -> None: | |
| pass | |
| def flush(self) -> None: | |
| pass | |
| def erase_screen(self) -> None: | |
| pass | |
| def enter_alternate_screen(self) -> None: | |
| pass | |
| def quit_alternate_screen(self) -> None: | |
| pass | |
| def enable_mouse_support(self) -> None: | |
| pass | |
| def disable_mouse_support(self) -> None: | |
| pass | |
| def erase_end_of_line(self) -> None: | |
| pass | |
| def erase_down(self) -> None: | |
| pass | |
| def reset_attributes(self) -> None: | |
| pass | |
| def set_attributes(self, attrs: Attrs, color_depth: ColorDepth) -> None: | |
| pass | |
| def disable_autowrap(self) -> None: | |
| pass | |
| def enable_autowrap(self) -> None: | |
| pass | |
| def cursor_goto(self, row: int = 0, column: int = 0) -> None: | |
| pass | |
| def cursor_up(self, amount: int) -> None: | |
| pass | |
| def cursor_down(self, amount: int) -> None: | |
| pass | |
| def cursor_forward(self, amount: int) -> None: | |
| pass | |
| def cursor_backward(self, amount: int) -> None: | |
| pass | |
| def hide_cursor(self) -> None: | |
| pass | |
| def show_cursor(self) -> None: | |
| pass | |
| def set_cursor_shape(self, cursor_shape: CursorShape) -> None: | |
| pass | |
| def reset_cursor_shape(self) -> None: | |
| pass | |
| def ask_for_cpr(self) -> None: | |
| pass | |
| def bell(self) -> None: | |
| pass | |
| def enable_bracketed_paste(self) -> None: | |
| pass | |
| def disable_bracketed_paste(self) -> None: | |
| pass | |
| def scroll_buffer_to_prompt(self) -> None: | |
| pass | |
| def get_size(self) -> Size: | |
| return Size(rows=40, columns=80) | |
| def get_rows_below_cursor_position(self) -> int: | |
| return 40 | |
| def get_default_color_depth(self) -> ColorDepth: | |
| return ColorDepth.DEPTH_1_BIT | |