mountain-waves / pyproject.toml
snesbitt's picture
Mountain Waves — deploy to Hugging Face Space
7c3bfa9
Raw
History Blame Contribute Delete
2.14 kB
[build-system]
requires = ["maturin>=1.7,<2.0"]
build-backend = "maturin"
[project]
name = "mountain_waves"
version = "0.1.0"
description = "Interactive 2-D mountain-wave model with Rust core and Dash front end. Port of Robert E. Hart's 1995 MATLAB mountain-wave tool."
readme = "README.md"
requires-python = ">=3.9"
authors = [{ name = "Mountain Waves port (Rust + Dash)" }]
maintainers = [{ name = "Mountain Waves port (Rust + Dash)" }]
license = { text = "MIT" }
keywords = ["meteorology", "mountain-waves", "atmospheric-science", "taylor-goldstein", "scorer-parameter"]
dependencies = [
"numpy>=1.23",
"scipy>=1.10",
"dash>=2.16",
"plotly>=5.20",
# HRRR profile fetcher (Profile tab "Initialize from HRRR").
# cfgrib needs the eccodes C library. Rather than requiring a system
# install (brew install eccodes / apt install libeccodes-dev) we pull
# it in from PyPI only. Current story (verified on PyPI, 2026-04):
# - `cfgrib` depends on `eccodes` (Python CFFI bindings, pure-Python
# wheel — no binary).
# - `eccodes` depends on `findlibs`, which looks for `libeccodes` in
# an installed Python package named `eccodeslib` first.
# - `eccodeslib` is ECMWF's new official binary-wheel package
# (macOS 13+ arm64/x86_64, manylinux_2_28 x86_64/aarch64, cp310..cp314).
# - `ecmwflibs` is the older bundle; stale since 2024 and missing
# cp312+. We keep it only as a Windows fallback since `eccodeslib`
# has no Windows wheels.
# Result: `uv sync` / `pip install -e .` is enough on macOS and Linux.
"boto3>=1.28",
"xarray>=2023.1",
"cfgrib>=0.9.10",
"eccodes>=2.37",
"eccodeslib>=2.46 ; sys_platform != 'win32'",
"ecmwflibs>=0.6 ; sys_platform == 'win32'",
]
[project.urls]
"Original model (Hart 1995)" = "https://moe.met.fsu.edu/~rhart/mtnwave.html"
[project.optional-dependencies]
dev = ["maturin>=1.7", "pytest>=7"]
[tool.maturin]
# Mixed layout: Rust crate at project root, Python package under python/.
python-source = "python"
module-name = "mountain_waves._core"
features = ["pyo3/extension-module"]