Skip to main content

A lightweight tree class implementation, with a focus on searching for nodes based on their type.

Project description

Chesnut Logo 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chesnut-1.0.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

chesnut-1.0.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file chesnut-1.0.0.tar.gz.

File metadata

  • Download URL: chesnut-1.0.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for chesnut-1.0.0.tar.gz
Algorithm Hash digest
SHA256 ffa8b660558fd83c3c3a3ec37b161ca2821e4774b1f1ca3e551be8c2e5fac43e
MD5 c42126a204ff52de92a316265623fb79
BLAKE2b-256 010a744afb62c9b0a32494a2ba15feeb1babdae7f4fdf62f411079d8f9c93b21

See more details on using hashes here.

File details

Details for the file chesnut-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: chesnut-1.0.0-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.6

File hashes

Hashes for chesnut-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 529bd7ac0fff0d3cee32c7ac137e4be15178cc41c04374c13f1000a544c19065
MD5 2be5c4e147abf380b7995dfae0ecb2c3
BLAKE2b-256 6e5504706699b792161ae9a1434c3a744f4cb88ed9f36ecd6a28037e8bfc4a70

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page