A Python package for managing and visualizing interval tree structures
Project description
Tree Interval
A powerful Python package for managing, analyzing, and visualizing tree structures with rich interval-based node positioning
✨ 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
-
Code Analysis
- Track source positions in AST nodes
- Locate runtime code execution points
- Analyze code structure and relationships
-
Tree Visualization
- Debug tree structures
- Generate documentation
- Analyze hierarchical data
-
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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tree_interval-0.1.30.tar.gz.
File metadata
- Download URL: tree_interval-0.1.30.tar.gz
- Upload date:
- Size: 35.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e42e0b021ff8be180f652545cdb49e1a4efec9396b903ddfb7230264caff8a9
|
|
| MD5 |
9d841f12cf03c28d4ff3cd83a78e85db
|
|
| BLAKE2b-256 |
e5280628bd071a4e906d991145bc4943815852ee7a7ea44f88ae03cee3acd1ac
|
File details
Details for the file tree_interval-0.1.30-py3-none-any.whl.
File metadata
- Download URL: tree_interval-0.1.30-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3307eab2463cc0896421818daabf34a80018442a55ba6eef52a60a65223bd9d
|
|
| MD5 |
bc1dad219a32bfec1b39d094dc18f596
|
|
| BLAKE2b-256 |
335a4dc6a90291bf5b3589caa219453622447017ad6d21d54dfe7043ca8582e1
|