Skip to main content

Static AST-based PyTorch tensor shape analysis.

Project description

TorchShapeFlow

CI PyPI Python License: MIT

TorchShapeFlow is a static, AST-based shape analyzer for PyTorch. It reads your Python source, infers tensor shapes from Annotated[..., Shape(...)] contracts, and reports mismatches as structured diagnostics. No execution required.

from typing import Annotated
import torch
from torchshapeflow import Shape

def attention_scores(
    q: Annotated[torch.Tensor, Shape("B", "H", "T", "D")],
    k: Annotated[torch.Tensor, Shape("B", "H", "T", "D")],
) -> Annotated[torch.Tensor, Shape("B", "H", "T", "T")]:
    return q @ k.transpose(-2, -1)
$ tsf check mymodel.py
All clean (1 file checked)

Philosophy

TorchShapeFlow is annotation-first and symbolic-first.

  • You declare tensor shape contracts with Annotated[torch.Tensor, Shape(...)].
  • Symbolic dimensions like "B", "T", and "D" are the default path for config-driven model code.
  • Integer dimensions are still useful for fixed semantics like RGB channels or known embedding widths.
  • When inference is not possible, the analyzer degrades visibly instead of guessing.

If Pydantic gives structure to data boundaries, TorchShapeFlow aims to do the same for tensor-shape boundaries in deep learning code.

Install

In Claude Code (two commands, no config-file editing):

/plugin marketplace add Davidxswang/torchshapeflow
/plugin install torchshapeflow@torchshapeflow

The first command registers this repo as a plugin marketplace (pulling from main by default). The second installs the torchshapeflow plugin from that marketplace, which wires in an MCP server, an agent skill, and a post-edit hook — your Claude Code then knows how to run tsf check, interpret the structured diagnostics, and propose annotations. No manual .mcp.json editing required.

As a plain Python package (for CLI use or other agent runtimes):

pip install torchshapeflow

Documentation

Full docs at davidxswang.github.io/torchshapeflow

Contributing

git clone https://github.com/Davidxswang/torchshapeflow
cd torchshapeflow
make install   # uv sync --extra dev
make check     # format + lint + typecheck + tests

If you want to execute the example PyTorch scripts in examples/, install the separate examples extra:

uv sync --extra dev --extra examples

See docs/development.md for the full development guide: all make targets, CI workflow descriptions, and how to add new operators.

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

torchshapeflow-0.7.1.tar.gz (104.7 kB view details)

Uploaded Source

Built Distribution

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

torchshapeflow-0.7.1-py3-none-any.whl (61.1 kB view details)

Uploaded Python 3

File details

Details for the file torchshapeflow-0.7.1.tar.gz.

File metadata

  • Download URL: torchshapeflow-0.7.1.tar.gz
  • Upload date:
  • Size: 104.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchshapeflow-0.7.1.tar.gz
Algorithm Hash digest
SHA256 041747a576bca815af2f3a1e5d57585d2bb3034fe3d3f65c8f9004a74b4088da
MD5 875de3a77be8ac35618b5ba2da63c393
BLAKE2b-256 f7263dd23627b60d187fc29189fd3655393c4e2306a200a370ae50d823122f6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchshapeflow-0.7.1.tar.gz:

Publisher: release.yml on Davidxswang/torchshapeflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchshapeflow-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: torchshapeflow-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 61.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchshapeflow-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b6e2186cb49d945fb93b87416772637bc211049d10b4f2cf5f994ea4b2f66339
MD5 3545e24b64cce058d93c8a0444b5520e
BLAKE2b-256 120a77ac7aa5d5dbc55dd0bac5671f4d02dc7b978d2262403e10d1b77e156fa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchshapeflow-0.7.1-py3-none-any.whl:

Publisher: release.yml on Davidxswang/torchshapeflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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