Skip to main content

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

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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 file

0.0.6

1 file

0.0.5

1 file

0.0.4

1 file

0.0.3

1 file

0.0.2

1 file

0.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page