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.