HORTON 3 is conceived a set of workflows that bring together independent modules (e.g., IOData, Grid, and GBasis), providing a flexible architecture with a rich set of utilities and customizable features for quantum chemistry, thereby extending the functionality that was previously available in HORTON 2.x
Right now, there many options for command-line utilities, such as the standard optparse and argparse. The functionality of click is listed below (https://click.palletsprojects.com/en/7.x/why/),
is lazily composable without restrictions
supports the implementation of Unix/POSIX command line conventions
supports loading values from environment variables out of the box
support for prompting of custom values
is fully nestable and composable
supports file handling out of the box
comes with useful common helpers (getting terminal dimensions, ANSI colors, fetching direct keyboard input, screen clearing, finding config paths, launching apps and editors, etc.)
HORTON 2 had a custom logging class, that prints messages directly to stdout. It doesn't play nice if you want to silence it, or modify it, while using HORTON in your own code. Python has a standard logging module, https://docs.python.org/3/library/logging.html, for writing to stdout or stderr, and controlling the verbosity of your program. It would be nice to build the HORTON 3 logger using this standard module.