Metadata-Version: 2.4
Name: wolfhece-core
Version: 3.0.0
Summary: Data models of the WOLF toolkit (HECE, University of Liege): arrays, vectors, parameters, 2D simulation files - no GUI, no native library
Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://gitlab.uliege.be/HECE/wolfhece-core
Project-URL: Issues, https://gitlab.uliege.be/HECE/wolfhece-core/-/issues
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Hydrology
Requires-Python: <3.14,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy<3,>=2.1
Requires-Dist: scipy>=1.13
Requires-Dist: shapely>=2.0
Requires-Dist: pyproj>=3.6
Requires-Dist: hece-gdal==3.10.2; sys_platform == "win32"
Requires-Dist: GDAL==3.10.2; sys_platform != "win32"
Requires-Dist: matplotlib>=3.8
Requires-Dist: pandas>=3
Requires-Dist: tqdm
Requires-Dist: pillow
Requires-Dist: requests
Requires-Dist: packaging
Requires-Dist: numba>=0.60
Requires-Dist: triangle
Provides-Extra: gis
Requires-Dist: geopandas>=1.0; extra == "gis"
Requires-Dist: fiona; extra == "gis"
Provides-Extra: mesh3d
Requires-Dist: pyvista; extra == "mesh3d"
Requires-Dist: pygltflib; extra == "mesh3d"
Provides-Extra: dxf
Requires-Dist: ezdxf; extra == "dxf"
Provides-Extra: fft
Requires-Dist: jax; extra == "fft"
Provides-Extra: raster
Requires-Dist: rasterio; extra == "raster"
Provides-Extra: all
Requires-Dist: geopandas>=1.0; extra == "all"
Requires-Dist: fiona; extra == "all"
Requires-Dist: pyvista; extra == "all"
Requires-Dist: pygltflib; extra == "all"
Requires-Dist: ezdxf; extra == "all"
Requires-Dist: jax; extra == "all"
Requires-Dist: rasterio; extra == "all"
Dynamic: license-file

# wolfhece-core

Data models of the WOLF toolkit (HECE, University of Liege): the data-only side of
[wolfhece](https://gitlab.uliege.be/HECE/HECEPython), importable without a GUI toolkit, without
OpenGL and without any native library.

| Package | Content |
| --- | --- |
| `wolfhece_core.arrays` | `WolfArrayModel`, `WolfArrayMBModel`, `WolfArrayMNAPModel`, `header_wolf`, selections, hillshade parameters, eikonal, XYZ files, reprojection |
| `wolfhece_core.vectors` | `wolfvertex`, clouds of vertices, `vectorModel`, `zoneModel`, `ZonesModel`, `TriangulationModel`, attribute tables, illustrations, PBR materials |
| `wolfhece_core.palettes` | `wolfpaletteModel` |
| `wolfhece_core.parameters` | `ParamsModel`, `Wolf_ParamModel`, `Type_Param` |
| `wolfhece_core.sim2d` | 2D CPU simulation files (`prev_sim2DModel`...), boundary-condition types |
| `wolfhece_core.datasets` | download cache (`datadir`) and example datasets (`downloader`) |
| `wolfhece_core.i18n`, `events`, `colors` | translation hook (`_`, `set_translator`), observer pattern, named colors |

`wolfhece` builds its wx/OpenGL classes on these models and re-exports them; `wolfgpu` depends on
this package only.

## Install

GDAL 3.10.2 is pinned. PyPI has no binary wheel of GDAL for Windows, so the core depends there on
`hece-gdal` (the wheels of Christoph Gohlke republished on PyPI by HECE) and on `GDAL` elsewhere. Do not
install the `GDAL` distribution next to `hece-gdal`: both provide `osgeo` and pip does not detect the
conflict. The HECE index `https://wolf.hece.uliege.be/simple/` also serves the same wheel as `GDAL==3.10.2`.

```
pip install wolfhece-core            # models
pip install wolfhece-core[gis]       # + geopandas / fiona (shapefile, geopackage, GeoDataFrame)
pip install wolfhece-core[mesh3d]    # + pyvista / pygltflib (PolyData, glTF)
pip install wolfhece-core[dxf]       # + ezdxf
pip install wolfhece-core[all]
```

Development, next to a checkout of HECEPython:

```
pip install -e . --no-deps --config-settings editable_mode=compat
```

## Version and release

The core follows the version numbering of `wolfhece`: `wolfhece X.Y.Z` depends on
`wolfhece-core X.Y.Z` and both are released together, the core first. The version is declared once
in `pyproject.toml` and mirrored in `wolfhece_core/version.py` (`WolfCoreVersion`, exposed as
`wolfhece_core.__version__`); `tests/test_version.py` checks that they agree.

`release.py` (same flow as `HECEPython/release.py`) syncs the version, builds the wheel, checks it
with pkginfo, uploads it to PyPI (`~/.pypirc` section `[pypi]`) then to the GitLab package registry
(section `[gitlabcore]`, to add to `~/.pypirc` with the project id of wolfhece-core:
`repository = https://gitlab.uliege.be/api/v4/projects/<id>/packages/pypi`), increments the patch
number for the next release and syncs again. Then tag `X.Y.Z` on GitLab and commit the two updated
files. Options: `--no-upload` (build only), `--no-increment`, `--python <exe>`.

## Conventions

- Model classes carry the `Model` suffix (`WolfArrayModel`, `prev_sim2DModel`); the names without
  suffix are the GUI classes of `wolfhece`.
- Companion objects are created through `_make_*` factories that the GUI subclasses override.
- Messages are English; a GUI installs its translator with `wolfhece_core.i18n.set_translator`.
- Nothing here may import wx, OpenGL, `wolf_libs` or any other closed component.

## Layout

The historical module names of wolfhece (`wolf_array`, `PyVertexvectors`, `PyParams`, `mesh2d.wolf2dprev`...)
are not kept here: the core is organised by theme and `wolfhece` keeps the historical names as
re-exports of these modules.

## Origin

Extracted from HECEPython (`wolfhece` 3.0.0) on 13 October 2026, with the history of the files
since their current paths (replayed with `git log --first-parent -p`).

## Licence

Proprietary, University of Liege (HECE) - see `LICENSE`. External contributions require a
contribution agreement.
