from collections.abc import Callable, Collection
from .types import Callback, Completer, KeySpec, CommandName
+TYPE_CHECKING = False
+
+if TYPE_CHECKING:
+ from typing import Any
+
MoreLinesCallable = Callable[[str], bool]
@dataclass
class ReadlineConfig:
- readline_completer: Completer | None = RLCompleter().complete
+ readline_completer: Completer | None = None
completer_delims: frozenset[str] = frozenset(" \t\n`~!@#$%^&*()-=+[{]}\\|;:'\",<>/?")
# ____________________________________________________________
-def _setup() -> None:
+def _setup(namespace: dict[str, Any]) -> None:
global raw_input
if raw_input is not None:
return # don't run _setup twice
_wrapper.f_in = f_in
_wrapper.f_out = f_out
+ # set up namespace in rlcompleter
+ _wrapper.config.readline_completer = RLCompleter(namespace).complete
+
# this is not really what readline.c does. Better than nothing I guess
import builtins
-
raw_input = builtins.input
builtins.input = _wrapper.input
console: code.InteractiveConsole | None = None,
) -> None:
from .readline import _setup
- _setup()
-
namespace = mainmodule.__dict__ if mainmodule else DEFAULT_NAMESPACE
+ _setup(namespace)
+
if console is None:
console = InteractiveColoredConsole(
namespace, filename="<stdin>"