MCPcopy Index your code
hub / github.com/python/cpython / ReadlineAlikeReader

Class ReadlineAlikeReader

Lib/_pyrepl/readline.py:109–211  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107
108@dataclass(kw_only=True)
109class ReadlineAlikeReader(historical_reader.HistoricalReader, CompletingReader):
110 # Class fields
111 assume_immutable_completions = False
112 use_brackets = False
113 sort_in_column = True
114
115 # Instance fields
116 config: ReadlineConfig
117 more_lines: MoreLinesCallable | None = None
118 last_used_indentation: str | None = None
119
120 def __post_init__(self) -> None:
121 super().__post_init__()
122 self.commands["maybe_accept"] = maybe_accept
123 self.commands["maybe-accept"] = maybe_accept
124 self.commands["backspace_dedent"] = backspace_dedent
125 self.commands["backspace-dedent"] = backspace_dedent
126
127 def error(self, msg: str = "none") -> None:
128 pass # don't show error messages by default
129
130 def get_stem(self) -> str:
131 b = self.buffer
132 p = self.pos - 1
133 completer_delims = self.config.completer_delims
134 while p >= 0 and b[p] not in completer_delims:
135 p -= 1
136 return "".join(b[p + 1 : self.pos])
137
138 def get_completions(self, stem: str) -> tuple[list[str], CompletionAction | None]:
139 module_completions = self.get_module_completions()
140 if module_completions is not None:
141 return module_completions
142 if len(stem) == 0 and self.more_lines is not None:
143 b = self.buffer
144 p = self.pos
145 while p > 0 and b[p - 1] != "\n":
146 p -= 1
147 num_spaces = 4 - ((self.pos - p) % 4)
148 return [" " * num_spaces], None
149 result = []
150 function = self.config.readline_completer
151 if function is not None:
152 try:
153 stem = str(stem) # rlcompleter.py seems to not like unicode
154 except UnicodeEncodeError:
155 pass # but feed unicode anyway if we have no choice
156 state = 0
157 while True:
158 try:
159 next = function(stem, state)
160 except Exception:
161 break
162 if not isinstance(next, str):
163 break
164 result.append(next)
165 state += 1
166 # Emulate readline's sorting using the visible text rather than

Callers 11

prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerMethod · 0.90
prepare_readerFunction · 0.90
get_readerMethod · 0.85

Calls

no outgoing calls

Tested by 9

prepare_readerMethod · 0.72
prepare_readerMethod · 0.72
prepare_readerMethod · 0.72
prepare_readerMethod · 0.72
prepare_readerMethod · 0.72
prepare_readerMethod · 0.72
prepare_readerMethod · 0.72
prepare_readerMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…