aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/prompt-toolkit/py3/prompt_toolkit/application
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-02-08 15:26:58 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-02-08 15:26:58 +0300
commit2efaaefec2cb2a55d55c01753d1eed2a3296adb5 (patch)
tree27ec5258b325565c3963b91b36d64e84084fdb04 /contrib/python/prompt-toolkit/py3/prompt_toolkit/application
parent23793c5d0827a08b5ff9242d2123eff92b681912 (diff)
downloadydb-2efaaefec2cb2a55d55c01753d1eed2a3296adb5.tar.gz
intermediate changes
ref:0bfa27bb6c38df8c510497e54e4ebf0b4fb84503
Diffstat (limited to 'contrib/python/prompt-toolkit/py3/prompt_toolkit/application')
-rw-r--r--contrib/python/prompt-toolkit/py3/prompt_toolkit/application/__init__.py2
-rw-r--r--contrib/python/prompt-toolkit/py3/prompt_toolkit/application/application.py4
-rw-r--r--contrib/python/prompt-toolkit/py3/prompt_toolkit/application/current.py27
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