Changelog#
This document catalogs the changes to decree-tree
.
Versions#
Some versions have been released, others not.
Unreleased#
In progress…
v0.3.0#
This release includes several enhancements, bug fixes, and documentation improvements, including but not limited to:
Changed the interplay of subcommands and other command line options and arguments. Now a particular subcommand will only allow either its subcommands (and help option) or its own and inherited arguments and options. This avoids situations where arguments or options are specified and ignored, and improves help output.
Defined a custom argument parser class:
ModifiedArgumentParser
. At present, its only difference from its parent in argparse is that itparse_known_args()
now errors on unrecognized arguments. This ensures that help usage statements for unexpected arguments are as specific as possible for the chosen subcommand. A different parser class can be substituted by specifyingargument_parser_class
directly or via an argument torun()
.Implemented the
debug_print()
method for optionally printing debug information. Printing is controlled bydebug_tracing
, and can be specified as an argument torun()
. Internally,debug_tracing
is propagated to children viaset_debug_tracing()
.Defined
exec_obj_opt
, which facilitates renaming of the hidden option indicating the selected subcommand. This can help avoid name clashes. This attribute is propagated via the newset_options()
method.Added a flag to
parser_options()
to indicate whether its the options are applied to a subparser or a top-level parser.Defined
repr_kwargs()
to control the arguments displayed in the output from__repr__()
.Split
configure_parser()
fromconfigure_parser()
to improve separation of concerns.Transitioned
pyproject.toml
to use a PEP-621 style. Poetry is still used for defining developmental dependencies.Included coverage summary in local developmental test output.
Fixed some linting and test failures, including in docstrings.
Updated, expanded, and clarified documentation, particularly for configuration, development, and command nesting.
Added support for documentation source code links based on the sphinx.ext.linkcode extension.
This version was manually pushed to PyPI and the documentation site, as the CI pipeline was still under development.
v0.2.0#
This release includes several substantial refactorings and enhancements, including but not limited to:
Renamed
TreeContainer
class toTree
, changed it to use a generic type var, and moved its definition to a separate module.Renamed
DecreeTree
methods to consistently refer to the parent or child, retaining helper methodsadd()
andget()
inDecreeTree
.Clarified that
add_arguments()
modifies its parser argument, not directly a class or instance variable.Ensured that
run()
can be executed from non-root commands in the assembled tree.Improved arguments to
__init__()
, along with creating__str__()
and__repr__()
methods. This removes theprog_or_name
argument to__init__()
, replacing it withname
andprog_is_name
.Changed the
summary()
method into thestructure
property and improved its output.Created the
AbstractDT
class to facilitate abstractDecreeTree
inheritance.Removed
decreeDecree
class from the top level of package import.Changed the inheritance behavior of commands, including from abstract parent classes and manual tree association, and the
inherit
class initialization argument.Enhanced customization of parsers with
parser_options()
andsubparsers_options()
.Improved typing throughout the package, with a goal of clear documentation and IDE hinting.
Greatly expanded the test suite, reaching greater than 90% coverage.
Created extensive documentation, including embedded tests.
Started use of GitLab CI for testing and package building.
Lowered the minimum version required for the typing-extensions package.
This version was manually pushed to PyPI and the documentation site, as the CI pipeline was still under development.
v0.1.0#
The first working version of the tool. Still in a developmental state, this version was not released as a package.
v0.0.0#
The initial commit, tagged for posterity.