Skip to content

Pasting in new REPL is slow #130328

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

Open
natedogith1 opened this issue Feb 20, 2025 · 19 comments
Open

Pasting in new REPL is slow #130328

natedogith1 opened this issue Feb 20, 2025 · 19 comments
Labels
OS-windows performance Performance or resource usage release-blocker stdlib Python modules in the Lib dir topic-repl Related to the interactive shell type-bug An unexpected behavior, bug, or error

Comments

@natedogith1
Copy link

natedogith1 commented Feb 20, 2025

Bug report

Bug description:

Pasting large blocks of text in the new REPL is slow. Tested by pasting the following string (3035 characters):

test value
"""1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"""

When using the old repl (started via $env:PYTHON_BASIC_REPL="true"; python in powershell), pasting the string is near immediate. When using the new repl (started via python in powershell), pasting the string takes 15 seconds.

The closed issue #119517 also mentioned some pasting performance issues, though that was for Linux with significantly more characters.

CPython versions tested on:

3.13

Operating systems tested on:

Windows

Linked PRs

@natedogith1 natedogith1 added the type-bug An unexpected behavior, bug, or error label Feb 20, 2025
@ZeroIntensity ZeroIntensity added the topic-repl Related to the interactive shell label Feb 20, 2025
@StanFromIreland
Copy link
Contributor

StanFromIreland commented Feb 20, 2025

Possibly a windows issue, something to do with powershell? On linux (main branch build) it pastes as expected, instantly.

cc windows expert @zooba

@zooba
Copy link
Member

zooba commented Feb 20, 2025

It's no good looking at me, I know nothing about the new repl (other than that I've suggested a couple of times that it should stop using ctypes and use native code instead, which could be the cause of any performance issue).

@pablogsal @lysnikolaou @ambv are code owners for the REPL.

@natedogith1
Copy link
Author

I also see this when python is started from the win-r run dialog.

Tested some other environments, using the first 604 lines of this copy of Frankenstein (32,003 characters) (same as #119517 did). WSL old REPL takes ~2 seconds. WSL new REPL takes ~4 seconds, Powershell old REPL takes ~1 second. Powershell new REPL takes ~55 seconds for just the first 25 lines to appear; when pasting only the first 25 lines (659 characters) it takes ~2 seconds.

@picnixz picnixz added performance Performance or resource usage stdlib Python modules in the Lib dir labels Feb 21, 2025
@devdanzin
Copy link
Contributor

I think it's caused by the Windows console reading one character at a time from input:

rec = INPUT_RECORD()
read = DWORD()
if not ReadConsoleInput(InHandle, rec, 1, read):
raise WinError(GetLastError())

But I don't know enough about ctypes or Windows API to know how to increase that value, naively using larger ints results in errors.

cc @DinoV, who implemented the Windows console.

@devdanzin
Copy link
Contributor

I was able to make ReadConsoleInput read 1024 chars at a time and also reduced self.console.wait() in Reader.handle1 from 100 to 0.1. That reduced time to paste the content from first post from 10s to 6s, which isn't a significant improvement given the numbers from WSL and basic REPL.

@devdanzin
Copy link
Contributor

devdanzin commented Feb 22, 2025

#124119 seems to improve things, but nowhere near WSL numbers.

Edit: With that PR, time to past the sample from first post goes from 10s to 2.5s. Reading 32 chars of input instead of 1 and reducing Reader.console.wait from 100 to 10 further reduces time to 1.7s. So we can paste 5x faster than current version, which pales compared to the near instant paste in WSL.

@devdanzin
Copy link
Contributor

Can you check whether devdanzin#1 speeds up pasting significantly for you?

It's a quick and dirty POC built on top of #124119 that:

  • Batches event processing;
  • Reads 32 chars from input instead of 1;
  • Enables virtual terminal (from the mentioned PR);
  • Reduces Reader.console.wait() from 100 to 10.

It fails some tests and the code is ugly, but if it makes things better we can try to improve on this.

@devdanzin
Copy link
Contributor

Please test the #130677 PR to check whether it significantly improves pasting time for you.

@chris-eibl
Copy link
Member

The reason why pasting is so slow on Windows (especially in the legacy console case where virtual terminal mode - and thus bracketed paste - is disabled):

while True:
# We use the same timeout as in readline.c: 100ms
self.run_hooks()
self.console.wait(100)
event = self.console.get_event(block=False)

and

def wait(self, timeout: float | None) -> bool:
"""Wait for an event."""
# Poor man's Windows select loop
start_time = time.time()
while True:
if msvcrt.kbhit(): # type: ignore[attr-defined]
return True
if timeout and time.time() - start_time > timeout / 1000:
return False
time.sleep(0.01)

It is interesting, that msvcrt.kbhit() returns True in case of pasting, but if that weren't the case, we'd hit the 100ms timeout and would be even way slower. However, msvcrt.kbhit() is very slow in case of the legacy console, and it is called at least twice as often, because we get a key up and a key down event - but only a key down event in the virtual terminal case. If the pasted input contains upper case letters, we additionally get a "shift key pressed" event - so in the worst case, msvcrt.kbhit() gets called 3 times more often (and each call is slower).

Output of python.bat -m cProfile -m _pyrepl when pasting the "test value" given in the OP for a legacy console:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     50/1    0.010    0.000   17.202   17.202 {built-in method builtins.exec}
        1    0.000    0.000   17.202   17.202 <frozen runpy>:201(run_module)
        1    0.000    0.000   17.199   17.199 <frozen runpy>:65(_run_code)
        1    0.000    0.000   17.199   17.199 __main__.py:1(<module>)
        1    0.000    0.000   17.112   17.112 main.py:24(interactive_console)
        1    0.000    0.000   17.112   17.112 simple_interact.py:99(run_multiline_interactive_console)
        5    0.000    0.000   17.111    3.422 readline.py:375(multiline_input)
        5    0.004    0.001   17.111    3.422 reader.py:741(readline)
     3090    0.036    0.000   17.103    0.006 reader.py:694(handle1)
     6210    0.013    0.000   13.714    0.002 windows_console.py:523(wait)
     6236   13.433    0.002   13.433    0.002 {built-in method msvcrt.kbhit}

Here the relevant line in case of virtual terminal:

  3270    0.554    0.000    0.554    0.000 {built-in method msvcrt.kbhit}

The fix is to use WaitForSingleObject

    def wait(self, timeout: float | None) -> bool:
        """Wait for an event."""
        ret = WaitForSingleObject(InHandle, int(timeout))
        if ret == WAIT_FAILED:
            raise WinError(ctypes.get_last_error())

which speeds up especially the legacy console (times in seconds):

legacy terminal virtual terminal
before 15.6 0.89
after 1.8 0.26

Note, see also #132440 (comment):

  • legacy terminal: manually start cmd.exe. Timings gotten by pasting
import time
t1 = time.time()
<"test value" given in the OP>
print(time.time() - t1)
  • virtual terminal: power shell via Windows terminal. Timings gotton by temporarily patching commands.py:
import time
class enable_bracketed_paste(Command):
    def do(self) -> None:
        self.reader.bp_begin = time.perf_counter()
        self.reader.paste_mode = True
        self.reader.in_bracketed_paste = True

class disable_bracketed_paste(Command):
    def do(self) -> None:
        print("bracketed_paste took %5.2f s" % (time.perf_counter() - self.reader.bp_begin, ))
        self.reader.paste_mode = False
        self.reader.in_bracketed_paste = False
        self.reader.dirty = True

@chris-eibl
Copy link
Member

Because pasting is so slow (especially in case of a legacy console), I've marked this as a release blocker.

@chris-eibl
Copy link
Member

And because 3.13 is also affected, I've marked #132884 with "needs backport".

@devdanzin
Copy link
Contributor

Should #130677 just be closed, or is there something of use there?

@chris-eibl
Copy link
Member

There is value in chunked reading, unix_console.py does it, too.

I've created #132889 on top of #132884, and do a similar approach like done in unix_console.py. But it only gives a modest speedup, hence I've splitted them, because the first one is easy and worth to backport (a low hanging fruit IMHO), but about the second one I am unsure.

legacy terminal virtual terminal
before 15.6 0.89
#132884 1.8 0.26
#132889 1.5 0.08

Should #130677 just be closed, or is there something of use there?

I think yes, it should be superseded by #132889. Maybe you wanna have a look at it?

@chris-eibl
Copy link
Member

chris-eibl commented Apr 24, 2025

For bigger paste buffers like

bigger paste buffer

import time t1 = time.time() """ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 """ print(time.time() - t1)

we lose much more time in other code paths, so maybe we should fix them too/first?

I mean "bigger" is still not big - or is it? - it's just 335 lines. And after pasting scrolling doesn't feel right, either.

So here are the numbers:

legacy terminal virtual terminal
#132889 20.5 1.19

First lines of cProfile in case of legacy console:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     50/1    0.011    0.000   32.334   32.334 {built-in method builtins.exec}
        1    0.000    0.000   32.334   32.334 <frozen runpy>:201(run_module)
        1    0.000    0.000   32.332   32.332 <frozen runpy>:65(_run_code)
        1    0.000    0.000   32.332   32.332 __main__.py:1(<module>)
        1    0.000    0.000   32.252   32.252 main.py:24(interactive_console)
        1    0.000    0.000   32.251   32.251 simple_interact.py:99(run_multiline_interactive_console)
        5    0.000    0.000   32.243    6.449 readline.py:375(multiline_input)
        5    0.042    0.008   32.243    6.449 reader.py:741(readline)
    33392    0.195    0.000   32.189    0.001 reader.py:694(handle1)
    33392    0.221    0.000   30.724    0.001 reader.py:645(do_cmd)
    33396    0.062    0.000   27.915    0.001 reader.py:634(refresh)
    33396    0.520    0.000   24.030    0.001 windows_console.py:174(refresh)
    33393    0.892    0.000   17.449    0.001 windows_console.py:251(__write_changed_line)
   234163    0.718    0.000   12.899    0.000 windows_console.py:337(__write)
   234163   11.805    0.000   11.805    0.000 {method 'write' of '_io._WindowsConsoleIO' objects}
  2029301    1.543    0.000    8.999    0.000 utils.py:23(wlen)
   536307    2.682    0.000    6.696    0.000 {built-in method builtins.sum}
   100247    0.211    0.000    5.325    0.000 windows_console.py:376(_move_relative)
    66849    0.057    0.000    3.892    0.000 windows_console.py:319(_hide_cursor)
    33401    0.048    0.000    3.824    0.000 completing_reader.py:260(calc_screen)
    33401    0.473    0.000    3.776    0.000 reader.py:292(calc_screen)
 13740370    3.728    0.000    3.728    0.000 utils.py:26(<genexpr>)

Interesting part in case of virtual terminal

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     50/1    0.012    0.000    3.002    3.002 {built-in method builtins.exec}
        1    0.000    0.000    3.002    3.002 <frozen runpy>:201(run_module)
        1    0.000    0.000    3.000    3.000 <frozen runpy>:65(_run_code)
        1    0.000    0.000    3.000    3.000 __main__.py:1(<module>)
        1    0.000    0.000    2.924    2.924 main.py:24(interactive_console)
        1    0.000    0.000    2.924    2.924 simple_interact.py:99(run_multiline_interactive_console)
        2    0.000    0.000    2.923    1.461 readline.py:375(multiline_input)
        2    0.017    0.008    2.922    1.461 reader.py:741(readline)
    33395    0.095    0.000    2.903    0.000 reader.py:694(handle1)
    33395    0.127    0.000    1.361    0.000 reader.py:645(do_cmd)
    33395    0.013    0.000    1.009    0.000 reader.py:634(refresh)
    66826    0.050    0.000    0.833    0.000 windows_console.py:563(wait)
      339    0.012    0.000    0.823    0.002 windows_console.py:174(refresh)
       26    0.758    0.029    0.758    0.029 windows_console.py:550(wait_for_event)
      287    0.569    0.002    0.591    0.002 windows_console.py:300(_scroll)
    33413    0.134    0.000    0.513    0.000 windows_console.py:446(get_event)
33077/33069    0.139    0.000    0.238    0.000 base_eventqueue.py:72(push)
      341    0.001    0.000    0.173    0.001 completing_reader.py:260(calc_screen)
      341    0.014    0.000    0.172    0.001 reader.py:292(calc_screen)
     1331    0.010    0.000    0.167    0.000 windows_console.py:337(__write)
     1331    0.153    0.000    0.153    0.000 {method 'write' of '_io._WindowsConsoleIO' objects}
cProfile legacy console

     35095104 function calls (35094619 primitive calls) in 32.312 seconds

Ordered by: cumulative time

ncalls tottime percall cumtime percall filename:lineno(function)
50/1 0.011 0.000 32.334 32.334 {built-in method builtins.exec}
1 0.000 0.000 32.334 32.334 :201(run_module)
1 0.000 0.000 32.332 32.332 :65(_run_code)
1 0.000 0.000 32.332 32.332 main.py:1()
1 0.000 0.000 32.252 32.252 main.py:24(interactive_console)
1 0.000 0.000 32.251 32.251 simple_interact.py:99(run_multiline_interactive_console)
5 0.000 0.000 32.243 6.449 readline.py:375(multiline_input)
5 0.042 0.008 32.243 6.449 reader.py:741(readline)
33392 0.195 0.000 32.189 0.001 reader.py:694(handle1)
33392 0.221 0.000 30.724 0.001 reader.py:645(do_cmd)
33396 0.062 0.000 27.915 0.001 reader.py:634(refresh)
33396 0.520 0.000 24.030 0.001 windows_console.py:174(refresh)
33393 0.892 0.000 17.449 0.001 windows_console.py:251(__write_changed_line)
234163 0.718 0.000 12.899 0.000 windows_console.py:337(__write)
234163 11.805 0.000 11.805 0.000 {method 'write' of '_io._WindowsConsoleIO' objects}
2029301 1.543 0.000 8.999 0.000 utils.py:23(wlen)
536307 2.682 0.000 6.696 0.000 {built-in method builtins.sum}
100247 0.211 0.000 5.325 0.000 windows_console.py:376(_move_relative)
66849 0.057 0.000 3.892 0.000 windows_console.py:319(_hide_cursor)
33401 0.048 0.000 3.824 0.000 completing_reader.py:260(calc_screen)
33401 0.473 0.000 3.776 0.000 reader.py:292(calc_screen)
13740370 3.728 0.000 3.728 0.000 utils.py:26()
66789 0.095 0.000 3.715 0.000 windows_console.py:390(move_cursor)
335 0.004 0.000 2.227 0.007 readline.py:266(do)
331 0.001 0.000 2.064 0.006 readline.py:173(update_last_used_indentation)
331 1.424 0.004 2.064 0.006 readline.py:232(_get_first_indentation)
34063 1.212 0.000 2.028 0.000 utils.py:44(disp_str)
33396 0.030 0.000 1.498 0.000 windows_console.py:322(_show_cursor)
8416396/8416351 1.054 0.000 1.054 0.000 {built-in method builtins.len}
34063 0.055 0.000 0.747 0.000 reader.py:392(process_prompt)
3570490 0.594 0.000 0.594 0.000 {method 'append' of 'list' objects}
276 0.577 0.002 0.591 0.002 windows_console.py:300(_scroll)
66815 0.283 0.000 0.535 0.000 windows_console.py:446(get_event)
133630 0.108 0.000 0.514 0.000 windows_console.py:563(wait)
234421 0.432 0.000 0.432 0.000 {method 'findall' of 're.Pattern' objects}
20 0.346 0.017 0.346 0.017 windows_console.py:550(wait_for_event)
703023 0.218 0.000 0.285 0.000 utils.py:30()
66815 0.135 0.000 0.219 0.000 windows_console.py:427(_read_input)
1733172 0.213 0.000 0.213 0.000 {built-in method builtins.ord}
100299 0.206 0.000 0.206 0.000 {method 'format' of 'str' objects}
234163 0.190 0.000 0.190 0.000 {method 'encode' of 'str' objects}
234163 0.186 0.000 0.186 0.000 {method 'flush' of '_io._IOBase' objects}
33391 0.066 0.000 0.157 0.000 readline.py:186(after_command)
66815 0.055 0.000 0.148 0.000 reader.py:676(run_hooks)
33056 0.031 0.000 0.147 0.000 completing_reader.py:207(do)
68126 0.043 0.000 0.142 0.000 utils.py:33(unbracket)
33056 0.042 0.000 0.117 0.000 commands.py:367(do)
33392 0.079 0.000 0.116 0.000 input.py:80(push)
335 0.001 0.000 0.113 0.000 simple_interact.py:80(_more_lines)
33401 0.054 0.000 0.112 0.000 reader.py:233(update_cache)
335 0.001 0.000 0.110 0.000 codeop.py:135(call)
335 0.007 0.000 0.110 0.000 codeop.py:50(_maybe_compile)
33402 0.070 0.000 0.109 0.000 reader.py:531(pos2xy)
234752 0.098 0.000 0.098 0.000 {method 'count' of 'str' objects}
66815 0.078 0.000 0.094 0.000 windows_console.py:242(input_hook)
33391 0.046 0.000 0.091 0.000 completing_reader.py:255(after_command)
68463 0.091 0.000 0.091 0.000 {method 'join' of 'str' objects}
678 0.001 0.000 0.086 0.000 codeop.py:112(call)
678 0.084 0.000 0.084 0.000 {built-in method builtins.compile}
34063 0.041 0.000 0.083 0.000 historical_reader.py:321(get_prompt)
44/2 0.000 0.000 0.081 0.041 :1360(_find_and_load)
44/2 0.000 0.000 0.081 0.040 :1308(_find_and_load_unlocked)
41/2 0.000 0.000 0.080 0.040 :914(_load_unlocked)
35/2 0.000 0.000 0.080 0.040 :756(exec_module)
96/6 0.000 0.000 0.079 0.013 :483(_call_with_frames_removed)
1 0.000 0.000 0.079 0.079 main.py:1()
33387 0.059 0.000 0.069 0.000 reader.py:561(insert)
33400 0.048 0.000 0.068 0.000 reader.py:254(get_cached_location)
1 0.000 0.000 0.067 0.067 simple_interact.py:1()
34063 0.058 0.000 0.058 0.000 {method 'sub' of 're.Pattern' objects}
66802 0.058 0.000 0.058 0.000 {method 'copy' of 'list' objects}
136449 0.051 0.000 0.051 0.000 {built-in method builtins.isinstance}
1 0.000 0.000 0.051 0.051 readline.py:1()
200443 0.045 0.000 0.045 0.000 windows_console.py:424(more_in_buffer)
34063 0.042 0.000 0.042 0.000 reader.py:477(get_prompt)
34064 0.041 0.000 0.041 0.000 {method 'translate' of 'str' objects}
100330 0.041 0.000 0.041 0.000 {built-in method builtins.min}
200445 0.038 0.000 0.038 0.000 base_eventqueue.py:51(empty)
343 0.000 0.000 0.037 0.000 reader.py:763(get_unicode)
33391 0.020 0.000 0.034 0.000 reader.py:572(after_command)
276 0.000 0.000 0.031 0.000 windows_console.py:354(_erase_to_end)
33392 0.019 0.000 0.029 0.000 input.py:107(get)
33401 0.028 0.000 0.028 0.000 reader.py:246(valid)
33736 0.028 0.000 0.028 0.000 {method 'split' of 'str' objects}
68243 0.027 0.000 0.027 0.000 {method 'get' of 'dict' objects}
33831 0.023 0.000 0.023 0.000 {built-in method builtins.repr}
281 0.022 0.000 0.022 0.000 windows_console.py:406(getheightwidth)
101184 0.020 0.000 0.020 0.000 trace.py:15(trace)
8/6 0.000 0.000 0.020 0.003 {built-in method builtins.import}
36 0.001 0.000 0.020 0.001 :829(get_code)
12/9 0.000 0.000 0.019 0.002 :1401(_handle_fromlist)
276 0.019 0.000 0.019 0.000 windows_console.py:417(_getscrollbacksize)
9 0.000 0.000 0.017 0.002 dataclasses.py:1357(wrap)
9 0.001 0.000 0.017 0.002 dataclasses.py:930(_process_class)
1 0.000 0.000 0.016 0.016 historical_reader.py:1()
66815 0.016 0.000 0.016 0.000 {built-in method nt._is_inputhook_installed}
34205 0.014 0.000 0.014 0.000 {built-in method builtins.getattr}
1 0.000 0.000 0.013 0.013 windows_console.py:1()
46 0.000 0.000 0.012 0.000 :1243(_find_spec)
33392 0.012 0.000 0.012 0.000 {method 'append' of 'collections.deque' objects}
43 0.000 0.000 0.012 0.000 :1287(find_spec)
1 0.000 0.000 0.012 0.012 simple_interact.py:43(check)
6 0.000 0.000 0.012 0.002 readline.py:356(get_reader)
43 0.000 0.000 0.012 0.000 :1258(_get_spec)
36 0.000 0.000 0.011 0.000 :950(get_data)
1 0.000 0.000 0.011 0.011 code.py:1()
9 0.000 0.000 0.011 0.001 dataclasses.py:474(add_fns_to_class)
91 0.001 0.000 0.011 0.000 :1360(find_spec)
1 0.000 0.000 0.010 0.010 traceback.py:1()
1 0.000 0.000 0.010 0.010 reader.py:1()
33392 0.010 0.000 0.010 0.000 {method 'popleft' of 'collections.deque' objects}
5 0.000 0.000 0.009 0.002 historical_reader.py:305(prepare)
5 0.000 0.000 0.009 0.002 reader.py:579(prepare)
178/176 0.003 0.000 0.009 0.000 {built-in method builtins.build_class}
33392 0.009 0.000 0.009 0.000 commands.py:44(init)
36 0.009 0.000 0.009 0.000 {built-in method _io.open_code}
5 0.000 0.000 0.008 0.002 windows_console.py:357(prepare)
9 0.000 0.000 0.008 0.001 dataclasses.py:1340(dataclass)
4 0.000 0.000 0.008 0.002 code.py:306(push)
4 0.000 0.000 0.008 0.002 console.py:189(runsource)
177 0.000 0.000 0.007 0.000 :145(_path_stat)
4 0.000 0.000 0.007 0.002 console.py:179(runcode)
177 0.007 0.000 0.007 0.000 {built-in method nt.stat}
41 0.000 0.000 0.007 0.000 :809(module_from_spec)
33056 0.007 0.000 0.007 0.000 reader.py:469(get_arg)
1 0.006 0.006 0.007 0.007 windows_console.py:132(init)
1 0.007 0.007 0.007 0.007 :1()
2 0.000 0.000 0.006 0.003 init.py:1()
340 0.001 0.000 0.006 0.000 _py_warnings.py:294(simplefilter)
3 0.000 0.000 0.005 0.002 :1054(create_module)
3 0.005 0.002 0.005 0.002 {built-in method _imp.create_dynamic}
36 0.001 0.000 0.005 0.000 :512(_compile_bytecode)
340 0.002 0.000 0.005 0.000 _py_warnings.py:320(_add_filter)
331 0.004 0.000 0.004 0.000 readline.py:245(_should_auto_indent)
1 0.000 0.000 0.004 0.004 readline.py:116(post_init)
1 0.000 0.000 0.004 0.004 historical_reader.py:230(post_init)
36 0.004 0.000 0.004 0.000 {built-in method marshal.loads}
447 0.003 0.000 0.004 0.000 :101(_path_join)
2 0.001 0.000 0.004 0.002 input.py:63(init)
1 0.000 0.000 0.004 0.004 unix_console.py:1()
331 0.004 0.000 0.004 0.000 readline.py:218(_get_previous_line_indent)
6 0.000 0.000 0.003 0.000 init.py:287(compile)
6 0.000 0.000 0.003 0.000 init.py:330(_compile)
340 0.002 0.000 0.003 0.000 _py_warnings.py:636(enter)
6 0.000 0.000 0.003 0.000 _compiler.py:757(compile)
704 0.001 0.000 0.003 0.000 keymap.py:108(parse_keys)
1 0.000 0.000 0.002 0.002 completing_reader.py:1()
2/1 0.000 0.000 0.002 0.002 :105(_get_module_details)
1 0.000 0.000 0.002 0.002 textwrap.py:1()
1 0.000 0.000 0.002 0.002 textwrap.py:17(TextWrapper)
1 0.000 0.000 0.002 0.002 console.py:1()
1 0.000 0.000 0.002 0.002 utils.py:1()
6 0.000 0.000 0.002 0.000 _parser.py:962(parse)
48 0.000 0.000 0.002 0.000 :155(_path_is_mode_type)
20/6 0.000 0.000 0.002 0.000 _parser.py:451(_parse_sub)
46 0.000 0.000 0.002 0.000 :164(_path_isfile)
1 0.000 0.000 0.002 0.002 wintypes.py:1()
26/6 0.001 0.000 0.002 0.000 _parser.py:511(_parse)
36 0.002 0.000 0.002 0.000 {method 'read' of '_io.BufferedReader' objects}
72 0.000 0.000 0.002 0.000 :243(cache_from_source)
1 0.000 0.000 0.002 0.002 completing_reader.py:244(post_init)
1 0.000 0.000 0.002 0.002 reader.py:271(post_init)
340 0.001 0.000 0.002 0.000 _py_warnings.py:665(exit)
1 0.000 0.000 0.002 0.002 input.py:1()
1 0.000 0.000 0.001 0.001 windows_eventqueue.py:1()
728 0.001 0.000 0.001 0.000 keymap.py:118(_parse_single_key_sequence)
41 0.000 0.000 0.001 0.000 :736(_init_module_attrs)
1 0.000 0.000 0.001 0.001 warnings.py:1()
36 0.000 0.000 0.001 0.000 :969(path_stats)
44 0.000 0.000 0.001 0.000 :419(enter)
1 0.000 0.000 0.001 0.001 reader.py:137(Reader)
6 0.000 0.000 0.001 0.000 inspect.py:3285(signature)
6 0.000 0.000 0.001 0.000 inspect.py:2998(from_callable)
18/6 0.000 0.000 0.001 0.000 inspect.py:2397(_signature_from_callable)
331 0.001 0.000 0.001 0.000 readline.py:282(_newline_before_pos)
386 0.001 0.000 0.001 0.000 {method 'remove' of 'list' objects}
74 0.000 0.000 0.001 0.000 :635(cached)
32/3 0.001 0.000 0.001 0.000 keymap.py:197(compile_keymap)
39 0.000 0.000 0.001 0.000 :372(_get_cached)
1020 0.001 0.000 0.001 0.000 warnings.py:80(enter)
339 0.001 0.000 0.001 0.000 simple_interact.py:54(_strip_final_indent)
2 0.000 0.000 0.001 0.000 :69(find_spec)
46 0.000 0.000 0.001 0.000 :304(acquire)
36 0.001 0.000 0.001 0.000 {method 'exit' of '_io._IOBase' objects}
6 0.000 0.000 0.001 0.000 _compiler.py:590(_code)
1 0.000 0.000 0.001 0.001 rlcompleter.py:1()
340 0.001 0.000 0.001 0.000 _py_warnings.py:111(_get_filters)
1 0.000 0.000 0.001 0.001 base_eventqueue.py:1()
1 0.000 0.000 0.001 0.001 contextlib.py:1()
1020 0.000 0.000 0.001 0.000 warnings.py:84(exit)
2 0.000 0.000 0.001 0.000 dataclasses.py:1273(_add_slots)
69 0.000 0.000 0.001 0.000 dataclasses.py:769(_get_field)
18 0.000 0.000 0.001 0.000 :105(new)
17 0.000 0.000 0.001 0.000 _layout.py:41(get_layout)
138 0.000 0.000 0.001 0.000 dataclasses.py:710(_is_type)
42/6 0.000 0.000 0.001 0.000 _compiler.py:39(_compile)
9 0.000 0.000 0.001 0.000 dataclasses.py:614(_init_fn)
1 0.000 0.000 0.001 0.001 signal.py:1()
40 0.000 0.000 0.001 0.000 :1355(_get_spec)
1752 0.001 0.000 0.001 0.000 {method 'rstrip' of 'str' objects}
6 0.000 0.000 0.001 0.000 inspect.py:2291(_signature_from_function)
2 0.000 0.000 0.001 0.000 enum.py:877(convert)
5 0.000 0.000 0.001 0.000 windows_console.py:517(finish)
1 0.000 0.000 0.001 0.001 commands.py:1()
6 0.000 0.000 0.000 0.000 inspect.py:3221(str)
6 0.000 0.000 0.000 0.000 inspect.py:3224(format)
36 0.000 0.000 0.000 0.000 :427(_classify_pyc)
40 0.000 0.000 0.000 0.000 :563(spec_from_file_location)
72 0.000 0.000 0.000 0.000 :137(_path_split)
1020 0.000 0.000 0.000 0.000 {built-in method _warnings._acquire_lock}
340 0.000 0.000 0.000 0.000 _py_warnings.py:613(init)
46 0.000 0.000 0.000 0.000 :162(enter)
78 0.000 0.000 0.000 0.000 {built-in method new of type object at 0x00007FFD0A84E7B0}
112 0.000 0.000 0.000 0.000 :1236(_path_importer_cache)
2 0.000 0.000 0.000 0.000 enum.py:1737(convert_class)
1 0.000 0.000 0.000 0.000 :1()
108 0.000 0.000 0.000 0.000 :89(_unpack_uint32)
1573 0.000 0.000 0.000 0.000 {method 'endswith' of 'str' objects}
1 0.000 0.000 0.000 0.000 {built-in method builtins.print}
475 0.000 0.000 0.000 0.000 _parser.py:260(get)
1 0.000 0.000 0.000 0.000 {built-in method sys.getwindowsversion}
54 0.000 0.000 0.000 0.000 inspect.py:2736(_format)
2 0.000 0.000 0.000 0.000 :1223(_path_hooks)
46 0.000 0.000 0.000 0.000 :124(setdefault)
46 0.000 0.000 0.000 0.000 :429(_get_module_lock)
340 0.000 0.000 0.000 0.000 completing_reader.py:278(cmpltn_reset)
42 0.000 0.000 0.000 0.000 {built-in method _ctypes.POINTER}
148 0.000 0.000 0.000 0.000 {built-in method builtins.max}
1152 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects}
44 0.000 0.000 0.000 0.000 :423(exit)
2 0.000 0.000 0.000 0.000 _colorize.py:79(can_colorize)
1020 0.000 0.000 0.000 0.000 {built-in method _warnings._filters_mutated_lock_held}
135 0.000 0.000 0.000 0.000 inspect.py:662(unwrap)
42 0.000 0.000 0.000 0.000 :190(_path_abspath)
1 0.000 0.000 0.000 0.000 reader.py:57(make_default_commands)
4 0.000 0.000 0.000 0.000 historical_reader.py:409(finish)
46 0.000 0.000 0.000 0.000 :372(release)
1020 0.000 0.000 0.000 0.000 {built-in method _warnings._release_lock}
369 0.000 0.000 0.000 0.000 {method 'insert' of 'list' objects}
1 0.000 0.000 0.000 0.000 _py_warnings.py:1()
2 0.000 0.000 0.000 0.000 :1411(_fill_cache)
339 0.000 0.000 0.000 0.000 {method 'strip' of 'str' objects}
42 0.000 0.000 0.000 0.000 :177(_path_isabs)
1 0.000 0.000 0.000 0.000 init.py:361(namedtuple)
60 0.000 0.000 0.000 0.000 inspect.py:2646(init)
3 0.000 0.000 0.000 0.000 :1062(exec_module)
3 0.000 0.000 0.000 0.000 {built-in method nt._supports_virtual_terminal}
22 0.000 0.000 0.000 0.000 _compiler.py:248(_optimize_charset)
1 0.000 0.000 0.000 0.000 console.py:47(Console)
1 0.000 0.000 0.000 0.000 windows_eventqueue.py:41(init)
1 0.000 0.000 0.000 0.000 base_eventqueue.py:34(init)
3 0.000 0.000 0.000 0.000 {built-in method _imp.exec_dynamic}
36 0.000 0.000 0.000 0.000 :460(_validate_timestamp_pyc)
168 0.000 0.000 0.000 0.000 dataclasses.py:535(_field_init)
12 0.000 0.000 0.000 0.000 inspect.py:2938(init)
138 0.000 0.000 0.000 0.000 {method 'match' of 're.Pattern' objects}
228 0.000 0.000 0.000 0.000 _parser.py:167(getitem)
751 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
541 0.000 0.000 0.000 0.000 _parser.py:239(__next)
480 0.000 0.000 0.000 0.000 :494(_verbose_message)
331 0.000 0.000 0.000 0.000 {method 'isspace' of 'str' objects}
1 0.000 0.000 0.000 0.000 reader.py:46(make_default_syntax_table)
642 0.000 0.000 0.000 0.000 {method 'setdefault' of 'dict' objects}
46 0.000 0.000 0.000 0.000 :985(find_spec)
6 0.000 0.000 0.000 0.000 inspect.py:2013(_signature_bound_method)
1 0.000 0.000 0.000 0.000 _endian.py:1()
2 0.000 0.000 0.000 0.000 :67(init)
2 0.000 0.000 0.000 0.000 :1452(path_hook_for_FileFinder)
43 0.000 0.000 0.000 0.000 _parser.py:311(_class_escape)
216 0.000 0.000 0.000 0.000 :139()
59 0.000 0.000 0.000 0.000 inspect.py:1333(formatannotation)
6 0.000 0.000 0.000 0.000 _compiler.py:525(_compile_info)
1034 0.000 0.000 0.000 0.000 {built-in method builtins.chr}
1 0.000 0.000 0.000 0.000 struct.py:1()
170 0.000 0.000 0.000 0.000 {built-in method builtins.setattr}
1 0.000 0.000 0.000 0.000 console.py:158(init)
18 0.000 0.000 0.000 0.000 inspect.py:1904(_signature_get_user_defined_method)
4 0.000 0.000 0.000 0.000 linecache.py:237(_register_code)
305 0.000 0.000 0.000 0.000 {method 'rpartition' of 'str' objects}
1 0.000 0.000 0.000 0.000 {built-in method builtins.eval}
27 0.000 0.000 0.000 0.000 dataclasses.py:441(add_fn)
340 0.000 0.000 0.000 0.000 _py_warnings.py:89(_get_context)
2 0.000 0.000 0.000 0.000 {built-in method nt.listdir}
554 0.000 0.000 0.000 0.000 {method 'lower' of 'str' objects}
1 0.000 0.000 0.000 0.000 commands.py:411(do)
1 0.000 0.000 0.000 0.000 _colorize.py:1()
46 0.000 0.000 0.000 0.000 :74(new)
69 0.000 0.000 0.000 0.000 dataclasses.py:387(field)
108 0.000 0.000 0.000 0.000 {built-in method from_bytes}
6 0.000 0.000 0.000 0.000 inspect.py:3016(replace)
38/14 0.000 0.000 0.000 0.000 _parser.py:177(getwidth)
315 0.000 0.000 0.000 0.000 {built-in method builtins.hasattr}
75 0.000 0.000 0.000 0.000 :648(parent)
44 0.000 0.000 0.000 0.000 :448(cb)
43 0.000 0.000 0.000 0.000 :1131(find_spec)
1 0.000 0.000 0.000 0.000 readline.py:341(_ReadlineWrapper)
18 0.000 0.000 0.000 0.000 {built-in method _abc._abc_init}
46 0.000 0.000 0.000 0.000 {built-in method _imp.is_builtin}
3 0.000 0.000 0.000 0.000 init.py:357(init)
14 0.000 0.000 0.000 0.000 :792(get)
132 0.000 0.000 0.000 0.000 :1229(exit)
9 0.000 0.000 0.000 0.000 dataclasses.py:411(fields_in_init_order)
68 0.000 0.000 0.000 0.000 dataclasses.py:1227(update_func_cell_for__class
)
2 0.000 0.000 0.000 0.000 :169(_path_isdir)
18 0.000 0.000 0.000 0.000 :703(getitem)
2 0.000 0.000 0.000 0.000 init.py:74(CFUNCTYPE)
12 0.000 0.000 0.000 0.000 inspect.py:1719(getattr_static)
4 0.000 0.000 0.000 0.000 _parser.py:97(closegroup)
46 0.000 0.000 0.000 0.000 :82(remove)
66 0.000 0.000 0.000 0.000 enum.py:676(call)
270 0.000 0.000 0.000 0.000 {method 'group' of 're.Match' objects}
36 0.000 0.000 0.000 0.000 :404(_check_name_wrapper)
15 0.000 0.000 0.000 0.000 annotationlib.py:638(get_annotations)
45 0.000 0.000 0.000 0.000 dataclasses.py:866(_set_new_attribute)
397 0.000 0.000 0.000 0.000 {method 'isdigit' of 'str' objects}
2 0.000 0.000 0.000 0.000 :473(gethistoryfile)
132 0.000 0.000 0.000 0.000 :1225(enter)
2 0.000 0.000 0.000 0.000 enum.py:479(new)
44 0.000 0.000 0.000 0.000 :232(init)
340 0.000 0.000 0.000 0.000 _py_warnings.py:71(_filters)
134 0.000 0.000 0.000 0.000 dataclasses.py:595(_init_param)
9 0.000 0.000 0.000 0.000 init.py:414(getattr)
91 0.000 0.000 0.000 0.000 :67(_relax_case)
172 0.000 0.000 0.000 0.000 _parser.py:255(match)
2 0.000 0.000 0.000 0.000 dataclasses.py:1248(_create_slots)
384 0.000 0.000 0.000 0.000 {method 'isalpha' of 'str' objects}
42 0.000 0.000 0.000 0.000 {built-in method nt._path_splitroot}
4 0.000 0.000 0.000 0.000 init.py:537(PYFUNCTYPE)
6 0.000 0.000 0.000 0.000 enum.py:1591(and)
46 0.000 0.000 0.000 0.000 :79(init)
12 0.000 0.000 0.000 0.000 inspect.py:1680(_check_class)
1 0.000 0.000 0.000 0.000 codeop.py:1()
22 0.000 0.000 0.000 0.000 _compiler.py:221(_compile_charset)
1 0.000 0.000 0.000 0.000 windows_console.py:124(_supports_vt)
107 0.000 0.000 0.000 0.000 {method 'replace' of 'str' objects}
9 0.000 0.000 0.000 0.000 reprlib.py:12(decorating_function)
3 0.000 0.000 0.000 0.000 :992(create_module)
92 0.000 0.000 0.000 0.000 {method 'enter' of '_thread.RLock' objects}
10 0.000 0.000 0.000 0.000 _parser.py:371(_escape)
2 0.000 0.000 0.000 0.000 :466(_lock_unlock_module)
35 0.000 0.000 0.000 0.000 :48(_new_module)
222 0.000 0.000 0.000 0.000 {built-in method _imp.release_lock}
1 0.000 0.000 0.000 0.000 wintypes.py:151(WIN32_FIND_DATAA)
4 0.000 0.000 0.000 0.000 {method 'splitlines' of 'str' objects}
9 0.000 0.000 0.000 0.000 init.py:421(getitem)
67 0.000 0.000 0.000 0.000 _parser.py:292(tell)
1 0.000 0.000 0.000 0.000 init.py:279(_reset_cache)
3 0.000 0.000 0.000 0.000 {built-in method _imp.create_builtin}
1 0.000 0.000 0.000 0.000 historical_reader.py:213(HistoricalReader)
9 0.000 0.000 0.000 0.000 :146(update_abstractmethods)
222 0.000 0.000 0.000 0.000 {built-in method _imp.acquire_lock}
3 0.000 0.000 0.000 0.000 :1000(exec_module)
135 0.000 0.000 0.000 0.000 dataclasses.py:700(_is_initvar)
56 0.000 0.000 0.000 0.000 _parser.py:175(append)
18 0.000 0.000 0.000 0.000 :777(encodekey)
1 0.000 0.000 0.000 0.000 future.py:1()
2 0.000 0.000 0.000 0.000 :1334(init)
144 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
46 0.000 0.000 0.000 0.000 :173(exit)
256 0.000 0.000 0.000 0.000 {method 'isalnum' of 'str' objects}
134 0.000 0.000 0.000 0.000 dataclasses.py:523(_field_assign)
14 0.000 0.000 0.000 0.000 init.py:146(_check_size)
92 0.000 0.000 0.000 0.000 {method 'exit' of '_thread.RLock' objects}
30 0.000 0.000 0.000 0.000 signal.py:9()
84 0.000 0.000 0.000 0.000 _parser.py:163(len)
15 0.000 0.000 0.000 0.000 annotationlib.py:844(_get_dunder_annotations)
3 0.000 0.000 0.000 0.000 contextlib.py:276(contextmanager)
3 0.000 0.000 0.000 0.000 {built-in method _imp.exec_builtin}
4 0.000 0.000 0.000 0.000 functools.py:35(update_wrapper)
66 0.000 0.000 0.000 0.000 inspect.py:2993()
1 0.000 0.000 0.000 0.000 :2(init)
19 0.000 0.000 0.000 0.000 _parser.py:448(_uniq)
4 0.000 0.000 0.000 0.000 _compiler.py:400(_mk_bitmap)
1 0.000 0.000 0.000 0.000 init.py:471(getattr)
43 0.000 0.000 0.000 0.000 {built-in method _imp.find_frozen}
1 0.000 0.000 0.000 0.000 wintypes.py:163(WIN32_FIND_DATAW)
1 0.000 0.000 0.000 0.000 _layout.py:1()
13 0.000 0.000 0.000 0.000 inspect.py:1706(_shadowed_dict)
2 0.000 0.000 0.000 0.000 dataclasses.py:1371(fields)
88 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects}
15 0.000 0.000 0.000 0.000 enum.py:808(setattr)
59 0.000 0.000 0.000 0.000 {method 'update' of 'dict' objects}
119 0.000 0.000 0.000 0.000 {built-in method nt.fspath}
14 0.000 0.000 0.000 0.000 _compiler.py:412(_simple)
1 0.000 0.000 0.000 0.000 readline.py:350(post_init)
1 0.000 0.000 0.000 0.000 keymap.py:1()
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
36 0.000 0.000 0.000 0.000 {method 'enter' of '_io._IOBase' objects}
69 0.000 0.000 0.000 0.000 dataclasses.py:290(init)
6 0.000 0.000 0.000 0.000 inspect.py:2039(_signature_is_builtin)
2 0.000 0.000 0.000 0.000 :343(expanduser)
3 0.000 0.000 0.000 0.000 :665(spec_from_loader)
8/6 0.000 0.000 0.000 0.000 _compiler.py:450(_get_literal_prefix)
177 0.000 0.000 0.000 0.000 dataclasses.py:1113()
140 0.000 0.000 0.000 0.000 dataclasses.py:415()
2 0.000 0.000 0.000 0.000 {built-in method nt.dup}
81 0.000 0.000 0.000 0.000 _layout.py:17(round_up)
1 0.000 0.000 0.000 0.000 windows_console.py:131(WindowsConsole)
71 0.000 0.000 0.000 0.000 {method 'pop' of 'list' objects}
68 0.000 0.000 0.000 0.000 {method 'index' of 'tuple' objects}
1 0.000 0.000 0.000 0.000 functools.py:723(cache)
30 0.000 0.000 0.000 0.000 dataclasses.py:332(set_name)
92 0.000 0.000 0.000 0.000 {built-in method _thread.get_ident}
139 0.000 0.000 0.000 0.000 {built-in method builtins.id}
46 0.000 0.000 0.000 0.000 :602(init)
1 0.000 0.000 0.000 0.000 trace.py:1()
46 0.000 0.000 0.000 0.000 {built-in method _weakref._remove_dead_weakref}
87 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects}
140 0.000 0.000 0.000 0.000 dataclasses.py:1177()
18 0.000 0.000 0.000 0.000 enum.py:1573(_get_value)
135 0.000 0.000 0.000 0.000 {built-in method sys.getrecursionlimit}
5 0.000 0.000 0.000 0.000 {method 'fileno' of '_io.TextIOWrapper' objects}
174 0.000 0.000 0.000 0.000 inspect.py:2711(kind)
66 0.000 0.000 0.000 0.000 enum.py:1143(new)
1 0.000 0.000 0.000 0.000 {built-in method builtins.dir}
107 0.000 0.000 0.000 0.000 {built-in method _ctypes.sizeof}
6 0.000 0.000 0.000 0.000 _parser.py:76(init)
135 0.000 0.000 0.000 0.000 dataclasses.py:706(_is_kw_only)
60 0.000 0.000 0.000 0.000 {built-in method _ctypes.buffer_info}
70 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray' objects}
1 0.000 0.000 0.000 0.000 readline.py:180(collect_keymap)
29 0.000 0.000 0.000 0.000 utils.py:13(str_width)
5 0.000 0.000 0.000 0.000 {method 'flush' of '_io.TextIOWrapper' objects}
67 0.000 0.000 0.000 0.000 {method 'isidentifier' of 'str' objects}
4 0.000 0.000 0.000 0.000 simple_interact.py:112(maybe_run_command)
1 0.000 0.000 0.000 0.000 readline.py:571(_setup)
20 0.000 0.000 0.000 0.000 {built-in method fromkeys}
63 0.000 0.000 0.000 0.000 {method 'add' of 'set' objects}
1 0.000 0.000 0.000 0.000 functools.py:590(decorating_function)
1 0.000 0.000 0.000 0.000 completing_reader.py:227(CompletingReader)
6 0.000 0.000 0.000 0.000 inspect.py:2388(_descriptor_get)
67 0.000 0.000 0.000 0.000 {method 'contains' of 'frozenset' objects}
1 0.000 0.000 0.000 0.000 :816(getenv)
15 0.000 0.000 0.000 0.000 enum.py:46(_is_dunder)
4 0.000 0.000 0.000 0.000 _parser.py:264(getwhile)
75 0.000 0.000 0.000 0.000 _layout.py:308(padding_spec)
16 0.000 0.000 0.000 0.000 _parser.py:171(setitem)
11 0.000 0.000 0.000 0.000 enum.py:36(_is_descriptor)
6 0.000 0.000 0.000 0.000 _parser.py:230(init)
1 0.000 0.000 0.000 0.000 code.py:185(init)
114 0.000 0.000 0.000 0.000 inspect.py:2699(name)
44 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock}
47 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass}
36 0.000 0.000 0.000 0.000 {built-in method _imp._fix_co_filename}
18 0.000 0.000 0.000 0.000 {built-in method _struct.calcsize}
18 0.000 0.000 0.000 0.000 :771(check_str)
1 0.000 0.000 0.000 0.000 reader.py:222(RefreshCache)
4 0.000 0.000 0.000 0.000 completing_reader.py:274(finish)
44 0.000 0.000 0.000 0.000 :415(init)
1 0.000 0.000 0.000 0.000 contextlib.py:17(AbstractContextManager)
1 0.000 0.000 0.000 0.000 historical_reader.py:259(collect_keymap)
1 0.000 0.000 0.000 0.000 types.py:1()
11 0.000 0.000 0.000 0.000 enum.py:77(_is_private)
6 0.000 0.000 0.000 0.000 inspect.py:2053(_signature_is_functionlike)
41 0.000 0.000 0.000 0.000 {method 'partition' of 'str' objects}
2 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects}
24 0.000 0.000 0.000 0.000 _parser.py:82(groups)
4 0.000 0.000 0.000 0.000 _parser.py:85(opengroup)
44 0.000 0.000 0.000 0.000 _parser.py:112(init)
2 0.000 0.000 0.000 0.000 :99(join)
6 0.000 0.000 0.000 0.000 {built-in method _sre.compile}
1 0.000 0.000 0.000 0.000 :1(create_fn)
5 0.000 0.000 0.000 0.000 {built-in method nt.isatty}
37 0.000 0.000 0.000 0.000 :920(init)
12 0.000 0.000 0.000 0.000 dataclasses.py:416()
1 0.000 0.000 0.000 0.000 contextlib.py:41(AbstractAsyncContextManager)
28 0.000 0.000 0.000 0.000 {method 'get' of 'mappingproxy' objects}
43 0.000 0.000 0.000 0.000 {method 'islower' of 'str' objects}
64 0.000 0.000 0.000 0.000 {built-in method _ctypes.alignment}
46 0.000 0.000 0.000 0.000 :158(init)
1 0.000 0.000 0.000 0.000 traceback.py:280(FrameSummary)
18 0.000 0.000 0.000 0.000 inspect.py:267(isfunction)
2 0.000 0.000 0.000 0.000 {built-in method _ctypes.LoadLibrary}
5 0.000 0.000 0.000 0.000 reader.py:605(restore)
3 0.000 0.000 0.000 0.000 :504(_requires_builtin_wrapper)
18 0.000 0.000 0.000 0.000 inspect.py:184(isclass)
1 0.000 0.000 0.000 0.000 code.py:25(init)
5 0.000 0.000 0.000 0.000 dataclasses.py:650()
29 0.000 0.000 0.000 0.000 {built-in method builtins.delattr}
26 0.000 0.000 0.000 0.000 {method 'values' of 'dict' objects}
11 0.000 0.000 0.000 0.000 enum.py:57(_is_sunder)
1 0.000 0.000 0.000 0.000 traceback.py:1005(TracebackException)
3 0.000 0.000 0.000 0.000 _compiler.py:481(_get_charset_prefix)
2 0.000 0.000 0.000 0.000 :799(contains)
36 0.000 0.000 0.000 0.000 dataclasses.py:1386()
1 0.000 0.000 0.000 0.000 init.py:158(py_object)
9 0.000 0.000 0.000 0.000 reprlib.py:9(recursive_repr)
14 0.000 0.000 0.000 0.000 {method 'values' of 'mappingproxy' objects}
19 0.000 0.000 0.000 0.000 {method 'find' of 'str' objects}
3 0.000 0.000 0.000 0.000 _compiler.py:421(_generate_overlap_table)
1 0.000 0.000 0.000 0.000 completing_reader.py:251(collect_keymap)
41 0.000 0.000 0.000 0.000 :656(has_location)
1 0.000 0.000 0.000 0.000 readline.py:104(ReadlineAlikeReader)
18 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects}
9 0.000 0.000 0.000 0.000 dataclasses.py:880(_hash_set_none)
6 0.000 0.000 0.000 0.000 inspect.py:196(ismethoddescriptor)
1 0.000 0.000 0.000 0.000 traceback.py:436(StackSummary)
30 0.000 0.000 0.000 0.000 {method 'isupper' of 'str' objects}
36 0.000 0.000 0.000 0.000 :945(get_filename)
12 0.000 0.000 0.000 0.000 _compiler.py:587(isstring)
1 0.000 0.000 0.000 0.000 base_eventqueue.py:33(BaseEventQueue)
1 0.000 0.000 0.000 0.000 :473(new)
21 0.000 0.000 0.000 0.000 :7(abstractmethod)
51 0.000 0.000 0.000 0.000 inspect.py:2703(default)
1 0.000 0.000 0.000 0.000 contextlib.py:631(AsyncExitStack)
17 0.000 0.000 0.000 0.000 _layout.py:26(init)
1 0.000 0.000 0.000 0.000 contextlib.py:472(_BaseExitStack)
1 0.000 0.000 0.000 0.000 input.py:48(InputTranslator)
9 0.000 0.000 0.000 0.000 dataclasses.py:433(init)
1 0.000 0.000 0.000 0.000 code.py:16(InteractiveInterpreter)
31 0.000 0.000 0.000 0.000 signal.py:16()
4 0.000 0.000 0.000 0.000 {method 'translate' of 'bytearray' objects}
25 0.000 0.000 0.000 0.000 {built-in method builtins.callable}
36 0.000 0.000 0.000 0.000 dataclasses.py:1284()
35 0.000 0.000 0.000 0.000 :753(create_module)
12 0.000 0.000 0.000 0.000 {method 'items' of 'mappingproxy' objects}
1 0.000 0.000 0.000 0.000 init.py:305(escape)
6 0.000 0.000 0.000 0.000 _parser.py:946(fix_flags)
1 0.000 0.000 0.000 0.000 future.py:81(_Feature)
1 0.000 0.000 0.000 0.000 init.py:467(LibraryLoader)
1 0.000 0.000 0.000 0.000 :1()
3 0.000 0.000 0.000 0.000 signal.py:51(decorator)
3 0.000 0.000 0.000 0.000 readline.py:550(_make_stub)
1 0.000 0.000 0.000 0.000 readline.py:98(ReadlineConfig)
1 0.000 0.000 0.000 0.000 _colorize.py:13(ANSIColors)
1 0.000 0.000 0.000 0.000 codeop.py:132(init)
3 0.000 0.000 0.000 0.000 init.py:398(_FuncPtr)
4 0.000 0.000 0.000 0.000 init.py:538(CFunctionType)
8 0.000 0.000 0.000 0.000 _layout.py:252()
1 0.000 0.000 0.000 0.000 rlcompleter.py:42(Completer)
1 0.000 0.000 0.000 0.000 inspect.py:1687(_shadowed_dict_from_weakref_mro_tuple)
9 0.000 0.000 0.000 0.000 dataclasses.py:355(init)
6 0.000 0.000 0.000 0.000 inspect.py:431(isbuiltin)
7 0.000 0.000 0.000 0.000 {built-in method sys.intern}
16 0.000 0.000 0.000 0.000 :1340()
3 0.000 0.000 0.000 0.000 functools.py:65(wraps)
11 0.000 0.000 0.000 0.000 enum.py:900()
10 0.000 0.000 0.000 0.000 future.py:83(init)
1 0.000 0.000 0.000 0.000 traceback.py:982(_ExceptionPrintContext)
1 0.000 0.000 0.000 0.000 init.py:336(CDLL)
1 0.000 0.000 0.000 0.000 console.py:54(init)
4 0.000 0.000 0.000 0.000 linecache.py:54(_make_key)
1 0.000 0.000 0.000 0.000 _py_warnings.py:571(WarningMessage)
5 0.000 0.000 0.000 0.000 code.py:200(resetbuffer)
1 0.000 0.000 0.000 0.000 console.py:155(InteractiveColoredConsole)
2 0.000 0.000 0.000 0.000 {built-in method from_iterable}
1 0.000 0.000 0.000 0.000 code.py:177(InteractiveConsole)
1 0.000 0.000 0.000 0.000 contextlib.py:367(aclosing)
8 0.000 0.000 0.000 0.000 _compiler.py:33(_combine_flags)
9 0.000 0.000 0.000 0.000 {method 'keys' of 'dict' objects}
5 0.000 0.000 0.000 0.000 windows_console.py:370(restore)
1 0.000 0.000 0.000 0.000 functools.py:550(lru_cache)
11 0.000 0.000 0.000 0.000 _compiler.py:442(_get_iscased)
1 0.000 0.000 0.000 0.000 commands.py:40(Command)
1 0.000 0.000 0.000 0.000 rlcompleter.py:43(init)
4 0.000 0.000 0.000 0.000 {built-in method nt._path_splitroot_ex}
2 0.000 0.000 0.000 0.000 {built-in method time.time}
3 0.000 0.000 0.000 0.000 :1043(init)
1 0.000 0.000 0.000 0.000 input.py:62(KeymapTranslator)
2 0.000 0.000 0.000 0.000 init.py:103(CFunctionType)
7 0.000 0.000 0.000 0.000 init.py:435()
13 0.000 0.000 0.000 0.000 dataclasses.py:177(repr)
1 0.000 0.000 0.000 0.000 _py_warnings.py:67(_GlobalContext)
1 0.000 0.000 0.000 0.000 commands.py:397(backspace)
1 0.000 0.000 0.000 0.000 _py_warnings.py:593(catch_warnings)
1 0.000 0.000 0.000 0.000 commands.py:147(kill_line)
11 0.000 0.000 0.000 0.000 inspect.py:3012(return_annotation)
1 0.000 0.000 0.000 0.000 _py_warnings.py:52(_Context)
1 0.000 0.000 0.000 0.000 contextlib.py:775(nullcontext)
1 0.000 0.000 0.000 0.000 commands.py:277(down)
1 0.000 0.000 0.000 0.000 enum.py:186(get)
1 0.000 0.000 0.000 0.000 readline.py:316(backspace_dedent)
1 0.000 0.000 0.000 0.000 :1()
4 0.000 0.000 0.000 0.000 init.py:468(init)
2 0.000 0.000 0.000 0.000 enum.py:786(members)
1 0.000 0.000 0.000 0.000 _py_warnings.py:678(deprecated)
1 0.000 0.000 0.000 0.000 windows_console.py:578(CONSOLE_SCREEN_BUFFER_INFO)
1 0.000 0.000 0.000 0.000 {built-in method builtins.vars}
12 0.000 0.000 0.000 0.000 inspect.py:3008(parameters)
7 0.000 0.000 0.000 0.000 {built-in method builtins.globals}
1 0.000 0.000 0.000 0.000 contextlib.py:557(ExitStack)
1 0.000 0.000 0.000 0.000 windows_console.py:609(KeyEvent)
1 0.000 0.000 0.000 0.000 init.py:427(PyDLL)
1 0.000 0.000 0.000 0.000 code.py:343(Quitter)
1 0.000 0.000 0.000 0.000 codeop.py:109(init)
1 0.000 0.000 0.000 0.000 codeop.py:104(Compile)
1 0.000 0.000 0.000 0.000 contextlib.py:393(_RedirectStream)
1 0.000 0.000 0.000 0.000 historical_reader.py:65(previous_history)
1 0.000 0.000 0.000 0.000 contextlib.py:342(closing)
1 0.000 0.000 0.000 0.000 readline.py:265(maybe_accept)
1 0.000 0.000 0.000 0.000 console.py:40(Event)
1 0.000 0.000 0.000 0.000 _endian.py:23(_swapped_meta)
1 0.000 0.000 0.000 0.000 wintypes.py:105(RECT)
1 0.000 0.000 0.000 0.000 wintypes.py:112(_SMALL_RECT)
1 0.000 0.000 0.000 0.000 historical_reader.py:86(restore_history)
1 0.000 0.000 0.000 0.000 :35(init)
2 0.000 0.000 0.000 0.000 enum.py:1721(_simple_enum)
1 0.000 0.000 0.000 0.000 codeop.py:125(CommandCompiler)
1 0.000 0.000 0.000 0.000 contextlib.py:66(ContextDecorator)
4 0.000 0.000 0.000 0.000 reader.py:621(finish)
1 0.000 0.000 0.000 0.000 commands.py:247(up)
1 0.000 0.000 0.000 0.000 wintypes.py:20(VARIANT_BOOL)
1 0.000 0.000 0.000 0.000 traceback.py:98(_Sentinel)
1 0.000 0.000 0.000 0.000 contextlib.py:433(suppress)
1 0.000 0.000 0.000 0.000 wintypes.py:141(MSG)
1 0.000 0.000 0.000 0.000 windows_eventqueue.py:40(EventQueue)
1 0.000 0.000 0.000 0.000 historical_reader.py:56(next_history)
1 0.000 0.000 0.000 0.000 init.py:255(c_char_p)
1 0.000 0.000 0.000 0.000 init.py:458(OleDLL)
1 0.000 0.000 0.000 0.000 _layout.py:25(StructUnionLayout)
3 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects}
1 0.000 0.000 0.000 0.000 warnings.py:79(_Lock)
1 0.000 0.000 0.000 0.000 contextlib.py:89(AsyncContextDecorator)
1 0.000 0.000 0.000 0.000 contextlib.py:105(_GeneratorContextManagerBase)
1 0.000 0.000 0.000 0.000 contextlib.py:129(_GeneratorContextManager)
1 0.000 0.000 0.000 0.000 commands.py:106(digit_arg)
1 0.000 0.000 0.000 0.000 commands.py:141(repaint)
1 0.000 0.000 0.000 0.000 contextlib.py:802(chdir)
1 0.000 0.000 0.000 0.000 :2(annotate)
1 0.000 0.000 0.000 0.000 historical_reader.py:80(history_search_forward)
1 0.000 0.000 0.000 0.000 completing_reader.py:166(complete)
1 0.000 0.000 0.000 0.000 windows_console.py:602(Char)
1 0.000 0.000 0.000 0.000 windows_console.py:631(INPUT_RECORD)
1 0.000 0.000 0.000 0.000 init.py:271(c_wchar_p)
3 0.000 0.000 0.000 0.000 signal.py:50(_wraps)
1 0.000 0.000 0.000 0.000 init.py:168(c_short)
1 0.000 0.000 0.000 0.000 init.py:197(c_float)
1 0.000 0.000 0.000 0.000 contextlib.py:202(_AsyncGeneratorContextManager)
1 0.000 0.000 0.000 0.000 commands.py:359(backward_word)
1 0.000 0.000 0.000 0.000 historical_reader.py:111(yank_arg)
1 0.000 0.000 0.000 0.000 historical_reader.py:190(isearch_forwards)
1 0.000 0.000 0.000 0.000 commands.py:59(KillCommand)
1 0.000 0.000 0.000 0.000 commands.py:214(interrupt)
1 0.000 0.000 0.000 0.000 commands.py:342(home)
1 0.000 0.000 0.000 0.000 historical_reader.py:159(isearch_cancel)
1 0.000 0.000 0.000 0.000 historical_reader.py:169(isearch_add_character)
1 0.000 0.000 0.000 0.000 historical_reader.py:180(isearch_backspace)
1 0.000 0.000 0.000 0.000 historical_reader.py:197(isearch_backwards)
1 0.000 0.000 0.000 0.000 historical_reader.py:204(isearch_end)
1 0.000 0.000 0.000 0.000 completing_reader.py:206(self_insert)
1 0.000 0.000 0.000 0.000 windows_console.py:588(CONSOLE_CURSOR_INFO)
1 0.000 0.000 0.000 0.000 windows_console.py:595(CHAR_INFO)
1 0.000 0.000 0.000 0.000 windows_console.py:624(ConsoleEvent)
1 0.000 0.000 0.000 0.000 _endian.py:48(BigEndianStructure)
1 0.000 0.000 0.000 0.000 init.py:227(c_longlong)
1 0.000 0.000 0.000 0.000 init.py:436(WinDLL)
1 0.000 0.000 0.000 0.000 init.py:445(HRESULT)
1 0.000 0.000 0.000 0.000 wintypes.py:119(_COORD)
1 0.000 0.000 0.000 0.000 {built-in method maketrans}
1 0.000 0.000 0.000 0.000 :1()
1 0.000 0.000 0.000 0.000 commands.py:129(clear_screen)
1 0.000 0.000 0.000 0.000 commands.py:136(refresh)
1 0.000 0.000 0.000 0.000 commands.py:166(unix_word_rubout)
1 0.000 0.000 0.000 0.000 commands.py:173(kill_word)
1 0.000 0.000 0.000 0.000 commands.py:309(left)
1 0.000 0.000 0.000 0.000 commands.py:347(end)
1 0.000 0.000 0.000 0.000 commands.py:352(forward_word)
1 0.000 0.000 0.000 0.000 commands.py:443(invalid_key)
1 0.000 0.000 0.000 0.000 historical_reader.py:74(history_search_backward)
1 0.000 0.000 0.000 0.000 historical_reader.py:96(first_history)
1 0.000 0.000 0.000 0.000 historical_reader.py:101(last_history)
1 0.000 0.000 0.000 0.000 historical_reader.py:106(operate_and_get_next)
1 0.000 0.000 0.000 0.000 historical_reader.py:139(forward_history_isearch)
1 0.000 0.000 0.000 0.000 historical_reader.py:149(reverse_history_isearch)
1 0.000 0.000 0.000 0.000 wintypes.py:128(SIZE)
3 0.000 0.000 0.000 0.000 :14(init)
1 0.000 0.000 0.000 0.000 enum.py:1321(value)
1 0.000 0.000 0.000 0.000 _py_warnings.py:68(init)
1 0.000 0.000 0.000 0.000 commands.py:160(unix_line_discard)
1 0.000 0.000 0.000 0.000 contextlib.py:411(redirect_stdout)
1 0.000 0.000 0.000 0.000 commands.py:180(backward_kill_word)
1 0.000 0.000 0.000 0.000 commands.py:187(yank)
1 0.000 0.000 0.000 0.000 commands.py:230(suspend)
1 0.000 0.000 0.000 0.000 commands.py:320(right)
1 0.000 0.000 0.000 0.000 commands.py:332(beginning_of_line)
1 0.000 0.000 0.000 0.000 commands.py:337(end_of_line)
1 0.000 0.000 0.000 0.000 commands.py:373(insert_nl)
1 0.000 0.000 0.000 0.000 commands.py:379(transpose_characters)
1 0.000 0.000 0.000 0.000 commands.py:435(help)
1 0.000 0.000 0.000 0.000 commands.py:450(invalid_command)
1 0.000 0.000 0.000 0.000 commands.py:456(show_history)
1 0.000 0.000 0.000 0.000 console.py:54(annotate)
1 0.000 0.000 0.000 0.000 windows_console.py:620(WindowsBufferSizeEvent)
1 0.000 0.000 0.000 0.000 _endian.py:55(BigEndianUnion)
1 0.000 0.000 0.000 0.000 wintypes.py:123(POINT)
1 0.000 0.000 0.000 0.000 wintypes.py:136(FILETIME)
3 0.000 0.000 0.000 0.000 :1017(is_package)
1 0.000 0.000 0.000 0.000 contextlib.py:427(redirect_stderr)
1 0.000 0.000 0.000 0.000 commands.py:196(yank_pop)
1 0.000 0.000 0.000 0.000 commands.py:223(ctrl_c)
1 0.000 0.000 0.000 0.000 commands.py:366(self_insert)
1 0.000 0.000 0.000 0.000 commands.py:410(delete)
1 0.000 0.000 0.000 0.000 commands.py:430(accept)
1 0.000 0.000 0.000 0.000 commands.py:480(enable_bracketed_paste)
1 0.000 0.000 0.000 0.000 commands.py:486(disable_bracketed_paste)
1 0.000 0.000 0.000 0.000 reader.py:630(update_screen)
1 0.000 0.000 0.000 0.000 windows_console.py:121(_error)
1 0.000 0.000 0.000 0.000 init.py:172(c_ushort)
1 0.000 0.000 0.000 0.000 init.py:176(c_long)
1 0.000 0.000 0.000 0.000 init.py:180(c_ulong)
1 0.000 0.000 0.000 0.000 init.py:201(c_double)
1 0.000 0.000 0.000 0.000 init.py:205(c_longdouble)
1 0.000 0.000 0.000 0.000 init.py:211(c_double_complex)
1 0.000 0.000 0.000 0.000 init.py:238(c_ubyte)
1 0.000 0.000 0.000 0.000 init.py:266(c_bool)
1 0.000 0.000 0.000 0.000 _endian.py:34(_swapped_struct_meta)
1 0.000 0.000 0.000 0.000 _endian.py:35(_swapped_union_meta)
1 0.000 0.000 0.000 0.000 keymap.py:104(KeySpecError)
1 0.000 0.000 0.000 0.000 _py_warnings.py:350(_processoptions)
1 0.000 0.000 0.000 0.000 _py_warnings.py:344(_OptionError)
1 0.000 0.000 0.000 0.000 reader.py:289(collect_keymap)
1 0.000 0.000 0.000 0.000 commands.py:78(YankCommand)
1 0.000 0.000 0.000 0.000 commands.py:82(MotionCommand)
1 0.000 0.000 0.000 0.000 commands.py:90(FinishCommand)
1 0.000 0.000 0.000 0.000 commands.py:473(paste_mode)
1 0.000 0.000 0.000 0.000 init.py:231(c_ulonglong)
1 0.000 0.000 0.000 0.000 init.py:245(c_byte)
1 0.000 0.000 0.000 0.000 init.py:250(c_char)
1 0.000 0.000 0.000 0.000 init.py:261(c_void_p)
1 0.000 0.000 0.000 0.000 init.py:276(c_wchar)
1 0.000 0.000 0.000 0.000 {built-in method sys.getdefaultencoding}
1 0.000 0.000 0.000 0.000 {built-in method sys._getframemodulename}
1 0.000 0.000 0.000 0.000 commands.py:86(EditCommand)
1 0.000 0.000 0.000 0.000 _py_warnings.py:24(_set_module)

cProfile virtual console

ncalls tottime percall cumtime percall filename:lineno(function)
50/1 0.012 0.000 3.002 3.002 {built-in method builtins.exec}
1 0.000 0.000 3.002 3.002 :201(run_module)
1 0.000 0.000 3.000 3.000 :65(_run_code)
1 0.000 0.000 3.000 3.000 main.py:1()
1 0.000 0.000 2.924 2.924 main.py:24(interactive_console)
1 0.000 0.000 2.924 2.924 simple_interact.py:99(run_multiline_interactive_console)
2 0.000 0.000 2.923 1.461 readline.py:375(multiline_input)
2 0.017 0.008 2.922 1.461 reader.py:741(readline)
33395 0.095 0.000 2.903 0.000 reader.py:694(handle1)
33395 0.127 0.000 1.361 0.000 reader.py:645(do_cmd)
33395 0.013 0.000 1.009 0.000 reader.py:634(refresh)
66826 0.050 0.000 0.833 0.000 windows_console.py:563(wait)
339 0.012 0.000 0.823 0.002 windows_console.py:174(refresh)
26 0.758 0.029 0.758 0.029 windows_console.py:550(wait_for_event)
287 0.569 0.002 0.591 0.002 windows_console.py:300(_scroll)
33413 0.134 0.000 0.513 0.000 windows_console.py:446(get_event)
33077/33069 0.139 0.000 0.238 0.000 base_eventqueue.py:72(push)
341 0.001 0.000 0.173 0.001 completing_reader.py:260(calc_screen)
341 0.014 0.000 0.172 0.001 reader.py:292(calc_screen)
1331 0.010 0.000 0.167 0.000 windows_console.py:337(__write)
1331 0.153 0.000 0.153 0.000 {method 'write' of '_io._WindowsConsoleIO' objects}
1346 0.067 0.000 0.114 0.000 utils.py:44(disp_str)
33413 0.068 0.000 0.109 0.000 windows_console.py:427(_read_input)
33394 0.031 0.000 0.095 0.000 readline.py:186(after_command)
33056 0.020 0.000 0.095 0.000 completing_reader.py:207(do)
107 0.001 0.000 0.079 0.001 windows_console.py:251(__write_changed_line)
44/2 0.000 0.000 0.076 0.038 :1360(_find_and_load)
44/2 0.000 0.000 0.076 0.038 :1308(_find_and_load_unlocked)
41/2 0.000 0.000 0.076 0.038 :914(_load_unlocked)
35/2 0.000 0.000 0.076 0.038 :756(exec_module)
33056 0.032 0.000 0.075 0.000 commands.py:367(do)
96/6 0.000 0.000 0.075 0.012 :483(_call_with_frames_removed)
1 0.000 0.000 0.075 0.075 main.py:1()
496 0.001 0.000 0.072 0.000 windows_console.py:319(_hide_cursor)
1 0.000 0.000 0.069 0.069 simple_interact.py:1()
33405 0.046 0.000 0.067 0.000 input.py:80(push)
33394 0.035 0.000 0.064 0.000 completing_reader.py:255(after_command)
1 0.000 0.000 0.053 0.053 readline.py:1()
33413 0.020 0.000 0.050 0.000 reader.py:676(run_hooks)
606 0.001 0.000 0.043 0.000 windows_console.py:376(_move_relative)
33069 0.030 0.000 0.043 0.000 base_eventqueue.py:65(insert)
2024 0.007 0.000 0.043 0.000 utils.py:23(wlen)
33391 0.032 0.000 0.038 0.000 reader.py:561(insert)
204582 0.036 0.000 0.036 0.000 {method 'append' of 'list' objects}
169219 0.033 0.000 0.033 0.000 {built-in method builtins.isinstance}
5665 0.014 0.000 0.032 0.000 {built-in method builtins.sum}
33413 0.024 0.000 0.030 0.000 windows_console.py:242(input_hook)
1346 0.002 0.000 0.030 0.000 reader.py:392(process_prompt)
339 0.000 0.000 0.028 0.000 windows_console.py:322(_show_cursor)
287 0.027 0.000 0.027 0.000 windows_console.py:417(_getscrollbacksize)
8/6 0.000 0.000 0.022 0.004 {built-in method builtins.import}
289 0.022 0.000 0.022 0.000 windows_console.py:406(getheightwidth)
33394 0.015 0.000 0.022 0.000 reader.py:572(after_command)
12/9 0.000 0.000 0.021 0.002 :1401(_handle_fromlist)
133308 0.021 0.000 0.021 0.000 base_eventqueue.py:51(empty)
33069 0.014 0.000 0.021 0.000 base_eventqueue.py:42(get)
36 0.001 0.000 0.020 0.001 :829(get_code)
33405 0.014 0.000 0.020 0.000 input.py:107(get)
100224 0.019 0.000 0.019 0.000 windows_console.py:424(more_in_buffer)
1 0.000 0.000 0.018 0.018 historical_reader.py:1()
9 0.000 0.000 0.018 0.002 dataclasses.py:1357(wrap)
9 0.001 0.000 0.018 0.002 dataclasses.py:930(_process_class)
132360 0.018 0.000 0.018 0.000 {built-in method builtins.ord}
67574 0.017 0.000 0.017 0.000 {method 'get' of 'dict' objects}
50342 0.016 0.000 0.016 0.000 utils.py:26()
447 0.001 0.000 0.015 0.000 windows_console.py:390(move_cursor)
66464 0.015 0.000 0.015 0.000 {method 'append' of 'collections.deque' objects}
33069 0.013 0.000 0.013 0.000 base_eventqueue.py:57(flush_buf)
1 0.000 0.000 0.013 0.013 windows_console.py:1()
46 0.000 0.000 0.013 0.000 :1243(_find_spec)
66464 0.013 0.000 0.013 0.000 {method 'popleft' of 'collections.deque' objects}
9 0.000 0.000 0.012 0.001 dataclasses.py:474(add_fns_to_class)
43 0.000 0.000 0.012 0.000 :1287(find_spec)
43 0.000 0.000 0.012 0.000 :1258(_get_spec)
36 0.000 0.000 0.012 0.000 :950(get_data)
91 0.001 0.000 0.011 0.000 :1360(find_spec)
68830 0.011 0.000 0.011 0.000 trace.py:15(trace)
33067 0.011 0.000 0.011 0.000 {method 'decode' of 'bytes' objects}
1 0.000 0.000 0.011 0.011 code.py:1()
1 0.000 0.000 0.011 0.011 reader.py:1()
9 0.000 0.000 0.010 0.001 dataclasses.py:1340(dataclass)
1 0.000 0.000 0.010 0.010 traceback.py:1()
178/176 0.003 0.000 0.009 0.000 {built-in method builtins.build_class}
36 0.009 0.000 0.009 0.000 {built-in method _io.open_code}
33077 0.009 0.000 0.009 0.000 {method 'append' of 'bytearray' objects}
48402/48357 0.008 0.000 0.008 0.000 {built-in method builtins.len}
34202 0.008 0.000 0.008 0.000 {built-in method builtins.getattr}
33395 0.008 0.000 0.008 0.000 commands.py:44(init)
177 0.000 0.000 0.008 0.000 :145(_path_stat)
177 0.007 0.000 0.007 0.000 {built-in method nt.stat}
41 0.000 0.000 0.007 0.000 :809(module_from_spec)
2 0.000 0.000 0.006 0.003 init.py:1()
33413 0.006 0.000 0.006 0.000 {built-in method nt._is_inputhook_installed}
33056 0.005 0.000 0.005 0.000 reader.py:469(get_arg)
1 0.000 0.000 0.005 0.005 simple_interact.py:43(check)
3 0.000 0.000 0.005 0.002 readline.py:356(get_reader)
36 0.001 0.000 0.005 0.000 :512(_compile_bytecode)
3 0.000 0.000 0.005 0.002 :1054(create_module)
3 0.005 0.002 0.005 0.002 {built-in method _imp.create_dynamic}
2692 0.002 0.000 0.005 0.000 utils.py:33(unbracket)
36 0.004 0.000 0.004 0.000 {built-in method marshal.loads}
447 0.003 0.000 0.004 0.000 :101(_path_join)
1 0.000 0.000 0.004 0.004 readline.py:116(post_init)
1 0.000 0.000 0.004 0.004 historical_reader.py:230(post_init)
2 0.000 0.000 0.004 0.002 input.py:63(init)
1346 0.002 0.000 0.004 0.000 historical_reader.py:321(get_prompt)
1988 0.004 0.000 0.004 0.000 {method 'findall' of 're.Pattern' objects}
2343 0.003 0.000 0.003 0.000 {method 'join' of 'str' objects}
1331 0.003 0.000 0.003 0.000 {method 'flush' of '_io._IOBase' objects}
6 0.000 0.000 0.003 0.000 init.py:287(compile)
6 0.000 0.000 0.003 0.000 init.py:330(_compile)
704 0.001 0.000 0.003 0.000 keymap.py:108(parse_keys)
5764 0.002 0.000 0.003 0.000 utils.py:30()
1 0.000 0.000 0.003 0.003 completing_reader.py:1()
6 0.000 0.000 0.003 0.000 _compiler.py:757(compile)
1 0.000 0.000 0.003 0.003 utils.py:1()
2/1 0.000 0.000 0.002 0.002 :105(_get_module_details)
1 0.000 0.000 0.002 0.002 console.py:1()
1 0.000 0.000 0.002 0.002 textwrap.py:1()
1 0.000 0.000 0.002 0.002 textwrap.py:17(TextWrapper)
48 0.000 0.000 0.002 0.000 :155(_path_is_mode_type)
1 0.000 0.000 0.002 0.002 wintypes.py:1()
1346 0.002 0.000 0.002 0.000 reader.py:477(get_prompt)
46 0.000 0.000 0.002 0.000 :164(_path_isfile)
336 0.000 0.000 0.002 0.000 readline.py:266(do)
36 0.002 0.000 0.002 0.000 {method 'read' of '_io.BufferedReader' objects}
1346 0.002 0.000 0.002 0.000 {method 'sub' of 're.Pattern' objects}
341 0.001 0.000 0.002 0.000 reader.py:233(update_cache)
72 0.000 0.000 0.002 0.000 :243(cache_from_source)
6 0.000 0.000 0.002 0.000 _parser.py:962(parse)
1331 0.002 0.000 0.002 0.000 {method 'encode' of 'str' objects}
20/6 0.000 0.000 0.002 0.000 _parser.py:451(_parse_sub)
26/6 0.001 0.000 0.002 0.000 _parser.py:511(_parse)
1 0.000 0.000 0.002 0.002 windows_eventqueue.py:1()
41 0.000 0.000 0.001 0.000 :736(_init_module_attrs)
1 0.000 0.000 0.001 0.001 warnings.py:1()
1 0.000 0.000 0.001 0.001 completing_reader.py:244(post_init)
1 0.000 0.000 0.001 0.001 input.py:1()
1 0.000 0.000 0.001 0.001 reader.py:271(post_init)
36 0.000 0.000 0.001 0.000 :969(path_stats)
728 0.001 0.000 0.001 0.000 keymap.py:118(_parse_single_key_sequence)
1 0.000 0.000 0.001 0.001 reader.py:137(Reader)
1347 0.001 0.000 0.001 0.000 {method 'translate' of 'str' objects}
1 0.000 0.000 0.001 0.001 code.py:306(push)
1 0.000 0.000 0.001 0.001 console.py:189(runsource)
44 0.000 0.000 0.001 0.000 :419(enter)
6 0.000 0.000 0.001 0.000 inspect.py:3285(signature)
6 0.000 0.000 0.001 0.000 inspect.py:2998(from_callable)
18/6 0.000 0.000 0.001 0.000 inspect.py:2397(_signature_from_callable)
343 0.001 0.000 0.001 0.000 reader.py:531(pos2xy)
74 0.000 0.000 0.001 0.000 :635(cached)
338 0.001 0.000 0.001 0.000 reader.py:254(get_cached_location)
39 0.000 0.000 0.001 0.000 :372(_get_cached)
682 0.001 0.000 0.001 0.000 {method 'copy' of 'list' objects}
444 0.001 0.000 0.001 0.000 {method 'format' of 'str' objects}
2 0.000 0.000 0.001 0.000 :69(find_spec)
32/3 0.001 0.000 0.001 0.000 keymap.py:197(compile_keymap)
2 0.000 0.000 0.001 0.000 historical_reader.py:305(prepare)
2 0.000 0.000 0.001 0.000 reader.py:579(prepare)
46 0.000 0.000 0.001 0.000 :304(acquire)
8 0.000 0.000 0.001 0.000 codeop.py:112(call)
8 0.001 0.000 0.001 0.000 {built-in method builtins.compile}
6 0.000 0.000 0.001 0.000 _compiler.py:590(_code)
36 0.001 0.000 0.001 0.000 {method 'exit' of '_io._IOBase' objects}
1114 0.001 0.000 0.001 0.000 {built-in method builtins.repr}
1988 0.001 0.000 0.001 0.000 {method 'count' of 'str' objects}
1 0.000 0.000 0.001 0.001 rlcompleter.py:1()
1 0.000 0.000 0.001 0.001 base_eventqueue.py:1()
69 0.000 0.000 0.001 0.000 dataclasses.py:769(_get_field)
17 0.000 0.000 0.001 0.000 _layout.py:41(get_layout)
2 0.000 0.000 0.001 0.000 dataclasses.py:1273(_add_slots)
1 0.000 0.000 0.001 0.001 unix_console.py:1()
1 0.000 0.000 0.001 0.001 contextlib.py:1()
9 0.000 0.000 0.001 0.000 dataclasses.py:614(_init_fn)
3 0.000 0.000 0.001 0.000 reader.py:763(get_unicode)
138 0.000 0.000 0.001 0.000 dataclasses.py:710(_is_type)
42/6 0.000 0.000 0.001 0.000 _compiler.py:39(_compile)
18 0.000 0.000 0.001 0.000 :105(new)
40 0.000 0.000 0.001 0.000 :1355(_get_spec)
342 0.001 0.000 0.001 0.000 {method 'split' of 'str' objects}
6 0.000 0.000 0.001 0.000 inspect.py:2291(_signature_from_function)
1 0.000 0.000 0.001 0.001 signal.py:1()
1 0.000 0.000 0.001 0.001 windows_console.py:132(init)
1 0.000 0.000 0.001 0.001 commands.py:1()
2 0.000 0.000 0.001 0.000 enum.py:877(convert)
912 0.000 0.000 0.000 0.000 {built-in method builtins.min}
6 0.000 0.000 0.000 0.000 inspect.py:3221(str)
6 0.000 0.000 0.000 0.000 inspect.py:3224(format)
1 0.000 0.000 0.000 0.000 simple_interact.py:80(_more_lines)
40 0.000 0.000 0.000 0.000 :563(spec_from_file_location)
36 0.000 0.000 0.000 0.000 :427(_classify_pyc)
46 0.000 0.000 0.000 0.000 :162(enter)
72 0.000 0.000 0.000 0.000 :137(_path_split)
341 0.000 0.000 0.000 0.000 reader.py:246(valid)
78 0.000 0.000 0.000 0.000 {built-in method new of type object at 0x00007FFD0A84E7B0}
4 0.000 0.000 0.000 0.000 linecache.py:237(_register_code)
1 0.000 0.000 0.000 0.000 codeop.py:135(call)
1 0.000 0.000 0.000 0.000 codeop.py:50(_maybe_compile)
112 0.000 0.000 0.000 0.000 :1236(_path_importer_cache)
2 0.000 0.000 0.000 0.000 enum.py:1737(convert_class)
1574 0.000 0.000 0.000 0.000 {method 'endswith' of 'str' objects}
54 0.000 0.000 0.000 0.000 inspect.py:2736(_format)
2 0.000 0.000 0.000 0.000 windows_console.py:357(prepare)
1 0.000 0.000 0.000 0.000 {built-in method sys.getwindowsversion}
108 0.000 0.000 0.000 0.000 :89(_unpack_uint32)
42 0.000 0.000 0.000 0.000 {built-in method _ctypes.POINTER}
46 0.000 0.000 0.000 0.000 :124(setdefault)
46 0.000 0.000 0.000 0.000 :429(_get_module_lock)
1415 0.000 0.000 0.000 0.000 {method 'rstrip' of 'str' objects}
475 0.000 0.000 0.000 0.000 _parser.py:260(get)
44 0.000 0.000 0.000 0.000 :423(exit)
1153 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects}
2 0.000 0.000 0.000 0.000 :1223(_path_hooks)
148 0.000 0.000 0.000 0.000 {built-in method builtins.max}
46 0.000 0.000 0.000 0.000 :372(release)
42 0.000 0.000 0.000 0.000 :190(_path_abspath)
135 0.000 0.000 0.000 0.000 inspect.py:662(unwrap)
1 0.000 0.000 0.000 0.000 historical_reader.py:409(finish)
2 0.000 0.000 0.000 0.000 :1411(_fill_cache)
5 0.000 0.000 0.000 0.000 {method 'splitlines' of 'str' objects}
1 0.000 0.000 0.000 0.000 _py_warnings.py:1()
1 0.000 0.000 0.000 0.000 _endian.py:1()
42 0.000 0.000 0.000 0.000 :177(_path_isabs)
2 0.000 0.000 0.000 0.000 {built-in method builtins.print}
2 0.000 0.000 0.000 0.000 windows_console.py:517(finish)
60 0.000 0.000 0.000 0.000 inspect.py:2646(init)
1 0.000 0.000 0.000 0.000 init.py:361(namedtuple)
340 0.000 0.000 0.000 0.000 completing_reader.py:278(cmpltn_reset)
4 0.000 0.000 0.000 0.000 console.py:179(runcode)
2 0.000 0.000 0.000 0.000 reader.py:605(restore)
4 0.000 0.000 0.000 0.000 windows_console.py:354(_erase_to_end)
3 0.000 0.000 0.000 0.000 :1062(exec_module)
168 0.000 0.000 0.000 0.000 dataclasses.py:535(_field_init)
22 0.000 0.000 0.000 0.000 _compiler.py:248(_optimize_charset)
2 0.000 0.000 0.000 0.000 windows_console.py:370(restore)
1 0.000 0.000 0.000 0.000 reader.py:46(make_default_syntax_table)
1 0.000 0.000 0.000 0.000 windows_eventqueue.py:41(init)
1 0.000 0.000 0.000 0.000 console.py:47(Console)
1 0.000 0.000 0.000 0.000 base_eventqueue.py:34(init)
36 0.000 0.000 0.000 0.000 :460(_validate_timestamp_pyc)
3 0.000 0.000 0.000 0.000 {built-in method _imp.exec_dynamic}
12 0.000 0.000 0.000 0.000 inspect.py:2938(init)
751 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}
138 0.000 0.000 0.000 0.000 {method 'match' of 're.Pattern' objects}
1034 0.000 0.000 0.000 0.000 {built-in method builtins.chr}
228 0.000 0.000 0.000 0.000 _parser.py:167(getitem)
46 0.000 0.000 0.000 0.000 :985(find_spec)
6 0.000 0.000 0.000 0.000 inspect.py:2013(_signature_bound_method)
2 0.000 0.000 0.000 0.000 :1452(path_hook_for_FileFinder)
480 0.000 0.000 0.000 0.000 :494(_verbose_message)
541 0.000 0.000 0.000 0.000 _parser.py:239(__next)
27 0.000 0.000 0.000 0.000 dataclasses.py:441(add_fn)
2 0.000 0.000 0.000 0.000 windows_console.py:331(_enable_bracketed_paste)
2 0.000 0.000 0.000 0.000 _colorize.py:79(can_colorize)
6 0.000 0.000 0.000 0.000 _compiler.py:525(_compile_info)
59 0.000 0.000 0.000 0.000 inspect.py:1333(formatannotation)
216 0.000 0.000 0.000 0.000 :139()
642 0.000 0.000 0.000 0.000 {method 'setdefault' of 'dict' objects}
1 0.000 0.000 0.000 0.000 struct.py:1()
18 0.000 0.000 0.000 0.000 inspect.py:1904(_signature_get_user_defined_method)
170 0.000 0.000 0.000 0.000 {built-in method builtins.setattr}
305 0.000 0.000 0.000 0.000 {method 'rpartition' of 'str' objects}
3 0.000 0.000 0.000 0.000 {built-in method nt._supports_virtual_terminal}
1 0.000 0.000 0.000 0.000 _colorize.py:1()
2 0.000 0.000 0.000 0.000 {built-in method nt.listdir}
554 0.000 0.000 0.000 0.000 {method 'lower' of 'str' objects}
1 0.000 0.000 0.000 0.000 {built-in method builtins.eval}
43 0.000 0.000 0.000 0.000 :1131(find_spec)
2 0.000 0.000 0.000 0.000 :67(init)
1 0.000 0.000 0.000 0.000 commands.py:411(do)
69 0.000 0.000 0.000 0.000 dataclasses.py:387(field)
46 0.000 0.000 0.000 0.000 :74(new)
2 0.000 0.000 0.000 0.000 windows_console.py:334(_disable_bracketed_paste)
1 0.000 0.000 0.000 0.000 reader.py:57(make_default_commands)
315 0.000 0.000 0.000 0.000 {built-in method builtins.hasattr}
6 0.000 0.000 0.000 0.000 inspect.py:3016(replace)
14 0.000 0.000 0.000 0.000 :792(get)
3 0.000 0.000 0.000 0.000 init.py:357(init)
44 0.000 0.000 0.000 0.000 :448(cb)
1 0.000 0.000 0.000 0.000 readline.py:341(_ReadlineWrapper)
75 0.000 0.000 0.000 0.000 :648(parent)
9 0.000 0.000 0.000 0.000 dataclasses.py:411(_fields_in_init_order)
2 0.000 0.000 0.000 0.000 :169(_path_isdir)
43 0.000 0.000 0.000 0.000 _parser.py:311(_class_escape)
46 0.000 0.000 0.000 0.000 {built-in method imp.is_builtin}
68 0.000 0.000 0.000 0.000 dataclasses.py:1227(update_func_cell_for__class
)
397 0.000 0.000 0.000 0.000 {method 'isdigit' of 'str' objects}
18 0.000 0.000 0.000 0.000 {built-in method _abc._abc_init}
1 0.000 0.000 0.000 0.000 console.py:158(init)
108 0.000 0.000 0.000 0.000 {built-in method from_bytes}
1 0.000 0.000 0.000 0.000 commands.py:487(do)
38/14 0.000 0.000 0.000 0.000 _parser.py:177(getwidth)
18 0.000 0.000 0.000 0.000 :703(getitem)
3 0.000 0.000 0.000 0.000 _py_warnings.py:636(enter)
132 0.000 0.000 0.000 0.000 :1229(exit)
12 0.000 0.000 0.000 0.000 inspect.py:1719(getattr_static)
15 0.000 0.000 0.000 0.000 annotationlib.py:638(get_annotations)
45 0.000 0.000 0.000 0.000 dataclasses.py:866(_set_new_attribute)
270 0.000 0.000 0.000 0.000 {method 'group' of 're.Match' objects}
44 0.000 0.000 0.000 0.000 :232(init)
91 0.000 0.000 0.000 0.000 :67(_relax_case)
46 0.000 0.000 0.000 0.000 :82(remove)
2 0.000 0.000 0.000 0.000 :473(gethistoryfile)
134 0.000 0.000 0.000 0.000 dataclasses.py:595(_init_param)
66 0.000 0.000 0.000 0.000 enum.py:676(call)
36 0.000 0.000 0.000 0.000 :404(_check_name_wrapper)
132 0.000 0.000 0.000 0.000 :1225(enter)
1 0.000 0.000 0.000 0.000 init.py:279(_reset_cache)
384 0.000 0.000 0.000 0.000 {method 'isalpha' of 'str' objects}
256 0.000 0.000 0.000 0.000 {method 'isalnum' of 'str' objects}
9 0.000 0.000 0.000 0.000 init.py:414(getattr)
3 0.000 0.000 0.000 0.000 _py_warnings.py:294(simplefilter)
92 0.000 0.000 0.000 0.000 {method 'enter' of '_thread.RLock' objects}
6 0.000 0.000 0.000 0.000 enum.py:1591(and)
172 0.000 0.000 0.000 0.000 _parser.py:255(match)
9 0.000 0.000 0.000 0.000 reprlib.py:12(decorating_function)
2 0.000 0.000 0.000 0.000 dataclasses.py:1248(_create_slots)
12 0.000 0.000 0.000 0.000 inspect.py:1680(_check_class)
42 0.000 0.000 0.000 0.000 {built-in method nt._path_splitroot}
46 0.000 0.000 0.000 0.000 :79(init)
22 0.000 0.000 0.000 0.000 _compiler.py:221(_compile_charset)
4 0.000 0.000 0.000 0.000 init.py:537(PYFUNCTYPE)
10 0.000 0.000 0.000 0.000 _parser.py:371(_escape)
4 0.000 0.000 0.000 0.000 _parser.py:97(closegroup)
107 0.000 0.000 0.000 0.000 {method 'replace' of 'str' objects}
2 0.000 0.000 0.000 0.000 enum.py:479(new)
3 0.000 0.000 0.000 0.000 :992(create_module)
2 0.000 0.000 0.000 0.000 :466(_lock_unlock_module)
2 0.000 0.000 0.000 0.000 init.py:74(CFUNCTYPE)
1 0.000 0.000 0.000 0.000 windows_console.py:124(_supports_vt)
1 0.000 0.000 0.000 0.000 historical_reader.py:213(HistoricalReader)
35 0.000 0.000 0.000 0.000 :48(_new_module)
1 0.000 0.000 0.000 0.000 wintypes.py:151(WIN32_FIND_DATAA)
9 0.000 0.000 0.000 0.000 init.py:421(getitem)
18 0.000 0.000 0.000 0.000 :777(encodekey)
1 0.000 0.000 0.000 0.000 trace.py:1()
3 0.000 0.000 0.000 0.000 _py_warnings.py:320(_add_filter)
222 0.000 0.000 0.000 0.000 {built-in method _imp.release_lock}
9 0.000 0.000 0.000 0.000 :146(update_abstractmethods)
1 0.000 0.000 0.000 0.000 codeop.py:1()
134 0.000 0.000 0.000 0.000 dataclasses.py:523(_field_assign)
43 0.000 0.000 0.000 0.000 {built-in method _imp.find_frozen}
135 0.000 0.000 0.000 0.000 dataclasses.py:700(_is_initvar)
3 0.000 0.000 0.000 0.000 :1000(exec_module)
222 0.000 0.000 0.000 0.000 {built-in method _imp.acquire_lock}
2 0.000 0.000 0.000 0.000 :1334(init)
3 0.000 0.000 0.000 0.000 {built-in method _imp.create_builtin}
14 0.000 0.000 0.000 0.000 init.py:146(_check_size)
144 0.000 0.000 0.000 0.000 {method 'rfind' of 'str' objects}
46 0.000 0.000 0.000 0.000 :173(exit)
4 0.000 0.000 0.000 0.000 functools.py:35(update_wrapper)
3 0.000 0.000 0.000 0.000 contextlib.py:276(contextmanager)
15 0.000 0.000 0.000 0.000 annotationlib.py:844(_get_dunder_annotations)
1 0.000 0.000 0.000 0.000 future.py:1()
3 0.000 0.000 0.000 0.000 {built-in method _imp.exec_builtin}
84 0.000 0.000 0.000 0.000 _parser.py:163(len)
30 0.000 0.000 0.000 0.000 signal.py:9()
92 0.000 0.000 0.000 0.000 {method 'exit' of '_thread.RLock' objects}
67 0.000 0.000 0.000 0.000 _parser.py:292(tell)
1 0.000 0.000 0.000 0.000 init.py:471(getattr)
1 0.000 0.000 0.000 0.000 :2(init)
19 0.000 0.000 0.000 0.000 _parser.py:448(_uniq)
1 0.000 0.000 0.000 0.000 _layout.py:1()
2 0.000 0.000 0.000 0.000 dataclasses.py:1371(fields)
13 0.000 0.000 0.000 0.000 inspect.py:1706(_shadowed_dict)
1 0.000 0.000 0.000 0.000 wintypes.py:163(WIN32_FIND_DATAW)
66 0.000 0.000 0.000 0.000 inspect.py:2993()
92 0.000 0.000 0.000 0.000 {built-in method _thread.get_ident}
4 0.000 0.000 0.000 0.000 _compiler.py:400(_mk_bitmap)
59 0.000 0.000 0.000 0.000 {method 'update' of 'dict' objects}
56 0.000 0.000 0.000 0.000 _parser.py:175(append)
88 0.000 0.000 0.000 0.000 {method 'pop' of 'dict' objects}
140 0.000 0.000 0.000 0.000 dataclasses.py:1177()
14 0.000 0.000 0.000 0.000 _compiler.py:412(_simple)
3 0.000 0.000 0.000 0.000 _py_warnings.py:665(exit)
1 0.000 0.000 0.000 0.000 keymap.py:1()
1 0.000 0.000 0.000 0.000 readline.py:350(post_init)
1 0.000 0.000 0.000 0.000 {built-in method builtins.dir}
1 0.000 0.000 0.000 0.000 functools.py:723(cache)
119 0.000 0.000 0.000 0.000 {built-in method nt.fspath}
15 0.000 0.000 0.000 0.000 enum.py:808(setattr)
140 0.000 0.000 0.000 0.000 dataclasses.py:415()
6 0.000 0.000 0.000 0.000 inspect.py:2039(_signature_is_builtin)
30 0.000 0.000 0.000 0.000 dataclasses.py:332(set_name)
69 0.000 0.000 0.000 0.000 dataclasses.py:290(init)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
36 0.000 0.000 0.000 0.000 {method 'enter' of '_io._IOBase' objects}
177 0.000 0.000 0.000 0.000 dataclasses.py:1113()
2 0.000 0.000 0.000 0.000 :343(expanduser)
3 0.000 0.000 0.000 0.000 :665(spec_from_loader)
71 0.000 0.000 0.000 0.000 {method 'pop' of 'list' objects}
2 0.000 0.000 0.000 0.000 {built-in method nt.dup}
49 0.000 0.000 0.000 0.000 {method 'remove' of 'list' objects}
8/6 0.000 0.000 0.000 0.000 _compiler.py:450(_get_literal_prefix)
81 0.000 0.000 0.000 0.000 _layout.py:17(round_up)
46 0.000 0.000 0.000 0.000 :602(init)
68 0.000 0.000 0.000 0.000 {method 'index' of 'tuple' objects}
1 0.000 0.000 0.000 0.000 windows_console.py:131(WindowsConsole)
1 0.000 0.000 0.000 0.000 readline.py:180(collect_keymap)
46 0.000 0.000 0.000 0.000 {built-in method _weakref._remove_dead_weakref}
139 0.000 0.000 0.000 0.000 {built-in method builtins.id}
107 0.000 0.000 0.000 0.000 {built-in method _ctypes.sizeof}
18 0.000 0.000 0.000 0.000 enum.py:1573(_get_value)
66 0.000 0.000 0.000 0.000 enum.py:1143(new)
1 0.000 0.000 0.000 0.000 reader.py:567(update_cursor)
60 0.000 0.000 0.000 0.000 {built-in method _ctypes.buffer_info}
1 0.000 0.000 0.000 0.000 functools.py:590(decorating_function)
135 0.000 0.000 0.000 0.000 dataclasses.py:706(_is_kw_only)
135 0.000 0.000 0.000 0.000 {built-in method sys.getrecursionlimit}
174 0.000 0.000 0.000 0.000 inspect.py:2711(kind)
84 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects}
70 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray' objects}
29 0.000 0.000 0.000 0.000 utils.py:13(str_width)
1 0.000 0.000 0.000 0.000 historical_reader.py:259(collect_keymap)
1 0.000 0.000 0.000 0.000 simple_interact.py:112(maybe_run_command)
67 0.000 0.000 0.000 0.000 {method 'isidentifier' of 'str' objects}
1 0.000 0.000 0.000 0.000 completing_reader.py:227(CompletingReader)
4 0.000 0.000 0.000 0.000 _parser.py:264(getwhile)
1 0.000 0.000 0.000 0.000 types.py:1()
6 0.000 0.000 0.000 0.000 inspect.py:2388(_descriptor_get)
67 0.000 0.000 0.000 0.000 {method 'contains' of 'frozenset' objects}
63 0.000 0.000 0.000 0.000 {method 'add' of 'set' objects}
6 0.000 0.000 0.000 0.000 _parser.py:230(init)
20 0.000 0.000 0.000 0.000 {built-in method fromkeys}
1 0.000 0.000 0.000 0.000 readline.py:571(_setup)
18 0.000 0.000 0.000 0.000 {built-in method _struct.calcsize}
44 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock}
15 0.000 0.000 0.000 0.000 enum.py:46(_is_dunder)
75 0.000 0.000 0.000 0.000 _layout.py:308(padding_spec)
36 0.000 0.000 0.000 0.000 {built-in method _imp._fix_co_filename}
1 0.000 0.000 0.000 0.000 reader.py:222(RefreshCache)
16 0.000 0.000 0.000 0.000 _parser.py:171(setitem)
11 0.000 0.000 0.000 0.000 enum.py:36(_is_descriptor)
9 0.000 0.000 0.000 0.000 warnings.py:80(enter)
1 0.000 0.000 0.000 0.000 code.py:185(init)
44 0.000 0.000 0.000 0.000 :415(init)
114 0.000 0.000 0.000 0.000 inspect.py:2699(name)
41 0.000 0.000 0.000 0.000 {method 'partition' of 'str' objects}
6 0.000 0.000 0.000 0.000 inspect.py:2053(_signature_is_functionlike)
11 0.000 0.000 0.000 0.000 enum.py:77(_is_private)
18 0.000 0.000 0.000 0.000 :771(check_str)
24 0.000 0.000 0.000 0.000 _parser.py:82(groups)
44 0.000 0.000 0.000 0.000 _parser.py:112(init)
4 0.000 0.000 0.000 0.000 _parser.py:85(opengroup)
1 0.000 0.000 0.000 0.000 contextlib.py:17(AbstractContextManager)
6 0.000 0.000 0.000 0.000 {built-in method _sre.compile}
2 0.000 0.000 0.000 0.000 {method 'sort' of 'list' objects}
64 0.000 0.000 0.000 0.000 {built-in method _ctypes.alignment}
2 0.000 0.000 0.000 0.000 :99(join)
28 0.000 0.000 0.000 0.000 {method 'get' of 'mappingproxy' objects}
3 0.000 0.000 0.000 0.000 _py_warnings.py:111(_get_filters)
1 0.000 0.000 0.000 0.000 init.py:158(py_object)
47 0.000 0.000 0.000 0.000 {built-in method builtins.issubclass}
12 0.000 0.000 0.000 0.000 dataclasses.py:416()
18 0.000 0.000 0.000 0.000 inspect.py:267(isfunction)
32 0.000 0.000 0.000 0.000 {method 'insert' of 'list' objects}
37 0.000 0.000 0.000 0.000 :920(init)
2 0.000 0.000 0.000 0.000 {built-in method _ctypes.LoadLibrary}
46 0.000 0.000 0.000 0.000 :158(init)
1 0.000 0.000 0.000 0.000 :1(create_fn)
3 0.000 0.000 0.000 0.000 :504(_requires_builtin_wrapper)
29 0.000 0.000 0.000 0.000 {built-in method builtins.delattr}
5 0.000 0.000 0.000 0.000 {method 'fileno' of '_io.TextIOWrapper' objects}
1 0.000 0.000 0.000 0.000 :816(getenv)
26 0.000 0.000 0.000 0.000 {method 'values' of 'dict' objects}
2 0.000 0.000 0.000 0.000 simple_interact.py:54(_strip_final_indent)
2 0.000 0.000 0.000 0.000 {method 'flush' of '_io.TextIOWrapper' objects}
1 0.000 0.000 0.000 0.000 commands.py:481(do)
5 0.000 0.000 0.000 0.000 dataclasses.py:650()
9 0.000 0.000 0.000 0.000 reprlib.py:9(recursive_repr)
1 0.000 0.000 0.000 0.000 code.py:25(init)
18 0.000 0.000 0.000 0.000 inspect.py:184(isclass)
3 0.000 0.000 0.000 0.000 _compiler.py:481(_get_charset_prefix)
9 0.000 0.000 0.000 0.000 warnings.py:84(exit)
43 0.000 0.000 0.000 0.000 {method 'islower' of 'str' objects}
36 0.000 0.000 0.000 0.000 dataclasses.py:1386()
41 0.000 0.000 0.000 0.000 :656(has_location)
2 0.000 0.000 0.000 0.000 :799(contains)
9 0.000 0.000 0.000 0.000 dataclasses.py:880(_hash_set_none)
3 0.000 0.000 0.000 0.000 _py_warnings.py:613(init)
1 0.000 0.000 0.000 0.000 :1()
3 0.000 0.000 0.000 0.000 _compiler.py:421(_generate_overlap_table)
12 0.000 0.000 0.000 0.000 _compiler.py:587(isstring)
6 0.000 0.000 0.000 0.000 _parser.py:946(fix_flags)
1 0.000 0.000 0.000 0.000 traceback.py:436(StackSummary)
5 0.000 0.000 0.000 0.000 {built-in method nt.isatty}
1 0.000 0.000 0.000 0.000 traceback.py:1005(TracebackException)
11 0.000 0.000 0.000 0.000 enum.py:57(_is_sunder)
1 0.000 0.000 0.000 0.000 readline.py:104(ReadlineAlikeReader)
1 0.000 0.000 0.000 0.000 contextlib.py:41(AbstractAsyncContextManager)
14 0.000 0.000 0.000 0.000 {method 'values' of 'mappingproxy' objects}
30 0.000 0.000 0.000 0.000 {method 'isupper' of 'str' objects}
1 0.000 0.000 0.000 0.000 traceback.py:280(FrameSummary)
3 0.000 0.000 0.000 0.000 {method 'strip' of 'str' objects}
18 0.000 0.000 0.000 0.000 {method 'upper' of 'str' objects}
1 0.000 0.000 0.000 0.000 base_eventqueue.py:33(BaseEventQueue)
36 0.000 0.000 0.000 0.000 :945(get_filename)
21 0.000 0.000 0.000 0.000 :7(abstractmethod)
1 0.000 0.000 0.000 0.000 :473(new)
9 0.000 0.000 0.000 0.000 dataclasses.py:433(init)
6 0.000 0.000 0.000 0.000 inspect.py:196(ismethoddescriptor)
17 0.000 0.000 0.000 0.000 _layout.py:26(init)
35 0.000 0.000 0.000 0.000 :753(create_module)
51 0.000 0.000 0.000 0.000 inspect.py:2703(default)
1 0.000 0.000 0.000 0.000 completing_reader.py:274(finish)
31 0.000 0.000 0.000 0.000 signal.py:16()
25 0.000 0.000 0.000 0.000 {built-in method builtins.callable}
1 0.000 0.000 0.000 0.000 contextlib.py:631(AsyncExitStack)
12 0.000 0.000 0.000 0.000 {method 'items' of 'mappingproxy' objects}
19 0.000 0.000 0.000 0.000 {method 'find' of 'str' objects}
1 0.000 0.000 0.000 0.000 input.py:48(InputTranslator)
1 0.000 0.000 0.000 0.000 completing_reader.py:251(collect_keymap)
36 0.000 0.000 0.000 0.000 dataclasses.py:1284()
9 0.000 0.000 0.000 0.000 {built-in method _warnings._acquire_lock}
1 0.000 0.000 0.000 0.000 code.py:16(InteractiveInterpreter)
1 0.000 0.000 0.000 0.000 readline.py:98(ReadlineConfig)
1 0.000 0.000 0.000 0.000 init.py:305(escape)
1 0.000 0.000 0.000 0.000 contextlib.py:472(_BaseExitStack)
1 0.000 0.000 0.000 0.000 init.py:467(LibraryLoader)
3 0.000 0.000 0.000 0.000 readline.py:550(_make_stub)
3 0.000 0.000 0.000 0.000 init.py:398(_FuncPtr)
3 0.000 0.000 0.000 0.000 signal.py:51(decorator)
8 0.000 0.000 0.000 0.000 _layout.py:252()
1 0.000 0.000 0.000 0.000 _colorize.py:13(ANSIColors)
6 0.000 0.000 0.000 0.000 inspect.py:431(isbuiltin)
9 0.000 0.000 0.000 0.000 dataclasses.py:355(init)
1 0.000 0.000 0.000 0.000 codeop.py:132(init)
6 0.000 0.000 0.000 0.000 _parser.py:76(init)
1 0.000 0.000 0.000 0.000 rlcompleter.py:42(Completer)
3 0.000 0.000 0.000 0.000 functools.py:65(wraps)
1 0.000 0.000 0.000 0.000 inspect.py:1687(_shadowed_dict_from_weakref_mro_tuple)
1 0.000 0.000 0.000 0.000 traceback.py:982(_ExceptionPrintContext)
4 0.000 0.000 0.000 0.000 init.py:538(CFunctionType)
1 0.000 0.000 0.000 0.000 future.py:81(_Feature)
1 0.000 0.000 0.000 0.000 functools.py:550(lru_cache)
16 0.000 0.000 0.000 0.000 :1340()
9 0.000 0.000 0.000 0.000 {built-in method _warnings._filters_mutated_lock_held}
11 0.000 0.000 0.000 0.000 enum.py:900()
1 0.000 0.000 0.000 0.000 _py_warnings.py:571(WarningMessage)
1 0.000 0.000 0.000 0.000 init.py:336(CDLL)
2 0.000 0.000 0.000 0.000 {built-in method from_iterable}
10 0.000 0.000 0.000 0.000 future.py:83(init)
1 0.000 0.000 0.000 0.000 console.py:155(InteractiveColoredConsole)
4 0.000 0.000 0.000 0.000 {method 'translate' of 'bytearray' objects}
1 0.000 0.000 0.000 0.000 historical_reader.py:180(isearch_backspace)
9 0.000 0.000 0.000 0.000 {method 'keys' of 'dict' objects}
7 0.000 0.000 0.000 0.000 {built-in method sys.intern}
1 0.000 0.000 0.000 0.000 contextlib.py:367(aclosing)
4 0.000 0.000 0.000 0.000 {built-in method nt._path_splitroot_ex}
3 0.000 0.000 0.000 0.000 :1043(init)
8 0.000 0.000 0.000 0.000 _compiler.py:33(_combine_flags)
1 0.000 0.000 0.000 0.000 console.py:54(init)
1 0.000 0.000 0.000 0.000 code.py:177(InteractiveConsole)
4 0.000 0.000 0.000 0.000 linecache.py:54(_make_key)
11 0.000 0.000 0.000 0.000 _compiler.py:442(_get_iscased)
1 0.000 0.000 0.000 0.000 commands.py:40(Command)
9 0.000 0.000 0.000 0.000 {built-in method _warnings._release_lock}
7 0.000 0.000 0.000 0.000 init.py:435()
2 0.000 0.000 0.000 0.000 code.py:200(resetbuffer)
1 0.000 0.000 0.000 0.000 _py_warnings.py:593(catch_warnings)
2 0.000 0.000 0.000 0.000 {built-in method time.time}
1 0.000 0.000 0.000 0.000 _py_warnings.py:67(_GlobalContext)
1 0.000 0.000 0.000 0.000 commands.py:397(backspace)
2 0.000 0.000 0.000 0.000 enum.py:786(members)
13 0.000 0.000 0.000 0.000 dataclasses.py:177(repr)
1 0.000 0.000 0.000 0.000 init.py:427(PyDLL)
1 0.000 0.000 0.000 0.000 enum.py:186(get)
1 0.000 0.000 0.000 0.000 commands.py:147(kill_line)
1 0.000 0.000 0.000 0.000 input.py:62(KeymapTranslator)
2 0.000 0.000 0.000 0.000 init.py:103(CFunctionType)
1 0.000 0.000 0.000 0.000 rlcompleter.py:43(init)
1 0.000 0.000 0.000 0.000 commands.py:277(down)
1 0.000 0.000 0.000 0.000 historical_reader.py:56(next_history)
2 0.000 0.000 0.000 0.000 {built-in method time.perf_counter}
1 0.000 0.000 0.000 0.000 code.py:343(Quitter)
1 0.000 0.000 0.000 0.000 readline.py:265(maybe_accept)
1 0.000 0.000 0.000 0.000 windows_console.py:578(CONSOLE_SCREEN_BUFFER_INFO)
1 0.000 0.000 0.000 0.000 _py_warnings.py:52(_Context)
1 0.000 0.000 0.000 0.000 codeop.py:109(init)
1 0.000 0.000 0.000 0.000 contextlib.py:775(nullcontext)
12 0.000 0.000 0.000 0.000 inspect.py:3008(parameters)
1 0.000 0.000 0.000 0.000 _py_warnings.py:678(deprecated)
1 0.000 0.000 0.000 0.000 windows_console.py:609(KeyEvent)
1 0.000 0.000 0.000 0.000 wintypes.py:105(RECT)
1 0.000 0.000 0.000 0.000 windows_eventqueue.py:40(EventQueue)
4 0.000 0.000 0.000 0.000 init.py:468(init)
1 0.000 0.000 0.000 0.000 console.py:40(Event)
1 0.000 0.000 0.000 0.000 commands.py:309(left)
1 0.000 0.000 0.000 0.000 wintypes.py:20(VARIANT_BOOL)
11 0.000 0.000 0.000 0.000 inspect.py:3012(return_annotation)
1 0.000 0.000 0.000 0.000 codeop.py:104(Compile)
3 0.000 0.000 0.000 0.000 _py_warnings.py:89(_get_context)
1 0.000 0.000 0.000 0.000 contextlib.py:66(ContextDecorator)
1 0.000 0.000 0.000 0.000 _endian.py:23(_swapped_meta)
1 0.000 0.000 0.000 0.000 wintypes.py:112(_SMALL_RECT)
1 0.000 0.000 0.000 0.000 wintypes.py:141(MSG)
1 0.000 0.000 0.000 0.000 historical_reader.py:65(previous_history)
7 0.000 0.000 0.000 0.000 {built-in method builtins.globals}
1 0.000 0.000 0.000 0.000 :35(init)
2 0.000 0.000 0.000 0.000 enum.py:1721(_simple_enum)
1 0.000 0.000 0.000 0.000 traceback.py:98(_Sentinel)
1 0.000 0.000 0.000 0.000 codeop.py:125(CommandCompiler)
1 0.000 0.000 0.000 0.000 contextlib.py:342(closing)
1 0.000 0.000 0.000 0.000 contextlib.py:105(_GeneratorContextManagerBase)
1 0.000 0.000 0.000 0.000 readline.py:316(backspace_dedent)
1 0.000 0.000 0.000 0.000 contextlib.py:393(_RedirectStream)
1 0.000 0.000 0.000 0.000 contextlib.py:802(chdir)
1 0.000 0.000 0.000 0.000 windows_console.py:588(CONSOLE_CURSOR_INFO)
1 0.000 0.000 0.000 0.000 _layout.py:25(StructUnionLayout)
1 0.000 0.000 0.000 0.000 contextlib.py:433(suppress)
1 0.000 0.000 0.000 0.000 :2(annotate)
1 0.000 0.000 0.000 0.000 historical_reader.py:86(restore_history)
1 0.000 0.000 0.000 0.000 historical_reader.py:106(operate_and_get_next)
1 0.000 0.000 0.000 0.000 historical_reader.py:139(forward_history_isearch)
1 0.000 0.000 0.000 0.000 historical_reader.py:159(isearch_cancel)
1 0.000 0.000 0.000 0.000 historical_reader.py:190(isearch_forwards)
1 0.000 0.000 0.000 0.000 historical_reader.py:204(isearch_end)
1 0.000 0.000 0.000 0.000 windows_console.py:602(Char)
1 0.000 0.000 0.000 0.000 init.py:168(c_short)
3 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects}
1 0.000 0.000 0.000 0.000 warnings.py:79(_Lock)
1 0.000 0.000 0.000 0.000 contextlib.py:89(AsyncContextDecorator)
1 0.000 0.000 0.000 0.000 contextlib.py:129(_GeneratorContextManager)
1 0.000 0.000 0.000 0.000 historical_reader.py:74(history_search_backward)
1 0.000 0.000 0.000 0.000 historical_reader.py:169(isearch_add_character)
1 0.000 0.000 0.000 0.000 historical_reader.py:197(isearch_backwards)
1 0.000 0.000 0.000 0.000 completing_reader.py:166(complete)
1 0.000 0.000 0.000 0.000 init.py:255(c_char_p)
3 0.000 0.000 0.000 0.000 signal.py:50(_wraps)
1 0.000 0.000 0.000 0.000 contextlib.py:202(_AsyncGeneratorContextManager)
1 0.000 0.000 0.000 0.000 commands.py:59(KillCommand)
1 0.000 0.000 0.000 0.000 contextlib.py:557(ExitStack)
1 0.000 0.000 0.000 0.000 historical_reader.py:96(first_history)
1 0.000 0.000 0.000 0.000 historical_reader.py:111(yank_arg)
1 0.000 0.000 0.000 0.000 historical_reader.py:149(reverse_history_isearch)
1 0.000 0.000 0.000 0.000 completing_reader.py:206(self_insert)
1 0.000 0.000 0.000 0.000 windows_console.py:595(CHAR_INFO)
1 0.000 0.000 0.000 0.000 windows_console.py:624(ConsoleEvent)
1 0.000 0.000 0.000 0.000 init.py:271(c_wchar_p)
1 0.000 0.000 0.000 0.000 init.py:245(c_byte)
1 0.000 0.000 0.000 0.000 wintypes.py:123(POINT)
1 0.000 0.000 0.000 0.000 {built-in method maketrans}
1 0.000 0.000 0.000 0.000 :1()
1 0.000 0.000 0.000 0.000 commands.py:106(digit_arg)
1 0.000 0.000 0.000 0.000 commands.py:141(repaint)
1 0.000 0.000 0.000 0.000 commands.py:160(unix_line_discard)
1 0.000 0.000 0.000 0.000 historical_reader.py:80(history_search_forward)
1 0.000 0.000 0.000 0.000 historical_reader.py:101(last_history)
1 0.000 0.000 0.000 0.000 init.py:458(OleDLL)
1 0.000 0.000 0.000 0.000 windows_console.py:121(_error)
1 0.000 0.000 0.000 0.000 init.py:436(WinDLL)
1 0.000 0.000 0.000 0.000 init.py:445(HRESULT)
1 0.000 0.000 0.000 0.000 wintypes.py:119(_COORD)
1 0.000 0.000 0.000 0.000 wintypes.py:128(SIZE)
1 0.000 0.000 0.000 0.000 {built-in method builtins.vars}
3 0.000 0.000 0.000 0.000 :1017(is_package)
3 0.000 0.000 0.000 0.000 :14(init)
1 0.000 0.000 0.000 0.000 enum.py:1321(value)
3 0.000 0.000 0.000 0.000 _py_warnings.py:71(_filters)
1 0.000 0.000 0.000 0.000 commands.py:320(right)
1 0.000 0.000 0.000 0.000 console.py:54(annotate)
1 0.000 0.000 0.000 0.000 windows_console.py:631(INPUT_RECORD)
1 0.000 0.000 0.000 0.000 _endian.py:48(BigEndianStructure)
1 0.000 0.000 0.000 0.000 init.py:180(c_ulong)
1 0.000 0.000 0.000 0.000 wintypes.py:136(FILETIME)
1 0.000 0.000 0.000 0.000 _py_warnings.py:68(init)
1 0.000 0.000 0.000 0.000 commands.py:136(refresh)
1 0.000 0.000 0.000 0.000 commands.py:166(unix_word_rubout)
1 0.000 0.000 0.000 0.000 commands.py:173(kill_word)
1 0.000 0.000 0.000 0.000 reader.py:289(collect_keymap)
1 0.000 0.000 0.000 0.000 contextlib.py:411(redirect_stdout)
1 0.000 0.000 0.000 0.000 commands.py:180(backward_kill_word)
1 0.000 0.000 0.000 0.000 commands.py:214(interrupt)
1 0.000 0.000 0.000 0.000 commands.py:247(up)
1 0.000 0.000 0.000 0.000 commands.py:373(insert_nl)
1 0.000 0.000 0.000 0.000 commands.py:430(accept)
1 0.000 0.000 0.000 0.000 commands.py:450(invalid_command)
1 0.000 0.000 0.000 0.000 commands.py:456(show_history)
1 0.000 0.000 0.000 0.000 commands.py:480(enable_bracketed_paste)
1 0.000 0.000 0.000 0.000 windows_console.py:620(WindowsBufferSizeEvent)
1 0.000 0.000 0.000 0.000 init.py:197(c_float)
1 0.000 0.000 0.000 0.000 init.py:201(c_double)
1 0.000 0.000 0.000 0.000 init.py:211(c_double_complex)
1 0.000 0.000 0.000 0.000 init.py:266(c_bool)
1 0.000 0.000 0.000 0.000 _endian.py:55(BigEndianUnion)
1 0.000 0.000 0.000 0.000 _py_warnings.py:350(_processoptions)
1 0.000 0.000 0.000 0.000 commands.py:129(clear_screen)
1 0.000 0.000 0.000 0.000 contextlib.py:427(redirect_stderr)
1 0.000 0.000 0.000 0.000 commands.py:187(yank)
1 0.000 0.000 0.000 0.000 commands.py:196(yank_pop)
1 0.000 0.000 0.000 0.000 commands.py:223(ctrl_c)
1 0.000 0.000 0.000 0.000 commands.py:230(suspend)
1 0.000 0.000 0.000 0.000 commands.py:332(beginning_of_line)
1 0.000 0.000 0.000 0.000 commands.py:337(end_of_line)
1 0.000 0.000 0.000 0.000 commands.py:347(end)
1 0.000 0.000 0.000 0.000 commands.py:352(forward_word)
1 0.000 0.000 0.000 0.000 commands.py:359(backward_word)
1 0.000 0.000 0.000 0.000 commands.py:366(self_insert)
1 0.000 0.000 0.000 0.000 commands.py:379(transpose_characters)
1 0.000 0.000 0.000 0.000 commands.py:410(delete)
1 0.000 0.000 0.000 0.000 commands.py:435(help)
1 0.000 0.000 0.000 0.000 commands.py:443(invalid_key)
1 0.000 0.000 0.000 0.000 commands.py:473(paste_mode)
1 0.000 0.000 0.000 0.000 commands.py:486(disable_bracketed_paste)
1 0.000 0.000 0.000 0.000 reader.py:630(update_screen)
1 0.000 0.000 0.000 0.000 init.py:172(c_ushort)
1 0.000 0.000 0.000 0.000 init.py:205(c_longdouble)
1 0.000 0.000 0.000 0.000 init.py:227(c_longlong)
1 0.000 0.000 0.000 0.000 init.py:231(c_ulonglong)
1 0.000 0.000 0.000 0.000 init.py:238(c_ubyte)
1 0.000 0.000 0.000 0.000 keymap.py:104(KeySpecError)
1 0.000 0.000 0.000 0.000 _py_warnings.py:344(_OptionError)
1 0.000 0.000 0.000 0.000 commands.py:90(FinishCommand)
1 0.000 0.000 0.000 0.000 commands.py:342(home)
1 0.000 0.000 0.000 0.000 init.py:176(c_long)
1 0.000 0.000 0.000 0.000 init.py:261(c_void_p)
1 0.000 0.000 0.000 0.000 init.py:276(c_wchar)
1 0.000 0.000 0.000 0.000 _endian.py:34(_swapped_struct_meta)
1 0.000 0.000 0.000 0.000 _endian.py:35(_swapped_union_meta)
1 0.000 0.000 0.000 0.000 _py_warnings.py:24(_set_module)
1 0.000 0.000 0.000 0.000 commands.py:78(YankCommand)
1 0.000 0.000 0.000 0.000 commands.py:82(MotionCommand)
1 0.000 0.000 0.000 0.000 commands.py:86(EditCommand)
1 0.000 0.000 0.000 0.000 init.py:250(c_char)
1 0.000 0.000 0.000 0.000 {built-in method sys.getdefaultencoding}
1 0.000 0.000 0.000 0.000 {built-in method sys._getframemodulename}
1 0.000 0.000 0.000 0.000 reader.py:621(finish)

@chris-eibl
Copy link
Member

chris-eibl commented Apr 24, 2025

The PR https://github.com/python/cpython/pull/120253/files attached to #119517 did not touch windows_console.py, so maybe something more can be taken from there?

But the legacy console here seems special: e.g. so much time spent in

   234163   11.805    0.000   11.805    0.000 {method 'write' of '_io._WindowsConsoleIO' objects}

and

 2029301    1.543    0.000    8.999    0.000 utils.py:23(wlen)

Seems there is a "shortcut" in case of the virtual terminal?

@chris-eibl
Copy link
Member

The reason why virtual terminals (not only in case of Windows) are so much faster: they only write per line, since we're in the bracketed paste mode:

    def refresh(self) -> None:
        """Recalculate and refresh the screen."""
        if self.in_bracketed_paste and self.buffer and not self.buffer[-1] == "\n":
            return

Temporarily switching to

        if self.buffer and not self.buffer[-1] == "\n":
            return

just to back up my theory yields (again with bigger paste buffer from #130328 (comment) and the old REPL for reference):

legacy terminal virtual terminal
#132889 20.5 1.19
#132889 line 2.8 1.19
PYTHON_BASIC_REPL=1 1.0 0.1

Of course no change in VT mode, but drastical improvement for a legacy console. The rough factor of two in difference could be explained by getting twice as many input events (don't want to dig in any further).

The problem is, how could we detect bracketed mode in a legacy terminal? Because by nature this change was just for benchmarking: we wouldn't see anything during typing until return is pressed :)

@chris-eibl
Copy link
Member

chris-eibl commented Apr 26, 2025

Using this copy of Frankenstein referred in #119517 (didn't dare to paste in a legacy terminal in the new REPL :)

legacy terminal virtual terminal
#132889 - 144.6
PYTHON_BASIC_REPL=1 16.6 2.4

shows that there is still a big gap to the old REPL (doesn't seem to be the case in Linux #120253 (comment))

[...] ~7 seconds with both the old and the new REPL [...]

Since #132889 contains the fixed wait and chunked reading, there must be still some things we can derive from unix_console.py: maybe chunked writing, __gone_tall, etc.

@chris-eibl
Copy link
Member

The problem is, how could we detect bracketed mode in a legacy terminal?

Ah, actually we can at least use

class paste_mode(Command):
def do(self) -> None:
self.reader.paste_mode = not self.reader.paste_mode
self.reader.dirty = True
.
Since bracketed paste sets self.paste_mode too, I suggest to change self.in_bracketed_paste to self.paste_mode in
def refresh(self) -> None:
"""Recalculate and refresh the screen."""
if self.in_bracketed_paste and self.buffer and not self.buffer[-1] == "\n":
return

@chris-eibl
Copy link
Member

Ups, although this does work in praxis (and is much faster in the legacy console case), this breaks far too many tests, mostly because

reader.paste_mode = True # Avoid extra indents

in support.prepare_reader. Thus, not a low hanging fruit for now - and reverting :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS-windows performance Performance or resource usage release-blocker stdlib Python modules in the Lib dir topic-repl Related to the interactive shell type-bug An unexpected behavior, bug, or error
Projects
Development

No branches or pull requests

8 participants