Python Prompt Toolkit 3.0


Notice that this is the prompt_toolkit 3.0 documentation. It is mostly compatible with the 2.0 branch. The difference is that prompt_toolkit 3.0 requires at least Python 3.6. On the plus side, it uses asyncio natively (rather than it’s own event loop), and we have type annotations everywhere.

prompt_toolkit is a library for building powerful interactive command line and terminal applications in Python.

It can be a very advanced pure Python replacement for GNU readline, but it can also be used for building full screen applications.


Some features:

  • Syntax highlighting of the input while typing. (For instance, with a Pygments lexer.)

  • Multi-line input editing.

  • Advanced code completion.

  • Selecting text for copy/paste. (Both Emacs and Vi style.)

  • Mouse support for cursor positioning and scrolling.

  • Auto suggestions. (Like fish shell.)

  • No global state.

Like readline:

  • Both Emacs and Vi key bindings.

  • Reverse and forward incremental search.

  • Works well with Unicode double width characters. (Chinese input.)

Works everywhere:

  • Pure Python. Runs on all Python versions starting at Python 3.6. (Python 2.6 - 3.x is supported in prompt_toolkit 2.0; not 3.0).

  • Runs on Linux, OS X, OpenBSD and Windows systems.

  • Lightweight, the only dependencies are Pygments and wcwidth.

  • No assumptions about I/O are made. Every prompt_toolkit application should also run in a telnet/ssh server or an asyncio process.

Have a look at the gallery to get an idea of what is possible.

Getting started

Go to getting started and build your first prompt.

Thanks to:

A special thanks to all the contributors for making prompt_toolkit possible.

Also, a special thanks to the Pygments and wcwidth libraries.

Table of contents

Indices and tables

Prompt_toolkit was created by Jonathan Slenders.