-
-
Notifications
You must be signed in to change notification settings - Fork 31.7k
GH-130328: further speedup of pasting in new REPL on Windows by reading in chunks #132889
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@@ -518,18 +538,37 @@ def forgetinput(self) -> None: | |||
def getpending(self) -> Event: | |||
"""Return the characters that have been typed but not yet | |||
processed.""" | |||
return Event("key", "", b"") | |||
e = Event("key", "", b"") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've just copy-pasted this from
cpython/Lib/_pyrepl/unix_console.py
Lines 536 to 555 in e1c09ff
def getpending(self): | |
""" | |
Get pending events from the console event queue. | |
Returns: | |
- Event: Pending event from the event queue. | |
""" | |
e = Event("key", "", b"") | |
while not self.event_queue.empty(): | |
e2 = self.event_queue.get() | |
e.data += e2.data | |
e.raw += e.raw | |
amount = 10000 | |
raw = self.__read(amount) | |
data = str(raw, self.encoding, "replace") | |
e.data += data | |
e.raw += raw | |
return e |
and dropped the reading of the next chunk, since IMHO this does not fit the doc string.
mypy fires here
Lib/_pyrepl/windows_console.py:545: error: Item "None" of "Event | None" has no
attribute "data" [union-attr]
e.data += e2.data
^~~~~~~
Found 1 error in 1 file (checked 25 source files)
and is indeed correct. Have to dig in why we do not see this in case of unix_console.py
...
@@ -536,6 +558,16 @@ def wait(self, timeout: float | None) -> bool: | |||
return False | |||
return True | |||
|
|||
def wait(self, timeout: float | None = None) -> bool: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Full in sync with unix_console.py
now :)
cpython/Lib/_pyrepl/unix_console.py
Lines 419 to 427 in e1c09ff
def wait(self, timeout: float | None = None) -> bool: | |
""" | |
Wait for events on the console. | |
""" | |
return ( | |
not self.event_queue.empty() | |
or self.more_in_buffer() | |
or bool(self.pollob.poll(timeout)) | |
) |
This is on top of #132884. So reviews should be done beginning with commit a64f4c4.