added __getitem__()
and filter_nodes()
to HamiltonGraph
#919
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
The
graph_types.HamiltonGraph
andgraph_types.HamiltonNode
are the public facing interfaces for thegraph.FunctionGraph
andnode.Node
.HamiltonNode
should be accessed through aHamiltonGraph
and not be constructed directly.Motivation
The most common operations on the
HamiltonGraph
is selecting a single node or filtering them by a criteria. However, they're are no API for that, meaning some list comprehension orfilter()
are often implemented in the library code but also in the user's code. This motivated the implementation__getitem()__
andfilter_nodes()
Changes
HamiltonGraph.__getitem()__
allows to get a node using it's name as key (we know the node name is unique). It does a simple dictionary lookup.HamiltonGraph.filter_nodes()
receives afilter
argument which is a Callable that takes in aHamiltonNode
and returns a boolean. That provides a lot of flexibility to be able to filter by name, type, tags, or any other attributes.Other changes
Took the opportunity to implement a one line change for #865
How I tested this
Notes
Checklist