Now that cmd2 3.0.0 is out, it's time to start discussing what we would like to see in the 4.0.0 release for cmd2.
Features @kmvanbrunt and I have discussed for 4.x include:
Moving to prompt-toolkit and no longer depending on cmd will be a large paradigm shift for cmd2. But this will open doors for easier and more consistent cross-platform support as well as being able to provide some more advanced features that we cannot now.
Now that
cmd23.0.0 is out, it's time to start discussing what we would like to see in the 4.0.0 release forcmd2.Features @kmvanbrunt and I have discussed for 4.x include:
cmdmodule, but retain backwards compatibility (PR Remove dependency on Python's built-in cmd module #1539)twinefor publishing PyPI package with one onuv publish(Use uv for publishing to PyPI instead of twine #1548)invokewith use ofmake, primarily used for cleanup at this point (Add clean target to Makefile that runs what is in invoke clean #1549)readlinemodule and replace it with a dependency on prompt-toolkit which is a pure Python replacement for GNU Readline (PR Migrate from using readline to prompt-toolkit #1553)prompt-toolkit(PR Migrate from using readline to prompt-toolkit #1553)prompt-toolkitsyntax highlighting of text entered by users, at least for command names (PR Migrate from using readline to prompt-toolkit #1553)prompt-toolkitInput Validation - I looked into this and honestly if we add support for more advanced input validation, I would prefer to add a dependency onpydanticand go that route. But that is more than I want to bite off for the 4.0 release ofcmd2.prompt-toolkitsimilar to fish-shell where it will show a recommended completion grayed-out per user request in Add auto suggestion feature #1545 (PR Migrate from using readline to prompt-toolkit #1553)prompt-toolkitcompletion edge cases related to adding quotes (PR Refactor completion API #1575)@cmd2.typerdecorator that will auto-generate anargparse.ArgumentParserbased on argument annotationsmypyto ty now thattyis in betalist) with broader ones likeSequenceorIterable(PR Use more generic types where possible for input parameters #1584)default_to_shellflag since it can result in unintended execution which can be dangerous (PR Removed default_to_shell. #1590)Cmd2Lexercoloring of command names used on continued lines in multiline commands (PR Fixed multiline command highlighting in Cmd2Lexer #1591)Moving to
prompt-toolkitand no longer depending oncmdwill be a large paradigm shift forcmd2. But this will open doors for easier and more consistent cross-platform support as well as being able to provide some more advanced features that we cannot now.