- Add benchmarks (using Benchman).
- Drop support for Python 3.8
t0.diff(t1, ...)
adds nodes from t1 when possible, so the new status is used for modified nodes.t0.diff(t1, ...)
marks both, source and target nodes, as modified if applicable.
- Implement check for node modifications in
tree.diff(..., compare=True)
. DictWrapper
supports comparision with==
.
- BREAKING:
kind
parameter is now mandatory foradd()
and related methods.kind=None
is still allowed to use the default (inherit or 'child').- Rename
shadow_attrs
argument toforward_attrs
. - Enforce that the same object instance is not added multiple times to one parent.
- Rename
GenericNodeData
toDictWrapper
and remove support for attribut access. - Drop support for Python 3.8
- mermaid: change mapper signatures and defaults
- tree.to_rdf() is now available for Tree (not only TypedTree).
- New method
node.up()
allows method chaining when adding nodes. - Pass pyright 'typeCheckingMode = "standard"'.
- Use generic typing for improved type checking, e.g. use
tree = Tree[Animals]()
to create a type-aware container.
- Add
Tree.build_random_tree()
(experimental). - Add
GenericNodeData
as wrapper fordict
data. - Fixed #7 Tree.from_dict failing to recreate an arbitrary object tree with a mapper.
- BREAKING: Drop Python 3.7 support (EoL 2023-06-27).
Tree.save()
accepts acompression
argument that will enable compression.Tree.load()
can detect if the input file has a compression header and will decompress transparently.- New traversal methods
LEVEL_ORDER
,LEVEL_ORDER_RTL
,ZIGZAG
,ZIGZAG_RTL
. - New compact connector styles
'lines32c'
,'round43c'
, ... - Save as mermaid flow diagram.
- Support compact serialization forrmat using
key_map
andvalue_map
. - Better support for working with derived classes (overload methods instead of callbacks).
- Fix invalid UniqueConstraint error message when loading a TypedTree.
- Add optional
tree.print(..., file=IO)
argument. - Rename
default_connector_style
toDEFAULT_CONNECTOR_STYLE
- Implement
Tree(..., shadow_attrs=True)
. tree.load(PATH)
/tree.save(PATH)
use UTF-8 encoding.- Add
Tree.system_root
as alias forTree._root
. - Add
Tree.get_toplevel_nodes()
as alias fortree.children.
- Support and test with Py3.12: don't forget to update pip, pipenv, and tox.
- Deprecate Python 3.7 support (EoL 2023-06-27).
- BREAKING: renamed
tree.to_dict()
totree.to_dict_list()
. - BREAKING: changed
tree.load()
/tree.save()
storage format. tree.load()
/tree.save()
accept path in addition to file objects.
- BREAKING: changed
tree.load()
/tree.save()
signature, and storage format. - Support load/save for TypedTree
- BREAKING: Rename
node.move()
->node.move_to()
- New
tree.copy_to()
andnode.copy_to()
- New
tree.children
property - Configurable default connector style
Initial releases.