You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
253 lines
11 KiB
253 lines
11 KiB
6 years ago
|
Metadata-Version: 2.1
|
||
|
Name: prompt-toolkit
|
||
|
Version: 2.0.9
|
||
|
Summary: Library for building powerful interactive command lines in Python
|
||
|
Home-page: https://github.com/jonathanslenders/python-prompt-toolkit
|
||
|
Author: Jonathan Slenders
|
||
|
Author-email: UNKNOWN
|
||
|
License: BSD-3-Clause
|
||
|
Platform: UNKNOWN
|
||
|
Classifier: Development Status :: 5 - Production/Stable
|
||
|
Classifier: Intended Audience :: Developers
|
||
|
Classifier: License :: OSI Approved :: BSD License
|
||
|
Classifier: Operating System :: OS Independent
|
||
|
Classifier: Programming Language :: Python :: 2
|
||
|
Classifier: Programming Language :: Python :: 2.6
|
||
|
Classifier: Programming Language :: Python :: 2.7
|
||
|
Classifier: Programming Language :: Python :: 3
|
||
|
Classifier: Programming Language :: Python :: 3.3
|
||
|
Classifier: Programming Language :: Python :: 3.4
|
||
|
Classifier: Programming Language :: Python :: 3.5
|
||
|
Classifier: Programming Language :: Python :: 3.6
|
||
|
Classifier: Programming Language :: Python :: 3.7
|
||
|
Classifier: Programming Language :: Python
|
||
|
Classifier: Topic :: Software Development
|
||
|
Requires-Dist: six (>=1.9.0)
|
||
|
Requires-Dist: wcwidth
|
||
|
|
||
|
Python Prompt Toolkit
|
||
|
=====================
|
||
|
|
||
|
|Build Status| |AppVeyor| |PyPI| |RTD| |License| |Codecov|
|
||
|
|
||
|
.. image :: https://github.com/prompt-toolkit/python-prompt-toolkit/raw/master/docs/images/logo_400px.png
|
||
|
|
||
|
*``prompt_toolkit`` is a library for building powerful interactive command line
|
||
|
applications in Python.*
|
||
|
|
||
|
Read the `documentation on readthedocs
|
||
|
<http://python-prompt-toolkit.readthedocs.io/en/stable/>`_.
|
||
|
|
||
|
NOTICE: prompt_toolkit 2.0
|
||
|
**************************
|
||
|
|
||
|
Please notice that this is prompt_toolkit 2.0. It is incompatible with the 1.0
|
||
|
branch, but much better in many regards. Many applications are still using
|
||
|
prompt_toolkit 1.0, but upgrading is strongly recommended. Feel free to open a
|
||
|
new issue if you don't manage to upgrade to prompt_toolkit 2.0.
|
||
|
|
||
|
|
||
|
Ptpython
|
||
|
********
|
||
|
|
||
|
`ptpython <http://github.com/prompt-toolkit/ptpython/>`_ is an interactive
|
||
|
Python Shell, build on top of prompt_toolkit.
|
||
|
|
||
|
.. image :: https://github.com/prompt-toolkit/python-prompt-toolkit/raw/master/docs/images/ptpython.png
|
||
|
|
||
|
|
||
|
prompt_toolkit features
|
||
|
***********************
|
||
|
|
||
|
``prompt_toolkit`` could be a replacement for `GNU readline
|
||
|
<https://tiswww.case.edu/php/chet/readline/rltop.html>`_, but it can be much
|
||
|
more than that.
|
||
|
|
||
|
Some features:
|
||
|
|
||
|
- Pure Python.
|
||
|
- Syntax highlighting of the input while typing. (For instance, with a Pygments lexer.)
|
||
|
- Multi-line input editing.
|
||
|
- Advanced code completion.
|
||
|
- Both Emacs and Vi key bindings. (Similar to readline.)
|
||
|
- Even some advanced Vi functionality, like named registers and digraphs.
|
||
|
- Reverse and forward incremental search.
|
||
|
- Runs on all Python versions from 2.6 up to 3.7.
|
||
|
- Works well with Unicode double width characters. (Chinese input.)
|
||
|
- Selecting text for copy/paste. (Both Emacs and Vi style.)
|
||
|
- Support for `bracketed paste <https://cirw.in/blog/bracketed-paste>`_.
|
||
|
- Mouse support for cursor positioning and scrolling.
|
||
|
- Auto suggestions. (Like `fish shell <http://fishshell.com/>`_.)
|
||
|
- Multiple input buffers.
|
||
|
- No global state.
|
||
|
- Lightweight, the only dependencies are Pygments, six and wcwidth.
|
||
|
- Runs on Linux, OS X, FreeBSD, OpenBSD and Windows systems.
|
||
|
- And much more...
|
||
|
|
||
|
Feel free to create tickets for bugs and feature requests, and create pull
|
||
|
requests if you have nice patches that you would like to share with others.
|
||
|
|
||
|
|
||
|
About Windows support
|
||
|
*********************
|
||
|
|
||
|
``prompt_toolkit`` is cross platform, and everything that you build on top
|
||
|
should run fine on both Unix and Windows systems. On Windows, it uses a
|
||
|
different event loop (``WaitForMultipleObjects`` instead of ``select``), and
|
||
|
another input and output system. (Win32 APIs instead of pseudo-terminals and
|
||
|
VT100.)
|
||
|
|
||
|
It's worth noting that the implementation is a "best effort of what is
|
||
|
possible". Both Unix and Windows terminals have their limitations. But in
|
||
|
general, the Unix experience will still be a little better.
|
||
|
|
||
|
For Windows, it's recommended to use either `cmder
|
||
|
<http://cmder.net/>`_ or `conemu <https://conemu.github.io/>`_.
|
||
|
|
||
|
|
||
|
Installation
|
||
|
************
|
||
|
|
||
|
::
|
||
|
|
||
|
pip install prompt_toolkit
|
||
|
|
||
|
For Conda, do:
|
||
|
|
||
|
::
|
||
|
|
||
|
conda install -c https://conda.anaconda.org/conda-forge prompt_toolkit
|
||
|
|
||
|
|
||
|
Getting started
|
||
|
***************
|
||
|
|
||
|
The most simple example of the library would look like this:
|
||
|
|
||
|
.. code:: python
|
||
|
|
||
|
from prompt_toolkit import prompt
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
answer = prompt('Give me some input: ')
|
||
|
print('You said: %s' % answer)
|
||
|
|
||
|
For more complex examples, have a look in the ``examples`` directory. All
|
||
|
examples are chosen to demonstrate only one thing. Also, don't be afraid to
|
||
|
look at the source code. The implementation of the ``prompt`` function could be
|
||
|
a good start.
|
||
|
|
||
|
Note for Python 2: all strings are expected to be unicode strings. So, either
|
||
|
put a small ``u`` in front of every string or put ``from __future__ import
|
||
|
unicode_literals`` at the start of the above example.
|
||
|
|
||
|
|
||
|
Projects using prompt_toolkit
|
||
|
*****************************
|
||
|
|
||
|
Shells:
|
||
|
|
||
|
- `ptpython <http://github.com/prompt-toolkit/ptpython/>`_: Python REPL
|
||
|
- `ptpdb <http://github.com/jonathanslenders/ptpdb/>`_: Python debugger (pdb replacement)
|
||
|
- `pgcli <https://www.pgcli.com/>`_: Postgres client.
|
||
|
- `mycli <https://www.mycli.net/>`_: MySql client.
|
||
|
- `litecli <https://litecli.com/>`_: SQLite client.
|
||
|
- `wharfee <http://wharfee.com/>`_: A Docker command line.
|
||
|
- `xonsh <http://xon.sh/>`_: A Python-ish, BASHwards-compatible shell.
|
||
|
- `saws <https://github.com/donnemartin/saws>`_: A Supercharged AWS Command Line Interface.
|
||
|
- `cycli <https://github.com/nicolewhite/cycli>`_: A Command Line Interface for Cypher.
|
||
|
- `crash <https://github.com/crate/crash>`_: Crate command line client.
|
||
|
- `vcli <https://github.com/dbcli/vcli>`_: Vertica client.
|
||
|
- `aws-shell <https://github.com/awslabs/aws-shell>`_: An integrated shell for working with the AWS CLI.
|
||
|
- `softlayer-python <https://github.com/softlayer/softlayer-python>`_: A command-line interface to manage various SoftLayer products and services.
|
||
|
- `ipython <http://github.com/ipython/ipython/>`_: The IPython REPL
|
||
|
- `click-repl <https://github.com/click-contrib/click-repl>`_: Subcommand REPL for click apps.
|
||
|
- `haxor-news <https://github.com/donnemartin/haxor-news>`_: A Hacker News CLI.
|
||
|
- `gitsome <https://github.com/donnemartin/gitsome>`_: A Git/Shell Autocompleter with GitHub Integration.
|
||
|
- `http-prompt <https://github.com/eliangcs/http-prompt>`_: An interactive command-line HTTP client.
|
||
|
- `coconut <http://coconut-lang.org/>`_: Functional programming in Python.
|
||
|
- `Ergonomica <https://ergonomica.github.io/>`_: A Bash alternative written in Python.
|
||
|
- `Kube-shell <https://github.com/cloudnativelabs/kube-shell>`_: Kubernetes shell: An integrated shell for working with the Kubernetes CLI
|
||
|
- `mssql-cli <https://github.com/dbcli/mssql-cli>`_: A command-line client for Microsoft SQL Server.
|
||
|
- `robotframework-debuglibrary <https://github.com/xyb/robotframework-debuglibrary>`_: A debug library and REPL for RobotFramework.
|
||
|
- `ptrepl <https://github.com/imomaliev/ptrepl>`_: Run any command as REPL
|
||
|
- `clipwdmgr <https://github.com/samisalkosuo/clipasswordmgr>`_: Command Line Password Manager.
|
||
|
- `slacker <https://github.com/netromdk/slacker>`_: Easy access to the Slack API and admin of workspaces via REPL.
|
||
|
- `EdgeDB <https://edgedb.com/>`_: The next generation object-relational database.
|
||
|
- `pywit <https://github.com/wit-ai/pywit>`_: Python library for Wit.ai.
|
||
|
- `objection <https://github.com/sensepost/objection>`_: Runtime Mobile Exploration.
|
||
|
- `habu <https://github.com/portantier/habu>`_: Python Network Hacking Toolkit.
|
||
|
- `nawano <https://github.com/rbw/nawano>`_: Nano cryptocurrency wallet
|
||
|
- `athenacli <https://github.com/dbcli/athenacli>`_: A CLI for AWS Athena.
|
||
|
|
||
|
Full screen applications:
|
||
|
|
||
|
- `pymux <http://github.com/prompt-toolkit/pymux/>`_: A terminal multiplexer (like tmux) in pure Python.
|
||
|
- `pyvim <http://github.com/prompt-toolkit/pyvim/>`_: A Vim clone in pure Python.
|
||
|
- `freud <http://github.com/stloma/freud/>`_: REST client backed by SQLite for storing servers
|
||
|
- `pypager <https://github.com/prompt-toolkit/pypager>`_: A $PAGER in pure Python (like "less").
|
||
|
|
||
|
Libraries:
|
||
|
|
||
|
- `ptterm <https://github.com/prompt-toolkit/ptterm>`_: A terminal emulator
|
||
|
widget for prompt_toolkit.
|
||
|
- `PyInquirer <https://github.com/CITGuru/PyInquirer/>`_: A Python library that
|
||
|
wants to make it easy for existing Inquirer.js users to write immersive
|
||
|
command line applications in Python.
|
||
|
|
||
|
(Want your own project to be listed here? Please create a GitHub issue.)
|
||
|
|
||
|
|
||
|
Philosophy
|
||
|
**********
|
||
|
|
||
|
The source code of ``prompt_toolkit`` should be readable, concise and
|
||
|
efficient. We prefer short functions focusing each on one task and for which
|
||
|
the input and output types are clearly specified. We mostly prefer composition
|
||
|
over inheritance, because inheritance can result in too much functionality in
|
||
|
the same object. We prefer immutable objects where possible (objects don't
|
||
|
change after initialization). Reusability is important. We absolutely refrain
|
||
|
from having a changing global state, it should be possible to have multiple
|
||
|
independent instances of the same code in the same process. The architecture
|
||
|
should be layered: the lower levels operate on primitive operations and data
|
||
|
structures giving -- when correctly combined -- all the possible flexibility;
|
||
|
while at the higher level, there should be a simpler API, ready-to-use and
|
||
|
sufficient for most use cases. Thinking about algorithms and efficiency is
|
||
|
important, but avoid premature optimization.
|
||
|
|
||
|
|
||
|
Special thanks to
|
||
|
*****************
|
||
|
|
||
|
- `Pygments <http://pygments.org/>`_: Syntax highlighter.
|
||
|
- `wcwidth <https://github.com/jquast/wcwidth>`_: Determine columns needed for a wide characters.
|
||
|
|
||
|
.. |Build Status| image:: https://api.travis-ci.org/prompt-toolkit/python-prompt-toolkit.svg?branch=master
|
||
|
:target: https://travis-ci.org/prompt-toolkit/python-prompt-toolkit#
|
||
|
|
||
|
.. |PyPI| image:: https://img.shields.io/pypi/v/prompt_toolkit.svg
|
||
|
:target: https://pypi.python.org/pypi/prompt-toolkit/
|
||
|
:alt: Latest Version
|
||
|
|
||
|
.. |AppVeyor| image:: https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true
|
||
|
:target: https://ci.appveyor.com/project/prompt-toolkit/python-prompt-toolkit/
|
||
|
|
||
|
.. |RTD| image:: https://readthedocs.org/projects/python-prompt-toolkit/badge/
|
||
|
:target: https://python-prompt-toolkit.readthedocs.io/en/master/
|
||
|
|
||
|
.. |License| image:: https://img.shields.io/github/license/prompt-toolkit/python-prompt-toolkit.svg
|
||
|
:target: https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/LICENSE
|
||
|
|
||
|
.. |Codecov| image:: https://codecov.io/gh/prompt-toolkit/python-prompt-toolkit/branch/master/graphs/badge.svg?style=flat
|
||
|
:target: https://codecov.io/gh/prompt-toolkit/python-prompt-toolkit/
|
||
|
|
||
|
|
||
|
Other libraries and implementations in other languages
|
||
|
******************************************************
|
||
|
|
||
|
- `go-prompt <https://github.com/c-bata/go-prompt>`_: building a powerful
|
||
|
interactive prompt in Go, inspired by python-prompt-toolkit.
|
||
|
- `urwid <http://urwid.org/>`_: Console user interface library for Python.
|
||
|
|
||
|
|