Skip to content

Commit 6bdeadd

Browse files
committed
Also handle size argument in readlines
1 parent b196609 commit 6bdeadd

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

bpython/curtsiesfrontend/repl.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,22 @@ def readline(self, size: int = -1) -> str:
193193
self.readline_results.append(value)
194194
return value if size <= -1 else value[:size]
195195

196-
def readlines(self, size=-1):
197-
return list(iter(self.readline, ""))
196+
def readlines(self, size: Optional[int] = -1) -> List[str]:
197+
if size is None:
198+
# the default readlines implementation also accepts None
199+
size = -1
200+
if not isinstance(size, int):
201+
raise TypeError("argument should be integer or None, not 'str'")
202+
if size <= 0:
203+
# read as much as we can
204+
return list(iter(self.readline, ""))
205+
206+
lines = []
207+
while size > 0:
208+
line = self.readline()
209+
lines.append(line)
210+
size -= len(line)
211+
return lines
198212

199213
def __iter__(self):
200214
return iter(self.readlines())

0 commit comments

Comments
 (0)