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 or inline if in a jupyter notebook.
spytial.diagram(data)

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

# Step through a sequence of states
states = [
    {'value': 0, 'next': 1},
    {'value': 1, 'next': 2},
]
spytial.diagramSequence(states, sequence_policy='stability')

# If each step rebuilds fresh objects, provide an identity hook
class Node:
    def __init__(self, node_id, value):
        self.id = node_id
        self.value = value

states = [Node("A", 1), Node("A", 2)]
spytial.diagramSequence(
    states,
    sequence_policy='stability',
    identity=lambda obj: obj.id if hasattr(obj, "id") else None,
)

Documentation

Documentation is published at https://sidprasad.github.io/cnd-py/ and is generated from this repository with MkDocs.

The docs focus on user-facing material:

  • installation and first steps
  • diagramming, evaluation, annotations, and relationalizers
  • data-structure examples drawn from the spytial-clrs companion repo

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-1.0.0.tar.gz (273.0 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-1.0.0-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for spytial_diagramming-1.0.0.tar.gz
Algorithm Hash digest
SHA256 862eea22a871a38536b9aa8f39c3c5a1d2f74136a808ebeb5a9b7decc24f710e
MD5 d1d6f91a6200dbfb6d306339cb6be07e
BLAKE2b-256 c9ef3efe85cd1cf9e2f48ea5d740a2bb7b2fdb7edc01fc6a8529f53ffb73af08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for spytial_diagramming-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 476fe76000c08bc2ea34e3c69e265e62a72c2c424719c7341eba58f5dcb58f54
MD5 ac14030d91e0f9ed8f0bdaab98d3c0cf
BLAKE2b-256 67e880b2f7e04caae0a79f7b4bf3beb70246eadfc72531f78120b21f1a65cbc9

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