Metadata-Version: 2.1
Name: owa-epanet
Version: 2.3.5
Summary: a thin wrapper for epanet hydraulic toolkit
Home-page: https://github.com/OpenWaterAnalytics/epanet-python
Author: Sam Hatchett
Author-email: samhatchett@gmail.com
Description-Content-Type: text/markdown
License-File: LICENSE

# epanet python package

A slender, auto-generated python wrapper around the owa:epanet hydraulic network analysis toolkit. This package uses SWIG and scikit-build to generate python bindings into the C library. The objective of this package is to establish basic python support for the toolkit, rather than present a "pythonic" interface. More abstractions can be built atop this package to further abstract the API, but the set of functions here is meant to (as closely as practical) mirror the well-known and established C API.

Where possible, SWIG has been configured to throw warnings/exceptions instead of using the customary EPANET return integer value for success-checking. Also any output (pointer) parameters from the C API have been re-routed to return values. In these cases, the return tuple from the Python API will contain the values desired.

## Installation
To install with pip:
```shell
pip install owa-epanet
```

Wheels are now provided for most installations, some extra work will be needed if installing from source.


## Building the libraries

__Ensure the EPANET subproject is initialized__ by running `git submodule update --init` (if necessary) and running the following commands (on Windows skip the line `./script/clean.sh`). The following method uses `scikit-build` to invoke `cmake` for compiling and linking the shared libaries, and builds a python wheel.

```
./scripts/clean.sh
python3 setup.py sdist bdist_wheel
```
Test your builds using the following commands.
```
cd test && \
pipenv install ../dist/*.whl && \
pipenv install pytest && \
pipenv run pytest
```

This python library was packaged in the following way:

```
python3 setup.py sdist bdist_wheel
python3 -m twine upload dist/*
```

## Versioning
This package loosely follows EPANET's release version numbers. Its major and minor numbers will correspond to the given EPANET version, but the patch number is independent. This system might change in the future.
