diff --git a/bpython/curtsiesfrontend/repl.py b/bpython/curtsiesfrontend/repl.py index a29b350a..20188f50 100644 --- a/bpython/curtsiesfrontend/repl.py +++ b/bpython/curtsiesfrontend/repl.py @@ -179,12 +179,18 @@ def add_input_character(self, e: str) -> None: ) self.cursor_offset += 1 - def readline(self): + def readline(self, size: int = -1) -> Union[str, Any]: + if not isinstance(size, int): + raise TypeError( + f"'{type(size).__name__}' object cannot be interpreted as an integer" + ) + elif size == 0: + return "" self.has_focus = True self.repl.send_to_stdin(self.current_line) value = self.coderunner.request_from_main_context() self.readline_results.append(value) - return value + return value if size <= -1 else value[:size] def readlines(self, size=-1): return list(iter(self.readline, ""))