Cleo 3.0 writeup
Below is a list of changes, required bugfixes and planned features for the next version of Cleo, Cleo 3.0. The list is not finished, it might evolve, change and expand. It's, basically, a download of my plans and ideas for Cleo.
Cleo 3.0 writeup
Docs
- Rewrite docs from scratch
- user docs
- usage examples
New features
- new CLI parser
- introduce dynamic and static (user's choice) completions
- introduce Powershell completions
- introduce
TreeUI component (extract the implementation frompoetry showcommand) - replace the usage of
rapidfuzzwithdifflib(dependent on new parser semantics) - remove namespace commands in favor of subcommands registered on commands (dependent on new parser semantics)
- integration with
logging - add helper functions for text transformations (colors, underline etc)
Refactorings
- use
@property.getter/@property.setterinstead ofget_*/set_*methods - UI components should be behind proxy
UI()object instead of as methods onCommand - Commands should not need
Applicationreference - cleanup Windows support options into a separate module
helpandlistcommands replacement (should be handled by the new parser)- colors and ansi escape sequences should be properly handled along with FORCE_COLOR/NO_COLOR and terminal features detection
- strict API design (consider which methods/functions/classes need to be available and make stuff private/hidden, use
__all__) - simplify lazy command loading (still easy to register new commands for
poetryplugins)
Typing
- remove all (or as much as possible) usage of optional types and
Any - for types, all complex (more than 1 level deep) types should have a nice alias
To consider
- drop event handling (
cleo.events)
Misc
- "inbox-zero" on issue tracker (aka resolve all issues)
- test coverage in 90+% range
Best case scenario
This is a list of optional requirements that will not stop a release from happening if not completed
- make highlighter extendable (json highlighting etc)
- provide Protocols/hooks/base classes to easily modify or extend default behavior
- dev docs with deep dive into inner works of every part of code
"I want to help!"
First of all, thank you. Second, if you want to tackle one of the issues mentioned here or an issue from the issue tracker, please comment under this issue what you want to take care of. That will allow us to avoid duplicating our work. When in doubt, feel free to reach out in issues or on our Discord channel
I use cleo.events for a poetry plugin so dropping that would impact my and likely other poetry plugins (unless there is a replacement in mind). One specific use-case I use and might be common in other plugins, is to authenticate to a remote repository before running poetry commands.
@md384 thanks for your feedback. I didn't get to events yet, but there will surely be a new mechanism for this in Poetry if we decide to remove that from Cleo.
What sort of integration with logging are you looking for? I've done a bit of that in a personal project using cleo that might be relevant.
@ironbars checkout #440.