Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
4d782c3
Configuring OpenMP build
michaeltryby May 19, 2021
6ed853a
Adding linux to wheel build
michaeltryby May 19, 2021
2f5d15b
Moving requirements files
michaeltryby May 20, 2021
95e14d3
Make build-wheels.sh executable
michaeltryby May 20, 2021
3fbe5ac
Pinning build and test requirements
michaeltryby May 20, 2021
7633009
Update solver, fix dependency
michaeltryby May 20, 2021
d27ee57
Making ninja a sys requirement on Mac OS
michaeltryby May 20, 2021
a3cd394
Pointing swmm-solver submodule to master
michaeltryby Jun 7, 2021
c6d520a
Adding nrtest plugin to build; Bumping version
michaeltryby Jun 7, 2021
09d1c63
Remove nrtest-swmm plugin from build
michaeltryby Jun 7, 2021
9be76ab
Fussing
michaeltryby Jun 7, 2021
298beac
Fixing linux build
michaeltryby Jun 7, 2021
293cc9e
Fix problem with wheel upload on linux
michaeltryby Jun 7, 2021
d13424f
Fix problem with wheel upload on linux
michaeltryby Jun 7, 2021
1d8e9a6
Merge pull request #73 from OpenWaterAnalytics/hotfix-interim
michaeltryby Jun 8, 2021
db12922
Resolving merge conflicts
michaeltryby Jun 8, 2021
22daa1e
Merge pull request #77 from OpenWaterAnalytics/dev-merge
michaeltryby Jun 9, 2021
55727a8
Fix add_dll_directory issue when using conda
Jul 20, 2021
779dff6
change output_enum to shared_enum in nrtest
Jul 20, 2021
cfd23dc
Merge pull request #80 from karosc/dev
michaeltryby Jul 20, 2021
a99241a
Add nrtest-swmm to wheel build
michaeltryby Jul 20, 2021
3a47f19
Merge pull request #81 from OpenWaterAnalytics/dev-workflow
michaeltryby Jul 23, 2021
059a25d
Add compare results when lengths differ
michaeltryby Jul 28, 2021
9fc5f2e
Truncate elements with result lengths are unequal
michaeltryby Sep 3, 2021
d31395d
update to latestest SWMM
Jan 6, 2022
d6f1abf
fix swig error by
Jan 6, 2022
605766c
fix solver_rename.i
Jan 6, 2022
2e5973a
fix error with swmm_getSemVersion&swmm_getBuildId
Jan 6, 2022
d994036
add new pollutant treatment to shared_enum
Jan 6, 2022
3547795
Add system get_system_attribute tester
Jan 7, 2022
9b5ca78
Address comments
Jan 7, 2022
10f2d5b
add docstrings for pollutant setters
Feb 8, 2022
04f9a83
add tests for pollutant setters
Feb 8, 2022
54abe6c
update SWMM
Feb 8, 2022
d235a6f
update authors
Feb 8, 2022
f7c8459
Versioning
Feb 8, 2022
2e4f638
Add pollutant tests
bemason Apr 4, 2022
b3ee118
Updated node setter pollutant description in solver_docs.i
bemason Apr 5, 2022
e1b3755
Merge branch 'dev' of https://github.com/bemason/swmm-python into dev
bemason Apr 5, 2022
e2e0dfe
Update test_solver.py
bemason Apr 5, 2022
1450374
update swmm-solver to latest develop
Apr 14, 2022
246b27f
Merge branch 'dev' of https://github.com/bemason/swmm-python into bem…
Apr 14, 2022
c129f18
Merge branch 'dev' of https://github.com/bemason/swmm-python into dev
Apr 14, 2022
7ae4411
fix error in swmm_setNodePollut docstring
Apr 14, 2022
2e7ee86
Update windows action runner and python support
Apr 14, 2022
40c80d8
Debug swmm_get_version()
Apr 25, 2022
34f504e
Merge pull request #94 from karosc/dev
abhiramm7 May 21, 2022
e95275b
updataing submodule to master branch
abhiramm7 May 21, 2022
cb7c763
update linux to latest image in github workflow
abhiramm7 May 21, 2022
802471b
update linux to 20.04
abhiramm7 May 21, 2022
4a46dee
update development status to prod
Jul 2, 2022
ccc4b5f
update conda check to be inline with python 3.7 and greater
Jul 2, 2022
4f136a5
conda build test for windows and mac
Jul 2, 2022
20f77a3
remove venv
Jul 2, 2022
189118c
force python3 on conda check
Jul 2, 2022
da183bc
python3 conda check
Jul 2, 2022
c3a431a
test path
Jul 2, 2022
e4e8a5a
test path with right location
Jul 2, 2022
ab002f8
right path
Jul 2, 2022
a0b7f01
right path for test
Jul 2, 2022
ed63a87
user path
Jul 2, 2022
cac30a1
point to right conda python
Jul 2, 2022
bcd6655
add default shell
Jul 15, 2022
0ebd04e
update conda env install
Jul 15, 2022
cd586c6
add conda forge
Jul 15, 2022
ce9b1c2
3.8 version patch
Jul 15, 2022
faf72b8
Merge pull request #96 from OpenWaterAnalytics/release_version
abhiramm7 Jul 15, 2022
0d91bf3
renaming conda test name
Jul 15, 2022
da1b467
updates swmm-solver to 7e7e6da799e4c8f1fd51499cebe47f82f80c67f6
Jul 21, 2022
1a23528
Updates maintainer, and aenum
michaeltryby Jul 22, 2022
443c834
Merge pull request #99 from OpenWaterAnalytics/hotfix
abhiramm7 Jul 22, 2022
a44fe0a
Merge pull request #100 from OpenWaterAnalytics/master
michaeltryby Jul 22, 2022
ba084e0
Bump numpy from 1.21.5 to 1.22.0 in /swmm-toolkit
dependabot[bot] Jul 22, 2022
487d559
Merge branch 'dev' of https://github.com/OpenWaterAnalytics/swmm-pyth…
michaeltryby Jul 22, 2022
c1939b9
Merge pull request #101 from OpenWaterAnalytics/dev-nrtest
michaeltryby Jul 22, 2022
b0a8d4f
Update numpy, format requirements files
michaeltryby Jul 22, 2022
ce02b57
Add aenum
michaeltryby Jul 22, 2022
f12d317
Merge pull request #98 from OpenWaterAnalytics/dependabot/pip/swmm-to…
michaeltryby Jul 22, 2022
3226514
Separation of concerns
michaeltryby Jul 24, 2022
4ed69a5
Tweak trigger
michaeltryby Jul 24, 2022
bb496f1
Debugging trigger
michaeltryby Jul 24, 2022
be0c360
Create conda-test.yml
michaeltryby Jul 24, 2022
5a4c77b
Debug trigger
michaeltryby Jul 24, 2022
0ec14dc
Merge branch 'dev' into dev-condatest
michaeltryby Jul 24, 2022
8c30f8d
Merge pull request #102 from OpenWaterAnalytics/dev-condatest
michaeltryby Jul 24, 2022
1c4feca
Config conda test to use pip
michaeltryby Jul 24, 2022
74042b5
build wheels for python 3.11
karosc Oct 30, 2022
8478a39
update numpy test version for python 3.11
karosc Oct 30, 2022
1b9dfdb
explicitly use latest manylinux docker
karosc Nov 1, 2022
992b31f
pin swig to 4.0.2
karosc Nov 1, 2022
3492401
update setup.py classifiers
karosc Nov 1, 2022
3fab978
Merge pull request #105 from karosc/dev
abhiramm7 Dec 20, 2022
1e167f1
Bump wheel from 0.33.6 to 0.38.1 in /swmm-toolkit
dependabot[bot] Dec 26, 2022
b91afd9
Merge pull request #106 from OpenWaterAnalytics/dependabot/pip/swmm-t…
karosc Jan 25, 2023
8d7ca3e
Bump setuptools from 41.4.0 to 65.5.1 in /swmm-toolkit
dependabot[bot] Jan 25, 2023
ea16a02
Merge pull request #107 from OpenWaterAnalytics/dependabot/pip/swmm-t…
karosc Jan 25, 2023
37ce646
set release version
karosc Jan 25, 2023
777701d
Merge pull request #108 from OpenWaterAnalytics/dev
karosc Jan 25, 2023
607fdf5
update deprecated macos actions runner
karosc Jan 25, 2023
730429a
update OWA SWMM to v5.1.15
karosc Feb 24, 2023
6cdf05f
Merge pull request #110 from OpenWaterAnalytics/dev
karosc Feb 24, 2023
604adc5
set release version
karosc Feb 24, 2023
1a096d5
update OWA SWMM to v5.2.0 and set release version
karosc Mar 28, 2023
89a2530
update OWA SWMM to v5.2.1 and set release version
karosc Mar 28, 2023
1199894
update OWA SWMM to v5.2.2 and set release version
karosc Mar 28, 2023
384ed3f
update OWA SWMM to v5.2.3
karosc Mar 28, 2023
71803af
allow user specified cmake args
karosc Jun 6, 2023
dc666a6
Bump numpy from 1.21.6 to 1.22.0 in /swmm-toolkit
dependabot[bot] Jun 6, 2023
6b9c4f8
set release version
karosc Jun 6, 2023
7d00e9d
debug custom cmake args and set release version
karosc Jun 6, 2023
1baff8b
Merge pull request #115 from pyswmm/dependabot/pip/swmm-toolkit/numpy…
bemcdonnell Aug 26, 2023
cb80f55
add pyproject.toml
karosc Sep 1, 2023
a3776af
Add setup tools hack so `python -m build .` and `pip install .` just …
karosc Sep 2, 2023
85bc57c
set package dir depending on if cmake is run
karosc Sep 2, 2023
7be4f04
update numpy version for macos python 3.11 testing
karosc Sep 2, 2023
abbe407
Merge pull request #117 from pyswmm/dev_pyproject.toml
karosc Sep 2, 2023
0d50ac2
add swmm_hotstart function and unit test
karosc Sep 3, 2023
20c2f63
update swmm_solver to OWA_v5.2.4 tag
karosc Sep 5, 2023
a441492
init cross compile workflow
karosc Sep 5, 2023
856b4d8
debug unit test workflow
karosc Sep 5, 2023
1b76ba6
add workflow dispatch event to build_wheel
karosc Sep 5, 2023
bff9739
update unit test workflow name
karosc Sep 5, 2023
4ecea2e
Merge pull request #118 from pyswmm/dev_hotstart
karosc Sep 5, 2023
ca79409
fix build wheel workflow trigger
karosc Sep 5, 2023
1899d72
set release version
karosc Sep 5, 2023
2bcb9b0
debug build wheel workflow
karosc Sep 5, 2023
0aafcbf
debug build wheel workflow
karosc Sep 5, 2023
7527636
attempt to parallelize build wheel
karosc Sep 5, 2023
a352ade
debug new workflows
karosc Sep 5, 2023
3fb9b17
Merge pull request #119 from pyswmm/dev
karosc Sep 5, 2023
a1372a4
restore building openmp from source on apple
karosc Sep 10, 2023
8b45bf4
update submodule to support OpenMP linkage on MacOS
karosc Sep 11, 2023
691e9e9
cleanup openmp.cmake
karosc Sep 11, 2023
2adbba1
Merge pull request #122 from pyswmm/dev_arm64_omp
karosc Sep 13, 2023
3c5a2ec
add THREADS to SimSetting enum
karosc Sep 13, 2023
2a2898a
include llvm-openmp apche license with distribution
karosc Sep 13, 2023
ec7b274
Merge pull request #123 from pyswmm/dev_omp_license
karosc Sep 13, 2023
0175443
set release version
karosc Sep 13, 2023
b58c3f3
add ninja to build requirements
karosc Sep 26, 2023
b2e8b38
set release version
karosc Sep 26, 2023
82e23b3
install ninja from pip instead of brew
karosc Sep 27, 2023
391c66d
Merge pull request #125 from pyswmm/dev_build_macos
karosc Sep 27, 2023
6b2f745
Adding PY3.12 Support to build
bemcdonnell Nov 27, 2023
d0fc532
Merge pull request #128 from pyswmm/py312_support
bemcdonnell Nov 27, 2023
a35ae11
bumping version v0.15.3
bemcdonnell Nov 27, 2023
93242a0
Updated cibuildwheel and bumped cmakelists version number
bemcdonnell Nov 27, 2023
cbe36fc
Update test-requirements for 3.12 lacking distutils
bemcdonnell Nov 27, 2023
e2e25c3
Fighting the build process
bemcdonnell Nov 27, 2023
63b6f56
Merge pull request #129 from pyswmm/dev
bemcdonnell Nov 27, 2023
b92a146
Added statement to check if symbolic_name already exists in shared_en…
Mar 6, 2024
f044107
Merge pull request #131 from stroutm/dev
bemcdonnell Apr 12, 2024
4b28a7e
bumping version v0.15.4
Apr 12, 2024
c151193
fix: update cibuildwheel
karosc Apr 12, 2024
1f5b004
fix pipeline: remove system swig before building wheel
karosc Apr 12, 2024
5dd041f
fix: debug actions
karosc Apr 12, 2024
3f24358
fix: debug actions
karosc Apr 12, 2024
0d580c2
fix: debug cross build wheel
karosc Apr 12, 2024
3fb565d
Merge pull request #132 from pyswmm/dev
karosc Apr 12, 2024
11f60fe
bump version to v0.15.5
karosc Apr 17, 2024
4ca71f7
Merge pull request #133 from pyswmm/dev
karosc Apr 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions .github/workflows/build_wheel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: Build Wheels

# Cross compile wheels only on main branch and tags
on:
pull_request:
branches:
- master
push:
branches:
- master
tags:
- v*
workflow_dispatch:

jobs:
build_nrtest_plugin:
name: Build nrtest-swmm plugin
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./nrtest-swmm

steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: true

- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.7

- name: Build wheel
run: |
pip install wheel
python setup.py bdist_wheel
- uses: actions/upload-artifact@v3
with:
path: nrtest-swmm/dist/*.whl



build_wheels:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-2022, macos-12]
pyver: [cp38, cp39, cp310, cp311, cp312]

steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: true

- name: Build wheels
uses: pypa/[email protected]
with:
package-dir: ./swmm-toolkit
env:
CIBW_TEST_COMMAND: "pytest {package}/tests"
CIBW_BEFORE_TEST: pip install -r {package}/test-requirements.txt
# mac needs ninja to build
CIBW_BEFORE_BUILD_MACOS: brew install ninja
# remove system swig (cmake bug doesn't respect python venv)
# https://github.com/swig/swig/issues/2481#issuecomment-1949573105
CIBW_BEFORE_BUILD_LINUX: rm -f $(which swig) && rm -f $(which swig4.0)
# configure cibuildwheel to build native archs ('auto'), and some emulated ones
CIBW_ARCHS_LINUX: x86_64
CIBW_ARCHS_WINDOWS: AMD64
CIBW_ARCHS_MACOS: x86_64
# only build current supported python: https://devguide.python.org/versions/
# don't build pypy or musllinux to save build time. TODO: find a good way to support those archs
CIBW_BUILD: ${{matrix.pyver}}-*
CIBW_SKIP: cp36-* cp37-* pp* *-musllinux*
# Will avoid testing on emulated architectures
# Skip trying to test arm64 builds on Intel Macs
CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x} *-macosx_arm64 *-macosx_universal2:arm64"
CIBW_BUILD_VERBOSITY: 1

- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl

build_cross_wheels:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest,macos-12]
pyver: [cp38, cp39, cp310, cp311, cp312]

steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: true

- name: Set up QEMU
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v2
with:
platforms: all

- name: Build wheels
uses: pypa/[email protected]
with:
package-dir: ./swmm-toolkit
env:
# remove system swig (cmake bug doesn't respect python venv)
# https://github.com/swig/swig/issues/2481#issuecomment-1949573105
CIBW_BEFORE_BUILD_LINUX: rm -f $(which swig) && rm -f $(which swig4.0)
# configure cibuildwheel to build native archs ('auto'), and some emulated ones
CIBW_ARCHS_LINUX: aarch64
CIBW_ARCHS_MACOS: arm64
# only build current supported python: https://devguide.python.org/versions/
# don't build pypy or musllinux to save build time. TODO: find a good way to support those archs
CIBW_BUILD: ${{matrix.pyver}}-*
CIBW_SKIP: cp36-* cp37-* pp* *-musllinux*
CIBW_BUILD_VERBOSITY: 1

- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
86 changes: 0 additions & 86 deletions .github/workflows/python-package.yml

This file was deleted.

63 changes: 63 additions & 0 deletions .github/workflows/unit_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Unit Test

on:
push:
branches-ignore:
- 'master'
tags-ignore:
- v*
pull_request:
branches-ignore:
- 'master'

jobs:
build_and_test:
name: Build and test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ./swmm-toolkit

strategy:
fail-fast: false
matrix:
os: [windows-2022, macos-12, ubuntu-latest]
include:
- os: windows-2022
sys_pkgs: choco install swig
activate: ./build-env/Scripts/activate

- os: macos-12
sys_pkgs: brew install swig ninja
activate: source ./build-env/bin/activate

- os: ubuntu-latest
activate: source ./build-env/bin/activate

steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: true

- name: Install Python
uses: actions/setup-python@v4
with:
python-version: "3.11"

- name: Install required system packages
run: ${{matrix.sys_pkgs}}

- name: Build wheel in virtual env
run: |
python -m venv --clear ./build-env
${{matrix.activate}}
python -m pip install -r build-requirements.txt
python setup.py bdist_wheel
deactivate

- name: Test wheel
run: |
pip install -r test-requirements.txt
pip install --no-index --find-links=./dist swmm_toolkit
pytest
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "swmm-toolkit/swmm-solver"]
path = swmm-toolkit/swmm-solver
url = https://github.com/OpenWaterAnalytics/Stormwater-Management-Model.git
branch = swig
branch = master
14 changes: 7 additions & 7 deletions nrtest-swmm/nrtest_swmm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
__credits__ = "Colleen Barr, Maurizio Cingi, Mark Gray, David Hall, Bryant McDonnell"
__license__ = "CC0 1.0 Universal"

__version__ = "0.6.0"
__date__ = "May 8, 2020"
__version__ = "0.7.0"
__date__ = "Jul 28, 2021"

__maintainer__ = "Michael E. Tryby"
__email__ = "[email protected]"
Expand Down Expand Up @@ -65,15 +65,15 @@ def swmm_allclose_compare(path_test, path_ref, rtol, atol):
for (test, ref) in zip(ordr.output_generator(path_test),
ordr.output_generator(path_ref)):

if len(test[0]) != len(ref[0]):
raise ValueError('Inconsistent lengths')
# Compare arrays when lengths are unequal by truncating extra elements
length = min(len(test[0]), len(ref[0]))

# Skip over results if they are equal
if (np.array_equal(test[0], ref[0])):
# Skip over results if they are equal to optimize performance
if (np.array_equal(test[0][:length], ref[0][:length])):
continue

else:
np.testing.assert_allclose(test[0], ref[0], rtol, atol)
np.testing.assert_allclose(test[0][:length], ref[0][:length], rtol, atol)

return True

Expand Down
14 changes: 7 additions & 7 deletions nrtest-swmm/nrtest_swmm/output_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from itertools import islice

# project import
from swmm.toolkit import output, output_enum
from swmm.toolkit import output, shared_enum


def output_generator(path_ref):
Expand All @@ -40,7 +40,7 @@ def output_generator(path_ref):
with OutputReader(path_ref) as reader:

for period_index in range(0, reader.report_periods()):
for element_type in islice(output_enum.ElementType, 4):
for element_type in islice(shared_enum.ElementType, 4):
for element_index in range(0, reader.element_count(element_type)):

yield (reader.element_result(element_type, period_index, element_index),
Expand All @@ -57,10 +57,10 @@ def __init__(self, filename):
self.handle = None
self.count = None
self.get_element_result = {
output_enum.ElementType.SUBCATCH: output.get_subcatch_result,
output_enum.ElementType.NODE: output.get_node_result,
output_enum.ElementType.LINK: output.get_link_result,
output_enum.ElementType.SYSTEM: output.get_system_result
shared_enum.ElementType.SUBCATCH: output.get_subcatch_result,
shared_enum.ElementType.NODE: output.get_node_result,
shared_enum.ElementType.LINK: output.get_link_result,
shared_enum.ElementType.SYSTEM: output.get_system_result
}

def __enter__(self):
Expand All @@ -73,7 +73,7 @@ def __exit__(self, type, value, traceback):
output.close(self.handle)

def report_periods(self):
return output.get_times(self.handle, output_enum.Time.NUM_PERIODS)
return output.get_times(self.handle, shared_enum.Time.NUM_PERIODS)

def element_count(self, element_type):
return self.count[element_type]
Expand Down
8 changes: 4 additions & 4 deletions nrtest-swmm/scripts/report-diff
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@ def _binary_diff(path_test, path_ref, min_cdd):
for (test, ref) in zip(ordr.output_generator(path_test),
ordr.output_generator(path_ref)):

if len(test[0]) != len(ref[0]):
raise ValueError('Inconsistent lengths')
# Compare arrays when lengths are unequal by truncating extra elements
length = min(len(test[0]), len(ref[0]))

# Skip over arrays that are equal
if np.array_equal(test[0], ref[0]):
if np.array_equal(test[0][:length], ref[0][:length]):
continue
else:
lre = _log_relative_error(test[0], ref[0])
lre = _log_relative_error(test[0][:length], ref[0][:length])
idx = np.unravel_index(np.argmin(lre), lre.shape)

if lre[idx] < min_cdd:
Expand Down
Loading
Loading