Skip to main content

shipshape

Open-source parametric vessel design and validation library.

Shipshape provides boat-design-independent tools for naval engineering analysis. It is used by Solar Proa but can be applied to any parametric vessel design.

Modules

Module Description Requires FreeCAD
parameter Merge base parameters and compute derived values via a project-supplied plugin No
mass Compute component masses from a FreeCAD design and material properties Yes
buoyancy Find equilibrium pose (sinkage, pitch, roll) using Newton-Raphson iteration Yes
gz Compute the GZ righting-arm curve over a range of heel angles Yes
physics Center-of-gravity and center-of-buoyancy calculations Yes

Installation

pip install shipshape

For modules that require FreeCAD geometry (mass, buoyancy, gz, physics), install FreeCAD via conda-forge:

conda install -c conda-forge freecad

CLI Usage

Each module can be run as a CLI tool via python -m shipshape.<module>.

parameter

Merges boat and configuration JSON files, then calls a project-supplied compute_derived() function to calculate derived values.

PYTHONPATH=. python -m shipshape.parameter \
    --compute myproject.parameter.compute \
    --boat constants/boats/boat.json \
    --configuration constants/configurations/config.json \
    --output artifact/parameters.json

The --compute argument is a dotted module path. The module must export a compute_derived(data: dict) -> dict function.

mass

python -m shipshape.mass \
    --design artifact/boat.design.FCStd \
    --materials constants/material/materials.json \
    --output artifact/boat.mass.json

buoyancy

python -m shipshape.buoyancy \
    --design artifact/boat.design.FCStd \
    --materials constants/material/materials.json \
    --output artifact/boat.buoyancy.json

gz

python -m shipshape.gz \
    --design artifact/boat.design.FCStd \
    --buoyancy artifact/boat.buoyancy.json \
    --output artifact/boat.gz.json \
    --output-png artifact/boat.gz.png

Releasing a new version

  1. Edit pyproject.toml — bump the version field
  2. git add pyproject.toml
  3. git commit -m "Bump version to X.Y.Z"
  4. git push origin main
  5. git tag vX.Y.Z
  6. git push origin vX.Y.Z

Push the commit before the tag so CI has the code when the tag event triggers the PyPI release.

License

Apache 2.0

Metadata

Release files for shipshape 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shipshape 0.10.0
File Size Uploaded
shipshape-0.10.0.tar.gz 29.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shipshape 0.10.0
File Interpreter ABI Platform
shipshape-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 69.4 kB

Release files / shipshape-0.10.0.tar.gz

Download URL shipshape-0.10.0.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bb479703a2167eb642dab880a078f72fc2077ee1cb0c7b7d61f93e3873be80ed
BLAKE2b-256 checksum
How to use checksums
d9e1bd85630d9871966abd7d39f94940d53c7861f8a88a11e432c44006034f5e
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 Feb 18, 2026.

Transparency log

Release files / shipshape-0.10.0-py3-none-any.whl

Download URL shipshape-0.10.0-py3-none-any.whl
Size 39.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
96d13cb05e5a41c338bac12c0eb74a7c8fc7a3c804205889ec63dfbdf068fd9c
BLAKE2b-256 checksum
How to use checksums
6e6adadf7641b5a8dfef50ad1937197858a65e6a36a2fa65bc836034fe283b55
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 Feb 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page