Skip to main content

sPyTial: Spatial Python visualization with declarative constraints

Project description

sPyTial: Lightweight Diagrams for Structured Python Data

pip install spytial-diagramming

Sometimes you just want to see your data.

You’re working with a tree, a graph, a recursive object -- maybe an AST, a neural network, or a symbolic term. You don’t need an interactive dashboard or a production-grade visualization system. You just need a diagram, something that lays it out clearly so you can understand what’s going on.

That’s what sPyTial is for. It’s designed for developers, educators, and researchers who work with structured data and need to make that structure visible — to themselves or to others — with minimal effort.

Why Spatial Representation Matters

There’s strong evidence — from cognitive science, human-computer interaction, and decades of programming tool design — that spatial representations help people understand structure. When elements are placed meaningfully in space — grouped, aligned, oriented — we can spot patterns, detect errors, and reason more effectively. This idea shows up in research from Barbara Tversky, Larkin & Simon, and in the design of tools like Alloy and Scratch.

sPyTial gives you that kind of spatial layout by default. When you visualize a Python object, the diagram reflects how the parts are connected, not just how they're stored. You get:

  • A box-and-arrow diagram that shows the shape of your data
  • A layout that follows cognitive and structural conventions
  • A tool that knows when something doesn't make sense

Quick Start

import spytial

# Visualize any Python object
data = {
    'name': 'root',
    'children': [
        {'value': 1},
        {'value': 2},
        {'value': 3}
    ]
}

# Opens in browser
spytial.diagram(data)

# Or save to file
spytial.diagram(data, method='file')

Headless Mode for Testing & Automation

sPyTial supports headless browser mode for automated testing, CI/CD pipelines, and performance benchmarking without GUI overhead:

import spytial

# Basic headless rendering
result = spytial.diagram(data, headless=True)

# Performance benchmarking in headless mode
metrics = spytial.diagram(
    data,
    headless=True,
    perf_iterations=10,
    perf_path='metrics.json'
)

print(f"Average render time: {metrics['totalTime']['avg']:.2f}ms")

# For large/complex visualizations, specify a custom timeout
# Default timeout is max(120, perf_iterations * 5) seconds
metrics = spytial.diagram(
    large_data,
    headless=True,
    perf_iterations=30,
    timeout=600  # 10 minutes for complex visualization
)

Requirements for headless mode:

pip install spytial_diagramming[headless]
# chromedriver is automatically managed via webdriver-manager

Headless mode uses Selenium with Chrome to render visualizations programmatically, making it ideal for:

  • Automated testing in CI/CD pipelines
  • Performance regression testing
  • Batch processing of visualizations
  • Server-side rendering without display

Timeout Guidance:

  • Small visualizations (< 20 atoms): Default timeout is sufficient
  • Medium visualizations (20-100 atoms): Consider timeout=300 (5 min) for 30+ iterations
  • Large visualizations (100+ atoms): Use timeout=600 (10 min) or higher

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

spytial_diagramming-0.4.0.tar.gz (149.2 kB view details)

Uploaded Source

Built Distribution

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

spytial_diagramming-0.4.0-py3-none-any.whl (51.0 kB view details)

Uploaded Python 3

File details

Details for the file spytial_diagramming-0.4.0.tar.gz.

File metadata

  • Download URL: spytial_diagramming-0.4.0.tar.gz
  • Upload date:
  • Size: 149.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for spytial_diagramming-0.4.0.tar.gz
Algorithm Hash digest
SHA256 afd28ee1c34138c02c662d4f8b2e2f19cd1ed073c1461a198c1fff15bdd55ef1
MD5 56d37090c0ee20cf1b920f7ae0e562e4
BLAKE2b-256 5b9b452b782b61e8e96a6f6a21c58610c6f19dfba4e2b1fb6125a9451e38e8b4

See more details on using hashes here.

File details

Details for the file spytial_diagramming-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for spytial_diagramming-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6a34ff008351f27d61c3f5ca0a92d5bd69fcdbeed15412fc0eb1363d283cb45
MD5 abba40b49ac0a77fb7b362009d6aad42
BLAKE2b-256 38a345d8bbe2827196057088e3f64c81dc261ec72f0a77785653a1d1973fb864

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