A lightweight tree class implementation, with a focus on searching for nodes based on their type.
Project description
docs | pip
`Chesnut` is a lightweight tree class implementation in Python that offers a simple approach to search tree structures. By inheriting from the `Node` class, you can create your custom nodes and leverage its methods for efficient tree navigation.Installation
Install chesnut using pip.
pip install chesnut
Then you can use the Node
class in your project.
from chesnut import Node
Usage
Creating Custom Nodes
You can subclass the Node
class to create your custom nodes and add your own attributes and methods.
class CustomNode(Node):
def __init__(self, data, parent=None):
super().__init__(parent=parent)
self.data = data
Building a Tree
# Creating nodes
root_node = CustomNode(data="Root")
child_node1 = CustomNode(data="Child 1", parent=root_node)
child_node2 = CustomNode(data="Child 2", parent=root_node)
grandchild_node = CustomNode(data="Grandchild", parent=child_node1)
Using Node Attributes
For a complete list of methods, see the documentation.
Finding Nodes
# Finding the root
root = child_node1.root
# Checking if a node is the root
is_root = root_node.is_root # True
Querying Nodes
# Querying children by type
children_of_type = root_node.children_by_type(CustomNode) # List of CustomNode instances
# Querying descendants by type
descendants_of_type = root_node.descendants_by_type(CustomNode) # List of CustomNode instances
Checking Node Relationships
# Checking if a node has children of a specific type
has_children = root_node.has_children_by_type(CustomNode) # True or False
# Checking if a node has descendants of a specific type
has_descendants = root_node.has_descendants_by_type(CustomNode) # True or False
By using the Node
class as a base for your custom nodes, you can take advantage of its methods to easily navigate and manipulate your tree structure. This inheritance approach allows you to focus on the specific functionality of your custom nodes while benefiting from the tree-related operations provided by chesnut.
Testing
You can run the tests with:
make test
Coverage can be checked at function level with:
make coverage
Linting can be performed with:
make lint
Documentation
Documentation is available here. It is generated from the docstrings using pdoc. You can generate this yourself using:
make docs
This will generate the documentation in the docs
folder, open docs/index.html
in your browser to see the documentation.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file chesnut-1.0.1.tar.gz
.
File metadata
- Download URL: chesnut-1.0.1.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc8c605046fc815cc4c3760059a5f2e49ae5fc2301cc27da887189735a606b7a |
|
MD5 | 2e65f2ef67c45f5983f23d8d43d4d113 |
|
BLAKE2b-256 | 96361d107beb4ece395dadaf95cd08b26219be8535469bec294c747d4ed52b7a |
File details
Details for the file chesnut-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: chesnut-1.0.1-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6aad7ffa4c5d463d5754f75f7142b6490e80027c78e51e81bbb61cf706b3832 |
|
MD5 | f2d0b1f385f8c8326f9b365ad31c728d |
|
BLAKE2b-256 | 78e69f71a7ae2d9a32d592fa56d46eb5273ba8fbd85b9aaa3b7ca26bfeac44ce |