Skip to main content

A Python package for managing and visualizing interval tree structures

Project description

Tree Interval Logo

Tree Interval

A powerful Python package for managing, analyzing, and visualizing tree structures with rich interval-based node positioning

Try it on Replit

✨ Features

  • 🔮 Future Class: Powerful dynamic attribute handling with context-aware error reporting and smart chain creation
  • 📍 Position-Aware Nodes: Track code positions with line numbers, column offsets and intervals
  • 🌲 AST Analysis: Built-in support for Python AST traversal and node location
  • 🔍 Frame Analysis: Runtime code inspection with frame position tracking
  • 🎨 Rich Visualization: Multiple visualization options including ASCII trees and Rich-based pretty printing
  • 💾 JSON Serialization: Full support for saving and loading tree structures
  • 🔎 Flexible Node Search: Parent, child and sibling search with custom predicates

🚀 Quick Start

Dynamic Attribute Handling with Future

from tree_interval import Future

class Nested:
    def __init__(self):
        self.__dict__ = {}
        
    def __getattr__(self, name):
        return Future(name, frame=1, instance=self)

# Dynamic attribute chain creation
obj = Nested()
obj.a.b.c = 42  # Creates nested structure automatically
print(obj.a.b.c)  # 42

# Smart error reporting
print(obj.x.y.z)  # Raises detailed error with context

Tree Operations

from tree_interval import Tree, Leaf, Position

# Create a basic tree
tree = Tree("Example")
root = Leaf(Position(0, 100), "Root")
child = Leaf(Position(10, 50), "Child")

tree.root = root
tree.add_leaf(child)

# Visualize the tree
tree.visualize()

📦 Installation

pip install tree-interval

🎯 Core Components

Position Types

# Basic Position
pos = Position(0, 100)

# Line-Aware Position
pos = Position(0, 100)
pos.lineno = 1
pos.end_lineno = 5

# Column-Aware Position
pos = Position(0, 100)
pos.col_offset = 4
pos.end_col_offset = 8

Tree Visualization

# Basic ASCII Tree
tree.visualize()

# Rich Pretty Printing
from tree_interval.rich_printer import RichTreePrinter
printer = RichTreePrinter()
printer.print_tree(tree)

📚 Documentation

💡 Use Cases

  1. Code Analysis

    • Track source positions in AST nodes
    • Locate runtime code execution points
    • Analyze code structure and relationships
  2. Tree Visualization

    • Debug tree structures
    • Generate documentation
    • Analyze hierarchical data
  3. Position Tracking

    • Map source locations
    • Track text positions
    • Handle nested intervals

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


Built with ❤️ by Kairos

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

tree_interval-0.1.32.tar.gz (36.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tree_interval-0.1.32-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file tree_interval-0.1.32.tar.gz.

File metadata

  • Download URL: tree_interval-0.1.32.tar.gz
  • Upload date:
  • Size: 36.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.10

File hashes

Hashes for tree_interval-0.1.32.tar.gz
Algorithm Hash digest
SHA256 99ff129fd7b230ece31001ad839defe330564bffd9f29dfd8a9ec3eda34821de
MD5 b8a3560bb82ab96f6fc6e1946bfa0c8b
BLAKE2b-256 d4d1aa0b5d13fe6dba3194b001cd23cdb111a529e9f820a5700bf5606d4f6949

See more details on using hashes here.

File details

Details for the file tree_interval-0.1.32-py3-none-any.whl.

File metadata

  • Download URL: tree_interval-0.1.32-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.10

File hashes

Hashes for tree_interval-0.1.32-py3-none-any.whl
Algorithm Hash digest
SHA256 64e3c2a68f92734237f2ad0b4f0f0622ffa4298ce21384514827807757f2c8f7
MD5 5ed16ccb2352824c7a5eb205446666af
BLAKE2b-256 4a189fb4c6e0ec594b56f84400e2a7cbcee107a5bfcc9c4d96228b69c58e71bd

See more details on using hashes here.

Supported by

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