Dynamic GNU Readline interface
Project description
pygnurl is a dynamic GNU Readline interface. It provides:
A Pythonic interface similar to rl for ease of use
An interface to custom bindable functions
A readline compatibility layer for existing code
You should use pygnurl if you specifically want to use GNU Readline from your Python program. If you are just looking for tools to help you build a command line interface, you may prefer prompt_toolkit.
Requirements
pygnurl dynamically loads a Readline library, so you need a version matching the architecture of your Python interpreter (not necessarily your system).
Linux users should already have Readline as part of the standard library. pygnurl uses this version by default.
Windows users can get a pre-built 32-bit Readline DLL from gnuwin32.
More information on where to get Readline can be found on the Readline home page.
Quick Start Guide
Install pygnurl using pip install pygnurl.
Set the PYGNURL_LIB environment variable to the filename of your Readline library. This will be loaded using the shared library search order rules of your system. (Linux users can skip this step to use the system version).
If your version of Python already has a readline module, you will need to do one of the following things to let pygnurl override it:
Add <site-packages>/pygnurl/modules to your PYTHONPATH environment variable
Install using easy_install instead of pip
If you are using Python 3.4 or later, completion and history will be set up for you automatically. If you are using an older version, you will need to set this up yourself.
>>> import rlcompleter >>> import readline >>> readline.parse_and_bind('tab: complete') >>> r<tab><tab>
Examples
pygnurl/examples/startup.py - An example startup file suitable for everyday use. Point the PYTHONSTARTUP environment variable at this file to automatically get tab completion and saved history in your interpreter. (If you are using Python 3.4 or later, you do not need to use this example.)
pygnurl/examples/functions.py - An example startup file demostrating a custom bindable command. You must also use this with the PYTHONSTARTUP environment variable. Run help(pygnurl.examples.functions) for more information.
pygnurl/examples/mycmd.py - A simple command line showing tab completion capabilities. The argument to cat is completed based on your local filesystem.
Motivation
pygnurl aims to provide full GNU Readline support across all platforms with no compilation overhead. Any pre-built Readline library should be able to be dropped in with no code modifications. If necessary, version- or platform-specific compatibility fixes can be implemented in Python, not C.
Development
For source code, questions and bug reports, visit the GitHub repository:
Alternatives
readline - Part of the standard library. Python on Mac OS X may implement this using libedit instead of GNU Readline and must be configured accordingly.
pyreadline - A python implmentation of GNU readline.
gnureadline - The standard Python readline extension statically linked against the GNU readline library.
rl - Alternative Python bindings for GNU Readline.
prompt_toolkit - Library for building powerful interactive command lines in Python.
Platforms |
Library |
Interface |
|
---|---|---|---|
Any |
Dynamic |
Extended |
|
Unix-like |
Static |
Basic |
|
Windows |
Pure Python |
Basic |
|
Unix-like |
Static |
Basic |
|
Unix-like |
Static |
Extended |
|
Any |
Pure Python |
Alternative |
Known Bugs
ANSI color codes in the IPython terminal are not able to be printed. As a workaround, the codes are stripped and a plain prompt is displayed instead.
libreadline6 from MinGW lags behind one keystroke when using the arrow keys. This appears to be related to the Readline callback interface.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pygnurl-1.0.1.zip
.
File metadata
- Download URL: pygnurl-1.0.1.zip
- Upload date:
- Size: 36.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a3373c44ebfd554335a9f132d35680c442f0b837935bfab2b4cdc8f08ae9580 |
|
MD5 | 3debe3fb248d6e51176e4c16b17dcd29 |
|
BLAKE2b-256 | e6795d3e6302e5ba9f7efa451dc543d1e234b308d4fffca87780c50eaaaea714 |
File details
Details for the file pygnurl-1.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pygnurl-1.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 26.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49bacb9d735d14b0dc1da461c2fa458e8ca2f5649f0b964832a11c2ec75890cc |
|
MD5 | f67c989b007c0af99531ec6255acdabd |
|
BLAKE2b-256 | bdfdce5f63fd5ce08a12cc1c37eaee4828bd4837958afea72f887978b8e76445 |