summaryrefslogtreecommitdiffstats
path: root/contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py
diff options
context:
space:
mode:
authorDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py')
-rw-r--r--contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py b/contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py
new file mode 100644
index 00000000000..2b20d69b425
--- /dev/null
+++ b/contrib/python/prompt-toolkit/py3/prompt_toolkit/eventloop/dummy_contextvars.py
@@ -0,0 +1,49 @@
+"""
+Dummy contextvars implementation, to make prompt_toolkit work on Python 3.6.
+
+As long as there is only one application running at a time, we don't need the
+real contextvars. So, stuff like the telnet-server and so on requires 3.7.
+"""
+from typing import Any, Callable, Generic, Optional, TypeVar
+
+
+def copy_context() -> "Context":
+ return Context()
+
+
+_T = TypeVar("_T")
+
+
+class Context:
+ def run(self, callable: Callable[..., _T], *args: Any, **kwargs: Any) -> _T:
+ return callable(*args, **kwargs)
+
+ def copy(self) -> "Context":
+ return self
+
+
+class Token(Generic[_T]):
+ pass
+
+
+class ContextVar(Generic[_T]):
+ def __init__(self, name: str, *, default: Optional[_T] = None) -> None:
+ self._name = name
+ self._value = default
+
+ @property
+ def name(self) -> str:
+ return self._name
+
+ def get(self, default: Optional[_T] = None) -> _T:
+ result = self._value or default
+ if result is None:
+ raise LookupError
+ return result
+
+ def set(self, value: _T) -> Token[_T]:
+ self._value = value
+ return Token()
+
+ def reset(self, token: Token[_T]) -> None:
+ pass