diff options
author | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-02-08 15:26:58 +0300 |
---|---|---|
committer | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-02-08 15:26:58 +0300 |
commit | 2efaaefec2cb2a55d55c01753d1eed2a3296adb5 (patch) | |
tree | 27ec5258b325565c3963b91b36d64e84084fdb04 /contrib/python/prompt-toolkit/py3/prompt_toolkit/application | |
parent | 23793c5d0827a08b5ff9242d2123eff92b681912 (diff) | |
download | ydb-2efaaefec2cb2a55d55c01753d1eed2a3296adb5.tar.gz |
intermediate changes
ref:0bfa27bb6c38df8c510497e54e4ebf0b4fb84503
Diffstat (limited to 'contrib/python/prompt-toolkit/py3/prompt_toolkit/application')
3 files changed, 33 insertions, 0 deletions
diff --git a/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/__init__.py b/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/__init__.py index 343261cdc3..dc61ca73c3 100644 --- a/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/__init__.py +++ b/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/__init__.py @@ -2,6 +2,7 @@ from .application import Application from .current import ( AppSession, create_app_session, + create_app_session_from_tty, get_app, get_app_or_none, get_app_session, @@ -17,6 +18,7 @@ __all__ = [ "AppSession", "get_app_session", "create_app_session", + "create_app_session_from_tty", "get_app", "get_app_or_none", "set_app", diff --git a/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/application.py b/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/application.py index aec0accae1..5426ebfdfe 100644 --- a/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/application.py +++ b/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/application.py @@ -41,6 +41,7 @@ from typing import ( from prompt_toolkit.buffer import Buffer from prompt_toolkit.cache import SimpleCache from prompt_toolkit.clipboard import Clipboard, InMemoryClipboard +from prompt_toolkit.cursor_shapes import AnyCursorShapeConfig, to_cursor_shape_config from prompt_toolkit.data_structures import Size from prompt_toolkit.enums import EditingMode from prompt_toolkit.eventloop import ( @@ -216,6 +217,7 @@ class Application(Generic[_AppResult]): max_render_postpone_time: Union[float, int, None] = 0.01, refresh_interval: Optional[float] = None, terminal_size_polling_interval: Optional[float] = 0.5, + cursor: AnyCursorShapeConfig = None, on_reset: Optional["ApplicationEventHandler[_AppResult]"] = None, on_invalidate: Optional["ApplicationEventHandler[_AppResult]"] = None, before_render: Optional["ApplicationEventHandler[_AppResult]"] = None, @@ -266,6 +268,8 @@ class Application(Generic[_AppResult]): self.refresh_interval = refresh_interval self.terminal_size_polling_interval = terminal_size_polling_interval + self.cursor = to_cursor_shape_config(cursor) + # Events. self.on_invalidate = Event(self, on_invalidate) self.on_reset = Event(self, on_reset) diff --git a/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/current.py b/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/current.py index 051916699e..14eb7922c8 100644 --- a/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/current.py +++ b/contrib/python/prompt-toolkit/py3/prompt_toolkit/application/current.py @@ -20,6 +20,7 @@ __all__ = [ "get_app_or_none", "set_app", "create_app_session", + "create_app_session_from_tty", ] @@ -168,3 +169,29 @@ def create_app_session( yield session finally: _current_app_session.reset(token) + + +@contextmanager +def create_app_session_from_tty() -> Generator[AppSession, None, None]: + """ + Create `AppSession` that always prefers the TTY input/output. + + Even if `sys.stdin` and `sys.stdout` are connected to input/output pipes, + this will still use the terminal for interaction (because `sys.stderr` is + still connected to the terminal). + + Usage:: + + from prompt_toolkit.shortcuts import prompt + + with create_app_session_from_tty(): + prompt('>') + """ + from prompt_toolkit.input.defaults import create_input + from prompt_toolkit.output.defaults import create_output + + input = create_input(always_prefer_tty=True) + output = create_output(always_prefer_tty=True) + + with create_app_session(input=input, output=output) as app_session: + yield app_session |