aioconsole
aioconsole copied to clipboard
Asynchronous console and interfaces for asyncio
aioconsole
.. image:: https://readthedocs.org/projects/aioconsole/badge/?version=latest :target: http://aioconsole.readthedocs.io/ :alt:
.. image:: https://github.com/vxgmichel/aioconsole/workflows/CI/badge.svg :target: https://github.com/vxgmichel/aioconsole/actions?query=branch%3Amaster :alt:
.. image:: https://codecov.io/gh/vxgmichel/aioconsole/branch/master/graph/badge.svg :target: https://codecov.io/gh/vxgmichel/aioconsole :alt:
.. image:: https://img.shields.io/pypi/v/aioconsole.svg :target: https://pypi.python.org/pypi/aioconsole :alt:
.. image:: https://img.shields.io/pypi/pyversions/aioconsole.svg :target: https://pypi.python.org/pypi/aioconsole :alt:
Asynchronous console and interfaces for asyncio
aioconsole_ provides:
- asynchronous equivalents to
input
,print
,exec
_ andcode.interact
_ - an interactive loop running the asynchronous python console
- a way to customize and run command line interface using
argparse
_ -
stream
_ support to serve interfaces instead of using standard streams - the
apython
script to access asyncio code at runtime without modifying the sources
Requirements
- Python >= 3.6
Installation
aioconsole_ is available on PyPI_ and GitHub_.
Both of the following commands install the aioconsole
package
and the apython
script.
.. sourcecode:: console
$ pip3 install aioconsole # from PyPI
$ python3 setup.py install # or from the sources
$ apython -h
usage: apython [-h] [--serve [HOST:] PORT] [--no-readline]
[--banner BANNER] [--locals LOCALS]
[-m MODULE | FILE] ...
Run the given python file or module with a modified asyncio policy replacing
the default event loop with an interactive loop. If no argument is given, it
simply runs an asynchronous python console.
positional arguments:
FILE python file to run
ARGS extra arguments
optional arguments:
-h, --help show this help message and exit
--serve [HOST:] PORT, -s [HOST:] PORT
serve a console on the given interface instead
--no-readline force readline disabling
--banner BANNER provide a custom banner
--locals LOCALS provide custom locals as a dictionary
-m MODULE run a python module
Simple usage
The following example demonstrates the use of await
inside the console:
.. sourcecode:: console
$ apython
Python 3.5.0 (default, Sep 7 2015, 14:12:03)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
---
This console is running in an asyncio event loop.
It allows you to wait for coroutines using the 'await' syntax.
Try: await asyncio.sleep(1, result=3, loop=loop)
---
.. sourcecode:: python3
>>> await asyncio.sleep(1, result=3)
# Wait one second...
3
>>>
Documentation
Find more examples in the documentation_ and the example directory
_.
Limitations
The python console exposed by aioconsole
_ is quite limited compared to modern consoles such as IPython
_ or ptpython
. Luckily, those projects gained greater asyncio support over the years. In particular, the following use cases overlap with aioconsole
capabilities:
-
Embedding a ptpython console in an asyncio program <https://github.com/prompt-toolkit/ptpython/blob/master/examples/asyncio-python-embed.py>
_ -
Using the await syntax in an IPython console <https://ipython.readthedocs.io/en/stable/whatsnew/version7.html#autowait-asynchronous-repl>
_
Contact
Vincent Michel: [email protected]
.. _aioconsole: https://pypi.python.org/pypi/aioconsole .. _GitHub: https://github.com/vxgmichel/aioconsole .. _input: https://docs.python.org/3/library/functions.html#input .. _print: https://docs.python.org/3/library/functions.html#print .. _exec: https://docs.python.org/3/library/functions.html#exec .. _code.interact: https://docs.python.org/3/library/code.html#code.interact .. _argparse: https://docs.python.org/dev/library/argparse.html .. _stream: https://docs.python.org/3/library/asyncio-stream.html .. _example directory: https://github.com/vxgmichel/aioconsole/blob/master/example .. _documentation: http://aioconsole.readthedocs.io/ .. PyPI: aioconsole .. _IPython: https://ipython.readthedocs.io .. _ptpython: https://github.com/prompt-toolkit/ptpython