Skip to main content

sailboat-hydro

Zero-Network Python library for FairHelm sailboat hydrodynamic ratios and the Open European & Nordic Sailboat Benchmark (93 models).

Formulas and the JSON snapshot ship inside the wheel. Calls run locally. There is no HTTP to api.fairhelm.com, no Postgres, and no CapEx / listing decoder.

Link URL
Methodology (formulas) https://fairhelm.com/en/yachts/formulas/
Open data / OpenAPI https://fairhelm.com/open-data/yacht-specs/v1/openapi.yaml
Benchmark DOI https://doi.org/10.5281/zenodo.23374417
Sibling MCP (npm) https://www.npmjs.com/package/@nareyko/mcp-yacht-specs
Listing review (€49) https://fairhelm.com/en/yachts/services/listing-review/

Install

pip install sailboat-hydro

From a local checkout of this monorepo package:

pip install -e "packages/sailboat-hydro[dev]"

Quick start

from sailboat_hydro import (
    hull_speed_kn,
    capsize_screening,
    displacement_length_ratio,
    comfort_ratio,
    sail_area_displacement,
    load_nordic_benchmark,
)

print(hull_speed_kn(9.35))                 # ~7.43 kn
print(capsize_screening(3.55, 7500))       # ~1.829
print(displacement_length_ratio(7500, 9.35))
print(
    comfort_ratio(
        displacement_kg=7500,
        lwl_m=9.35,
        loa_m=10.87,
        beam_m=3.55,
    )
)

bench = load_nordic_benchmark()            # 93 models, local JSON only
hr36 = bench.get("hallberg-rassy", "hr36")
assert hr36 is not None
print(hr36.name, hr36.hull_speed_kn, hr36.canonical_model_url)
print(bench.zenodo_doi)

API

Function Meaning
hull_speed_kn(lwl_m) Theoretical hull speed (kn)
capsize_screening(beam_m, displacement_kg) CSF
displacement_length_ratio(disp_kg, lwl_m) D/L
comfort_ratio(...) Brewer comfort ratio
sail_area_displacement(sa_m2, disp_kg) SA/D
load_nordic_benchmark() Bundled 93-model Nordic/European benchmark

Formula constants match @nareyko/mcp-yacht-specs (packages/mcp-yacht-specs/src/formulas.ts) and the FairHelm frontend formula SSOT. Refresh the bundled JSON with:

python packages/sailboat-hydro/scripts/sync_benchmark.py

Citation

Please cite FairHelm formulas and the Zenodo deposit:

@misc{fairhelm_sailboat_benchmark_2026,
  title        = {Open European \& Nordic Sailboat Benchmark (93 Models)},
  author       = {Nareyko, Vadim and FairHelm},
  year         = {2026},
  doi          = {10.5281/zenodo.23374417},
  url          = {https://doi.org/10.5281/zenodo.23374417},
  howpublished = {FairHelm / CERN Zenodo},
  note         = {Methodology: https://fairhelm.com/en/yachts/formulas/}
}

Also see CITATION.cff.

Develop / test

cd packages/sailboat-hydro
python -m pip install -e ".[dev]"
ruff check .
mypy src
pytest -q

Publish (owner)

See PUBLISH.md. Build artifacts land in dist/.

License

MIT. See LICENSE.

Metadata

Release files for sailboat-hydro 1.0.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 sailboat-hydro 1.0.0
File Size Uploaded Provenance Actions
sailboat_hydro-1.0.0.tar.gz 15.6 kB Without provenance Details for sailboat_hydro-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sailboat-hydro 1.0.0
File Interpreter ABI Platform Actions
sailboat_hydro-1.0.0-py3-none-any.whl Python 3 none any Details for sailboat_hydro-1.0.0-py3-none-any.whl

Total release size: 30.0 kB

Release files / sailboat_hydro-1.0.0.tar.gz

Download URL sailboat_hydro-1.0.0.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
141041ac8afe19d424d7eb76808430c47f6d112b2b18a4b7e7a49be14e21b4ea
BLAKE2b-256 checksum
How to use checksums
0e51dc840d4252e546de26c7b960eda6145f9bae216d4742346028daf9543de6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / sailboat_hydro-1.0.0-py3-none-any.whl

Download URL sailboat_hydro-1.0.0-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49c34c1658d6c281d71c02cc42201bd79daed7c95382f5a1fac9458cb7a22bf0
BLAKE2b-256 checksum
How to use checksums
f2135f7e63815ecad539c034962075af6a6373053c414f81ab660709e80d3cdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for sailboat-hydro 1.0.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

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