An interpreter framework
kmd allows to build command line driven shells with powerful tab-completion capabilities.
The kmd.Kmd class derives from cmd.Cmd and extends it in the following ways:
- Instead of Python’s readline module, kmd.Kmd uses the alternative rl readline bindings.
- Setup and tear-down of the readline completer have been moved to preloop and postloop respectively. Subclasses must make sure to call their parents’ implementations.
- Incomplete command names are automatically expanded if they are unique.
- Command aliases can be defined by extending the aliases dictionary. Alias names apply to all do_, complete_, and help_ attributes.
- Lines starting with ‘#’ are treated as comments. The new comment method is invoked, receiving the line as argument.
- It is now possible to configure the shell_escape_chars. The default is ‘!’.
- If a history_file is set, kmd.Kmd loads and saves the history in preloop and postloop.
- The new run method encapsulates the full execution cycle of a Kmd.
- Implements the mechanics of a command shell, based on cmd.Cmd.
- Implements a set of ready-to-use completions.
- Defines constants and functions for writing completions.
- Complete names of files and directories on the filesystem.
- Complete names of users known to the system.
- Complete names of hosts in the system’s /etc/hosts file.
- Complete names of variables in the process environment.
- Complete names of executables on the system PATH.
For further details please refer to the API Documentation.
Installation requires Python 2.7 or higher.
To install the kmd package, type:
pip install kmd
2.3 - 2019-03-20
- Clear lastcmd when EOF is hit to avoid an infinite loop. See Python issue 13500. [stefan]
- Drop explicit GPL because the PSF license is GPL-compatible anyway. [stefan]
- Update filename completion with new hooks. [stefan]
- Stop hiding the quoting module in completions and make it available as kmd.quoting. [stefan]
- Stop using rl.completer.reset because it overrides ~/.inputrc. [stefan]
- Stop using 2to3. [stefan]
- Require rl >= 3.0. [stefan]
2.2 - 2012-05-10
- String and filename quoting was not respected when Kmd.run was called with arguments. [stefan]
- Switch to a happier looking Sphinx theme. [stefan]
- Require rl >= 2.2. [stefan]
2.1.2 - 2012-04-14
- Update documentation more. [stefan]
2.1.1 - 2012-03-29
- Update documentation. [stefan]
2.1 - 2011-11-05
- Add Kmd.input method as extension point for subclasses. [stefan]
- Make sure hostname completion survives a missing hosts file. [stefan]
- Require rl >= 2.0.1. [stefan]
2.0 - 2011-10-06
- Add Kmd.aliases dictionary to define command aliases. [stefan]
- Refactor Kmd.do_help for easier customization. [stefan]
- Make sure error messages go to stderr. [stefan]
- Switch to pretty Sphinx-based docs. [stefan]
- Require rl >= 2.0. [stefan]
1.0 - 2011-07-14
- Initial release.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash SHA256 hash help||File type||Python version||Upload date|
|kmd-2.3-py2.py3-none-any.whl (24.9 kB) Copy SHA256 hash SHA256||Wheel||3.7|
|kmd-2.3.zip (39.7 kB) Copy SHA256 hash SHA256||Source||None|