Skip to main content

pygnurl

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:

  1. Add <site-packages>/pygnurl/modules to your PYTHONPATH environment variable

  2. 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:

https://github.com/evanunderscore/pygnurl

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

pygnurl

Any

Dynamic

Extended

readline

Unix-like

Static

Basic

pyreadline

Windows

Pure Python

Basic

gnureadline

Unix-like

Static

Basic

rl

Unix-like

Static

Extended

prompt_toolkit

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.

Metadata

Release files for pygnurl 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygnurl 1.0.1
File Size Uploaded Provenance
pygnurl-1.0.1.zip 36.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pygnurl 1.0.1
File Interpreter ABI Platform
pygnurl-1.0.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 62.7 kB

Release files / pygnurl-1.0.1.zip

Download URL pygnurl-1.0.1.zip
Size 36.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8a3373c44ebfd554335a9f132d35680c442f0b837935bfab2b4cdc8f08ae9580
BLAKE2b-256 checksum
How to use checksums
e6795d3e6302e5ba9f7efa451dc543d1e234b308d4fffca87780c50eaaaea714
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / pygnurl-1.0.1-py2.py3-none-any.whl

Download URL pygnurl-1.0.1-py2.py3-none-any.whl
Size 26.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
49bacb9d735d14b0dc1da461c2fa458e8ca2f5649f0b964832a11c2ec75890cc
BLAKE2b-256 checksum
How to use checksums
bdfdce5f63fd5ce08a12cc1c37eaee4828bd4837958afea72f887978b8e76445
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for pygnurl 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page