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
- Edit
pyproject.toml— bump theversionfield git add pyproject.tomlgit commit -m "Bump version to X.Y.Z"git push origin maingit tag vX.Y.Zgit 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)
| File | Size | Uploaded | |
|---|---|---|---|
| shipshape-0.10.0.tar.gz | 29.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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