{"id":6642,"name":"Surface water network","description":"A Python package to create and analyze surface water networks.","url":"https://github.com/mwtoews/surface-water-network","last_synced_at":"2026-05-12T16:02:22.318Z","repository":{"id":37987829,"uuid":"187739645","full_name":"mwtoews/surface-water-network","owner":"mwtoews","description":"A Python package to create and analyze surface water networks.","archived":false,"fork":false,"pushed_at":"2026-04-06T17:15:12.000Z","size":11452,"stargazers_count":33,"open_issues_count":18,"forks_count":6,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-04-14T02:13:30.190Z","etag":null,"topics":["hydrology","modflow","python","surface-water"],"latest_commit_sha":null,"homepage":"https://mwtoews.github.io/surface-water-network/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mwtoews.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-21T01:32:38.000Z","updated_at":"2026-03-20T05:49:37.000Z","dependencies_parsed_at":"2023-09-30T11:31:04.541Z","dependency_job_id":"e0ff5dea-f047-425d-b1c1-f184f18e2f89","html_url":"https://github.com/mwtoews/surface-water-network","commit_stats":{"total_commits":310,"total_committers":5,"mean_commits":62.0,"dds":"0.11290322580645162","last_synced_commit":"9665610873de7098044712f5b3a56f7ad494d6eb"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/mwtoews/surface-water-network","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwtoews","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/sbom","scorecard":{"id":670131,"data":{"date":"2025-08-11","repo":{"name":"github.com/mwtoews/surface-water-network","commit":"9deaf208521b169aef9181fe1394dd154f4f8ed3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/23 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/pages.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/pages.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pages.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:69: update your workflow using https://app.stepsecurity.io/secureworkflow/mwtoews/surface-water-network/tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/pages.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/pages.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:51","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:54","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:65","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   7 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T19:41:26.519Z","repository_id":37987829,"created_at":"2025-08-21T19:41:26.519Z","updated_at":"2025-08-21T19:41:26.519Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32123604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"mwtoews","name":"Mike Taves","uuid":"895458","kind":"user","description":"Hydrogeologist, numerical modeller, GIS guru.\r\n\r\nLast name is also Toews.","email":"","website":"https://mwtoews.github.io/","location":"Wellington, New Zealand","twitter":"mwtoews","company":"GNS Science","icon_url":"https://avatars.githubusercontent.com/u/895458?u=1ee0b55b4f444e663e213b9788ca2315342aae36\u0026v=4","repositories_count":139,"last_synced_at":"2024-06-11T15:38:02.832Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mwtoews","funding_links":[],"total_stars":56,"followers":139,"following":49,"created_at":"2022-11-03T08:05:19.622Z","updated_at":"2024-06-11T15:38:08.600Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwtoews","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwtoews/repositories"},"packages":[{"id":2936506,"name":"surface-water-network","ecosystem":"pypi","description":"Surface water network","homepage":null,"licenses":"BSD 3-Clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/mwtoews/surface-water-network","keywords_array":["MODFLOW","flopy","groundwater","surface water"],"namespace":null,"versions_count":8,"first_release_published_at":"2021-08-06T03:14:14.000Z","latest_release_published_at":"2026-02-17T03:25:14.000Z","latest_release_number":"0.9","last_synced_at":"2026-05-08T14:02:28.331Z","created_at":"2022-04-10T12:45:12.523Z","updated_at":"2026-05-08T14:02:28.332Z","registry_url":"https://pypi.org/project/surface-water-network/","install_command":"pip install surface-water-network --index-url https://pypi.org/simple","documentation_url":"https://mwtoews.github.io/surface-water-network/","metadata":{"funding":null,"documentation":"https://mwtoews.github.io/surface-water-network/","classifiers":["Development Status :: 4 - Beta","Intended Audience :: Science/Research","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3 :: Only","Topic :: Scientific/Engineering :: Hydrology"],"normalized_name":"surface-water-network","project_status":null},"repo_metadata":{"id":37987829,"uuid":"187739645","full_name":"mwtoews/surface-water-network","owner":"mwtoews","description":"A Python package to create and analyze surface water networks.","archived":false,"fork":false,"pushed_at":"2024-05-27T00:57:26.000Z","size":7358,"stargazers_count":26,"open_issues_count":10,"forks_count":7,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-06-11T17:06:08.534Z","etag":null,"topics":["hydrology","modflow","python","surface-water"],"latest_commit_sha":null,"homepage":"https://mwtoews.github.io/surface-water-network/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mwtoews.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-21T01:32:38.000Z","updated_at":"2024-06-13T05:43:39.735Z","dependencies_parsed_at":"2023-09-30T11:31:04.541Z","dependency_job_id":"904ec108-eb24-4d17-8df1-37b0bfdc521e","html_url":"https://github.com/mwtoews/surface-water-network","commit_stats":{"total_commits":300,"total_committers":5,"mean_commits":60.0,"dds":"0.10999999999999999","last_synced_commit":"0370215df309702c90db6ccd62378196d2a235e4"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwtoews","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":215457828,"owners_count":15882156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"mwtoews","name":"Mike Taves","uuid":"895458","kind":"user","description":"Hydrogeologist, numerical modeller, GIS guru.\r\n\r\nLast name is also Toews.","email":"","website":"https://mwtoews.github.io/","location":"Wellington, New Zealand","twitter":"mwtoews","company":"GNS Science","icon_url":"https://avatars.githubusercontent.com/u/895458?u=1ee0b55b4f444e663e213b9788ca2315342aae36\u0026v=4","repositories_count":139,"last_synced_at":"2024-06-11T15:38:02.832Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mwtoews","funding_links":[],"total_stars":56,"followers":139,"following":49,"created_at":"2022-11-03T08:05:19.622Z","updated_at":"2024-06-11T15:38:08.600Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwtoews","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwtoews/repositories"},"tags":[{"name":"0.7","sha":"b0231e95949d4b003cebda87ec2f84449cca442b","kind":"commit","published_at":"2023-12-06T20:05:05.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.7","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.7/manifests"},{"name":"0.6","sha":"01fb4ed7fb3c4fdbcf1765b40ea5b866a4600014","kind":"commit","published_at":"2023-05-25T00:23:29.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.6","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.6/manifests"},{"name":"0.5","sha":"37bc1b937481440267c4a1efd90e4f8dcd155beb","kind":"commit","published_at":"2022-07-20T08:59:59.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.5","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.5/manifests"},{"name":"0.4","sha":"bb643bc7d16a4401bdee39202c915fe6a214a43c","kind":"commit","published_at":"2021-10-20T03:26:53.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.4","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.4/manifests"},{"name":"0.3","sha":"a5b839d2896d69a05f2bc05a333cb364936b4cae","kind":"commit","published_at":"2021-03-09T22:45:32.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.3","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.3/manifests"},{"name":"0.2","sha":"68d6e2961db748e441dc25bb170c2fb304246293","kind":"tag","published_at":"2019-12-11T09:05:42.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.2","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.2/manifests"},{"name":"0.1","sha":"3eef114fe0953e82fe113910aa1243bc22a51815","kind":"tag","published_at":"2019-12-11T09:00:44.000Z","download_url":"https://codeload.github.com/mwtoews/surface-water-network/tar.gz/0.1","html_url":"https://github.com/mwtoews/surface-water-network/releases/tag/0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/tags/0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-07T20:56:47.304Z","dependent_packages_count":0,"downloads":88,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":52.604952846349775,"dependent_repos_count":22.087784936889527,"dependent_packages_count":7.31012528119255,"stargazers_count":12.467280241671022,"forks_count":13.348682497449962,"docker_downloads_count":null,"average":21.563765160710567},"purl":"pkg:pypi/surface-water-network","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/surface-water-network","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/surface-water-network","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/surface-water-network/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-09-07T20:01:14.462Z","issues_count":22,"pull_requests_count":84,"avg_time_to_close_issue":29326799.875,"avg_time_to_close_pull_request":417230.9875,"issues_closed_count":16,"pull_requests_closed_count":80,"pull_request_authors_count":5,"issue_authors_count":4,"avg_comments_per_issue":0.8181818181818182,"avg_comments_per_pull_request":0.34523809523809523,"merged_pull_requests_count":74,"bot_issues_count":0,"bot_pull_requests_count":11,"past_year_issues_count":2,"past_year_pull_requests_count":24,"past_year_avg_time_to_close_issue":99.0,"past_year_avg_time_to_close_pull_request":212648.26086956522,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":23,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.5,"past_year_avg_comments_per_pull_request":0.5833333333333334,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":11,"past_year_merged_pull_requests_count":22,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/issues","maintainers":[{"login":"mwtoews","count":67,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mwtoews"},{"login":"briochh","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/briochh"}],"active_maintainers":[{"login":"mwtoews","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mwtoews"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/surface-water-network/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/surface-water-network/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/surface-water-network/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/surface-water-network/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/surface-water-network/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/surface-water-network/codemeta","maintainers":[{"uuid":"mwtoews","login":"mwtoews","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/mwtoews/","role":null,"created_at":"2023-01-29T20:56:03.348Z","updated_at":"2023-01-29T20:56:03.348Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mwtoews/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":860642,"maintainers_count":367601,"namespaces_count":0,"keywords_count":271316,"github":"pypi","metadata":{"funded_packages_count":53172},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-09T05:08:03.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":667311,"full_name":"mwtoews/surface-water-network","default_branch":"main","total_commits":341,"total_committers":6,"total_bot_commits":31,"total_bot_committers":2,"mean_commits":56.833333333333336,"dds":0.16422287390029322,"past_year_total_commits":25,"past_year_total_committers":3,"past_year_total_bot_commits":19,"past_year_total_bot_committers":2,"past_year_mean_commits":8.333333333333334,"past_year_dds":0.36,"last_synced_at":"2026-05-10T15:01:31.774Z","last_synced_commit":"8825cf7738708b0c19988afc26781b0182871fcd","created_at":"2023-03-09T10:19:14.986Z","updated_at":"2026-05-10T15:01:29.133Z","committers":[{"name":"Mike Taves","email":"mwtoews@gmail.com","login":"mwtoews","count":285},{"name":"Briochh","email":"briochh@gmail.com","login":"briochh","count":23},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":16},{"name":"pre-commit-ci[bot]","email":"66853113+pre-commit-ci[bot]","login":"pre-commit-ci[bot]","count":15},{"name":"Codacy Badger","email":"badger@codacy.com","login":"codacy-badger","count":1},{"name":"Brioch Hemmings","email":"b.hemmings@gns.cri.nz","login":null,"count":1}],"past_year_committers":[{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":16},{"name":"Mike Taves","email":"mwtoews@gmail.com","login":"mwtoews","count":6},{"name":"pre-commit-ci[bot]","email":"66853113+pre-commit-ci[bot]","login":"pre-commit-ci[bot]","count":3}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-12T00:00:09.062Z","repositories_count":6233216,"commits_count":894887737,"contributors_count":34899614,"owners_count":1151808,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"mwtoews/surface-water-network","html_url":"https://github.com/mwtoews/surface-water-network","last_synced_at":"2026-05-04T12:01:05.484Z","status":"error","issues_count":26,"pull_requests_count":116,"avg_time_to_close_issue":27601930.82352941,"avg_time_to_close_pull_request":1264091.4537037036,"issues_closed_count":17,"pull_requests_closed_count":108,"pull_request_authors_count":6,"issue_authors_count":4,"avg_comments_per_issue":0.6923076923076923,"avg_comments_per_pull_request":0.23275862068965517,"merged_pull_requests_count":100,"bot_issues_count":0,"bot_pull_requests_count":29,"past_year_issues_count":2,"past_year_pull_requests_count":15,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1007430.0833333334,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":12,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":11,"past_year_merged_pull_requests_count":12,"created_at":"2023-05-15T00:56:59.175Z","updated_at":"2026-05-04T12:01:05.484Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwtoews%2Fsurface-water-network/issues","issue_labels_count":{"task":3,"enhancement":2},"pull_request_labels_count":{"python:uv":6,"dependencies":6,"enhancement":4,"potentially breaking":1},"issue_author_associations_count":{"CONTRIBUTOR":14,"OWNER":8,"COLLABORATOR":3,"NONE":1},"pull_request_author_associations_count":{"OWNER":74,"CONTRIBUTOR":39,"COLLABORATOR":3},"issue_authors":{"wkitlasten":14,"mwtoews":8,"briochh":3,"izarikos":1},"pull_request_authors":{"mwtoews":74,"pre-commit-ci[bot]":23,"wkitlasten":9,"dependabot[bot]":6,"briochh":3,"codacy-badger":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-08T00:00:21.527Z","repositories_count":14534567,"issues_count":34220400,"pull_requests_count":112161167,"authors_count":11257380,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"dependencies":6,"python:uv":6},"past_year_issue_author_associations_count":{"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":12,"OWNER":1},"past_year_issue_authors":{"wkitlasten":1},"past_year_pull_request_authors":{"dependabot[bot]":6,"pre-commit-ci[bot]":5,"mwtoews":1,"wkitlasten":1},"maintainers":[{"login":"mwtoews","count":82,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mwtoews"},{"login":"briochh","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/briochh"}],"active_maintainers":[{"login":"mwtoews","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mwtoews"}]},"events":{"total":{"DeleteEvent":18,"PullRequestEvent":41,"IssuesEvent":3,"WatchEvent":2,"IssueCommentEvent":1,"PushEvent":31,"PullRequestReviewEvent":2,"CreateEvent":16},"last_year":{"DeleteEvent":11,"PullRequestEvent":28,"IssuesEvent":1,"WatchEvent":1,"IssueCommentEvent":1,"PushEvent":15,"PullRequestReviewEvent":1,"CreateEvent":9}},"keywords":["hydrology","modflow","python","surface-water"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/pages.yml","sha":null,"kind":"manifest","created_at":"2023-01-21T18:46:42.633Z","updated_at":"2023-01-21T18:46:42.633Z","repository_link":"https://github.com/mwtoews/surface-water-network/blob/main/.github/workflows/pages.yml","dependencies":[{"id":7082559828,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7082559829,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":7082559830,"package_name":"peaceiris/actions-gh-pages","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/tests.yml","sha":null,"kind":"manifest","created_at":"2023-01-21T18:46:42.660Z","updated_at":"2023-01-21T18:46:42.660Z","repository_link":"https://github.com/mwtoews/surface-water-network/blob/main/.github/workflows/tests.yml","dependencies":[{"id":7082559831,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7082559832,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:47:35.301Z","updated_at":"2023-09-21T19:47:35.301Z","repository_link":"https://github.com/mwtoews/surface-water-network/blob/main/pyproject.toml","dependencies":[{"id":13856921586,"package_name":"geopandas","ecosystem":"pypi","requirements":"\u003e=0.9","direct":true,"kind":"runtime","optional":false},{"id":13856921587,"package_name":"packaging","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13856921588,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.2","direct":true,"kind":"runtime","optional":false},{"id":13856921589,"package_name":"pyproj","ecosystem":"pypi","requirements":"\u003e=2.2","direct":true,"kind":"runtime","optional":false},{"id":13856921590,"package_name":"rtree","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13856921591,"package_name":"shapely","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:47:36.100Z","updated_at":"2023-09-21T19:47:36.100Z","repository_link":"https://github.com/mwtoews/surface-water-network/blob/main/setup.py","dependencies":[]}],"score":10.223394772282646,"created_at":"2023-09-11T14:33:19.799Z","updated_at":"2026-05-12T16:02:22.321Z","avatar_url":"https://github.com/mwtoews.png","language":"Python","category":"Hydrosphere","sub_category":"Freshwater and Hydrology","monthly_downloads":88,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# Surface water network\n[![DOI](https://zenodo.org/badge/187739645.svg)](https://zenodo.org/badge/latestdoi/187739645)\n[![Codacy](https://api.codacy.com/project/badge/Grade/420bcd8896c14f18b2077dd987c78849)](https://app.codacy.com/manual/mwtoews/surface-water-network?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=mwtoews/surface-water-network\u0026utm_campaign=Badge_Grade_Dashboard)\n[![Codcov](https://codecov.io/gh/mwtoews/surface-water-network/branch/main/graph/badge.svg)](https://codecov.io/gh/mwtoews/surface-water-network)\n[![CI](https://github.com/mwtoews/surface-water-network/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/mwtoews/surface-water-network/actions/workflows/tests.yml)\n\nA Python package to create and analyze surface water networks.\n\n\n## Python packages\n\nPython 3.10+ is required.\n\n### Required\n\n - `geopandas` - process spatial data similar to pandas\n - `packaging` - used to check package versions\n - `pandas` - tabular data analysis\n - `pyproj` - spatial projection support\n - `rtree` - spatial index support\n\n### Optional\n\n - `flopy \u003e=3.3.6` - read/write MODFLOW models\n - `netCDF4` - used to read TopNet files\n\n## Testing\n\nRun `pytest -v` or `python3 -m pytest -v`\n\nFor faster multi-core `pytest -v -n 2` (with `pytest-xdist`)\n\nTo run doctests `pytest -v swn --doctest-modules`\n\n## Examples\n\n```python\nimport geopandas\nimport pandas as pd\nimport swn\n```\n\nRead from Shapefile:\n```python\nshp_srs = \"tests/data/DN2_Coastal_strahler1z_stream_vf.shp\"\nlines = geopandas.read_file(shp_srs)\nlines.set_index(\"nzsegment\", inplace=True, verify_integrity=True)  # optional\n```\n\nOr, read from PostGIS:\n```python\nfrom sqlalchemy import create_engine, engine\n\ncon_url = engine.url.URL(drivername=\"postgresql\", database=\"scigen\")\ncon = create_engine(con_url)\nsql = \"SELECT * FROM wrc.rec2_riverlines_coastal\"\nlines = geopandas.read_postgis(sql, con)\nlines.set_index(\"nzsegment\", inplace=True, verify_integrity=True)  # optional\n```\n\nInitialise and create network:\n```python\nn = swn.SurfaceWaterNetwork.from_lines(lines.geometry)\nprint(n)\n# \u003cSurfaceWaterNetwork: with Z coordinates\n#   304 segments: [3046409, 3046455, ..., 3050338, 3050418]\n#   154 headwater: [3046409, 3046542, ..., 3050338, 3050418]\n#   3 outlets: [3046700, 3046737, 3046736]\n#   no diversions /\u003e\n```\n\nPlot the network, write a Shapefile, write and read a SurfaceWaterNetwork file:\n```python\nn.plot()\n\nswn.file.gdf_to_shapefile(n.segments, \"segments.shp\")\n\nn.to_pickle(\"network.pkl\")\nn = swn.SurfaceWaterNetwork.from_pickle(\"network.pkl\")\n```\n\nRemove segments that meet a condition (stream order), or that are\nupstream/downstream from certain locations:\n```python\nn.remove(\n    n.segments.stream_order == 1,\n    segnums=n.gather_segnums(upstream=3047927))\n```\n\nRead flow data from a TopNet netCDF file, convert from m3/s to m3/day:\n```python\n\nnc_path = \"tests/data/streamq_20170115_20170128_topnet_03046727_strahler1.nc\"\nflow = swn.file.topnet2ts(nc_path, \"mod_flow\", 86400)\n# remove time and truncate to closest day\nflow.index = flow.index.floor(\"d\")\n\n# 7-day mean\nflow7d = flow.resample(\"7D\").mean()\n\n# full mean\nflow_m = pd.DataFrame(flow.mean(0)).T\n```\n\nProcess a MODFLOW/flopy model:\n```python\nimport flopy\n\nm = flopy.modflow.Modflow.load(\"h.nam\", model_ws=\"tests/data\", check=False)\nnm = swn.SwnModflow.from_swn_flopy(n, m)\nnm.default_segment_data()\nnm.set_segment_data_inflow(flow_m)\nnm.plot()\nnm.to_pickle(\"sfr_network.pkl\")\nnm = swn.SwnModflow.from_pickle(\"sfr_network.pkl\", n, m)\nnm.set_sfr_obj()\nm.sfr.write_file(\"file.sfr\")\nnm.grid_cells.to_file(\"grid_cells.shp\")\nnm.reaches.to_file(\"reaches.shp\")\n```\n\n## Citation\n\nToews, M. W.; Hemmings, B. 2019. A surface water network method for generalising streams and rapid groundwater model development. In: New Zealand Hydrological Society Conference, Rotorua, 3-6 December, 2019. p. 166-169.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["measurements","mesh","pypi","parallel-computing","finite-elements","fem","numerical-modeling","ode","community","autograd"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/6642","html_url":"https://ost.ecosyste.ms/projects/6642"}