Skip to main content

Cmd2 extension for async programs

Project description

Async extension to a famous Cmd2 library.

Cmd2 permanently occupies the main thread which is a problem if you plan to receive callbacks on the main thread (e.g., by Bluetooth stack Bleak)

Pip installation

BoolTest is available via pip:

pip3 install ph4-acmd2

Local installation

From the local dir:

pip3 install --upgrade --find-links=. .

Usage

import asyncio
import ph4acmd2

class CmdLineApp(ph4acmd2.Cmd):
    async def main(self):
        await self.acmdloop()
        print("Cmdloop finished now")

if __name__ == '__main__':
    app = CmdLineApp()
    loop = asyncio.get_event_loop()
    loop.set_debug(True)
    loop.run_until_complete(app.main())

Limitations

We use asyncio.lool.add_reader to read from the stdin and process the commands thus it is not currently possible to ue readline features such as auto-complete or ctrl-r, UP-arrow for previous commands, etc…

Readline occupies main thread in a blocking way, so it is not compatible with runloop model running on the main thread and executing coroutines.

In order to use readline it needs to add async support. A potential workaround could be to access terminal in async way e.g., submit short coroutine monitoring the terminal state to simulate readline library. However, it is not tested.

Development

Install pre-commit hooks defined by .pre-commit-config.yaml

pip3 install -U pre-commit pytest mypy
mypy --install-types
pre-commit install

Auto fix

pre-commit run --all-files

Plugin version update

pre-commit autoupdate

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ph4_acmd2-1.0.0.tar.gz (6.0 kB view details)

Uploaded Source

File details

Details for the file ph4_acmd2-1.0.0.tar.gz.

File metadata

  • Download URL: ph4_acmd2-1.0.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for ph4_acmd2-1.0.0.tar.gz
Algorithm Hash digest
SHA256 313b8d63e0887dbce678e6b3271f890ca3c5c8f7bd3b0341bc07ace42b1bcca5
MD5 cae000d591f94bb94ef6a0b10f5fd979
BLAKE2b-256 5210dbfc94609aec99794914808c3b3e46fbb76fb31eaef21dd2e2d3e6555b6d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page