{"id":19782,"name":"pvanalytics","description":"Quality control, filtering, feature labeling, and other tools for working with data from photovoltaic energy systems.","url":"https://github.com/pvlib/pvanalytics","last_synced_at":"2026-04-14T05:30:28.062Z","repository":{"id":39590023,"uuid":"241420071","full_name":"pvlib/pvanalytics","owner":"pvlib","description":"Quality control, filtering, feature labeling, and other tools for working with data from photovoltaic energy systems.","archived":false,"fork":false,"pushed_at":"2026-02-04T22:21:48.000Z","size":4381,"stargazers_count":131,"open_issues_count":37,"forks_count":40,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-04-07T02:03:26.593Z","etag":null,"topics":["photovoltaic","python","renewable-energy","renewables","solar-energy"],"latest_commit_sha":null,"homepage":"https://pvanalytics.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pvlib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"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":"2020-02-18T17:10:34.000Z","updated_at":"2026-03-30T01:53:01.000Z","dependencies_parsed_at":"2023-02-12T06:30:25.137Z","dependency_job_id":"799489db-258a-474a-9055-6fef97a12e47","html_url":"https://github.com/pvlib/pvanalytics","commit_stats":{"total_commits":310,"total_committers":12,"mean_commits":"25.833333333333332","dds":0.6096774193548387,"last_synced_commit":"12f16d67394c27c40706066bf409bd373cdde00f"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/pvlib/pvanalytics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/sbom","scorecard":{"id":441664,"data":{"date":"2025-08-11","repo":{"name":"github.com/pvlib/pvanalytics","commit":"22565cd9676b25d5ad1f6b6711cbff1be765aa3d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"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":"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":"Code-Review","score":5,"reason":"Found 17/30 approved changesets -- score normalized to 5","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":4,"reason":"1 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/lint-and-test.yml:1","Warn: no topLevel permission defined: .github/workflows/pythonpublish.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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT 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":"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":"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/lint-and-test.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/pythonpublish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/pythonpublish.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:57","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:58","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:80","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:19","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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-19T05:43:31.963Z","repository_id":39590023,"created_at":"2025-08-19T05:43:31.963Z","updated_at":"2025-08-19T05:43:31.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31583290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"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":"pvlib","name":"pvlib","uuid":"11037261","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11037261?v=4","repositories_count":7,"last_synced_at":"2024-03-25T20:48:50.039Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pvlib","funding_links":[],"total_stars":1160,"followers":81,"following":0,"created_at":"2022-11-02T16:36:37.102Z","updated_at":"2024-03-25T20:48:53.101Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib/repositories"},"packages":[{"id":2863649,"name":"pvanalytics","ecosystem":"pypi","description":"PVAnalytics is a python library for the analysis of photovoltaic system-level data.","homepage":"https://github.com/pvlib/pvanalytics","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/pvlib/pvanalytics","keywords_array":[],"namespace":null,"versions_count":8,"first_release_published_at":"2020-11-20T15:11:34.000Z","latest_release_published_at":"2024-11-27T14:33:26.000Z","latest_release_number":"0.2.2","last_synced_at":"2026-04-07T02:01:45.597Z","created_at":"2022-04-10T12:08:53.541Z","updated_at":"2026-04-07T02:01:45.598Z","registry_url":"https://pypi.org/project/pvanalytics/","install_command":"pip install pvanalytics --index-url https://pypi.org/simple","documentation_url":"https://pvanalytics.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 4 - Beta","Intended Audience :: Science/Research","Operating System :: OS Independent","Programming Language :: Python :: 3","Topic :: Scientific/Engineering"],"normalized_name":"pvanalytics","project_status":null},"repo_metadata":{"uuid":"241420071","full_name":"pvlib/pvanalytics","owner":"pvlib","description":"Quality control, filtering, feature labeling, and other tools for working with data from photovoltaic energy systems.","archived":false,"fork":false,"pushed_at":"2023-12-13T16:13:42.000Z","size":2459,"stargazers_count":77,"open_issues_count":34,"forks_count":25,"subscribers_count":10,"default_branch":"main","last_synced_at":"2023-12-16T21:43:07.392Z","etag":null,"topics":["photovoltaic","python","renewable-energy","renewables","solar-energy"],"latest_commit_sha":null,"homepage":"https://pvanalytics.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pvlib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-02-18T17:10:34.000Z","updated_at":"2023-11-04T17:06:40.000Z","dependencies_parsed_at":"2023-02-12T06:30:25.137Z","dependency_job_id":"799489db-258a-474a-9055-6fef97a12e47","html_url":"https://github.com/pvlib/pvanalytics","commit_stats":{"total_commits":294,"total_committers":11,"mean_commits":"26.727272727272727","dds":0.5884353741496599,"last_synced_commit":"904603d0c6fcb9d83a5cdceba5b7ea6d9aa523b9"},"previous_names":[],"tags_count":5,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":176674542,"owners_count":10433485,"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":"pvlib","name":"pvlib","uuid":"11037261","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11037261?v=4","repositories_count":6,"last_synced_at":"2023-04-10T01:46:16.175Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pvlib","created_at":"2022-11-02T16:36:37.102Z","updated_at":"2023-04-10T01:46:16.196Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib/repositories"},"tags":[{"name":"v0.2.0-alpha.1","sha":"369dedaadc9a694ab9967a4312f230b562770d57","kind":"tag","published_at":"2023-01-20T22:50:28.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.2.0-alpha.1","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.2.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.0-alpha.1/manifests"},{"name":"v0.1.3","sha":"492c29501252c21226f2a43e26b06704d2bf261e","kind":"commit","published_at":"2022-12-16T19:16:34.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.3","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"beafe9d9220fade473de7a99985f87f6736534c7","kind":"commit","published_at":"2022-08-18T19:11:01.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.2","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"72bf5f37bbe3f418f643d937c7da04f0f666f344","kind":"commit","published_at":"2022-02-18T22:37:51.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.1","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"27ea3fdddaf0e885cce8b56438256b7e51e9bdea","kind":"commit","published_at":"2020-11-20T15:06:26.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.0","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2023-12-16T21:48:23.597Z","dependent_packages_count":1,"downloads":4651,"downloads_period":"last-month","dependent_repos_count":3,"rankings":{"downloads":7.408480595810997,"dependent_repos_count":9.143324777740581,"dependent_packages_count":3.2435152210473146,"stargazers_count":7.9625246895817305,"forks_count":7.813582881418979,"docker_downloads_count":null,"average":7.11428563311992},"purl":"pkg:pypi/pvanalytics","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pvanalytics","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pvanalytics","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pvanalytics/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2023-12-16T21:43:39.341Z","issues_count":80,"pull_requests_count":120,"avg_time_to_close_issue":7858272.188679245,"avg_time_to_close_pull_request":2580672.743362832,"issues_closed_count":53,"pull_requests_closed_count":113,"pull_request_authors_count":9,"issue_authors_count":16,"avg_comments_per_issue":3.2625,"avg_comments_per_pull_request":2.2666666666666666,"merged_pull_requests_count":106,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":7,"past_year_pull_requests_count":16,"past_year_avg_time_to_close_issue":6982411.0,"past_year_avg_time_to_close_pull_request":3854177.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":12,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":3.0,"past_year_avg_comments_per_pull_request":2.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":12,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/issues"},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pvanalytics/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pvanalytics/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pvanalytics/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pvanalytics/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pvanalytics/codemeta","maintainers":[{"uuid":"wfvining-snl","login":"wfvining-snl","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/wfvining-snl/","role":null,"created_at":"2022-11-21T19:28:02.165Z","updated_at":"2022-11-21T19:28:02.165Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/wfvining-snl/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":835811,"maintainers_count":356906,"namespaces_count":0,"keywords_count":270194,"github":"pypi","metadata":{"funded_packages_count":53084},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-05T05:05:39.368Z","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"}},{"id":11733531,"name":"github.com/pvlib/pvanalytics","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/pvlib/pvanalytics","keywords_array":[],"namespace":null,"versions_count":8,"first_release_published_at":"2020-11-20T15:06:26.000Z","latest_release_published_at":"2024-11-27T14:27:43.000Z","latest_release_number":"v0.2.2","last_synced_at":"2026-04-07T02:01:46.820Z","created_at":"2025-06-05T11:16:53.076Z","updated_at":"2026-04-07T02:01:46.820Z","registry_url":"https://pkg.go.dev/github.com/pvlib/pvanalytics","install_command":"go get github.com/pvlib/pvanalytics","documentation_url":"https://pkg.go.dev/github.com/pvlib/pvanalytics#section-documentation","metadata":{},"repo_metadata":{"id":39590023,"uuid":"241420071","full_name":"pvlib/pvanalytics","owner":"pvlib","description":"Quality control, filtering, feature labeling, and other tools for working with data from photovoltaic energy systems.","archived":false,"fork":false,"pushed_at":"2025-09-29T21:25:42.000Z","size":4380,"stargazers_count":117,"open_issues_count":38,"forks_count":37,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-10-08T09:14:28.133Z","etag":null,"topics":["photovoltaic","python","renewable-energy","renewables","solar-energy"],"latest_commit_sha":null,"homepage":"https://pvanalytics.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pvlib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-02-18T17:10:34.000Z","updated_at":"2025-10-05T12:36:20.000Z","dependencies_parsed_at":"2023-02-12T06:30:25.137Z","dependency_job_id":"799489db-258a-474a-9055-6fef97a12e47","html_url":"https://github.com/pvlib/pvanalytics","commit_stats":{"total_commits":310,"total_committers":12,"mean_commits":"25.833333333333332","dds":0.6096774193548387,"last_synced_commit":"12f16d67394c27c40706066bf409bd373cdde00f"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/pvlib/pvanalytics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/sbom","scorecard":{"id":441664,"data":{"date":"2025-08-11","repo":{"name":"github.com/pvlib/pvanalytics","commit":"22565cd9676b25d5ad1f6b6711cbff1be765aa3d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"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":"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":"Code-Review","score":5,"reason":"Found 17/30 approved changesets -- score normalized to 5","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":4,"reason":"1 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/lint-and-test.yml:1","Warn: no topLevel permission defined: .github/workflows/pythonpublish.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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT 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":"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":"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/lint-and-test.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint-and-test.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/lint-and-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/pythonpublish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/pvlib/pvanalytics/pythonpublish.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:57","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:58","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/lint-and-test.yml:80","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:19","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 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":"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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-19T05:43:31.963Z","repository_id":39590023,"created_at":"2025-08-19T05:43:31.963Z","updated_at":"2025-08-19T05:43:31.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002373,"owners_count":26083356,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"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":"pvlib","name":"pvlib","uuid":"11037261","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11037261?v=4","repositories_count":7,"last_synced_at":"2024-03-25T20:48:50.039Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/pvlib","funding_links":[],"total_stars":1160,"followers":81,"following":0,"created_at":"2022-11-02T16:36:37.102Z","updated_at":"2024-03-25T20:48:53.101Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pvlib/repositories"},"tags":[{"name":"v0.2.2","sha":"028b31afadcb8bc8f4b7d6962a743a1a902fd6b7","kind":"commit","published_at":"2024-11-27T14:27:43.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.2.2","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.2/manifests"},{"name":"v0.2.1","sha":"2c6a7afc3b53999b1f074c9f7f4a58a4738a95a9","kind":"commit","published_at":"2024-10-16T14:54:51.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.2.1","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"8efa87dcf3bdb2924f4381dfda0631ac321ca4a8","kind":"commit","published_at":"2024-02-14T17:57:48.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.2.0","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.0/manifests"},{"name":"v0.2.0-alpha.1","sha":"369dedaadc9a694ab9967a4312f230b562770d57","kind":"tag","published_at":"2023-01-20T22:50:28.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.2.0-alpha.1","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.2.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.2.0-alpha.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.2.0-alpha.1/manifests"},{"name":"v0.1.3","sha":"492c29501252c21226f2a43e26b06704d2bf261e","kind":"commit","published_at":"2022-12-16T19:16:34.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.3","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.3/manifests"},{"name":"v0.1.2","sha":"beafe9d9220fade473de7a99985f87f6736534c7","kind":"commit","published_at":"2022-08-18T19:11:01.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.2","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.2/manifests"},{"name":"v0.1.1","sha":"72bf5f37bbe3f418f643d937c7da04f0f666f344","kind":"commit","published_at":"2022-02-18T22:37:51.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.1","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"27ea3fdddaf0e885cce8b56438256b7e51e9bdea","kind":"commit","published_at":"2020-11-20T15:06:26.000Z","download_url":"https://codeload.github.com/pvlib/pvanalytics/tar.gz/v0.1.0","html_url":"https://github.com/pvlib/pvanalytics/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/pvlib/pvanalytics@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-10-17T23:36:22.584Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/pvlib/pvanalytics","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/pvlib/pvanalytics","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/pvlib/pvanalytics","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/pvlib/pvanalytics/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-09-30T00:00:48.705Z","issues_count":88,"pull_requests_count":161,"avg_time_to_close_issue":8679196.403508771,"avg_time_to_close_pull_request":3665631.3266666667,"issues_closed_count":57,"pull_requests_closed_count":150,"pull_request_authors_count":11,"issue_authors_count":17,"avg_comments_per_issue":3.1818181818181817,"avg_comments_per_pull_request":2.329192546583851,"merged_pull_requests_count":142,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":7,"past_year_pull_requests_count":19,"past_year_avg_time_to_close_issue":1264930.0,"past_year_avg_time_to_close_pull_request":1236851.2307692308,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":13,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":1.7142857142857142,"past_year_avg_comments_per_pull_request":2.1052631578947367,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":1,"past_year_merged_pull_requests_count":12,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/issues","maintainers":[{"login":"wfvining","count":91,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wfvining"},{"login":"kandersolar","count":62,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kandersolar"},{"login":"kperrynrel","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kperrynrel"},{"login":"cwhanse","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cwhanse"},{"login":"AdamRJensen","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AdamRJensen"},{"login":"wholmgren","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wholmgren"},{"login":"RDaxini","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/RDaxini"}],"active_maintainers":[{"login":"kandersolar","count":16,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kandersolar"},{"login":"cwhanse","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cwhanse"},{"login":"RDaxini","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/RDaxini"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpvlib%2Fpvanalytics/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpvlib%2Fpvanalytics/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpvlib%2Fpvanalytics/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpvlib%2Fpvanalytics/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fpvlib%2Fpvanalytics/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2090656,"maintainers_count":0,"namespaces_count":779664,"keywords_count":112728,"github":"golang","metadata":{"funded_packages_count":53440},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-05T05:09:06.732Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":634309,"full_name":"pvlib/pvanalytics","default_branch":"main","total_commits":317,"total_committers":13,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":24.384615384615383,"dds":0.6182965299684542,"past_year_total_commits":5,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":2.5,"past_year_dds":0.19999999999999996,"last_synced_at":"2026-04-07T02:05:53.072Z","last_synced_commit":"cb78c1e618a5dd063bc7642b369d8090cc950101","created_at":"2023-03-09T08:31:45.370Z","updated_at":"2026-04-07T02:04:45.188Z","committers":[{"name":"Will Vining","email":"wfvining@gmail.com","login":"wfvining","count":121},{"name":"Perry","email":"kperry@nrel.gov","login":null,"count":102},{"name":"Kevin Anderson","email":"kevin.anderso@gmail.com","login":"kandersolar","count":37},{"name":"Kirsten Perry","email":"70228568+kperrynrel","login":"kperrynrel","count":34},{"name":"Kevin Anderson","email":"57452607+kanderso-nrel","login":"kanderso-nrel","count":7},{"name":"Cliff Hansen","email":"cwhanse@sandia.gov","login":"cwhanse","count":7},{"name":"Adam R. Jensen","email":"39184289+AdamRJensen","login":"AdamRJensen","count":3},{"name":"Saurabh Aneja","email":"63314623+PVPro-SPA","login":"PVPro-SPA","count":1},{"name":"Quyen Nguyen","email":"122257324+qnguyen345","login":"qnguyen345","count":1},{"name":"Olexandr88","email":"radole1203@gmail.com","login":"Olexandr88","count":1},{"name":"Michael Hopwood","email":"michael.hopwood@knights.ucf.edu","login":"MichaelHopwood","count":1},{"name":"Chris Deline","email":"chris.deline@nrel.gov","login":"cdeline","count":1},{"name":"Perry","email":"kperry","login":null,"count":1}],"past_year_committers":[{"name":"Kevin Anderson","email":"kevin.anderso@gmail.com","login":"kandersolar","count":4},{"name":"Olexandr88","email":"radole1203@gmail.com","login":"Olexandr88","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212670,"commits_count":914647918,"contributors_count":35332534,"owners_count":1143345,"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":"pvlib/pvanalytics","html_url":"https://github.com/pvlib/pvanalytics","last_synced_at":"2026-03-11T13:01:13.950Z","status":"active","issues_count":88,"pull_requests_count":164,"avg_time_to_close_issue":8679196.403508771,"avg_time_to_close_pull_request":3666081.7189542484,"issues_closed_count":57,"pull_requests_closed_count":153,"pull_request_authors_count":13,"issue_authors_count":17,"avg_comments_per_issue":3.1818181818181817,"avg_comments_per_pull_request":2.3048780487804876,"merged_pull_requests_count":143,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":5,"past_year_pull_requests_count":13,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1755478.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.8,"past_year_avg_comments_per_pull_request":2.230769230769231,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":6,"created_at":"2023-05-09T10:35:50.249Z","updated_at":"2026-03-11T13:01:13.951Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/pvlib%2Fpvanalytics/issues","issue_labels_count":{"enhancement":14,"documentation":7,"bug":5,"tests":3,"dependency":3,"question":3,"ci":2},"pull_request_labels_count":{"documentation":24,"enhancement":18,"dependency":17,"tests":12,"ci":12,"release":10,"bug":8,"feature":2,"dependencies":2,"python":2},"issue_author_associations_count":{"MEMBER":39,"COLLABORATOR":38,"NONE":10,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"COLLABORATOR":88,"MEMBER":62,"CONTRIBUTOR":9,"NONE":5},"issue_authors":{"wfvining":28,"cwhanse":14,"kandersolar":13,"kperrynrel":11,"AdamRJensen":7,"wholmgren":3,"bt-":2,"RDaxini":1,"toddkarin":1,"camsilva":1,"rjstephens":1,"jranalli":1,"eccoope":1,"matsuobasho":1,"williamhobbs":1,"abhisheksparikh":1,"csptvlt":1},"pull_request_authors":{"wfvining":63,"kandersolar":49,"kperrynrel":25,"AdamRJensen":7,"qnguyen345":6,"cwhanse":6,"dependabot[bot]":2,"abhisheksparikh":1,"Olexandr88":1,"cdeline":1,"r0hansaxena":1,"MichaelHopwood":1,"spaneja":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:10.509Z","repositories_count":14154603,"issues_count":34526788,"pull_requests_count":112877686,"authors_count":11231093,"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":{"dependency":3,"bug":2,"dependencies":2,"python":2,"ci":1,"documentation":1},"past_year_issue_author_associations_count":{"MEMBER":5},"past_year_pull_request_author_associations_count":{"MEMBER":7,"CONTRIBUTOR":3,"NONE":3},"past_year_issue_authors":{"cwhanse":2,"kandersolar":2,"RDaxini":1},"past_year_pull_request_authors":{"kandersolar":7,"dependabot[bot]":2,"qnguyen345":2,"Olexandr88":1,"r0hansaxena":1},"maintainers":[{"login":"wfvining","count":91,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wfvining"},{"login":"kandersolar","count":62,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kandersolar"},{"login":"kperrynrel","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kperrynrel"},{"login":"cwhanse","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cwhanse"},{"login":"AdamRJensen","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AdamRJensen"},{"login":"wholmgren","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wholmgren"},{"login":"RDaxini","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/RDaxini"}],"active_maintainers":[{"login":"kandersolar","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/kandersolar"},{"login":"cwhanse","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cwhanse"},{"login":"RDaxini","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/RDaxini"}]},"events":{"total":{"ReleaseEvent":2,"DeleteEvent":1,"PullRequestEvent":22,"ForkEvent":6,"IssuesEvent":6,"WatchEvent":24,"IssueCommentEvent":31,"PushEvent":8,"PullRequestReviewEvent":25,"PullRequestReviewCommentEvent":34,"CreateEvent":2},"last_year":{"DeleteEvent":1,"PullRequestEvent":12,"ForkEvent":3,"IssuesEvent":3,"WatchEvent":15,"IssueCommentEvent":17,"PushEvent":2,"PullRequestReviewEvent":1,"PullRequestReviewCommentEvent":6}},"keywords":["photovoltaic","python","renewable-energy","renewables","solar-energy"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/lint-and-test.yml","sha":null,"kind":"manifest","created_at":"2023-02-12T06:30:24.860Z","updated_at":"2023-02-12T06:30:24.860Z","repository_link":"https://github.com/pvlib/pvanalytics/blob/main/.github/workflows/lint-and-test.yml","dependencies":[{"id":7573916659,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7573916661,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pythonpublish.yml","sha":null,"kind":"manifest","created_at":"2023-02-12T06:30:24.906Z","updated_at":"2023-02-12T06:30:24.906Z","repository_link":"https://github.com/pvlib/pvanalytics/blob/main/.github/workflows/pythonpublish.yml","dependencies":[{"id":7573916694,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7573916695,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"requirements-min.txt","sha":null,"kind":"manifest","created_at":"2023-02-12T06:30:25.029Z","updated_at":"2023-02-12T06:30:25.029Z","repository_link":"https://github.com/pvlib/pvanalytics/blob/main/requirements-min.txt","dependencies":[{"id":7573916750,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7573916751,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7573916752,"package_name":"pvlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7573916753,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7573916754,"package_name":"statsmodels","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7573916755,"package_name":"scikit-image","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":16.13482532627607,"created_at":"2023-09-11T14:52:07.090Z","updated_at":"2026-04-14T05:30:28.071Z","avatar_url":"https://github.com/pvlib.png","language":"Python","category":"Renewable Energy","sub_category":"Photovoltaics and Solar Energy","monthly_downloads":4651,"total_dependent_repos":3,"total_dependent_packages":1,"readme":"[![lint and test](https://github.com/pvlib/pvanalytics/workflows/lint%20and%20test/badge.svg)](https://github.com/pvlib/pvanalytics/actions/workflows/lint-and-test.yml)\n[![Coverage Status](https://coveralls.io/repos/github/pvlib/pvanalytics/badge.svg?branch=main)](https://coveralls.io/github/pvlib/pvanalytics?branch=main)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6110569.svg)](https://doi.org/10.5281/zenodo.6110569)\n\n\n# PVAnalytics\n\nPVAnalytics is a python library that supports analytics for PV\nsystems. It provides functions for quality control, filtering, and\nfeature labeling and other tools supporting the analysis of PV\nsystem-level data.\n\nPVAnalytics is available at [PyPI](https://pypi.org/project/pvanalytics/)\nand can be installed using `pip`:\n\n    pip install pvanalytics\n\nDocumentation and example usage is available at \n[pvanalytics.readthedocs.io](https://pvanalytics.readthedocs.io).\n\n## Library Overview\n\nThe functions provided by PVAnalytics are organized in modules based\non their anticipated use.  The structure/organization below is likely\nto change as use cases are identified and refined and as package\ncontent evolves.  The functions in `quality` and\n`features` take a series of data and return a series of booleans.\nFor more detailed descriptions, see our\n[API Reference](https://pvanalytics.readthedocs.io/en/stable/api.html).\n\n* `quality` contains submodules for different kinds of data quality\n  checks.\n  * `data_shifts` contains quality checks for detecting and \n    isolating data shifts in PV time series data.\n  * `irradiance` provides quality checks for irradiance\n    measurements. \n  * `weather` has quality checks for weather data (for example tests\n    for physically plausible values of temperature, wind speed,\n    humidity, etc.)\n  * `outliers` contains different functions for identifying outliers\n    in the data.\n  * `gaps` contains functions for identifying gaps in the data\n    (i.e. missing values, stuck values, and interpolation).\n  * `time` quality checks related to time (e.g. timestamp spacing)\n  * `util` general purpose quality functions.\n\n* `features` contains submodules with different methods for\n  identifying and labeling salient features.\n  * `clipping` functions for labeling inverter clipping.\n  * `clearsky` functions for identifying periods of clear sky\n    conditions.\n  * `daytime` functions for for identifying periods of day and night.\n  * `orientation` functions for labeling data as corresponding to\n    a rotating solar tracker or a fixed tilt structure.\n  * `shading` functions for identifying shadows.\n* `system` identification of PV system characteristics from data\n  (e.g. nameplate power, orientation, azimuth)\n* `metrics` contains functions for computing PV system-level metrics\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.6110569"],"works":{"https://doi.org/10.5281/zenodo.6110569":null},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["photovoltaics","solar","bifacial","convolutional-neural-networks","photovoltaic-panels","radiance"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19782","html_url":"https://ost.ecosyste.ms/projects/19782"}