[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"]