Skip to main content

SysML v2 dependency analysis, notebook generation, execution, and view extraction tool

Project description

Windseeker

Python SysML CLI Status PyPI Coverage Docstrings Security Audit

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 .sysml files
  • Extracts top-level packages only
  • Detects import dependencies
  • 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

Notebook Execution

  • Executes the generated notebook programmatically
  • Supports:
    • nbclient (preferred)
    • jupyter nbconvert --execute (fallback)
  • Detects errors via:
    • Jupyter error outputs
    • SysML kernel stderr (ERROR, Exception, Traceback)
  • 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

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

sysml_windseeker-0.3.1.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

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

sysml_windseeker-0.3.1-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file sysml_windseeker-0.3.1.tar.gz.

File metadata

  • Download URL: sysml_windseeker-0.3.1.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sysml_windseeker-0.3.1.tar.gz
Algorithm Hash digest
SHA256 f8be16c7729c8eb9d378887abe8c7887bb3f8d0005064d0c3fce9bba3164ceb6
MD5 39a379506c0ad62c247741a3b8787a28
BLAKE2b-256 0016f1f647bf0ae0dd2c4fca623cfaa67606aaa8456dd257b628423f98ec3fa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sysml_windseeker-0.3.1.tar.gz:

Publisher: publish.yml on Westfall-io/windseeker

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

File details

Details for the file sysml_windseeker-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sysml_windseeker-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a19b40c4301b1dd94159db4337e4ac77e20ae2c5a930ac842f9a492ed4523a52
MD5 90fa9383a406e0714ff1f7914b524600
BLAKE2b-256 2bbf6db143a20518d8fd3eb23c7f9ed17e5e5d2f88b19983d55daf51ea24d580

See more details on using hashes here.

Provenance

The following attestation bundles were made for sysml_windseeker-0.3.1-py3-none-any.whl:

Publisher: publish.yml on Westfall-io/windseeker

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