If you’re not familiar with it, you should really check out DreamPie, which is a graphical Python shell.
It’s a really well-done GUI shell, with great keyboard support to boot. Its most unique feature is the separation of the “history area” from the “current command area”. I think this design makes more sense than the traditional approach of having them together. It’s also notable that the ”current command area” can be used to enter multi-line Python commands (like defining a function or a class) and it’s very easy to move between lines to edit them. (This sounds obvious but many other shells make this kind of editing cumbersome.) The autocompletion is also well done; for example, DreamPie is able to autocomplete modules even if they haven’t been imported yet.
On top of that, I was delighted to find that it works on PyPy out of the box! Check it out: