This is pyrepl 0.8.1, a readline-a-like in Python.
It requires python 2.2 (or newer) with the curses and termios modules built and features:
- sane multi-line editing
- history, with incremental search
- completion, including displaying of available options
- a fairly large subset of the readline emacs-mode keybindings (adding more is mostly just a matter of typing)
- a liberal, Python-style, license
- a new python top-level
- no global variables, so you can run two or more independent readers without having their histories interfering.
- no hogging of control -- it should be easy to integrate pyrepl into YOUR application's event loop.
- generally speaking, a much more interactive experience than readline (it's a bit like a cross between readline and emacs's mini-buffer)
- unicode support (given terminal support)
There are probably still a few little bugs & misfeatures, but _I_ like it, and use it as my python top-level most of the time.
To get a feel for it, just execute:
$ python pythoni
(One point that may confuse: because the arrow keys are used to move up and down in the command currently being edited, you need to use ^P and ^N to move through the history)
If you like what you see, you can install it with the familiar
$ python setup.py install
which will also install the above "pythoni" script.
Please direct comments to email@example.com.
(If you've released open source software you'll know how frustrating it is to see a couple of hundred downloads and only get a handful of emails, so don't think I'll be irritated by the banality of your comments!)
- Summary of 0.8.1:
Fixes - in the area of unbound keys and unknown commands - in quoted-insert - in unicode support
make Reader and subclasses new-style classes - make the inheritance hierachy look like this
- HistoricalReader CompletingReader
Turns out I've been wanting new-style classes since before they existed!
- needed to slightly change the way keymaps are built
- Summary of 0.8.0:
A whole bundle of things. - unicode support (although working out what encoding the terminal
is using can be "tricky")
- internal rearchitecting
- probably a bunch of new bugs...
Development and web-presence moved to codespeak.net
- Summary of new stuff in 0.7.1:
- A non-broken setup.py...
- Summary of new stuff in 0.7.0:
Moved to a package architecture.
Wrote a (very simple!) distutils setup.py script.
Changed the keyspec format to be more sensible. See the docstring in pyrepl/keymap.py for more information.
Various tortuous changes to use 2.2 features where possible but retaining 2.1 support (I hope; haven't got a 2.1 here to test with).
Jumping up and down on control-C now shouldn't dump you out of pyrepl (via a large hammer kind of approach).
Bug fixes, particularly in the history handling stuff.
reader.Reader has a new method, bind(), intended to be used by the user.
Changes to the init file handling.
Sundry code reorganization. Libraries built on top of pyrepl will probably require small modifications (but I'm not sure anyone has written any of these yet!).
- A prototypical pygame console.
-- see CHANGES for more details and older news