Windseeker
Windseeker is a command-line tool for SysML v2 dependency analysis, notebook generation, execution, and view extraction.
It scans .sysml files, analyzes package dependencies, generates a dependency-ordered SysML Jupyter notebook, executes that notebook using a SysML kernel, and extracts rendered views as images.
Naming note
- PyPI distribution name:
sysml-windseeker- Python import name:
windseeker- CLI command:
windseeker
AI Assisted Development
This project has used generative AI to assist in the development of the tool.
🧱 Architecture Overview
flowchart TD
A[.sysml Files] --> B[Folder Scanner]
B --> C[Package & Import Parser]
C --> D[Dependency Graph]
D --> E[Topological Ordering]
E --> F[SysML Concatenation]
E --> G[Jupyter Notebook Builder]
G --> H[Notebook Execution]
H --> I[View Rendering Cells]
I --> J[SVG / PNG / JPG Extraction]
D --> K[Graph Visualization]
✨ Features
Model Analysis
- Recursively scans
.sysmlfiles - Extracts top-level packages only
- Detects
importdependencies - Builds a directed dependency graph
- Fails fast on:
- Import cycles
- Invalid dependency ordering
Notebook Generation
- Generates a single-kernel SysML Jupyter notebook
- One code cell per top-level package
- Cells ordered by dependency order
- Nested packages remain embedded in their parent cell
- Appends additional cells for each discovered
view- Uses
%view Fully::Qualified::ViewName
- Uses
Notebook Execution
- Executes the generated notebook programmatically
- Supports:
nbclient(preferred)jupyter nbconvert --execute(fallback)
- Detects errors via:
- Jupyter
erroroutputs - SysML kernel
stderr(ERROR,Exception,Traceback)
- Jupyter
- View rendering failures are non-fatal by default
View Image Extraction
- Extracts rendered views from executed notebooks
- Supports:
- SVG (raw XML)
- PNG (transparent or solid background)
- Optional JPG
- Automatically rescales oversized SVGs to avoid Cairo rendering errors
🚀 Quick Start
1) Install Windseeker
pip install sysml-windseeker
For development:
pip install -e .
2) Ensure a SysML Jupyter Kernel Is Installed
jupyter kernelspec list
You must see a kernel such as:
sysml
3) Run Windseeker
windseeker run --folder ./tests
🧰 CLI Usage
Common Options
| Flag | Description |
|---|---|
--folder PATH |
Root directory to scan for .sysml files |
--graph / --no-graph |
Enable or disable dependency graph image generation |
--execute / --no-execute |
Execute the generated notebook |
--export-views / --no-export-views |
Extract rendered views |
--views-dir PATH |
Output directory for view images |
--sysml-out PATH |
Output .sysml file |
--notebook-out PATH |
Output notebook path |
Validation & Safety Flags
| Flag | Description |
|---|---|
--ignore-missing NAME |
Ignore unresolved imports (e.g. standard libraries) |
--strict-missing / --allow-missing |
Fail if unresolved imports are found |
--strict-views / --allow-view-errors |
Fail if %view cells error |
--execute / --no-execute |
Skip notebook execution |
View Rendering Options
| Flag | Description |
|---|---|
--write-svg / --no-write-svg |
Write SVG files |
--write-png / --no-write-png |
Write PNG files |
--write-jpg / --no-write-jpg |
Also write JPG files |
--png-transparent / --png-opaque |
Control PNG transparency |
--png-bg COLOR |
Background color for opaque PNGs |
Full CLI Reference
windseeker run --help
windseeker order --help
📜 License
MIT
Metadata
Release files for sysml-windseeker 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sysml_windseeker-0.3.1.tar.gz | 21.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sysml_windseeker-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.8 kB
Release files / sysml_windseeker-0.3.1.tar.gz
| Download URL | sysml_windseeker-0.3.1.tar.gz |
|---|---|
| Size | 21.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f8be16c7729c8eb9d378887abe8c7887bb3f8d0005064d0c3fce9bba3164ceb6
|
|
BLAKE2b-256 checksum How to use checksums |
0016f1f647bf0ae0dd2c4fca623cfaa67606aaa8456dd257b628423f98ec3fa3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 29, 2026.
Transparency logRelease files / sysml_windseeker-0.3.1-py3-none-any.whl
| Download URL | sysml_windseeker-0.3.1-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a19b40c4301b1dd94159db4337e4ac77e20ae2c5a930ac842f9a492ed4523a52
|
|
BLAKE2b-256 checksum How to use checksums |
2bbf6db143a20518d8fd3eb23c7f9ed17e5e5d2f88b19983d55daf51ea24d580
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 29, 2026.
Transparency log