{"id":348407,"name":"wind-up","description":"A tool to assess yield uplift of wind turbines.","url":"https://github.com/resgroup/wind-up","last_synced_at":"2026-07-05T04:30:21.477Z","repository":{"id":237185009,"uuid":"788989564","full_name":"resgroup/wind-up","owner":"resgroup","description":"A tool to assess yield uplift of wind turbines","archived":false,"fork":false,"pushed_at":"2026-06-17T16:20:50.000Z","size":79380,"stargazers_count":28,"open_issues_count":17,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-06-18T21:03:27.646Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/resgroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"2024-04-19T13:39:25.000Z","updated_at":"2026-06-17T15:43:44.000Z","dependencies_parsed_at":"2024-11-14T12:17:52.959Z","dependency_job_id":"4281f484-a8c1-4311-bf24-2227400f0952","html_url":"https://github.com/resgroup/wind-up","commit_stats":null,"previous_names":["resgroup/wind-up"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/resgroup/wind-up","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resgroup","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34586666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"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":"resgroup","name":"RES Group","uuid":"10728847","kind":"organization","description":"Renewable Energy Systems","email":null,"website":"https://www.res-group.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/10728847?v=4","repositories_count":6,"last_synced_at":"2023-03-08T04:13:39.568Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/resgroup","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-17T22:01:11.923Z","updated_at":"2023-03-08T04:13:39.576Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resgroup","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resgroup/repositories"},"packages":[{"id":10576731,"name":"res-wind-up","ecosystem":"pypi","description":"A tool to assess yield uplift of wind turbines","homepage":"https://github.com/resgroup/wind-up","licenses":"BSD License","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/resgroup/wind-up","keywords_array":[],"namespace":null,"versions_count":23,"first_release_published_at":"2024-07-07T15:57:12.000Z","latest_release_published_at":"2026-06-17T16:21:42.000Z","latest_release_number":"0.5.0","last_synced_at":"2026-07-02T03:02:51.360Z","created_at":"2024-07-07T16:01:49.464Z","updated_at":"2026-07-02T03:08:24.736Z","registry_url":"https://pypi.org/project/res-wind-up/","install_command":"pip install res-wind-up --index-url https://pypi.org/simple","documentation_url":"https://res-wind-up.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 4 - Beta","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Topic :: Scientific/Engineering"],"normalized_name":"res-wind-up","project_status":null},"repo_metadata":{"id":237185009,"uuid":"788989564","full_name":"resgroup/wind-up","owner":"resgroup","description":"A tool to assess yield uplift of wind turbines","archived":false,"fork":false,"pushed_at":"2026-06-17T16:20:50.000Z","size":79380,"stargazers_count":28,"open_issues_count":17,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-06-18T21:03:27.646Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/resgroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"2024-04-19T13:39:25.000Z","updated_at":"2026-06-17T15:43:44.000Z","dependencies_parsed_at":"2024-11-14T12:17:52.959Z","dependency_job_id":"4281f484-a8c1-4311-bf24-2227400f0952","html_url":"https://github.com/resgroup/wind-up","commit_stats":null,"previous_names":["resgroup/wind-up"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/resgroup/wind-up","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resgroup","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34586666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"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_record":{"login":"resgroup","name":"RES Group","uuid":"10728847","kind":"organization","description":"Renewable Energy Systems","email":null,"website":"https://www.res-group.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/10728847?v=4","repositories_count":6,"last_synced_at":"2023-03-08T04:13:39.568Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/resgroup","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-17T22:01:11.923Z","updated_at":"2023-03-08T04:13:39.576Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resgroup","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resgroup/repositories"},"tags":[{"name":"v0.4.9","sha":"756394c61603a75fb6406bfbdc2f4d365af513e5","kind":"commit","published_at":"2026-05-08T15:36:13.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.9","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.9/manifests"},{"name":"v0.4.8","sha":"4a56d34267c8faa3dbddf74f819f7ba66849c975","kind":"commit","published_at":"2026-04-02T09:07:42.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.8","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.8/manifests"},{"name":"v0.4.7","sha":"351e7f6e314db53f1db2ef1e42334bb3eed48075","kind":"commit","published_at":"2026-03-10T11:42:11.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.7","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.7/manifests"},{"name":"v0.4.6","sha":"a1ee0e46b4625070c6a615bd43d04bd88a83e6da","kind":"commit","published_at":"2026-03-06T14:02:01.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.6","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.6/manifests"},{"name":"v0.4.5","sha":"007fd2cd5d57cdb4049379605501e32d52de34b6","kind":"commit","published_at":"2025-11-20T10:07:36.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.5","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"f73198bc2472ee3d52a4b45360d5e15e89d6c5c4","kind":"commit","published_at":"2025-10-20T11:14:16.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.4","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"46a1b6d2a666042a8a9c170f8afb9d88c190ee18","kind":"commit","published_at":"2025-10-01T09:03:26.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.3","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"4a8b34c28827a29e98d286ed9ee2c9038bc9b120","kind":"commit","published_at":"2025-09-23T14:01:49.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.2","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"e7593efbe8f0db5880aaee75c5a083566ae32b1f","kind":"commit","published_at":"2025-09-22T16:43:24.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.1","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"39bcb95c515b05a591e3fc2198bf7f165c05f3e0","kind":"commit","published_at":"2025-09-03T14:54:53.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.4.0","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"ec142f05b30c6b4197f0529975f188e9cd6114c5","kind":"commit","published_at":"2025-05-29T15:56:01.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.3.0","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.3.0/manifests"},{"name":"v0.2.4","sha":"4d7aad7300ab7d10c4a115aeaa7323b0068cae73","kind":"commit","published_at":"2025-05-23T08:35:10.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.2.4","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.2.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.4/manifests"},{"name":"v0.2.3","sha":"f57533387631a11c80fa9d784c86ff0e5c6fd88a","kind":"commit","published_at":"2025-05-20T09:53:18.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.2.3","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.3/manifests"},{"name":"v0.2.2","sha":"d8ab91f3c656fa10c0986539683e626759c6ce4c","kind":"commit","published_at":"2025-05-06T16:08:14.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.2.2","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"b664eab24bd5834021ad7866cd52b46a7fbc48a7","kind":"commit","published_at":"2025-04-17T14:26:00.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.2.1","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"2b4ccf81ddcc1f1cac373f7e758a1dc69b6cc95e","kind":"commit","published_at":"2025-04-09T14:53:27.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.2.0","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.2.0/manifests"},{"name":"v0.1.11","sha":"15c7f2f8b59a0acf268412c0937a61db401b2cb8","kind":"commit","published_at":"2025-01-22T09:11:25.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.11","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.11","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.11","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.11/manifests"},{"name":"v0.1.10","sha":"7acc0f1f87705d51eac3341d307eda38d5cf6a9d","kind":"commit","published_at":"2024-11-04T15:18:07.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.10","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.10","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.10","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.10/manifests"},{"name":"v0.1.9","sha":"eee1c07be49e17d344feaa4aa0f4af8e14ff4648","kind":"commit","published_at":"2024-09-06T11:28:27.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.9","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.9/manifests"},{"name":"v0.1.8","sha":"d05d2de83c48dda17ae238c1fded49b48baef095","kind":"commit","published_at":"2024-07-29T10:19:21.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.8","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.8/manifests"},{"name":"v0.1.7","sha":"ca6f29dca52c7ad3d1ee04dc6f06e9cc19dd806a","kind":"commit","published_at":"2024-07-12T08:56:16.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.7","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.7/manifests"},{"name":"v0.1.6","sha":"5cd8fcb3f4bb1be382246fcddbda6a89c50f4df1","kind":"commit","published_at":"2024-07-08T10:04:50.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.6","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.6/manifests"},{"name":"v0.1.5","sha":"d541c789814e189f6aee89a04835365ea89c1a6c","kind":"commit","published_at":"2024-07-07T15:59:12.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.5","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.5/manifests"},{"name":"v0.1.4","sha":"78bd17a6e5d5c7fe5cf358d0796a256759b6acca","kind":"commit","published_at":"2024-06-26T16:54:56.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.4","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.4/manifests"},{"name":"v0.1.3","sha":"d3894917143dae4620d2eabfeaf204074b1988b4","kind":"commit","published_at":"2024-05-14T16:41:30.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.3","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"ece2c49918c26b35479198d2e41f3820ceabbed5","kind":"commit","published_at":"2024-04-26T15:20:36.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.2","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"487afa4566adf4fb8b67bcd82bb8fdab3b354ed8","kind":"commit","published_at":"2024-04-24T15:23:43.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.1","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"30c2213b75045078260d063c1acfe94bc79675fc","kind":"commit","published_at":"2024-04-24T11:09:57.000Z","download_url":"https://codeload.github.com/resgroup/wind-up/tar.gz/v0.1.0","html_url":"https://github.com/resgroup/wind-up/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/resgroup/wind-up@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-07-02T03:08:24.736Z","dependent_packages_count":0,"downloads":944,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":60.09413171606731,"dependent_packages_count":10.671222345605194,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":35.38267703083625},"purl":"pkg:pypi/res-wind-up","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/res-wind-up","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/res-wind-up","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/res-wind-up/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-06-30T02:00:58.699Z","issues_count":23,"pull_requests_count":77,"avg_time_to_close_issue":4868070.888888889,"avg_time_to_close_pull_request":1534847.5172413792,"issues_closed_count":9,"pull_requests_closed_count":58,"pull_request_authors_count":9,"issue_authors_count":3,"avg_comments_per_issue":0.34782608695652173,"avg_comments_per_pull_request":0.3116883116883117,"merged_pull_requests_count":50,"bot_issues_count":0,"bot_pull_requests_count":5,"past_year_issues_count":9,"past_year_pull_requests_count":37,"past_year_avg_time_to_close_issue":1970868.0,"past_year_avg_time_to_close_pull_request":904589.1379310344,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":29,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.1111111111111111,"past_year_avg_comments_per_pull_request":0.16216216216216217,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":4,"past_year_merged_pull_requests_count":25,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/issues","maintainers":[{"login":"samuelwnaylor","count":34,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samuelwnaylor"},{"login":"gabrielecalvo","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gabrielecalvo"}],"active_maintainers":[{"login":"samuelwnaylor","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samuelwnaylor"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/res-wind-up/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/res-wind-up/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/res-wind-up/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/res-wind-up/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/res-wind-up/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/res-wind-up/codemeta","maintainers":[{"uuid":"aclerc","login":"aclerc","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/aclerc/","role":null,"created_at":"2024-07-07T16:03:20.045Z","updated_at":"2024-07-07T16:03:20.045Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/aclerc/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":899211,"maintainers_count":385432,"namespaces_count":0,"keywords_count":289179,"github":"pypi","metadata":{"funded_packages_count":54301},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-06-10T05:13:28.296Z","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":11255498,"full_name":"resgroup/wind-up","default_branch":"master","total_commits":246,"total_committers":7,"total_bot_commits":1,"total_bot_committers":1,"mean_commits":35.142857142857146,"dds":0.12195121951219512,"past_year_total_commits":20,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":6.666666666666667,"past_year_dds":0.44999999999999996,"last_synced_at":"2026-07-03T04:37:18.037Z","last_synced_commit":"4915fea44bc3fa885320edb95a311cd458c8aad4","created_at":"2025-09-20T10:44:39.056Z","updated_at":"2026-07-03T04:37:13.214Z","committers":[{"name":"Alex Clerc","email":"alex.clerc@res-group.com","login":"aclerc","count":216},{"name":"Samuel Northover-Naylor","email":"50234141+samuelwnaylor","login":"samuelwnaylor","count":22},{"name":"Gabriele Calvo","email":"gcalvo87@gmail.com","login":"gabrielecalvo","count":3},{"name":"paulf81","email":"paul.fleming@nrel.gov","login":"paulf81","count":2},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1},{"name":"Jakob Stender Gulberg","email":"jakob1379@gmail.com","login":"jakob1379","count":1},{"name":"Gorkem Kacar","email":"139143704+izofat","login":"izofat","count":1}],"past_year_committers":[{"name":"Alex Clerc","email":"alex.clerc@res-group.com","login":"aclerc","count":11},{"name":"Samuel Northover-Naylor","email":"50234141+samuelwnaylor","login":"samuelwnaylor","count":8},{"name":"Jakob Stender Gulberg","email":"jakob1379@gmail.com","login":"jakob1379","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-04T00:00:09.848Z","repositories_count":6281736,"commits_count":874398079,"contributors_count":35231772,"owners_count":1178497,"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":"resgroup/wind-up","html_url":"https://github.com/resgroup/wind-up","last_synced_at":"2026-07-02T03:00:39.086Z","status":"active","issues_count":23,"pull_requests_count":79,"avg_time_to_close_issue":4868070.888888889,"avg_time_to_close_pull_request":1462098.049180328,"issues_closed_count":9,"pull_requests_closed_count":61,"pull_request_authors_count":9,"issue_authors_count":3,"avg_comments_per_issue":0.34782608695652173,"avg_comments_per_pull_request":0.3037974683544304,"merged_pull_requests_count":53,"bot_issues_count":0,"bot_pull_requests_count":5,"past_year_issues_count":9,"past_year_pull_requests_count":39,"past_year_avg_time_to_close_issue":1970868.0,"past_year_avg_time_to_close_pull_request":824997.1875,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":32,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.1111111111111111,"past_year_avg_comments_per_pull_request":0.15384615384615385,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":4,"past_year_merged_pull_requests_count":28,"created_at":"2025-08-29T14:51:57.313Z","updated_at":"2026-07-02T03:00:39.086Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/resgroup%2Fwind-up/issues","issue_labels_count":{"enhancement":8,"good first issue":5,"bug":4},"pull_request_labels_count":{"dependencies":5,"python:uv":4},"issue_author_associations_count":{"CONTRIBUTOR":13,"COLLABORATOR":9,"NONE":1},"pull_request_author_associations_count":{"CONTRIBUTOR":45,"COLLABORATOR":28,"NONE":6},"issue_authors":{"aclerc":13,"samuelwnaylor":9,"n-n-s":1},"pull_request_authors":{"aclerc":38,"samuelwnaylor":25,"dependabot[bot]":5,"gabrielecalvo":3,"YousifKilano":2,"izofat":2,"paulf81":2,"jakob1379":1,"delta006":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-04T00:00:21.164Z","repositories_count":14859620,"issues_count":32849137,"pull_requests_count":107933491,"authors_count":11332061,"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":{"enhancement":1,"good first issue":1},"past_year_pull_request_labels_count":{"dependencies":4,"python:uv":4},"past_year_issue_author_associations_count":{"COLLABORATOR":6,"CONTRIBUTOR":2,"NONE":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":26,"COLLABORATOR":11,"NONE":2},"past_year_issue_authors":{"samuelwnaylor":6,"aclerc":2,"n-n-s":1},"past_year_pull_request_authors":{"aclerc":21,"samuelwnaylor":11,"dependabot[bot]":4,"YousifKilano":2,"jakob1379":1},"maintainers":[{"login":"samuelwnaylor","count":34,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samuelwnaylor"},{"login":"gabrielecalvo","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/gabrielecalvo"}],"active_maintainers":[{"login":"samuelwnaylor","count":17,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/samuelwnaylor"}]},"events":{"total":{"ReleaseEvent":9,"DeleteEvent":29,"PullRequestEvent":41,"ForkEvent":4,"IssuesEvent":16,"WatchEvent":7,"IssueCommentEvent":12,"PushEvent":250,"PullRequestReviewCommentEvent":37,"PullRequestReviewEvent":56,"CreateEvent":43},"last_year":{"ReleaseEvent":3,"DeleteEvent":12,"PullRequestEvent":7,"ForkEvent":2,"IssuesEvent":6,"WatchEvent":1,"IssueCommentEvent":4,"PushEvent":91,"PullRequestReviewEvent":8,"PullRequestReviewCommentEvent":8,"CreateEvent":17}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/lint-and-test.yaml","sha":null,"kind":"manifest","created_at":"2024-07-16T16:28:07.859Z","updated_at":"2024-07-16T16:28:07.859Z","repository_link":"https://github.com/resgroup/wind-up/blob/main/.github/workflows/lint-and-test.yaml","dependencies":[{"id":19142556861,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19142556862,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v5","direct":true,"kind":"composite","optional":false},{"id":19142556863,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pypi-publish.yaml","sha":null,"kind":"manifest","created_at":"2024-07-16T16:28:09.216Z","updated_at":"2024-07-16T16:28:09.216Z","repository_link":"https://github.com/resgroup/wind-up/blob/main/.github/workflows/pypi-publish.yaml","dependencies":[{"id":19142556864,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19142556865,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v5","direct":true,"kind":"composite","optional":false},{"id":19142556866,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19142556867,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":19142556868,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-05-02T14:47:52.707Z","updated_at":"2024-05-02T14:47:52.707Z","repository_link":"https://github.com/resgroup/wind-up/blob/main/pyproject.toml","dependencies":[{"id":17849749445,"package_name":"geographiclib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749446,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749447,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e= 2.0.0","direct":true,"kind":"runtime","optional":false},{"id":17849749448,"package_name":"pyarrow","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749449,"package_name":"pydantic","ecosystem":"pypi","requirements":"\u003e= 2.0.0","direct":true,"kind":"runtime","optional":false},{"id":17849749450,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749451,"package_name":"pyyaml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749452,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749453,"package_name":"ruptures","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749454,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749455,"package_name":"seaborn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749456,"package_name":"tabulate","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749457,"package_name":"toml","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749458,"package_name":"utm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":17849749459,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":12.603757566319375,"created_at":"2026-03-14T09:08:39.643Z","updated_at":"2026-07-05T04:30:21.512Z","avatar_url":"https://github.com/resgroup.png","language":"Python","category":"Renewable Energy","sub_category":"Wind Energy","monthly_downloads":944,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# wind-up\n\nA Python package for assessing wind turbine yield uplift from operational data.\n\n[![PyPI version](https://img.shields.io/pypi/v/res-wind-up.svg)](https://pypi.python.org/pypi/res-wind-up)\n[![License](https://img.shields.io/pypi/l/res-wind-up.svg)](https://github.com/resgroup/wind-up/blob/main/LICENSE.txt)\n[![Python versions](https://img.shields.io/pypi/pyversions/res-wind-up.svg)](https://pypi.python.org/pypi/res-wind-up)\n[![Lint \u0026 Format: Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)\n[![Typing: mypy](https://img.shields.io/badge/typing-mypy-yellow.svg)](https://github.com/python/mypy)\n[![Lint and test](https://github.com/resgroup/wind-up/actions/workflows/lint-and-test.yaml/badge.svg)](https://github.com/resgroup/wind-up/actions/workflows/lint-and-test.yaml)\n\n`wind-up` compares turbine performance before and after a change to estimate\nenergy-yield uplift. It is designed for wind-farm SCADA analysis where the\nsignal of interest is small, operational data is messy, and a credible result\nneeds more than a simple before/after power-curve plot.\n\nThe package is published on PyPI as `res-wind-up` and imported in Python as\n`wind_up`.\n\n## What it does\n\n`wind-up` provides a complete analysis workflow for pre/post or toggle-style\nuplift assessments:\n\n- prepares and filters wind-farm SCADA data\n- builds SCADA-derived power curves by turbine type\n- adds reanalysis, mast, or LiDAR reference data\n- applies yaw direction northing corrections\n- estimates wind speed and waking state\n- detrends test turbine performance against reference wind direction\n- performs pre/post power performance analysis with reversal checks and bootstrapped uncertainty\n- combines per-reference results into turbine-level and fleet-level uplift estimates\n- writes result tables and diagnostic plots for review\n\nThe public examples cover several realistic analysis shapes, including\nSMARTEOLE toggle data, Kelmarsh turbine data, and WeDoWind challenge-style\npre/post assessments.\n\n## Installation\n\nInstall the released package with your Python environment manager of choice.\nPython `\u003e=3.9,\u003c4.0` is supported.\n\nUsing `uv`:\n\n```bash\nuv add res-wind-up\n```\n\nUsing `pip`:\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install res-wind-up\n```\n\nOn Windows PowerShell, activate the virtual environment with:\n\n```powershell\n.venv\\Scripts\\Activate.ps1\n```\n\nTo run the bundled notebooks and example scripts, install the optional example\ndependencies as well:\n\n```bash\nuv add \"res-wind-up[examples]\"\n# or\npip install \"res-wind-up[examples]\"\n```\n\nCheck that the package imports correctly:\n\n```python\nimport wind_up\n\nprint(wind_up.__version__)\n```\n\n## First steps\n\nThe fastest way to understand the expected data model and analysis flow is to\nstart from the examples:\n\n- [`examples/smarteole_example.ipynb`](examples/smarteole_example.ipynb) -\n  a notebook walkthrough and the best place to start\n- [`examples/kelmarsh_kaggle.py`](examples/kelmarsh_kaggle.py) -\n  a script-oriented pre/post example using Kelmarsh data\n- [`examples/wedowind_example.py`](examples/wedowind_example.py) -\n  WeDoWind pitch-angle and vortex-generator analyses\n\nA typical analysis has four stages:\n\n```python\nfrom wind_up.interface import AssessmentInputs\nfrom wind_up.main_analysis import run_wind_up_analysis\nfrom wind_up.models import PlotConfig, WindUpConfig\nfrom wind_up.reanalysis_data import ReanalysisDataset\n\n# 1. Build a WindUpConfig describing the asset, test turbines,\n#    reference turbines, analysis dates, filters, and output folder.\ncfg = WindUpConfig(...)\n\n# 2. Configure diagnostic plot output.\nplot_cfg = PlotConfig(\n    show_plots=False,\n    save_plots=True,\n    plots_dir=cfg.out_dir / \"plots\",\n)\n\n# 3. Prepare inputs from SCADA, metadata, and reference datasets.\nassessment_inputs = AssessmentInputs.from_cfg(\n    cfg=cfg,\n    plot_cfg=plot_cfg,\n    scada_df=scada_df,\n    metadata_df=metadata_df,\n    reanalysis_datasets=[ReanalysisDataset(id=\"ERA5\", data=reanalysis_df)],\n    cache_dir=cache_dir,\n)\n\n# 4. Run the assessment and save the per-test/per-reference results.\nresults_per_test_ref_df = run_wind_up_analysis(assessment_inputs)\nresults_per_test_ref_df.to_csv(cfg.out_dir / \"results_per_test_ref.csv\", index=False)\n```\n\nFor complete, executable versions of this pattern, use the example files above.\nThe configuration is intentionally explicit: wind-resource assessments are\nsensitive to turbine metadata, analysis periods, filters, and reference choices,\nso those assumptions should be visible in code.\n\n## Inputs and outputs\n\nAt a high level, an assessment needs:\n\n| Input | Purpose |\n| --- | --- |\n| SCADA time series | turbine power, wind speed, yaw, pitch, RPM, downtime, and related operational signals |\n| turbine metadata | turbine names, turbine type, rated power, rotor diameter, and location where available |\n| analysis configuration | test/reference turbines, pre/post or toggle periods, filters, long-term settings, and output paths |\n| reference data | reanalysis, mast, LiDAR, or reference-turbine signals used for detrending and validation |\n\nThe main analysis returns a `pandas.DataFrame` with per-test/per-reference uplift\nresults, uncertainty columns, warning counts, and supporting diagnostic metrics.\nWhen plot saving is enabled, diagnostic figures are written under\n`PlotConfig.plots_dir`; CSV results are written under the configured assessment\noutput directory.\n\n## Analysis features\n\n`wind-up` includes utilities for the parts of an uplift study that usually need\ncareful handling:\n\n- SCADA cleaning and filtering for unavailable or implausible operating data\n- power curve estimation by turbine type\n- wind speed estimation from turbine power (preferred for reference turbines) and measured wind speed\n- waking state calculation per timestep using turbine coordinates and SCADA\n- yaw direction northing checks and optional optimized northing corrections\n- long-term distribution calculations\n- wind speed drift checks\n- pre/post and toggle-based splitting\n- reference selection and combined uplift calculations\n- diagnostic plots for input data, detrending, power curves, yaw direction,\n  reanalysis comparison, waking state, long-term distributions, and final results\n\n## Development\n\nThis project uses `uv` for dependency management, `poethepoet` for task running,\nRuff for formatting/linting, mypy for type checking, and pytest with coverage for\ntests.\n\nCreate the development environment:\n\n```bash\nuv sync --all-extras --dev\n```\n\n\u003e [!TIP]\n\u003e For normal local development and pre-push checks, start with the fast suite.\n\u003e It runs formatting, linting, type checking, and tests that are not marked as\n\u003e slow.\n\n```bash\nuv run poe all-fast\n```\n\nRun the full local verification suite before releases or when you need the slow\nregression tests as well:\n\n```bash\nuv run poe all\n```\n\n\u003e [!NOTE]\n\u003e `uv run poe all` includes tests marked as slow. On a typical local machine it\n\u003e can take 15 minutes or more; `uv run poe all-fast` is much quicker for everyday\n\u003e iteration.\n\nIndividual tasks are also available:\n\n```bash\nuv run poe lint-check   # formatter, linter, and mypy checks\nuv run poe test-fast    # tests excluding the slow marker\nuv run poe test         # full test suite with coverage report\nuv run poe jupy         # start JupyterLab for example exploration\n```\n\n\u003e [!WARNING]\n\u003e `uv run poe jupy` starts a local JupyterLab server and keeps running until you\n\u003e stop it. Use it when you want an interactive notebook session, not as a\n\u003e one-shot verification command.\n\nThe GitHub Actions workflow runs linting and tests on Python 3.9 and 3.13.\n\n## Project status\n\nThe package is marked as beta in the Python package metadata. Interfaces and\nconfiguration options may still evolve, but the repository includes a substantial\ntest suite and example analyses for regression coverage.\n\n## License\n\n`wind-up` is released under the BSD 3-Clause License. See\n[`LICENSE.txt`](LICENSE.txt) for the full license text.\n\n## Contact\n\nFor questions about the package, contact Alex Clerc at\n[Alex.Clerc@res-group.com](mailto:Alex.Clerc@res-group.com).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/348407","html_url":"https://ost.ecosyste.ms/projects/348407"}